chainlesschain 0.162.151 → 0.162.153

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 (187) hide show
  1. package/README.md +1 -1
  2. package/package.json +1 -1
  3. package/src/assets/web-panel/.build-hash +1 -1
  4. package/src/assets/web-panel/assets/{AIOps-DuEOzebi.js → AIOps-CBilhs1R.js} +1 -1
  5. package/src/assets/web-panel/assets/{ActionButton-C6GiJa5H.js → ActionButton-Cf-RnC5Y.js} +1 -1
  6. package/src/assets/web-panel/assets/{Analytics-BBIiL_pO.js → Analytics-S8tkGhw0.js} +3 -3
  7. package/src/assets/web-panel/assets/{AppLayout-CuI2gZRy.js → AppLayout-CNXI3Bw5.js} +5 -5
  8. package/src/assets/web-panel/assets/{Audit-CbUjfr-K.js → Audit-DF2zVFZ0.js} +1 -1
  9. package/src/assets/web-panel/assets/{Backup-CsSW9ljf.js → Backup-CMEiwQZL.js} +1 -1
  10. package/src/assets/web-panel/assets/{BaseInput-kM3rLe7F.js → BaseInput-rwLw4K70.js} +1 -1
  11. package/src/assets/web-panel/assets/{Chat-kfE51YN3.js → Chat-C478H8u9.js} +5 -5
  12. package/src/assets/web-panel/assets/ChatBubbleRenderer-DNQsKN61.js +1 -0
  13. package/src/assets/web-panel/assets/{Checkbox-jYb1uj-M.js → Checkbox-D-47X635.js} +1 -1
  14. package/src/assets/web-panel/assets/{Codegen-X9XiD5Lj.js → Codegen-Cb9Ihed5.js} +1 -1
  15. package/src/assets/web-panel/assets/{Col-BfbHu1xI.js → Col-CQsdzczt.js} +1 -1
  16. package/src/assets/web-panel/assets/{Community-c4oJMFS-.js → Community-DiqzeAy-.js} +1 -1
  17. package/src/assets/web-panel/assets/{Compact-BFmnZpH7.js → Compact-Bq-APyyF.js} +1 -1
  18. package/src/assets/web-panel/assets/{Compliance-s9shVHBS.js → Compliance-Dnb1YxPr.js} +1 -1
  19. package/src/assets/web-panel/assets/{Cowork-C5da--TC.js → Cowork-CZljerdQ.js} +3 -3
  20. package/src/assets/web-panel/assets/{Cron-9kNbyNE4.js → Cron-gAdbZOq7.js} +2 -2
  21. package/src/assets/web-panel/assets/{Crosschain-C1k3NJD4.js → Crosschain-DMPGXttD.js} +1 -1
  22. package/src/assets/web-panel/assets/{DID-DkheEvNK.js → DID-C7dBDAv8.js} +2 -2
  23. package/src/assets/web-panel/assets/{Dashboard-C3FuSGmJ.js → Dashboard-ByR4VcF8.js} +2 -2
  24. package/src/assets/web-panel/assets/{Dropdown-CAV6FMFD.js → Dropdown-Bc4tbiQN.js} +1 -1
  25. package/src/assets/web-panel/assets/{EmailListRenderer-Cc-Ulc4l.js → EmailListRenderer-BhUN2pDw.js} +1 -1
  26. package/src/assets/web-panel/assets/{FamilyGuardDashboard-8CitHEtv.js → FamilyGuardDashboard-DpJuANCD.js} +1 -1
  27. package/src/assets/web-panel/assets/{Federation-DFSZ5KDt.js → Federation-BEm4TvcE.js} +1 -1
  28. package/src/assets/web-panel/assets/{FormItemContext-CEWCtnG2.js → FormItemContext-JnkPkhiC.js} +1 -1
  29. package/src/assets/web-panel/assets/{GenericCardRenderer-CwRzNzmX.js → GenericCardRenderer-BfCzFUIC.js} +1 -1
  30. package/src/assets/web-panel/assets/{Git-0rgDM7cJ.js → Git-1c0MWpmD.js} +2 -2
  31. package/src/assets/web-panel/assets/{Governance-CfBKtK9F.js → Governance-C_j3EBpv.js} +1 -1
  32. package/src/assets/web-panel/assets/{Inference-CzcUVvud.js → Inference-Cb7XRgtY.js} +1 -1
  33. package/src/assets/web-panel/assets/{KnowledgeGraph-Dwc4YL4A.js → KnowledgeGraph-DoHPvHyK.js} +1 -1
  34. package/src/assets/web-panel/assets/{Logs-DgFPwR2F.js → Logs-CYriKpy-.js} +2 -2
  35. package/src/assets/web-panel/assets/{Marketplace-DnpPTbGU.js → Marketplace-BT56-GD0.js} +1 -1
  36. package/src/assets/web-panel/assets/{McpTools-DRxxINyW.js → McpTools-B6XX_wnZ.js} +4 -4
  37. package/src/assets/web-panel/assets/{Memory-OhmW_6Z3.js → Memory-DRgNuaQc.js} +2 -2
  38. package/src/assets/web-panel/assets/{MobileBridge-DkTW-RK5.js → MobileBridge-B0qgvBN2.js} +1 -1
  39. package/src/assets/web-panel/assets/MobileProjects-CRRfswf7.js +1 -0
  40. package/src/assets/web-panel/assets/{Mtc--vmkL0AS.js → Mtc-DnSFj9jw.js} +4 -4
  41. package/src/assets/web-panel/assets/{MtcAudit-DGoFWjD4.js → MtcAudit-c0tuz1sm.js} +4 -4
  42. package/src/assets/web-panel/assets/{Multisig-B4kWgq95.js → Multisig-CVLBGioX.js} +3 -3
  43. package/src/assets/web-panel/assets/{NLProgramming-YQwvommE.js → NLProgramming-CFaqmNbx.js} +1 -1
  44. package/src/assets/web-panel/assets/{Notes-CgjtUADJ.js → Notes-BM_mNwU_.js} +3 -3
  45. package/src/assets/web-panel/assets/{NotificationSettings-6JDrpBG5.js → NotificationSettings-Sa1k3ReS.js} +1 -1
  46. package/src/assets/web-panel/assets/OrderTableRenderer-lWzmtqBh.js +1 -0
  47. package/src/assets/web-panel/assets/{Organization-8McOT_OF.js → Organization-C2blcq-P.js} +4 -4
  48. package/src/assets/web-panel/assets/{Overflow-DAZpSCGc.js → Overflow-B3PwOJnK.js} +1 -1
  49. package/src/assets/web-panel/assets/{P2P-B7l2ZWLy.js → P2P-DaB9T6tb.js} +2 -2
  50. package/src/assets/web-panel/assets/{PdhVaultBrowser-W1Ud-NAL.js → PdhVaultBrowser-BpEBZ72n.js} +5 -5
  51. package/src/assets/web-panel/assets/{Permissions-Czm_w9u_.js → Permissions-BTkWInyH.js} +4 -4
  52. package/src/assets/web-panel/assets/{PersonalDataHub-B4F0_ZVM.js → PersonalDataHub-LHEwNmyL.js} +2 -2
  53. package/src/assets/web-panel/assets/{Pipeline-B37aFiWv.js → Pipeline-DvWIxqH-.js} +1 -1
  54. package/src/assets/web-panel/assets/{Privacy-94KBnRrD.js → Privacy-BDbpBagU.js} +1 -1
  55. package/src/assets/web-panel/assets/{ProjectInit-B5h8_dlh.js → ProjectInit-DLeMDWWv.js} +2 -2
  56. package/src/assets/web-panel/assets/ProjectSettings-BK3NsxIz.js +2 -0
  57. package/src/assets/web-panel/assets/Projects-BPWPg9zA.js +1 -0
  58. package/src/assets/web-panel/assets/{Providers-B3cNWwJg.js → Providers-D2EvmPAd.js} +1 -1
  59. package/src/assets/web-panel/assets/{QrScannerModal-CHRvOw1R.js → QrScannerModal-DAcu2fNg.js} +1 -1
  60. package/src/assets/web-panel/assets/{QuickAsk-D1JMgFEd.js → QuickAsk-B7U850Yt.js} +1 -1
  61. package/src/assets/web-panel/assets/{Recommend-EYWGR79p.js → Recommend-bxNXLzOR.js} +1 -1
  62. package/src/assets/web-panel/assets/{RemoteSession-BAMC2pJt.js → RemoteSession-BsCjAfSJ.js} +2 -2
  63. package/src/assets/web-panel/assets/{Reputation-X2Hk1XG_.js → Reputation-DZ9LPu-R.js} +1 -1
  64. package/src/assets/web-panel/assets/{Row-Eq98LRtU.js → Row-cIYkCB3Y.js} +1 -1
  65. package/src/assets/web-panel/assets/{RssFeed-i76s6z_o.js → RssFeed-BxTNTtTp.js} +2 -2
  66. package/src/assets/web-panel/assets/{Search-D_Es7CAI.js → Search-DSar6GhE.js} +1 -1
  67. package/src/assets/web-panel/assets/{Security-kayD2e94.js → Security-oCbIGysL.js} +4 -4
  68. package/src/assets/web-panel/assets/{Services-Ctsm6ul8.js → Services-D8yojrNv.js} +2 -2
  69. package/src/assets/web-panel/assets/{Skeleton-CRNYlfdf.js → Skeleton-vTA6P1eL.js} +1 -1
  70. package/src/assets/web-panel/assets/{Skills-DkZYpF4-.js → Skills-BXLf_KgZ.js} +1 -1
  71. package/src/assets/web-panel/assets/{Sla-DXkoBcOP.js → Sla-Cpwxzz__.js} +1 -1
  72. package/src/assets/web-panel/assets/{SpeechSettings-DXi_GI1d.js → SpeechSettings-DcPN9kCb.js} +1 -1
  73. package/src/assets/web-panel/assets/{SyncSettings-rNKpfomn.js → SyncSettings-DY0U5Vuj.js} +2 -2
  74. package/src/assets/web-panel/assets/{Tasks-XF4uPtG-.js → Tasks-DKu3-sZJ.js} +1 -1
  75. package/src/assets/web-panel/assets/{Templates-i0Hzfeyu.js → Templates-MD3nfWGm.js} +1 -1
  76. package/src/assets/web-panel/assets/{Tenant-sMpHAi27.js → Tenant-DKVnyGXM.js} +1 -1
  77. package/src/assets/web-panel/assets/Terminal-DQMIZfWf.js +3 -0
  78. package/src/assets/web-panel/assets/{TimelineRenderer-yuC6K7Rf.js → TimelineRenderer-CugmNZTs.js} +1 -1
  79. package/src/assets/web-panel/assets/{Tokens-B8O8i0s6.js → Tokens-Cjvlttu6.js} +1 -1
  80. package/src/assets/web-panel/assets/{Trigger-Bv6yrlCr.js → Trigger-CzNOEcoI.js} +1 -1
  81. package/src/assets/web-panel/assets/{Trust-C4mW95Ev.js → Trust-D5jg9iPA.js} +1 -1
  82. package/src/assets/web-panel/assets/{UkeySign-DV6yKaHn.js → UkeySign-59bMlvxY.js} +1 -1
  83. package/src/assets/web-panel/assets/{VideoEditing-UI479-sD.js → VideoEditing-DmCzSBqn.js} +1 -1
  84. package/src/assets/web-panel/assets/{Wallet-M5oV9EVP.js → Wallet-DoFe8V6W.js} +4 -4
  85. package/src/assets/web-panel/assets/{WebAuthn-DDyDHPDR.js → WebAuthn-9POLER-w.js} +5 -5
  86. package/src/assets/web-panel/assets/{WorkflowEditor-RoBv4rqk.js → WorkflowEditor-cFQH0Og6.js} +1 -1
  87. package/src/assets/web-panel/assets/{chat-Cw1mE5LS.js → chat-D3fR2NkZ.js} +1 -1
  88. package/src/assets/web-panel/assets/{colors-BFP62Gwf.js → colors-DiLEwE_P.js} +1 -1
  89. package/src/assets/web-panel/assets/{compact-item-17HL6pyC.js → compact-item-CGfFDdic.js} +1 -1
  90. package/src/assets/web-panel/assets/{createContext-D55X4fZX.js → createContext-BbIbOPL2.js} +1 -1
  91. package/src/assets/web-panel/assets/devWarning-B6FRgsmP.js +1 -0
  92. package/src/assets/web-panel/assets/{hasIn-D3E5mNsP.js → hasIn-DqyWp63_.js} +1 -1
  93. package/src/assets/web-panel/assets/{index-DOjA8bvj.js → index-BCoDp6o_.js} +1 -1
  94. package/src/assets/web-panel/assets/{index-tVRPgYGr.js → index-BKeRBUtO.js} +1 -1
  95. package/src/assets/web-panel/assets/{index-RYZgFIwo.js → index-BKxvHCqz.js} +1 -1
  96. package/src/assets/web-panel/assets/{index-Da27u6j0.js → index-BiLP6SNu.js} +1 -1
  97. package/src/assets/web-panel/assets/{index-CFYGn88j.js → index-BtcjYHgn.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-paVubXzn.js → index-BtwvOuvO.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-D4LHSde4.js → index-ByE5tKjP.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-C_MfcrLf.js → index-C1S30j-Z.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-DkBVYlE4.js → index-C2lZXIEA.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-ITeEHb8L.js → index-CH8gSMSA.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-BC6zxOlU.js → index-CHpI6g_S.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-KtLJXn4s.js → index-CIleIMTT.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-BY_xZ2jy.js → index-CToOzfR2.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-Bzpp2z2S.js → index-CZQshOyI.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-CvCFKojj.js → index-ComvO4hy.js} +1 -1
  108. package/src/assets/web-panel/assets/index-Cq411qtc.js +1 -0
  109. package/src/assets/web-panel/assets/{index-tUH_6bdJ.js → index-CweXQM71.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-Cdvk2_2q.js → index-CySlHabI.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-gAVxDiTZ.js → index-D16FSRMW.js} +1 -1
  112. package/src/assets/web-panel/assets/index-D1oX0DK3.js +1 -0
  113. package/src/assets/web-panel/assets/{index-CLEzsZ8A.js → index-D3vQv3Kq.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-BEa1RW4c.js → index-DH6qaU1a.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-BQmZg5si.js → index-DPxmTldu.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-ASPYTzMK.js → index-DQH--Uw5.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-uSsiwgZ2.js → index-Db9UJVjj.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-CR9rNUvi.js → index-DdLwxj-F.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-Bq83UBDr.js → index-DdjXemK-.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-H9_X1Cg_.js → index-DzuGkFvy.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-DD_qGBrt.js → index-FFlp8Jx9.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-BnGpft-Z.js → index-Km36XQ3z.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-CjCwi7we.js → index-auI9fxYH.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-DzG7mkgW.js → index-fCfaVIr7.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-DtAnPBWP.js → index-hVGbmc7y.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-DCLu84x-.js → index-kL8f4MRS.js} +1 -1
  127. package/src/assets/web-panel/assets/{index--44J50mc.js → index-ns6bNnGo.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-CW6LLoJO.js → index-qHvMk0U3.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-DIRvdwBX.js → index-rTrejDjk.js} +1 -1
  130. package/src/assets/web-panel/assets/{index-CGyTos4p.js → index-tLaW5UzZ.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-BgN5G5vF.js → index-xm1KHUEQ.js} +27 -27
  132. package/src/assets/web-panel/assets/{initDefaultProps-Ckp7xVZS.js → initDefaultProps-pg_7pnd6.js} +1 -1
  133. package/src/assets/web-panel/assets/{motion-DUZgCpn6.js → motion-B5GoJSZL.js} +1 -1
  134. package/src/assets/web-panel/assets/{move-B2rttglH.js → move-BaJoe2FW.js} +1 -1
  135. package/src/assets/web-panel/assets/{mtc-parser-BYWcLTuN.js → mtc-parser-CiQGbqtr.js} +1 -1
  136. package/src/assets/web-panel/assets/{omit-DhHqKeFx.js → omit-BFNEsKvU.js} +1 -1
  137. package/src/assets/web-panel/assets/{pickAttrs-ANpJaWMO.js → pickAttrs-YbSoANHm.js} +1 -1
  138. package/src/assets/web-panel/assets/{placementArrow-CfZWe7CA.js → placementArrow-C40MJPIH.js} +1 -1
  139. package/src/assets/web-panel/assets/{responsiveObserve-D7Xz2y-R.js → responsiveObserve-LaVz2zF6.js} +1 -1
  140. package/src/assets/web-panel/assets/{slide-DekqCBY9.js → slide-BkSoAGxF.js} +1 -1
  141. package/src/assets/web-panel/assets/{statusUtils-BET6XU7h.js → statusUtils-C4jWjohA.js} +1 -1
  142. package/src/assets/web-panel/assets/{styleChecker-qHmJjV62.js → styleChecker-BGqeIh-m.js} +1 -1
  143. package/src/assets/web-panel/assets/{useFlexGapSupport-BoMCTNyu.js → useFlexGapSupport-JsR5NMrM.js} +1 -1
  144. package/src/assets/web-panel/assets/{useFs-TdW-NgFC.js → useFs-DOiP38RR.js} +1 -1
  145. package/src/assets/web-panel/assets/{usePersonalDataHub-Dyox7wCu.js → usePersonalDataHub-C-nC0ymt.js} +1 -1
  146. package/src/assets/web-panel/assets/{vnode-XUn5S8CP.js → vnode-BalilHOU.js} +1 -1
  147. package/src/assets/web-panel/assets/{zoom-Ls77i8hn.js → zoom-DjUELqks.js} +1 -1
  148. package/src/assets/web-panel/index.html +1 -1
  149. package/src/commands/agent.js +8 -1
  150. package/src/commands/eval.js +88 -23
  151. package/src/commands/plugin.js +10 -0
  152. package/src/commands/team.js +60 -3
  153. package/src/data/changelog.json +17 -2
  154. package/src/harness/mcp-client.js +115 -1
  155. package/src/harness/remote-command-ledger.js +60 -10
  156. package/src/lib/agent-sandbox.js +11 -5
  157. package/src/lib/agent-team/task-lease.js +28 -0
  158. package/src/lib/agent-team/team-runner.js +45 -0
  159. package/src/lib/config-manager.js +14 -1
  160. package/src/lib/eval/tasks.js +62 -41
  161. package/src/lib/eval/trend.js +7 -1
  162. package/src/lib/lsp/__tests__/lsp-client.test.js +12 -6
  163. package/src/lib/lsp/code-intelligence.js +55 -17
  164. package/src/lib/lsp/lsp-client.js +7 -1
  165. package/src/lib/plugin-runtime/install.js +20 -1
  166. package/src/lib/plugin-runtime/policy.js +13 -0
  167. package/src/lib/plugin-runtime/remote-source.js +34 -0
  168. package/src/lib/plugin-runtime/signature.js +79 -22
  169. package/src/lib/plugin-security.js +13 -14
  170. package/src/lib/sub-agent-context.js +28 -7
  171. package/src/lib/telemetry/span-recorder.js +30 -7
  172. package/src/repl/agent-repl.js +64 -21
  173. package/src/repl/permission-prompt.js +58 -0
  174. package/src/runtime/__tests__/auto-pin.test.js +27 -4
  175. package/src/runtime/agent-core.js +236 -1
  176. package/src/runtime/auto-pin.js +19 -0
  177. package/src/runtime/coding-agent-contract-shared.cjs +5 -0
  178. package/src/runtime/headless-runner.js +23 -5
  179. package/src/assets/web-panel/assets/ChatBubbleRenderer-Bg2FTW6A.js +0 -1
  180. package/src/assets/web-panel/assets/MobileProjects-DpCGV_lI.js +0 -1
  181. package/src/assets/web-panel/assets/OrderTableRenderer-PM6IlxjO.js +0 -1
  182. package/src/assets/web-panel/assets/ProjectSettings-lmeI3Lpm.js +0 -2
  183. package/src/assets/web-panel/assets/Projects-D5AYOasl.js +0 -1
  184. package/src/assets/web-panel/assets/Terminal-BoZvaYAl.js +0 -3
  185. package/src/assets/web-panel/assets/devWarning-CqbHYuRc.js +0 -1
  186. package/src/assets/web-panel/assets/index-CKBI1U5K.js +0 -1
  187. package/src/assets/web-panel/assets/index-CkLp6DTO.js +0 -1
@@ -1 +1 @@
1
- import{I as m,J as f,U as v,R as i,c as o,K as a,V as c,o as me,a as te,b as J,r as w,P as d,Q as g,F as A,Z as Q,S as k,$ as ve}from"./vendor-BMxUs6UX.js";import{t as V,_ as Oe,u as pe,b as ye,E as _e,d as R}from"./index-BgN5G5vF.js";import{a6 as je,aZ as Ee,f as Le,am as Pe,A as Me,Q as De,r as Ne,as as Ue,R as Be}from"./icons-BsDmGpcT.js";const Fe=Object.freeze(["react","vue","express","fastapi","spring_boot"]),ue=Object.freeze(["critical","high","medium","low","info"]);function x(t,n=0){return typeof t=="number"&&Number.isFinite(t)?t:n}function be(t,n=null){if(t==null)return n;if(typeof t!="string")return t;try{return JSON.parse(t)}catch{return n}}function Je(t,n=0){if(!t||typeof t!="object")return null;const s=t.id||"";return s?{key:s,id:s,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:n}:null}function we(t){const n=V(t);return Array.isArray(n)?n.map(Je).filter(Boolean):[]}function Ve(t,n=0){return!t||typeof t!="object"?null:{key:n,rule:String(t.rule||""),severity:String(t.severity||"info").toLowerCase(),match:String(t.match||""),pattern:String(t.pattern||"")}}function qe(t,n=0){if(!t||typeof t!="object")return null;const s=t.id||"";if(!s)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 O=be(t.issues_detail??t.issuesDetail,null)??t.issues_detail??t.issuesDetail,S=Array.isArray(O)?O.map(Ve).filter(Boolean):[];return{key:s,id:s,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:n}}function ke(t){const n=V(t);return Array.isArray(n)?n.map(qe).filter(Boolean):[]}function he(t){const n={};for(const O of ue)n[O]=0;const s=V(t);if(!s||typeof s!="object"||Array.isArray(s))return{ok:!1,reviewId:null,reason:"",issuesFound:0,securityIssues:0,severitySummary:n};const e=!!s.reviewId,z={...n};if(s.severitySummary&&typeof s.severitySummary=="object"&&!Array.isArray(s.severitySummary))for(const[O,S]of Object.entries(s.severitySummary))typeof S=="number"&&Number.isFinite(S)&&(z[O]=S);return{ok:e,reviewId:s.reviewId?String(s.reviewId):null,reason:s.reason?String(s.reason):"",issuesFound:x(s.issuesFound,0),securityIssues:x(s.securityIssues,0),severitySummary:z}}function He(t,n=0){if(!t||typeof t!="object")return null;const s=t.id||"";return s?{key:s,id:s,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:n}:null}function Se(t){const n=V(t);return Array.isArray(n)?n.map(He).filter(Boolean):[]}const We={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 n=JSON.parse(JSON.stringify(We));for(const e of Fe)n.scaffolds.byTemplate[e]=0;const s=V(t);if(!s||typeof s!="object"||Array.isArray(s))return n;if(s.generations&&typeof s.generations=="object"&&(n.generations.total=x(s.generations.total,0),n.generations.totalTokens=x(s.generations.totalTokens,0),n.generations.totalFiles=x(s.generations.totalFiles,0),n.generations.uniqueLanguages=x(s.generations.uniqueLanguages,0)),s.reviews&&typeof s.reviews=="object"&&(n.reviews.total=x(s.reviews.total,0),n.reviews.totalIssues=x(s.reviews.totalIssues,0),n.reviews.totalSecurityIssues=x(s.reviews.totalSecurityIssues,0),n.reviews.avgIssuesPerReview=x(s.reviews.avgIssuesPerReview,0)),s.scaffolds&&typeof s.scaffolds=="object"&&(n.scaffolds.total=x(s.scaffolds.total,0),s.scaffolds.byTemplate&&typeof s.scaffolds.byTemplate=="object"))for(const[e,z]of Object.entries(s.scaffolds.byTemplate))typeof z=="number"&&Number.isFinite(z)&&(n.scaffolds.byTemplate[e]=z);return n}function de(t){const n=V(t);if(!n||typeof n!="object"||Array.isArray(n))return{ok:!1,id:null,reason:""};const s=n.generationId||n.scaffoldId||n.reviewId||null;return{ok:!!s,id:s?String(s):null,reason:n.reason?String(n.reason):""}}function Ke(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 Qe={__name:"Codegen",setup(t,{expose:n}){n();const s=pe(),{t:e}=ye(),z=_e.PRESENTED_IMAGE_SIMPLE,O=w(!1),S=w(!1),L=w(!1),P=w(!1),q=w([]),H=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"),N=w(""),h=w(""),G=w(""),U=w(!1),B=w(!1),W=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),D=w(null),X=w(null),oe=J(()=>[{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=J(()=>[{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=J(()=>[{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=J(()=>{let r=q.value;if(N.value.trim()){const _=N.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=J(()=>G.value?T.value.filter(r=>r.template===G.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 ie(r){const _=`codegen.severityLabels.${r}`,F=e(_);return F===_?r:F}function se(r){return{critical:"red",high:"orange",medium:"gold",low:"default",info:"blue"}[r]||"default"}function l(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(){O.value=!0;try{const[r,_,F,Ge]=await Promise.all([s.execute("codegen list --limit 200 --json",1e4).catch(()=>({output:""})),s.execute("codegen reviews --limit 200 --json",1e4).catch(()=>({output:""})),s.execute("codegen scaffolds --limit 200 --json",1e4).catch(()=>({output:""})),s.execute("codegen stats --json",8e3).catch(()=>({output:""}))]);q.value=we(r.output),H.value=ke(_.output),T.value=Se(F.output),M.value=Ce(Ge.output)}catch(r){R.error(e("codegen.msg.loadFailed")+": "+(r?.message||r))}finally{O.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 s.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 s.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,B.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 s.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)})),W.value=!1,fe(),await K()}catch(r){R.error(e("codegen.msg.scaffoldFailed")+": "+(r?.message||r))}finally{P.value=!1}}function ze(r){D.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:s,t:e,EMPTY_IMG:z,loading:O,generating:S,reviewing:L,scaffolding:P,generations:q,reviews:H,scaffolds:T,stats:M,activeTab:j,languageFilter:N,frameworkFilter:h,templateFilter:G,showGenerateModal:U,showReviewModal:B,showScaffoldModal:W,showGenDetailsModal:Y,showReviewDetailsModal:Z,generateForm:y,reviewForm:p,scaffoldForm:b,reviewResult:I,currentGen:D,currentReview:X,generationColumns:oe,reviewColumns:ae,scaffoldColumns:le,filteredGenerations:ne,filteredScaffolds:C,tmplColor:$,tmplBarColor:re,severityLabel:ie,severityColor:se,severityBarColor:l,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:J,onMounted:me,reactive:te,get ReloadOutlined(){return Be},get PlusOutlined(){return Ue},get SafetyOutlined(){return Ne},get CodeOutlined(){return De},get AuditOutlined(){return Me},get WarningOutlined(){return Pe},get CheckCircleOutlined(){return Le},get AppstoreAddOutlined(){return Ee},get GlobalOutlined(){return je},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 Ke},get SCAFFOLD_TEMPLATES(){return Fe},get REVIEW_SEVERITIES(){return ue}};return Object.defineProperty(ge,"__isScriptSetup",{enumerable:!1,value:!0}),ge}},Ye={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Ze={class:"page-title"},Xe={class:"page-sub"},$e={class:"tmpl-count"},et={class:"filter-bar"},tt={style:{color:"var(--text-primary)","font-weight":"500"}},ot={style:{color:"var(--text-muted)","font-size":"11px","font-family":"monospace","margin-top":"2px"}},at={key:1,style:{color:"var(--text-muted)"}},lt={key:1,style:{color:"var(--text-muted)"}},nt={key:3,style:{color:"var(--text-secondary)"}},rt={key:4,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},it={key:5,style:{color:"var(--text-secondary)","font-size":"11px"}},st={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},dt={style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px"}},ut={style:{color:"var(--text-muted)","font-size":"11px","font-family":"monospace","margin-top":"2px"}},ct={key:1,style:{color:"var(--text-muted)"}},ft={key:4,class:"sev-mini"},gt={key:0,style:{color:"#ff4d4f"}},mt={key:1,style:{color:"#fa8c16"}},vt={key:2,style:{color:"#faad14"}},pt={key:3,style:{color:"#888"}},yt={key:4,style:{color:"#1677ff"}},_t={key:5,style:{color:"#52c41a"}},bt={key:5,style:{color:"var(--text-secondary)","font-size":"11px"}},wt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},kt={class:"filter-bar"},ht={style:{color:"var(--text-primary)","font-weight":"500"}},St={style:{color:"var(--text-muted)","font-size":"11px","font-family":"monospace","margin-top":"2px"}},Ct={key:2,style:{color:"var(--text-secondary)"}},Ft={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"11px"}},Rt={key:1,style:{color:"var(--text-muted)"}},xt={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},It={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},At={style:{"padding-top":"8px"}},zt={key:1},Tt={style:{color:"var(--text-primary)","font-size":"12px",margin:"12px 0 6px"}},Gt={key:0,style:{"padding-top":"8px"}},Ot={style:{"font-family":"monospace","font-size":"12px"}},jt={key:1,style:{color:"var(--text-muted)"}},Et={key:1,style:{color:"var(--text-muted)"}},Lt={class:"code-pre"},Pt={class:"code-pre"},Mt={key:0,style:{"padding-top":"8px"}},Dt={style:{"font-family":"monospace","font-size":"12px"}},Nt={style:{"font-family":"monospace","font-size":"12px"}},Ut={style:{"font-family":"monospace","font-size":"12px"}},Bt={key:1,style:{color:"var(--text-muted)"}},Jt={style:{color:"var(--text-primary)","font-size":"13px",margin:"16px 0 8px"}},Vt={key:0,style:{color:"var(--text-primary)","font-size":"13px",margin:"16px 0 8px"}},qt={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 Wt(t,n,s,e,z,O){const S=m("a-button"),L=m("a-menu-item"),P=m("a-menu"),q=m("a-dropdown"),H=m("a-space"),T=m("a-statistic"),M=m("a-card"),j=m("a-col"),N=m("a-row"),h=m("a-tag"),G=m("a-input"),U=m("a-table"),B=m("a-tab-pane"),W=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"),D=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"),ie=m("a-list-item"),se=m("a-list");return d(),f("div",null,[v("div",Ye,[v("div",null,[v("h2",Ze,i(t.$t("codegen.title")),1),v("p",Xe,i(t.$t("codegen.subtitle")),1)]),o(H,null,{default:a(()=>[o(S,{loading:e.loading,onClick:e.loadAll},{icon:a(()=>[o(e.ReloadOutlined)]),default:a(()=>[g(" "+i(t.$t("codegen.refresh")),1)]),_:1},8,["loading"]),o(S,{onClick:n[0]||(n[0]=l=>e.showReviewModal=!0)},{icon:a(()=>[o(e.SafetyOutlined)]),default:a(()=>[g(" "+i(t.$t("codegen.review")),1)]),_:1}),o(q,null,{overlay:a(()=>[o(P,null,{default:a(()=>[o(L,{key:"generate",onClick:n[1]||(n[1]=l=>e.showGenerateModal=!0)},{default:a(()=>[g(i(t.$t("codegen.actions.generate")),1)]),_:1}),o(L,{key:"scaffold",onClick:n[2]||(n[2]=l=>e.showScaffoldModal=!0)},{default:a(()=>[g(i(t.$t("codegen.actions.scaffold")),1)]),_:1})]),_:1})]),default:a(()=>[o(S,{type:"primary"},{icon:a(()=>[o(e.PlusOutlined)]),default:a(()=>[g(" "+i(t.$t("codegen.newDropdown")),1)]),_:1})]),_:1})]),_:1})]),c(" Stat cards "),o(N,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:a(()=>[o(j,{xs:12,sm:8,lg:5},{default:a(()=>[o(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[o(T,{title:t.$t("codegen.stats.generations"),value:e.stats.generations.total,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:a(()=>[o(e.CodeOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(j,{xs:12,sm:8,lg:5},{default:a(()=>[o(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[o(T,{title:t.$t("codegen.stats.reviews"),value:e.stats.reviews.total,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:a(()=>[o(e.AuditOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(j,{xs:12,sm:8,lg:5},{default:a(()=>[o(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[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:a(()=>[o(e.WarningOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),o(j,{xs:12,sm:8,lg:5},{default:a(()=>[o(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[o(T,{title:t.$t("codegen.stats.scaffolds"),value:e.stats.scaffolds.total,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:a(()=>[o(e.AppstoreAddOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(j,{xs:24,sm:8,lg:4},{default:a(()=>[o(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[o(T,{title:t.$t("codegen.stats.languages"),value:e.stats.generations.uniqueLanguages,"value-style":{color:"#faad14",fontSize:"20px"}},{prefix:a(()=>[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:a(()=>[o(N,{gutter:[12,12]},{default:a(()=>[(d(!0),f(A,null,Q(e.SCAFFOLD_TEMPLATES,l=>(d(),k(j,{key:l,xs:12,sm:8,lg:4},{default:a(()=>[v("div",{class:"tmpl-pill",style:ve({borderLeftColor:e.tmplBarColor(l)})},[o(h,{color:e.tmplColor(l),style:{"font-family":"monospace"}},{default:a(()=>[g(i(l),1)]),_:2},1032,["color"]),v("span",$e,i(e.stats.scaffolds.byTemplate[l]||0),1)],4)]),_:2},1024))),128))]),_:1})]),_:1},8,["title"]),c(" Tabs "),o(Z,{activeKey:e.activeTab,"onUpdate:activeKey":n[6]||(n[6]=l=>e.activeTab=l),class:"codegen-tabs"},{default:a(()=>[c(" ── Generations tab ────────────────────────────────────── "),o(B,{key:"generations",tab:t.$t("codegen.tabs.generations")},{default:a(()=>[v("div",et,[o(G,{value:e.languageFilter,"onUpdate:value":n[3]||(n[3]=l=>e.languageFilter=l),placeholder:t.$t("codegen.filter.languagePlaceholder"),"allow-clear":"",size:"small",style:{"max-width":"180px"}},null,8,["value","placeholder"]),o(G,{value:e.frameworkFilter,"onUpdate:value":n[4]||(n[4]=l=>e.frameworkFilter=l),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:l=>t.$t("codegen.table.totalSuffix",{n:l})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:a(({column:l,record:u})=>[l.key==="prompt"?(d(),f(A,{key:0},[v("span",tt,i(e.truncate(u.prompt,60)),1),v("div",ot,i(u.id.slice(0,16)),1)],64)):c("v-if",!0),l.key==="language"?(d(),f(A,{key:1},[u.language?(d(),k(h,{key:0,color:"blue",style:{"font-family":"monospace"}},{default:a(()=>[g(i(u.language),1)]),_:2},1024)):(d(),f("span",at,"—"))],64)):c("v-if",!0),l.key==="framework"?(d(),f(A,{key:2},[u.framework?(d(),k(h,{key:0,color:"purple",style:{"font-family":"monospace"}},{default:a(()=>[g(i(u.framework),1)]),_:2},1024)):(d(),f("span",lt,"—"))],64)):c("v-if",!0),l.key==="fileCount"?(d(),f("span",nt,i(u.fileCount),1)):c("v-if",!0),l.key==="tokenCount"?(d(),f("span",rt,i(u.tokenCount),1)):c("v-if",!0),l.key==="createdAt"?(d(),f("span",it,i(e.formatCodegenTime(u.createdAt)),1)):c("v-if",!0),l.key==="action"?(d(),f(A,{key:6},[o(S,{size:"small",type:"link",onClick:ee=>e.viewGenerationDetails(u)},{default:a(()=>[g(i(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:a(()=>[g(i(t.$t("codegen.table.actionReview")),1)]),_:1},8,["onClick"])):c("v-if",!0)],64)):c("v-if",!0)]),emptyText:a(()=>[v("div",st,[o(e.CodeOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),g(" "+i(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(B,{key:"reviews",tab:t.$t("codegen.tabs.reviews")},{default:a(()=>[o(U,{columns:e.reviewColumns,"data-source":e.reviews,pagination:{pageSize:20,showTotal:l=>t.$t("codegen.table.totalSuffix",{n:l})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:a(({column:l,record:u})=>[l.key==="codeHash"?(d(),f(A,{key:0},[v("span",dt,i(u.codeHash),1),v("div",ut,i(u.id.slice(0,16)),1)],64)):c("v-if",!0),l.key==="language"?(d(),f(A,{key:1},[u.language?(d(),k(h,{key:0,color:"blue",style:{"font-family":"monospace"}},{default:a(()=>[g(i(u.language),1)]),_:2},1024)):(d(),f("span",ct,"—"))],64)):c("v-if",!0),l.key==="issuesFound"?(d(),k(h,{key:2,color:u.issuesFound===0?"green":u.issuesFound>5?"red":"orange"},{default:a(()=>[g(i(t.$t("codegen.table.issuesSuffix",{n:u.issuesFound})),1)]),_:2},1032,["color"])):c("v-if",!0),l.key==="securityIssues"?(d(),f(A,{key:3},[u.securityIssues>0?(d(),k(h,{key:0,color:"red"},{default:a(()=>[o(e.WarningOutlined),g(" "+i(u.securityIssues),1)]),_:2},1024)):(d(),k(h,{key:1,color:"green"},{default:a(()=>[o(e.CheckCircleOutlined),n[26]||(n[26]=g(" 0 ",-1))]),_:1}))],64)):c("v-if",!0),l.key==="severityBreak"?(d(),f("span",ft,[u.severitySummary.critical>0?(d(),f("span",gt,"C:"+i(u.severitySummary.critical),1)):c("v-if",!0),u.severitySummary.high>0?(d(),f("span",mt,"H:"+i(u.severitySummary.high),1)):c("v-if",!0),u.severitySummary.medium>0?(d(),f("span",vt,"M:"+i(u.severitySummary.medium),1)):c("v-if",!0),u.severitySummary.low>0?(d(),f("span",pt,"L:"+i(u.severitySummary.low),1)):c("v-if",!0),u.severitySummary.info>0?(d(),f("span",yt,"I:"+i(u.severitySummary.info),1)):c("v-if",!0),u.issuesFound===0?(d(),f("span",_t,i(t.$t("codegen.table.noIssues")),1)):c("v-if",!0)])):c("v-if",!0),l.key==="reviewedAt"?(d(),f("span",bt,i(e.formatCodegenTime(u.reviewedAt)),1)):c("v-if",!0),l.key==="action"?(d(),k(S,{key:6,size:"small",type:"link",onClick:ee=>e.viewReviewDetails(u)},{default:a(()=>[g(i(t.$t("codegen.table.actionDetails")),1)]),_:1},8,["onClick"])):c("v-if",!0)]),emptyText:a(()=>[v("div",wt,[o(e.SafetyOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),g(" "+i(t.$t("codegen.table.emptyReviews")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),c(" ── Scaffolds tab ─────────────────────────────────────── "),o(B,{key:"scaffolds",tab:t.$t("codegen.tabs.scaffolds")},{default:a(()=>[v("div",kt,[o(Y,{value:e.templateFilter,"onUpdate:value":n[5]||(n[5]=l=>e.templateFilter=l),size:"small","button-style":"solid"},{default:a(()=>[o(W,{value:""},{default:a(()=>[g(i(t.$t("codegen.filter.allTemplates")),1)]),_:1}),(d(!0),f(A,null,Q(e.SCAFFOLD_TEMPLATES,l=>(d(),k(W,{key:l,value:l},{default:a(()=>[g(i(l),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),o(U,{columns:e.scaffoldColumns,"data-source":e.filteredScaffolds,pagination:{pageSize:20,showTotal:l=>t.$t("codegen.table.totalSuffix",{n:l})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:a(({column:l,record:u})=>[l.key==="projectName"?(d(),f(A,{key:0},[v("span",ht,i(u.projectName||t.$t("codegen.table.unnamed")),1),v("div",St,i(u.id.slice(0,16)),1)],64)):c("v-if",!0),l.key==="template"?(d(),k(h,{key:1,color:e.tmplColor(u.template),style:{"font-family":"monospace"}},{default:a(()=>[g(i(u.template),1)]),_:2},1032,["color"])):c("v-if",!0),l.key==="filesGenerated"?(d(),f("span",Ct,i(u.filesGenerated),1)):c("v-if",!0),l.key==="outputPath"?(d(),f(A,{key:3},[u.outputPath?(d(),f("span",Ft,i(e.truncate(u.outputPath,40)),1)):(d(),f("span",Rt,"—"))],64)):c("v-if",!0),l.key==="createdAt"?(d(),f("span",xt,i(e.formatCodegenTime(u.createdAt)),1)):c("v-if",!0)]),emptyText:a(()=>[v("div",It,[o(e.AppstoreAddOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),g(" "+i(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(D,{open:e.showGenerateModal,"onUpdate:open":n[13]||(n[13]=l=>e.showGenerateModal=l),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:a(()=>[o(I,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:a(()=>[o(p,{label:t.$t("codegen.generate_modal.promptLabel"),required:""},{default:a(()=>[o(y,{value:e.generateForm.prompt,"onUpdate:value":n[7]||(n[7]=l=>e.generateForm.prompt=l),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:a(()=>[o(G,{value:e.generateForm.language,"onUpdate:value":n[8]||(n[8]=l=>e.generateForm.language=l),placeholder:t.$t("codegen.generate_modal.languagePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{label:t.$t("codegen.generate_modal.frameworkLabel")},{default:a(()=>[o(G,{value:e.generateForm.framework,"onUpdate:value":n[9]||(n[9]=l=>e.generateForm.framework=l),placeholder:t.$t("codegen.generate_modal.frameworkPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{label:t.$t("codegen.generate_modal.codeLabel")},{default:a(()=>[o(y,{value:e.generateForm.code,"onUpdate:value":n[10]||(n[10]=l=>e.generateForm.code=l),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:a(()=>[o(b,{value:e.generateForm.files,"onUpdate:value":n[11]||(n[11]=l=>e.generateForm.files=l),min:0,style:{width:"120px"}},null,8,["value"])]),_:1},8,["label"]),o(p,{label:t.$t("codegen.generate_modal.tokensLabel")},{default:a(()=>[o(b,{value:e.generateForm.tokens,"onUpdate:value":n[12]||(n[12]=l=>e.generateForm.tokens=l),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(D,{open:e.showReviewModal,"onUpdate:open":n[17]||(n[17]=l=>e.showReviewModal=l),title:t.$t("codegen.review_modal.title"),width:720,footer:null},{default:a(()=>[v("div",At,[o(I,{"label-col":{span:5},"wrapper-col":{span:19}},{default:a(()=>[o(p,{label:t.$t("codegen.review_modal.languageLabel")},{default:a(()=>[o(G,{value:e.reviewForm.language,"onUpdate:value":n[14]||(n[14]=l=>e.reviewForm.language=l),placeholder:t.$t("codegen.review_modal.languagePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{label:t.$t("codegen.review_modal.generationIdLabel")},{default:a(()=>[o(G,{value:e.reviewForm.generationId,"onUpdate:value":n[15]||(n[15]=l=>e.reviewForm.generationId=l),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:a(()=>[o(y,{value:e.reviewForm.code,"onUpdate:value":n[16]||(n[16]=l=>e.reviewForm.code=l),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:a(()=>[o(S,{type:"primary",loading:e.reviewing,onClick:e.submitReview},{icon:a(()=>[o(e.SafetyOutlined)]),default:a(()=>[g(" "+i(t.$t("codegen.review_modal.submit")),1)]),_:1},8,["loading"])]),_:1})]),_:1}),o(X),e.reviewResult?(d(),f("div",zt,[o(N,{gutter:12,style:{"margin-bottom":"12px"}},{default:a(()=>[o(j,{span:8},{default:a(()=>[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:a(()=>[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:a(()=>[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",Tt,i(t.$t("codegen.review_modal.bySeverity")),1),o(H,null,{default:a(()=>[(d(!0),f(A,null,Q(e.REVIEW_SEVERITIES,l=>(d(),k(h,{key:l,color:e.severityColor(l)},{default:a(()=>[g(i(e.severityLabel(l))+": "+i(e.reviewResult.severitySummary[l]||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(D,{open:e.showScaffoldModal,"onUpdate:open":n[23]||(n[23]=l=>e.showScaffoldModal=l),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:a(()=>[o(I,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:a(()=>[o(p,{label:t.$t("codegen.scaffold_modal.templateLabel"),required:""},{default:a(()=>[o(ne,{value:e.scaffoldForm.template,"onUpdate:value":n[18]||(n[18]=l=>e.scaffoldForm.template=l)},{default:a(()=>[(d(!0),f(A,null,Q(e.SCAFFOLD_TEMPLATES,l=>(d(),k(le,{key:l,value:l},{default:a(()=>[g(i(l),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),o(p,{label:t.$t("codegen.scaffold_modal.projectLabel"),required:""},{default:a(()=>[o(G,{value:e.scaffoldForm.projectName,"onUpdate:value":n[19]||(n[19]=l=>e.scaffoldForm.projectName=l),placeholder:t.$t("codegen.scaffold_modal.projectPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{label:t.$t("codegen.scaffold_modal.optionsLabel")},{default:a(()=>[o(y,{value:e.scaffoldForm.optionsJson,"onUpdate:value":n[20]||(n[20]=l=>e.scaffoldForm.optionsJson=l),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:a(()=>[o(b,{value:e.scaffoldForm.files,"onUpdate:value":n[21]||(n[21]=l=>e.scaffoldForm.files=l),min:0,style:{width:"120px"}},null,8,["value"])]),_:1},8,["label"]),o(p,{label:t.$t("codegen.scaffold_modal.outputLabel")},{default:a(()=>[o(G,{value:e.scaffoldForm.outputPath,"onUpdate:value":n[22]||(n[22]=l=>e.scaffoldForm.outputPath=l),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(D,{open:e.showGenDetailsModal,"onUpdate:open":n[24]||(n[24]=l=>e.showGenDetailsModal=l),title:t.$t("codegen.gen_details.title",{id:e.currentGen?.id?.slice(0,12)||""}),width:780,footer:null},{default:a(()=>[e.currentGen?(d(),f("div",Gt,[o($,{column:2,size:"small",bordered:""},{default:a(()=>[o(C,{label:t.$t("codegen.gen_details.id"),span:2},{default:a(()=>[v("span",Ot,i(e.currentGen.id),1)]),_:1},8,["label"]),o(C,{label:t.$t("codegen.gen_details.language")},{default:a(()=>[e.currentGen.language?(d(),k(h,{key:0,color:"blue"},{default:a(()=>[g(i(e.currentGen.language),1)]),_:1})):(d(),f("span",jt,"—"))]),_:1},8,["label"]),o(C,{label:t.$t("codegen.gen_details.framework")},{default:a(()=>[e.currentGen.framework?(d(),k(h,{key:0,color:"purple"},{default:a(()=>[g(i(e.currentGen.framework),1)]),_:1})):(d(),f("span",Et,"—"))]),_:1},8,["label"]),o(C,{label:t.$t("codegen.gen_details.fileCount")},{default:a(()=>[g(i(e.currentGen.fileCount),1)]),_:1},8,["label"]),o(C,{label:t.$t("codegen.gen_details.tokenCount")},{default:a(()=>[g(i(e.currentGen.tokenCount),1)]),_:1},8,["label"]),o(C,{label:t.$t("codegen.gen_details.createdAt"),span:2},{default:a(()=>[g(i(e.formatCodegenTime(e.currentGen.createdAt)),1)]),_:1},8,["label"]),o(C,{label:t.$t("codegen.gen_details.prompt"),span:2},{default:a(()=>[v("pre",Lt,i(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:a(()=>[v("pre",Pt,i(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(D,{open:e.showReviewDetailsModal,"onUpdate:open":n[25]||(n[25]=l=>e.showReviewDetailsModal=l),title:t.$t("codegen.review_details.title",{id:e.currentReview?.id?.slice(0,12)||""}),width:720,footer:null},{default:a(()=>[e.currentReview?(d(),f("div",Mt,[o($,{column:2,size:"small",bordered:""},{default:a(()=>[o(C,{label:t.$t("codegen.review_details.id"),span:2},{default:a(()=>[v("span",Dt,i(e.currentReview.id),1)]),_:1},8,["label"]),o(C,{label:t.$t("codegen.review_details.codeHash"),span:2},{default:a(()=>[v("span",Nt,i(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:a(()=>[v("span",Ut,i(e.currentReview.generationId),1)]),_:1},8,["label"])):c("v-if",!0),o(C,{label:t.$t("codegen.review_details.language")},{default:a(()=>[e.currentReview.language?(d(),k(h,{key:0,color:"blue"},{default:a(()=>[g(i(e.currentReview.language),1)]),_:1})):(d(),f("span",Bt,"—"))]),_:1},8,["label"]),o(C,{label:t.$t("codegen.review_details.reviewedAt")},{default:a(()=>[g(i(e.formatCodegenTime(e.currentReview.reviewedAt)),1)]),_:1},8,["label"]),o(C,{label:t.$t("codegen.review_details.issuesFound")},{default:a(()=>[g(i(e.currentReview.issuesFound),1)]),_:1},8,["label"]),o(C,{label:t.$t("codegen.review_details.securityIssues")},{default:a(()=>[v("span",{style:ve({color:e.currentReview.securityIssues>0?"#ff4d4f":"#52c41a"})},i(e.currentReview.securityIssues),5)]),_:1},8,["label"])]),_:1}),v("h4",Jt,i(t.$t("codegen.review_details.bySeverity")),1),(d(!0),f(A,null,Q(e.REVIEW_SEVERITIES,l=>(d(),f("div",{key:l,class:"bd-row"},[o(h,{color:e.severityColor(l),style:{"min-width":"70px","text-align":"center"}},{default:a(()=>[g(i(e.severityLabel(l)),1)]),_:2},1032,["color"]),o(re,{percent:e.pctOfTotal(e.currentReview.severitySummary[l]||0,e.currentReview.issuesFound),"stroke-color":e.severityBarColor(l),format:()=>`${e.currentReview.severitySummary[l]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128)),e.currentReview.issuesDetail.length?(d(),f("h4",Vt,i(t.$t("codegen.review_details.issues")),1)):c("v-if",!0),e.currentReview.issuesDetail.length?(d(),k(se,{key:1,size:"small","data-source":e.currentReview.issuesDetail,pagination:{pageSize:8}},{renderItem:a(({item:l})=>[o(ie,null,{default:a(()=>[o(h,{color:e.severityColor(l.severity),style:{"min-width":"60px","text-align":"center"}},{default:a(()=>[g(i(e.severityLabel(l.severity)),1)]),_:2},1032,["color"]),v("span",qt,i(l.rule),1),v("code",Ht,i(e.truncate(l.match,60)),1)]),_:2},1024)]),_:1},8,["data-source"])):c("v-if",!0)])):c("v-if",!0)]),_:1},8,["open","title"])])}const Zt=Oe(Qe,[["render",Wt],["__scopeId","data-v-b0047198"],["__file","/tmp/cc-web-panel-v9Hwrq/repo/packages/web-panel/src/views/Codegen.vue"]]);export{Zt as default};
1
+ import{I as m,J as f,U as v,R as i,c as o,K as a,V as c,o as me,a as te,b as J,r as w,P as d,Q as g,F as A,Z as Q,S as k,$ as ve}from"./vendor-BMxUs6UX.js";import{t as V,_ as Oe,u as pe,b as ye,E as _e,d as R}from"./index-xm1KHUEQ.js";import{a6 as je,aZ as Pe,f as Ee,am as Le,A as Me,Q as De,r as Ne,as as Ue,R as Be}from"./icons-BsDmGpcT.js";const Fe=Object.freeze(["react","vue","express","fastapi","spring_boot"]),ue=Object.freeze(["critical","high","medium","low","info"]);function x(t,n=0){return typeof t=="number"&&Number.isFinite(t)?t:n}function be(t,n=null){if(t==null)return n;if(typeof t!="string")return t;try{return JSON.parse(t)}catch{return n}}function Je(t,n=0){if(!t||typeof t!="object")return null;const s=t.id||"";return s?{key:s,id:s,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:n}:null}function we(t){const n=V(t);return Array.isArray(n)?n.map(Je).filter(Boolean):[]}function Ve(t,n=0){return!t||typeof t!="object"?null:{key:n,rule:String(t.rule||""),severity:String(t.severity||"info").toLowerCase(),match:String(t.match||""),pattern:String(t.pattern||"")}}function qe(t,n=0){if(!t||typeof t!="object")return null;const s=t.id||"";if(!s)return null;const e=be(t.severity_summary??t.severitySummary,null)??t.severity_summary??t.severitySummary,z={};for(const E of ue)z[E]=0;if(e&&typeof e=="object"&&!Array.isArray(e))for(const[E,L]of Object.entries(e))typeof L=="number"&&Number.isFinite(L)&&(z[E]=L);const O=be(t.issues_detail??t.issuesDetail,null)??t.issues_detail??t.issuesDetail,S=Array.isArray(O)?O.map(Ve).filter(Boolean):[];return{key:s,id:s,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:n}}function ke(t){const n=V(t);return Array.isArray(n)?n.map(qe).filter(Boolean):[]}function he(t){const n={};for(const O of ue)n[O]=0;const s=V(t);if(!s||typeof s!="object"||Array.isArray(s))return{ok:!1,reviewId:null,reason:"",issuesFound:0,securityIssues:0,severitySummary:n};const e=!!s.reviewId,z={...n};if(s.severitySummary&&typeof s.severitySummary=="object"&&!Array.isArray(s.severitySummary))for(const[O,S]of Object.entries(s.severitySummary))typeof S=="number"&&Number.isFinite(S)&&(z[O]=S);return{ok:e,reviewId:s.reviewId?String(s.reviewId):null,reason:s.reason?String(s.reason):"",issuesFound:x(s.issuesFound,0),securityIssues:x(s.securityIssues,0),severitySummary:z}}function We(t,n=0){if(!t||typeof t!="object")return null;const s=t.id||"";return s?{key:s,id:s,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:n}:null}function Se(t){const n=V(t);return Array.isArray(n)?n.map(We).filter(Boolean):[]}const He={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 n=JSON.parse(JSON.stringify(He));for(const e of Fe)n.scaffolds.byTemplate[e]=0;const s=V(t);if(!s||typeof s!="object"||Array.isArray(s))return n;if(s.generations&&typeof s.generations=="object"&&(n.generations.total=x(s.generations.total,0),n.generations.totalTokens=x(s.generations.totalTokens,0),n.generations.totalFiles=x(s.generations.totalFiles,0),n.generations.uniqueLanguages=x(s.generations.uniqueLanguages,0)),s.reviews&&typeof s.reviews=="object"&&(n.reviews.total=x(s.reviews.total,0),n.reviews.totalIssues=x(s.reviews.totalIssues,0),n.reviews.totalSecurityIssues=x(s.reviews.totalSecurityIssues,0),n.reviews.avgIssuesPerReview=x(s.reviews.avgIssuesPerReview,0)),s.scaffolds&&typeof s.scaffolds=="object"&&(n.scaffolds.total=x(s.scaffolds.total,0),s.scaffolds.byTemplate&&typeof s.scaffolds.byTemplate=="object"))for(const[e,z]of Object.entries(s.scaffolds.byTemplate))typeof z=="number"&&Number.isFinite(z)&&(n.scaffolds.byTemplate[e]=z);return n}function de(t){const n=V(t);if(!n||typeof n!="object"||Array.isArray(n))return{ok:!1,id:null,reason:""};const s=n.generationId||n.scaffoldId||n.reviewId||null;return{ok:!!s,id:s?String(s):null,reason:n.reason?String(n.reason):""}}function Ke(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 Qe={__name:"Codegen",setup(t,{expose:n}){n();const s=pe(),{t:e}=ye(),z=_e.PRESENTED_IMAGE_SIMPLE,O=w(!1),S=w(!1),E=w(!1),L=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"),N=w(""),h=w(""),G=w(""),U=w(!1),B=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),D=w(null),X=w(null),oe=J(()=>[{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=J(()=>[{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=J(()=>[{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=J(()=>{let r=q.value;if(N.value.trim()){const _=N.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=J(()=>G.value?T.value.filter(r=>r.template===G.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 ie(r){const _=`codegen.severityLabels.${r}`,F=e(_);return F===_?r:F}function se(r){return{critical:"red",high:"orange",medium:"gold",low:"default",info:"blue"}[r]||"default"}function l(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 P(r){return`"${String(r).replace(/"/g,'\\"')}"`}async function K(){O.value=!0;try{const[r,_,F,Ge]=await Promise.all([s.execute("codegen list --limit 200 --json",1e4).catch(()=>({output:""})),s.execute("codegen reviews --limit 200 --json",1e4).catch(()=>({output:""})),s.execute("codegen scaffolds --limit 200 --json",1e4).catch(()=>({output:""})),s.execute("codegen stats --json",8e3).catch(()=>({output:""}))]);q.value=we(r.output),W.value=ke(_.output),T.value=Se(F.output),M.value=Ce(Ge.output)}catch(r){R.error(e("codegen.msg.loadFailed")+": "+(r?.message||r))}finally{O.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 ${P(y.prompt.trim())}`];y.language.trim()&&r.push(`-l ${P(y.language.trim())}`),y.framework.trim()&&r.push(`-f ${P(y.framework.trim())}`),y.code.trim()&&r.push(`--code ${P(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 s.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}E.value=!0,I.value=null;try{const r=[`codegen review -c ${P(p.code)}`];p.language.trim()&&r.push(`-l ${P(p.language.trim())}`),p.generationId.trim()&&r.push(`-g ${P(p.generationId.trim())}`),r.push("--json");const{output:_}=await s.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{E.value=!1}}async function Ie(r){p.generationId=r.id,p.language=r.language||"",p.code=r.generatedCode||"",I.value=null,B.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}L.value=!0;try{const r=[`codegen scaffold -t ${b.template}`,`-n ${P(b.projectName.trim())}`];b.optionsJson.trim()&&r.push(`-o ${P(b.optionsJson.trim())}`),b.files>0&&r.push(`--files ${b.files}`),b.outputPath.trim()&&r.push(`--output ${P(b.outputPath.trim())}`),r.push("--json");const{output:_}=await s.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{L.value=!1}}function ze(r){D.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:s,t:e,EMPTY_IMG:z,loading:O,generating:S,reviewing:E,scaffolding:L,generations:q,reviews:W,scaffolds:T,stats:M,activeTab:j,languageFilter:N,frameworkFilter:h,templateFilter:G,showGenerateModal:U,showReviewModal:B,showScaffoldModal:H,showGenDetailsModal:Y,showReviewDetailsModal:Z,generateForm:y,reviewForm:p,scaffoldForm:b,reviewResult:I,currentGen:D,currentReview:X,generationColumns:oe,reviewColumns:ae,scaffoldColumns:le,filteredGenerations:ne,filteredScaffolds:C,tmplColor:$,tmplBarColor:re,severityLabel:ie,severityColor:se,severityBarColor:l,pctOfTotal:u,truncate:ee,shellQuote:P,loadAll:K,submitGenerate:Re,submitReview:xe,reviewGeneration:Ie,submitScaffold:Ae,viewGenerationDetails:ze,viewReviewDetails:Te,resetGenerateForm:ce,resetScaffoldForm:fe,ref:w,computed:J,onMounted:me,reactive:te,get ReloadOutlined(){return Be},get PlusOutlined(){return Ue},get SafetyOutlined(){return Ne},get CodeOutlined(){return De},get AuditOutlined(){return Me},get WarningOutlined(){return Le},get CheckCircleOutlined(){return Ee},get AppstoreAddOutlined(){return Pe},get GlobalOutlined(){return je},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 Ke},get SCAFFOLD_TEMPLATES(){return Fe},get REVIEW_SEVERITIES(){return ue}};return Object.defineProperty(ge,"__isScriptSetup",{enumerable:!1,value:!0}),ge}},Ye={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Ze={class:"page-title"},Xe={class:"page-sub"},$e={class:"tmpl-count"},et={class:"filter-bar"},tt={style:{color:"var(--text-primary)","font-weight":"500"}},ot={style:{color:"var(--text-muted)","font-size":"11px","font-family":"monospace","margin-top":"2px"}},at={key:1,style:{color:"var(--text-muted)"}},lt={key:1,style:{color:"var(--text-muted)"}},nt={key:3,style:{color:"var(--text-secondary)"}},rt={key:4,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},it={key:5,style:{color:"var(--text-secondary)","font-size":"11px"}},st={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},dt={style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px"}},ut={style:{color:"var(--text-muted)","font-size":"11px","font-family":"monospace","margin-top":"2px"}},ct={key:1,style:{color:"var(--text-muted)"}},ft={key:4,class:"sev-mini"},gt={key:0,style:{color:"#ff4d4f"}},mt={key:1,style:{color:"#fa8c16"}},vt={key:2,style:{color:"#faad14"}},pt={key:3,style:{color:"#888"}},yt={key:4,style:{color:"#1677ff"}},_t={key:5,style:{color:"#52c41a"}},bt={key:5,style:{color:"var(--text-secondary)","font-size":"11px"}},wt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},kt={class:"filter-bar"},ht={style:{color:"var(--text-primary)","font-weight":"500"}},St={style:{color:"var(--text-muted)","font-size":"11px","font-family":"monospace","margin-top":"2px"}},Ct={key:2,style:{color:"var(--text-secondary)"}},Ft={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"11px"}},Rt={key:1,style:{color:"var(--text-muted)"}},xt={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},It={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},At={style:{"padding-top":"8px"}},zt={key:1},Tt={style:{color:"var(--text-primary)","font-size":"12px",margin:"12px 0 6px"}},Gt={key:0,style:{"padding-top":"8px"}},Ot={style:{"font-family":"monospace","font-size":"12px"}},jt={key:1,style:{color:"var(--text-muted)"}},Pt={key:1,style:{color:"var(--text-muted)"}},Et={class:"code-pre"},Lt={class:"code-pre"},Mt={key:0,style:{"padding-top":"8px"}},Dt={style:{"font-family":"monospace","font-size":"12px"}},Nt={style:{"font-family":"monospace","font-size":"12px"}},Ut={style:{"font-family":"monospace","font-size":"12px"}},Bt={key:1,style:{color:"var(--text-muted)"}},Jt={style:{color:"var(--text-primary)","font-size":"13px",margin:"16px 0 8px"}},Vt={key:0,style:{color:"var(--text-primary)","font-size":"13px",margin:"16px 0 8px"}},qt={style:{"margin-left":"8px","font-family":"monospace","font-size":"12px"}},Wt={style:{"margin-left":"8px",padding:"1px 6px",background:"var(--bg-base)","border-radius":"3px","font-size":"11px"}};function Ht(t,n,s,e,z,O){const S=m("a-button"),E=m("a-menu-item"),L=m("a-menu"),q=m("a-dropdown"),W=m("a-space"),T=m("a-statistic"),M=m("a-card"),j=m("a-col"),N=m("a-row"),h=m("a-tag"),G=m("a-input"),U=m("a-table"),B=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"),D=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"),ie=m("a-list-item"),se=m("a-list");return d(),f("div",null,[v("div",Ye,[v("div",null,[v("h2",Ze,i(t.$t("codegen.title")),1),v("p",Xe,i(t.$t("codegen.subtitle")),1)]),o(W,null,{default:a(()=>[o(S,{loading:e.loading,onClick:e.loadAll},{icon:a(()=>[o(e.ReloadOutlined)]),default:a(()=>[g(" "+i(t.$t("codegen.refresh")),1)]),_:1},8,["loading"]),o(S,{onClick:n[0]||(n[0]=l=>e.showReviewModal=!0)},{icon:a(()=>[o(e.SafetyOutlined)]),default:a(()=>[g(" "+i(t.$t("codegen.review")),1)]),_:1}),o(q,null,{overlay:a(()=>[o(L,null,{default:a(()=>[o(E,{key:"generate",onClick:n[1]||(n[1]=l=>e.showGenerateModal=!0)},{default:a(()=>[g(i(t.$t("codegen.actions.generate")),1)]),_:1}),o(E,{key:"scaffold",onClick:n[2]||(n[2]=l=>e.showScaffoldModal=!0)},{default:a(()=>[g(i(t.$t("codegen.actions.scaffold")),1)]),_:1})]),_:1})]),default:a(()=>[o(S,{type:"primary"},{icon:a(()=>[o(e.PlusOutlined)]),default:a(()=>[g(" "+i(t.$t("codegen.newDropdown")),1)]),_:1})]),_:1})]),_:1})]),c(" Stat cards "),o(N,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:a(()=>[o(j,{xs:12,sm:8,lg:5},{default:a(()=>[o(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[o(T,{title:t.$t("codegen.stats.generations"),value:e.stats.generations.total,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:a(()=>[o(e.CodeOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(j,{xs:12,sm:8,lg:5},{default:a(()=>[o(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[o(T,{title:t.$t("codegen.stats.reviews"),value:e.stats.reviews.total,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:a(()=>[o(e.AuditOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(j,{xs:12,sm:8,lg:5},{default:a(()=>[o(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[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:a(()=>[o(e.WarningOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),o(j,{xs:12,sm:8,lg:5},{default:a(()=>[o(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[o(T,{title:t.$t("codegen.stats.scaffolds"),value:e.stats.scaffolds.total,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:a(()=>[o(e.AppstoreAddOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(j,{xs:24,sm:8,lg:4},{default:a(()=>[o(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[o(T,{title:t.$t("codegen.stats.languages"),value:e.stats.generations.uniqueLanguages,"value-style":{color:"#faad14",fontSize:"20px"}},{prefix:a(()=>[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:a(()=>[o(N,{gutter:[12,12]},{default:a(()=>[(d(!0),f(A,null,Q(e.SCAFFOLD_TEMPLATES,l=>(d(),k(j,{key:l,xs:12,sm:8,lg:4},{default:a(()=>[v("div",{class:"tmpl-pill",style:ve({borderLeftColor:e.tmplBarColor(l)})},[o(h,{color:e.tmplColor(l),style:{"font-family":"monospace"}},{default:a(()=>[g(i(l),1)]),_:2},1032,["color"]),v("span",$e,i(e.stats.scaffolds.byTemplate[l]||0),1)],4)]),_:2},1024))),128))]),_:1})]),_:1},8,["title"]),c(" Tabs "),o(Z,{activeKey:e.activeTab,"onUpdate:activeKey":n[6]||(n[6]=l=>e.activeTab=l),class:"codegen-tabs"},{default:a(()=>[c(" ── Generations tab ────────────────────────────────────── "),o(B,{key:"generations",tab:t.$t("codegen.tabs.generations")},{default:a(()=>[v("div",et,[o(G,{value:e.languageFilter,"onUpdate:value":n[3]||(n[3]=l=>e.languageFilter=l),placeholder:t.$t("codegen.filter.languagePlaceholder"),"allow-clear":"",size:"small",style:{"max-width":"180px"}},null,8,["value","placeholder"]),o(G,{value:e.frameworkFilter,"onUpdate:value":n[4]||(n[4]=l=>e.frameworkFilter=l),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:l=>t.$t("codegen.table.totalSuffix",{n:l})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:a(({column:l,record:u})=>[l.key==="prompt"?(d(),f(A,{key:0},[v("span",tt,i(e.truncate(u.prompt,60)),1),v("div",ot,i(u.id.slice(0,16)),1)],64)):c("v-if",!0),l.key==="language"?(d(),f(A,{key:1},[u.language?(d(),k(h,{key:0,color:"blue",style:{"font-family":"monospace"}},{default:a(()=>[g(i(u.language),1)]),_:2},1024)):(d(),f("span",at,"—"))],64)):c("v-if",!0),l.key==="framework"?(d(),f(A,{key:2},[u.framework?(d(),k(h,{key:0,color:"purple",style:{"font-family":"monospace"}},{default:a(()=>[g(i(u.framework),1)]),_:2},1024)):(d(),f("span",lt,"—"))],64)):c("v-if",!0),l.key==="fileCount"?(d(),f("span",nt,i(u.fileCount),1)):c("v-if",!0),l.key==="tokenCount"?(d(),f("span",rt,i(u.tokenCount),1)):c("v-if",!0),l.key==="createdAt"?(d(),f("span",it,i(e.formatCodegenTime(u.createdAt)),1)):c("v-if",!0),l.key==="action"?(d(),f(A,{key:6},[o(S,{size:"small",type:"link",onClick:ee=>e.viewGenerationDetails(u)},{default:a(()=>[g(i(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:a(()=>[g(i(t.$t("codegen.table.actionReview")),1)]),_:1},8,["onClick"])):c("v-if",!0)],64)):c("v-if",!0)]),emptyText:a(()=>[v("div",st,[o(e.CodeOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),g(" "+i(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(B,{key:"reviews",tab:t.$t("codegen.tabs.reviews")},{default:a(()=>[o(U,{columns:e.reviewColumns,"data-source":e.reviews,pagination:{pageSize:20,showTotal:l=>t.$t("codegen.table.totalSuffix",{n:l})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:a(({column:l,record:u})=>[l.key==="codeHash"?(d(),f(A,{key:0},[v("span",dt,i(u.codeHash),1),v("div",ut,i(u.id.slice(0,16)),1)],64)):c("v-if",!0),l.key==="language"?(d(),f(A,{key:1},[u.language?(d(),k(h,{key:0,color:"blue",style:{"font-family":"monospace"}},{default:a(()=>[g(i(u.language),1)]),_:2},1024)):(d(),f("span",ct,"—"))],64)):c("v-if",!0),l.key==="issuesFound"?(d(),k(h,{key:2,color:u.issuesFound===0?"green":u.issuesFound>5?"red":"orange"},{default:a(()=>[g(i(t.$t("codegen.table.issuesSuffix",{n:u.issuesFound})),1)]),_:2},1032,["color"])):c("v-if",!0),l.key==="securityIssues"?(d(),f(A,{key:3},[u.securityIssues>0?(d(),k(h,{key:0,color:"red"},{default:a(()=>[o(e.WarningOutlined),g(" "+i(u.securityIssues),1)]),_:2},1024)):(d(),k(h,{key:1,color:"green"},{default:a(()=>[o(e.CheckCircleOutlined),n[26]||(n[26]=g(" 0 ",-1))]),_:1}))],64)):c("v-if",!0),l.key==="severityBreak"?(d(),f("span",ft,[u.severitySummary.critical>0?(d(),f("span",gt,"C:"+i(u.severitySummary.critical),1)):c("v-if",!0),u.severitySummary.high>0?(d(),f("span",mt,"H:"+i(u.severitySummary.high),1)):c("v-if",!0),u.severitySummary.medium>0?(d(),f("span",vt,"M:"+i(u.severitySummary.medium),1)):c("v-if",!0),u.severitySummary.low>0?(d(),f("span",pt,"L:"+i(u.severitySummary.low),1)):c("v-if",!0),u.severitySummary.info>0?(d(),f("span",yt,"I:"+i(u.severitySummary.info),1)):c("v-if",!0),u.issuesFound===0?(d(),f("span",_t,i(t.$t("codegen.table.noIssues")),1)):c("v-if",!0)])):c("v-if",!0),l.key==="reviewedAt"?(d(),f("span",bt,i(e.formatCodegenTime(u.reviewedAt)),1)):c("v-if",!0),l.key==="action"?(d(),k(S,{key:6,size:"small",type:"link",onClick:ee=>e.viewReviewDetails(u)},{default:a(()=>[g(i(t.$t("codegen.table.actionDetails")),1)]),_:1},8,["onClick"])):c("v-if",!0)]),emptyText:a(()=>[v("div",wt,[o(e.SafetyOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),g(" "+i(t.$t("codegen.table.emptyReviews")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),c(" ── Scaffolds tab ─────────────────────────────────────── "),o(B,{key:"scaffolds",tab:t.$t("codegen.tabs.scaffolds")},{default:a(()=>[v("div",kt,[o(Y,{value:e.templateFilter,"onUpdate:value":n[5]||(n[5]=l=>e.templateFilter=l),size:"small","button-style":"solid"},{default:a(()=>[o(H,{value:""},{default:a(()=>[g(i(t.$t("codegen.filter.allTemplates")),1)]),_:1}),(d(!0),f(A,null,Q(e.SCAFFOLD_TEMPLATES,l=>(d(),k(H,{key:l,value:l},{default:a(()=>[g(i(l),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),o(U,{columns:e.scaffoldColumns,"data-source":e.filteredScaffolds,pagination:{pageSize:20,showTotal:l=>t.$t("codegen.table.totalSuffix",{n:l})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:a(({column:l,record:u})=>[l.key==="projectName"?(d(),f(A,{key:0},[v("span",ht,i(u.projectName||t.$t("codegen.table.unnamed")),1),v("div",St,i(u.id.slice(0,16)),1)],64)):c("v-if",!0),l.key==="template"?(d(),k(h,{key:1,color:e.tmplColor(u.template),style:{"font-family":"monospace"}},{default:a(()=>[g(i(u.template),1)]),_:2},1032,["color"])):c("v-if",!0),l.key==="filesGenerated"?(d(),f("span",Ct,i(u.filesGenerated),1)):c("v-if",!0),l.key==="outputPath"?(d(),f(A,{key:3},[u.outputPath?(d(),f("span",Ft,i(e.truncate(u.outputPath,40)),1)):(d(),f("span",Rt,"—"))],64)):c("v-if",!0),l.key==="createdAt"?(d(),f("span",xt,i(e.formatCodegenTime(u.createdAt)),1)):c("v-if",!0)]),emptyText:a(()=>[v("div",It,[o(e.AppstoreAddOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),g(" "+i(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(D,{open:e.showGenerateModal,"onUpdate:open":n[13]||(n[13]=l=>e.showGenerateModal=l),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:a(()=>[o(I,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:a(()=>[o(p,{label:t.$t("codegen.generate_modal.promptLabel"),required:""},{default:a(()=>[o(y,{value:e.generateForm.prompt,"onUpdate:value":n[7]||(n[7]=l=>e.generateForm.prompt=l),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:a(()=>[o(G,{value:e.generateForm.language,"onUpdate:value":n[8]||(n[8]=l=>e.generateForm.language=l),placeholder:t.$t("codegen.generate_modal.languagePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{label:t.$t("codegen.generate_modal.frameworkLabel")},{default:a(()=>[o(G,{value:e.generateForm.framework,"onUpdate:value":n[9]||(n[9]=l=>e.generateForm.framework=l),placeholder:t.$t("codegen.generate_modal.frameworkPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{label:t.$t("codegen.generate_modal.codeLabel")},{default:a(()=>[o(y,{value:e.generateForm.code,"onUpdate:value":n[10]||(n[10]=l=>e.generateForm.code=l),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:a(()=>[o(b,{value:e.generateForm.files,"onUpdate:value":n[11]||(n[11]=l=>e.generateForm.files=l),min:0,style:{width:"120px"}},null,8,["value"])]),_:1},8,["label"]),o(p,{label:t.$t("codegen.generate_modal.tokensLabel")},{default:a(()=>[o(b,{value:e.generateForm.tokens,"onUpdate:value":n[12]||(n[12]=l=>e.generateForm.tokens=l),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(D,{open:e.showReviewModal,"onUpdate:open":n[17]||(n[17]=l=>e.showReviewModal=l),title:t.$t("codegen.review_modal.title"),width:720,footer:null},{default:a(()=>[v("div",At,[o(I,{"label-col":{span:5},"wrapper-col":{span:19}},{default:a(()=>[o(p,{label:t.$t("codegen.review_modal.languageLabel")},{default:a(()=>[o(G,{value:e.reviewForm.language,"onUpdate:value":n[14]||(n[14]=l=>e.reviewForm.language=l),placeholder:t.$t("codegen.review_modal.languagePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{label:t.$t("codegen.review_modal.generationIdLabel")},{default:a(()=>[o(G,{value:e.reviewForm.generationId,"onUpdate:value":n[15]||(n[15]=l=>e.reviewForm.generationId=l),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:a(()=>[o(y,{value:e.reviewForm.code,"onUpdate:value":n[16]||(n[16]=l=>e.reviewForm.code=l),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:a(()=>[o(S,{type:"primary",loading:e.reviewing,onClick:e.submitReview},{icon:a(()=>[o(e.SafetyOutlined)]),default:a(()=>[g(" "+i(t.$t("codegen.review_modal.submit")),1)]),_:1},8,["loading"])]),_:1})]),_:1}),o(X),e.reviewResult?(d(),f("div",zt,[o(N,{gutter:12,style:{"margin-bottom":"12px"}},{default:a(()=>[o(j,{span:8},{default:a(()=>[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:a(()=>[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:a(()=>[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",Tt,i(t.$t("codegen.review_modal.bySeverity")),1),o(W,null,{default:a(()=>[(d(!0),f(A,null,Q(e.REVIEW_SEVERITIES,l=>(d(),k(h,{key:l,color:e.severityColor(l)},{default:a(()=>[g(i(e.severityLabel(l))+": "+i(e.reviewResult.severitySummary[l]||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(D,{open:e.showScaffoldModal,"onUpdate:open":n[23]||(n[23]=l=>e.showScaffoldModal=l),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:a(()=>[o(I,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:a(()=>[o(p,{label:t.$t("codegen.scaffold_modal.templateLabel"),required:""},{default:a(()=>[o(ne,{value:e.scaffoldForm.template,"onUpdate:value":n[18]||(n[18]=l=>e.scaffoldForm.template=l)},{default:a(()=>[(d(!0),f(A,null,Q(e.SCAFFOLD_TEMPLATES,l=>(d(),k(le,{key:l,value:l},{default:a(()=>[g(i(l),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),o(p,{label:t.$t("codegen.scaffold_modal.projectLabel"),required:""},{default:a(()=>[o(G,{value:e.scaffoldForm.projectName,"onUpdate:value":n[19]||(n[19]=l=>e.scaffoldForm.projectName=l),placeholder:t.$t("codegen.scaffold_modal.projectPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{label:t.$t("codegen.scaffold_modal.optionsLabel")},{default:a(()=>[o(y,{value:e.scaffoldForm.optionsJson,"onUpdate:value":n[20]||(n[20]=l=>e.scaffoldForm.optionsJson=l),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:a(()=>[o(b,{value:e.scaffoldForm.files,"onUpdate:value":n[21]||(n[21]=l=>e.scaffoldForm.files=l),min:0,style:{width:"120px"}},null,8,["value"])]),_:1},8,["label"]),o(p,{label:t.$t("codegen.scaffold_modal.outputLabel")},{default:a(()=>[o(G,{value:e.scaffoldForm.outputPath,"onUpdate:value":n[22]||(n[22]=l=>e.scaffoldForm.outputPath=l),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(D,{open:e.showGenDetailsModal,"onUpdate:open":n[24]||(n[24]=l=>e.showGenDetailsModal=l),title:t.$t("codegen.gen_details.title",{id:e.currentGen?.id?.slice(0,12)||""}),width:780,footer:null},{default:a(()=>[e.currentGen?(d(),f("div",Gt,[o($,{column:2,size:"small",bordered:""},{default:a(()=>[o(C,{label:t.$t("codegen.gen_details.id"),span:2},{default:a(()=>[v("span",Ot,i(e.currentGen.id),1)]),_:1},8,["label"]),o(C,{label:t.$t("codegen.gen_details.language")},{default:a(()=>[e.currentGen.language?(d(),k(h,{key:0,color:"blue"},{default:a(()=>[g(i(e.currentGen.language),1)]),_:1})):(d(),f("span",jt,"—"))]),_:1},8,["label"]),o(C,{label:t.$t("codegen.gen_details.framework")},{default:a(()=>[e.currentGen.framework?(d(),k(h,{key:0,color:"purple"},{default:a(()=>[g(i(e.currentGen.framework),1)]),_:1})):(d(),f("span",Pt,"—"))]),_:1},8,["label"]),o(C,{label:t.$t("codegen.gen_details.fileCount")},{default:a(()=>[g(i(e.currentGen.fileCount),1)]),_:1},8,["label"]),o(C,{label:t.$t("codegen.gen_details.tokenCount")},{default:a(()=>[g(i(e.currentGen.tokenCount),1)]),_:1},8,["label"]),o(C,{label:t.$t("codegen.gen_details.createdAt"),span:2},{default:a(()=>[g(i(e.formatCodegenTime(e.currentGen.createdAt)),1)]),_:1},8,["label"]),o(C,{label:t.$t("codegen.gen_details.prompt"),span:2},{default:a(()=>[v("pre",Et,i(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:a(()=>[v("pre",Lt,i(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(D,{open:e.showReviewDetailsModal,"onUpdate:open":n[25]||(n[25]=l=>e.showReviewDetailsModal=l),title:t.$t("codegen.review_details.title",{id:e.currentReview?.id?.slice(0,12)||""}),width:720,footer:null},{default:a(()=>[e.currentReview?(d(),f("div",Mt,[o($,{column:2,size:"small",bordered:""},{default:a(()=>[o(C,{label:t.$t("codegen.review_details.id"),span:2},{default:a(()=>[v("span",Dt,i(e.currentReview.id),1)]),_:1},8,["label"]),o(C,{label:t.$t("codegen.review_details.codeHash"),span:2},{default:a(()=>[v("span",Nt,i(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:a(()=>[v("span",Ut,i(e.currentReview.generationId),1)]),_:1},8,["label"])):c("v-if",!0),o(C,{label:t.$t("codegen.review_details.language")},{default:a(()=>[e.currentReview.language?(d(),k(h,{key:0,color:"blue"},{default:a(()=>[g(i(e.currentReview.language),1)]),_:1})):(d(),f("span",Bt,"—"))]),_:1},8,["label"]),o(C,{label:t.$t("codegen.review_details.reviewedAt")},{default:a(()=>[g(i(e.formatCodegenTime(e.currentReview.reviewedAt)),1)]),_:1},8,["label"]),o(C,{label:t.$t("codegen.review_details.issuesFound")},{default:a(()=>[g(i(e.currentReview.issuesFound),1)]),_:1},8,["label"]),o(C,{label:t.$t("codegen.review_details.securityIssues")},{default:a(()=>[v("span",{style:ve({color:e.currentReview.securityIssues>0?"#ff4d4f":"#52c41a"})},i(e.currentReview.securityIssues),5)]),_:1},8,["label"])]),_:1}),v("h4",Jt,i(t.$t("codegen.review_details.bySeverity")),1),(d(!0),f(A,null,Q(e.REVIEW_SEVERITIES,l=>(d(),f("div",{key:l,class:"bd-row"},[o(h,{color:e.severityColor(l),style:{"min-width":"70px","text-align":"center"}},{default:a(()=>[g(i(e.severityLabel(l)),1)]),_:2},1032,["color"]),o(re,{percent:e.pctOfTotal(e.currentReview.severitySummary[l]||0,e.currentReview.issuesFound),"stroke-color":e.severityBarColor(l),format:()=>`${e.currentReview.severitySummary[l]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128)),e.currentReview.issuesDetail.length?(d(),f("h4",Vt,i(t.$t("codegen.review_details.issues")),1)):c("v-if",!0),e.currentReview.issuesDetail.length?(d(),k(se,{key:1,size:"small","data-source":e.currentReview.issuesDetail,pagination:{pageSize:8}},{renderItem:a(({item:l})=>[o(ie,null,{default:a(()=>[o(h,{color:e.severityColor(l.severity),style:{"min-width":"60px","text-align":"center"}},{default:a(()=>[g(i(e.severityLabel(l.severity)),1)]),_:2},1032,["color"]),v("span",qt,i(l.rule),1),v("code",Wt,i(e.truncate(l.match,60)),1)]),_:2},1024)]),_:1},8,["data-source"])):c("v-if",!0)])):c("v-if",!0)]),_:1},8,["open","title"])])}const Zt=Oe(Qe,[["render",Ht],["__scopeId","data-v-b0047198"],["__file","/tmp/cc-web-panel-1UABPy/repo/packages/web-panel/src/views/Codegen.vue"]]);export{Zt as default};
@@ -1 +1 @@
1
- import{q as O,f as m,h as $,i as w}from"./index-BgN5G5vF.js";import{d as G,c as I,b as g}from"./vendor-BMxUs6UX.js";import{u as R,a as _}from"./index-C_MfcrLf.js";function A(r){return typeof r=="number"?`${r} ${r} auto`:/^\d+(\.\d+)?(px|em|rem|%)$/.test(r)?`0 0 ${r}`:r}const E=()=>({span:[String,Number],order:[String,Number],offset:[String,Number],push:[String,Number],pull:[String,Number],xs:{type:[String,Number,Object],default:void 0},sm:{type:[String,Number,Object],default:void 0},md:{type:[String,Number,Object],default:void 0},lg:{type:[String,Number,Object],default:void 0},xl:{type:[String,Number,Object],default:void 0},xxl:{type:[String,Number,Object],default:void 0},prefixCls:String,flex:[String,Number]}),F=["xs","sm","md","lg","xl","xxl"],q=G({compatConfig:{MODE:3},name:"ACol",inheritAttrs:!1,props:E(),setup(r,b){let{slots:p,attrs:d}=b;const{gutter:S,supportFlexGap:h,wrap:x}=R(),{prefixCls:f,direction:y}=O("col",r),[N,v]=_(f),j=g(()=>{const{span:n,order:u,offset:s,push:o,pull:c}=r,t=f.value;let i={};return F.forEach(l=>{let e={};const a=r[l];typeof a=="number"?e.span=a:typeof a=="object"&&(e=a||{}),i=$($({},i),{[`${t}-${l}-${e.span}`]:e.span!==void 0,[`${t}-${l}-order-${e.order}`]:e.order||e.order===0,[`${t}-${l}-offset-${e.offset}`]:e.offset||e.offset===0,[`${t}-${l}-push-${e.push}`]:e.push||e.push===0,[`${t}-${l}-pull-${e.pull}`]:e.pull||e.pull===0,[`${t}-rtl`]:y.value==="rtl"})}),w(t,{[`${t}-${n}`]:n!==void 0,[`${t}-order-${u}`]:u,[`${t}-offset-${s}`]:s,[`${t}-push-${o}`]:o,[`${t}-pull-${c}`]:c},i,d.class,v.value)}),C=g(()=>{const{flex:n}=r,u=S.value,s={};if(u&&u[0]>0){const o=`${u[0]/2}px`;s.paddingLeft=o,s.paddingRight=o}if(u&&u[1]>0&&!h.value){const o=`${u[1]/2}px`;s.paddingTop=o,s.paddingBottom=o}return n&&(s.flex=A(n),x.value===!1&&!s.minWidth&&(s.minWidth=0)),s});return()=>{var n;return N(I("div",m(m({},d),{},{class:j.value,style:[C.value,d.style]}),[(n=p.default)===null||n===void 0?void 0:n.call(p)]))}}});export{q as C};
1
+ import{q as O,f as m,h as $,i as w}from"./index-xm1KHUEQ.js";import{d as G,c as I,b as g}from"./vendor-BMxUs6UX.js";import{u as R,a as _}from"./index-C1S30j-Z.js";function A(r){return typeof r=="number"?`${r} ${r} auto`:/^\d+(\.\d+)?(px|em|rem|%)$/.test(r)?`0 0 ${r}`:r}const E=()=>({span:[String,Number],order:[String,Number],offset:[String,Number],push:[String,Number],pull:[String,Number],xs:{type:[String,Number,Object],default:void 0},sm:{type:[String,Number,Object],default:void 0},md:{type:[String,Number,Object],default:void 0},lg:{type:[String,Number,Object],default:void 0},xl:{type:[String,Number,Object],default:void 0},xxl:{type:[String,Number,Object],default:void 0},prefixCls:String,flex:[String,Number]}),F=["xs","sm","md","lg","xl","xxl"],q=G({compatConfig:{MODE:3},name:"ACol",inheritAttrs:!1,props:E(),setup(r,b){let{slots:p,attrs:d}=b;const{gutter:S,supportFlexGap:h,wrap:x}=R(),{prefixCls:f,direction:y}=O("col",r),[N,v]=_(f),j=g(()=>{const{span:n,order:u,offset:s,push:o,pull:c}=r,t=f.value;let i={};return F.forEach(l=>{let e={};const a=r[l];typeof a=="number"?e.span=a:typeof a=="object"&&(e=a||{}),i=$($({},i),{[`${t}-${l}-${e.span}`]:e.span!==void 0,[`${t}-${l}-order-${e.order}`]:e.order||e.order===0,[`${t}-${l}-offset-${e.offset}`]:e.offset||e.offset===0,[`${t}-${l}-push-${e.push}`]:e.push||e.push===0,[`${t}-${l}-pull-${e.pull}`]:e.pull||e.pull===0,[`${t}-rtl`]:y.value==="rtl"})}),w(t,{[`${t}-${n}`]:n!==void 0,[`${t}-order-${u}`]:u,[`${t}-offset-${s}`]:s,[`${t}-push-${o}`]:o,[`${t}-pull-${c}`]:c},i,d.class,v.value)}),C=g(()=>{const{flex:n}=r,u=S.value,s={};if(u&&u[0]>0){const o=`${u[0]/2}px`;s.paddingLeft=o,s.paddingRight=o}if(u&&u[1]>0&&!h.value){const o=`${u[1]/2}px`;s.paddingTop=o,s.paddingBottom=o}return n&&(s.flex=A(n),x.value===!1&&!s.minWidth&&(s.minWidth=0)),s});return()=>{var n;return N(I("div",m(m({},d),{},{class:j.value,style:[C.value,d.style]}),[(n=p.default)===null||n===void 0?void 0:n.call(p)]))}}});export{q as C};
@@ -1 +1 @@
1
- import{I as y,J as f,U as x,R as c,c as e,K as a,V as g,r as b,o as Z,a as W,b as q,P as d,Q as p,F as M,Z as yt,S as N,$ as ft}from"./vendor-BMxUs6UX.js";import{_ as gt,b as G,u as Y,S as $,U as tt,V as et,W as at,X as ot,d as m}from"./index-BgN5G5vF.js";import{aT as _t,B as pt,ab as vt,a4 as xt,aE as bt,J as kt,aP as ht,ai as Ct,R as wt}from"./icons-BsDmGpcT.js";const Ft={__name:"Community",setup(nt,{expose:i}){i();const{t:s,locale:t}=G(),v=Y(),B=b(!1),k=b(!1),A=b(!1),h=b(""),C=b({...$}),w=b([]),z=b([]),j=b([]),E=b("posts"),R=b(!1),U=b(!1),F=W({author:"",content:""}),_=W({name:"",did:"",email:"",notes:""}),K=q(()=>[{title:s("community.contactColumns.name"),key:"name",dataIndex:"name",width:"160px"},{title:s("community.contactColumns.did"),key:"did",dataIndex:"did"},{title:s("community.contactColumns.email"),key:"email",dataIndex:"email",width:"200px"},{title:s("community.contactColumns.createdAt"),key:"createdAt",dataIndex:"createdAt",width:"160px"},{title:s("community.contactColumns.action"),key:"action",width:"180px"}]),P=q(()=>[{title:s("community.friendColumns.contact"),key:"contact"},{title:s("community.friendColumns.status"),key:"status",width:"120px"},{title:s("community.friendColumns.createdAt"),key:"createdAt",dataIndex:"createdAt",width:"160px"},{title:s("community.friendColumns.action"),key:"action",width:"100px"}]),O=q(()=>z.value.map(n=>{const o=w.value.find(u=>u.id===n.contactId);return{...n,contactName:o?o.name:""}})),I=q(()=>new Set(z.value.map(n=>n.contactId)));function D(n){return I.value.has(n)}function V(n){const o=["#1677ff","#52c41a","#722ed1","#faad14","#ff4d4f","#13c2c2","#eb2f96"];let u=0;for(let S=0;S<n.length;S++)u=u*31+n.charCodeAt(S)>>>0;return o[u%o.length]}function l(n){return n?n.length>28?n.slice(0,16)+"..."+n.slice(-8):n:""}function r(n){if(!n)return"—";if(typeof n!="string")return String(n);const o=new Date(n);if(isNaN(o.getTime()))return n;const u=t.value==="zh-CN"?"zh-CN":"en-US";return o.toLocaleString(u,{hour12:!1})}function H(n){return{accepted:"green",pending:"orange",blocked:"red"}[n]||"default"}function lt(n){const o=`community.status.${n}`,u=s(o);return u===o?n:u}async function T(){B.value=!0;try{const[n,o,u,S]=await Promise.all([v.execute("social stats --json",1e4).catch(()=>({output:""})),v.execute("social contact list --json",1e4).catch(()=>({output:""})),v.execute("social friend list --json",1e4).catch(()=>({output:""})),v.execute("social post list --json",1e4).catch(()=>({output:""}))]);C.value=tt(n.output),w.value=et(o.output),z.value=at(u.output),j.value=ot(S.output).sort((L,ut)=>(ut.createdAt||"").localeCompare(L.createdAt||""))}catch(n){m.error(s("community.messages.loadFailed",{err:n?.message||n}))}finally{B.value=!1}}async function st(){const n=F.content.trim();if(!n){m.warning(s("community.messages.contentRequired"));return}k.value=!0;try{const o=n.replace(/"/g,'\\"'),u=F.author.trim(),S=u?`social post publish "${o}" --author "${u.replace(/"/g,'\\"')}"`:`social post publish "${o}"`,{output:L}=await v.execute(S,15e3);if(/error|失败/i.test(L)&&!/"id"/.test(L)){m.error(s("community.messages.publishFailed",{err:L.slice(0,120)}));return}m.success(s("community.messages.publishOk")),R.value=!1,J(),await T()}catch(o){m.error(s("community.messages.publishFailed",{err:o?.message||o}))}finally{k.value=!1}}async function it(){const n=_.name.trim();if(!n){m.warning(s("community.messages.nameRequired"));return}A.value=!0;try{const o=[`social contact add "${n.replace(/"/g,'\\"')}"`];_.did.trim()&&o.push(`--did "${_.did.trim().replace(/"/g,'\\"')}"`),_.email.trim()&&o.push(`--email "${_.email.trim().replace(/"/g,'\\"')}"`),_.notes.trim()&&o.push(`--notes "${_.notes.trim().replace(/"/g,'\\"')}"`);const{output:u}=await v.execute(o.join(" "),15e3);if(/error|失败/i.test(u)&&!/"id"/.test(u)){m.error(s("community.messages.addFailed",{err:u.slice(0,120)}));return}m.success(s("community.messages.addOk")),U.value=!1,Q(),await T()}catch(o){m.error(s("community.messages.addFailed",{err:o?.message||o}))}finally{A.value=!1}}async function ct(n){try{const{output:o}=await v.execute(`social contact delete ${n.id}`,1e4);if(/error|失败/i.test(o)){m.error(s("community.messages.deleteFailed",{err:o.slice(0,120)}));return}m.success(s("community.messages.deleteOk")),await T()}catch(o){m.error(s("community.messages.deleteFailed",{err:o?.message||o}))}}async function rt(n){h.value=n.id;try{const{output:o}=await v.execute(`social friend add ${n.id}`,1e4);if(/error|失败/i.test(o)&&!/"id"/.test(o)){m.error(s("community.messages.friendRequestFailed",{err:o.slice(0,120)}));return}m.success(s("community.messages.friendRequestOk")),await T(),E.value="friends"}catch(o){m.error(s("community.messages.friendRequestFailed",{err:o?.message||o}))}finally{h.value=""}}async function dt(n){try{const{output:o}=await v.execute(`social friend remove ${n.contactId}`,1e4);if(/error|失败/i.test(o)){m.error(s("community.messages.removeFailed",{err:o.slice(0,120)}));return}m.success(s("community.messages.removeOk")),await T()}catch(o){m.error(s("community.messages.removeFailed",{err:o?.message||o}))}}async function mt(n){try{await v.execute(`social post like ${n.id}`,1e4),n.likes++,T()}catch(o){m.error(s("community.messages.likeFailed",{err:o?.message||o}))}}function J(){F.author="",F.content=""}function Q(){_.name="",_.did="",_.email="",_.notes=""}Z(T);const X={t:s,locale:t,ws:v,loading:B,publishing:k,addingContact:A,addingFriend:h,stats:C,contacts:w,friends:z,posts:j,activeTab:E,showPostModal:R,showContactModal:U,postForm:F,contactForm:_,contactColumns:K,friendColumns:P,friendRows:O,friendIds:I,isFriend:D,avatarColor:V,shortDid:l,formatTime:r,statusColor:H,statusLabel:lt,loadAll:T,publishPost:st,addContact:it,deleteContact:ct,sendFriendRequest:rt,removeFriend:dt,likePost:mt,resetPostForm:J,resetContactForm:Q,ref:b,computed:q,onMounted:Z,reactive:W,get useI18n(){return G},get ReloadOutlined(){return wt},get EditOutlined(){return Ct},get UserAddOutlined(){return ht},get TeamOutlined(){return kt},get HeartOutlined(){return bt},get FileTextOutlined(){return xt},get MessageOutlined(){return vt},get BellOutlined(){return pt},get LikeOutlined(){return _t},get message(){return m},get useWsStore(){return Y},get parseSocialStats(){return tt},get parseContacts(){return et},get parseFriends(){return at},get parsePosts(){return ot},get STATS_DEFAULTS(){return $}};return Object.defineProperty(X,"__isScriptSetup",{enumerable:!1,value:!0}),X}},Ot={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Tt={class:"page-title"},St={class:"page-sub"},zt={key:0,style:{"text-align":"center",padding:"60px"}},Rt={key:1,style:{"text-align":"center",padding:"60px",color:"var(--text-muted)"}},Pt={key:2,class:"post-feed"},At={class:"post-head"},Ut={class:"post-meta"},It={class:"post-author"},Lt={class:"post-time"},qt={class:"post-body"},Mt={style:{color:"var(--text-primary)","font-weight":"500"}},Nt={key:0,style:{color:"var(--text-secondary)","font-size":"11px","font-family":"monospace"}},Bt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},jt={key:0,style:{color:"var(--text-primary)","font-weight":"500"}},Et={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"11px"}},Dt={key:1,style:{color:"var(--text-muted)"}},Vt={key:0,style:{color:"var(--text-secondary)","font-size":"12px"}},Ht={key:1,style:{color:"var(--text-muted)"}},Kt={key:3,style:{color:"var(--text-secondary)","font-size":"11px"}},Wt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}};function Jt(nt,i,s,t,v,B){const k=y("a-button"),A=y("a-space"),h=y("a-statistic"),C=y("a-card"),w=y("a-col"),z=y("a-row"),j=y("a-spin"),E=y("a-avatar"),R=y("a-tab-pane"),U=y("a-tag"),F=y("a-popconfirm"),_=y("a-table"),K=y("a-tabs"),P=y("a-input"),O=y("a-form-item"),I=y("a-textarea"),D=y("a-form"),V=y("a-modal");return d(),f("div",null,[x("div",Ot,[x("div",null,[x("h2",Tt,c(t.t("community.title")),1),x("p",St,c(t.t("community.subtitle")),1)]),e(A,null,{default:a(()=>[e(k,{loading:t.loading,onClick:t.loadAll},{icon:a(()=>[e(t.ReloadOutlined)]),default:a(()=>[p(" "+c(t.t("community.refresh")),1)]),_:1},8,["loading"]),e(k,{type:"primary",onClick:i[0]||(i[0]=l=>t.showPostModal=!0)},{icon:a(()=>[e(t.EditOutlined)]),default:a(()=>[p(" "+c(t.t("community.publishButton")),1)]),_:1}),e(k,{onClick:i[1]||(i[1]=l=>t.showContactModal=!0)},{icon:a(()=>[e(t.UserAddOutlined)]),default:a(()=>[p(" "+c(t.t("community.addContactButton")),1)]),_:1})]),_:1})]),g(" Stats overview "),e(z,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:a(()=>[e(w,{xs:12,sm:8,lg:5},{default:a(()=>[e(C,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[e(h,{title:t.t("community.stats.contacts"),value:t.stats.contacts,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:a(()=>[e(t.TeamOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),e(w,{xs:12,sm:8,lg:5},{default:a(()=>[e(C,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[e(h,{title:t.t("community.stats.friends"),value:t.stats.friends,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:a(()=>[e(t.HeartOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),e(w,{xs:12,sm:8,lg:5},{default:a(()=>[e(C,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[e(h,{title:t.t("community.stats.posts"),value:t.stats.posts,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:a(()=>[e(t.FileTextOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),e(w,{xs:12,sm:8,lg:5},{default:a(()=>[e(C,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[e(h,{title:t.t("community.stats.messages"),value:t.stats.messages,"value-style":{color:"#faad14",fontSize:"20px"}},{prefix:a(()=>[e(t.MessageOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),e(w,{xs:24,sm:8,lg:4},{default:a(()=>[e(C,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[e(h,{title:t.t("community.stats.pendingRequests"),value:t.stats.pendingRequests,"value-style":{color:t.stats.pendingRequests>0?"#ff4d4f":"#888",fontSize:"20px"}},{prefix:a(()=>[e(t.BellOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1})]),_:1}),g(" Tabs "),e(K,{activeKey:t.activeTab,"onUpdate:activeKey":i[2]||(i[2]=l=>t.activeTab=l),class:"community-tabs"},{default:a(()=>[g(" ── Posts tab ─────────────────────────────────────────────── "),e(R,{key:"posts",tab:t.t("community.tabs.posts")},{default:a(()=>[t.loading&&!t.posts.length?(d(),f("div",zt,[e(j,{size:"large"})])):t.posts.length?(d(),f("div",Pt,[(d(!0),f(M,null,yt(t.posts,l=>(d(),N(C,{key:l.key,class:"post-card","body-style":{padding:"16px"}},{default:a(()=>[x("div",At,[e(E,{style:ft({backgroundColor:t.avatarColor(l.author)})},{default:a(()=>[p(c(l.author.slice(0,1).toUpperCase()),1)]),_:2},1032,["style"]),x("div",Ut,[x("div",It,c(l.author),1),x("div",Lt,c(t.formatTime(l.createdAt)),1)]),e(k,{size:"small",type:"text",onClick:r=>t.likePost(l)},{icon:a(()=>[e(t.LikeOutlined)]),default:a(()=>[p(" "+c(l.likes),1)]),_:2},1032,["onClick"])]),x("div",qt,c(l.content),1)]),_:2},1024))),128))])):(d(),f("div",Rt,[e(t.FileTextOutlined,{style:{"font-size":"40px","margin-bottom":"12px",display:"block"}}),p(" "+c(t.t("community.posts.emptyText")),1)]))]),_:1},8,["tab"]),g(" ── Friends tab ───────────────────────────────────────────── "),e(R,{key:"friends",tab:t.t("community.tabs.friends")},{default:a(()=>[e(_,{columns:t.friendColumns,"data-source":t.friendRows,pagination:{pageSize:20,showTotal:l=>t.t("community.totals.rows",{count:l})},size:"small",loading:t.loading,style:{background:"var(--bg-card)"}},{bodyCell:a(({column:l,record:r})=>[l.key==="contact"?(d(),f(M,{key:0},[x("span",Mt,c(r.contactName||r.contactId),1),r.contactName?(d(),f("div",Nt,c(r.contactId),1)):g("v-if",!0)],64)):g("v-if",!0),l.key==="status"?(d(),N(U,{key:1,color:t.statusColor(r.status)},{default:a(()=>[p(c(t.statusLabel(r.status)),1)]),_:2},1032,["color"])):g("v-if",!0),l.key==="action"?(d(),N(F,{key:2,title:t.t("community.friends.removeConfirm"),"ok-text":t.t("community.friends.removeOk"),"cancel-text":t.t("common.cancel"),onConfirm:H=>t.removeFriend(r)},{default:a(()=>[e(k,{size:"small",type:"link",danger:""},{default:a(()=>[p(c(t.t("community.friends.remove")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):g("v-if",!0)]),emptyText:a(()=>[x("div",Bt,[e(t.HeartOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),p(" "+c(t.t("community.friends.emptyText")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),g(" ── Contacts tab ──────────────────────────────────────────── "),e(R,{key:"contacts",tab:t.t("community.tabs.contacts")},{default:a(()=>[e(_,{columns:t.contactColumns,"data-source":t.contacts,pagination:{pageSize:20,showTotal:l=>t.t("community.totals.rows",{count:l})},size:"small",loading:t.loading,style:{background:"var(--bg-card)"}},{bodyCell:a(({column:l,record:r})=>[l.key==="name"?(d(),f("span",jt,c(r.name),1)):g("v-if",!0),l.key==="did"?(d(),f(M,{key:1},[r.did?(d(),f("span",Et,c(t.shortDid(r.did)),1)):(d(),f("span",Dt,"—"))],64)):g("v-if",!0),l.key==="email"?(d(),f(M,{key:2},[r.email?(d(),f("span",Vt,c(r.email),1)):(d(),f("span",Ht,"—"))],64)):g("v-if",!0),l.key==="createdAt"?(d(),f("span",Kt,c(t.formatTime(r.createdAt)),1)):g("v-if",!0),l.key==="action"?(d(),f(M,{key:4},[t.isFriend(r.id)?(d(),N(U,{key:1,color:"green",style:{"font-size":"11px"}},{default:a(()=>[p(c(t.t("community.contacts.alreadyFriend")),1)]),_:1})):(d(),N(k,{key:0,size:"small",type:"link",loading:t.addingFriend===r.id,onClick:H=>t.sendFriendRequest(r)},{default:a(()=>[p(c(t.t("community.contacts.addFriend")),1)]),_:1},8,["loading","onClick"])),e(F,{title:t.t("community.contacts.deleteConfirm"),"ok-text":t.t("community.contacts.deleteOk"),"cancel-text":t.t("common.cancel"),onConfirm:H=>t.deleteContact(r)},{default:a(()=>[e(k,{size:"small",type:"link",danger:"",style:{"margin-left":"4px"}},{default:a(()=>[p(c(t.t("community.contacts.delete")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])],64)):g("v-if",!0)]),emptyText:a(()=>[x("div",Wt,[e(t.TeamOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),p(" "+c(t.t("community.contacts.emptyText")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"])]),_:1},8,["activeKey"]),g(" ── Publish post modal ──────────────────────────────────────── "),e(V,{open:t.showPostModal,"onUpdate:open":i[5]||(i[5]=l=>t.showPostModal=l),title:t.t("community.posts.publishTitle"),"confirm-loading":t.publishing,"ok-text":t.t("community.posts.publishOk"),"cancel-text":t.t("common.cancel"),onOk:t.publishPost,onCancel:t.resetPostForm},{default:a(()=>[e(D,{"label-col":{span:4},"wrapper-col":{span:20},style:{"margin-top":"16px"}},{default:a(()=>[e(O,{label:t.t("community.posts.authorLabel")},{default:a(()=>[e(P,{value:t.postForm.author,"onUpdate:value":i[3]||(i[3]=l=>t.postForm.author=l),placeholder:t.t("community.posts.authorPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),e(O,{label:t.t("community.posts.contentLabel"),required:""},{default:a(()=>[e(I,{value:t.postForm.content,"onUpdate:value":i[4]||(i[4]=l=>t.postForm.content=l),placeholder:t.t("community.posts.contentPlaceholder"),"auto-size":{minRows:4,maxRows:10},maxlength:2e3,"show-count":""},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),g(" ── Add contact modal ───────────────────────────────────────── "),e(V,{open:t.showContactModal,"onUpdate:open":i[10]||(i[10]=l=>t.showContactModal=l),title:t.t("community.contacts.addTitle"),"confirm-loading":t.addingContact,"ok-text":t.t("community.contacts.addOk"),"cancel-text":t.t("common.cancel"),onOk:t.addContact,onCancel:t.resetContactForm},{default:a(()=>[e(D,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:a(()=>[e(O,{label:t.t("community.contacts.nameLabel"),required:""},{default:a(()=>[e(P,{value:t.contactForm.name,"onUpdate:value":i[6]||(i[6]=l=>t.contactForm.name=l),placeholder:t.t("community.contacts.namePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),e(O,{label:t.t("community.contacts.didLabel")},{default:a(()=>[e(P,{value:t.contactForm.did,"onUpdate:value":i[7]||(i[7]=l=>t.contactForm.did=l),placeholder:t.t("community.contacts.didPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),e(O,{label:t.t("community.contacts.emailLabel")},{default:a(()=>[e(P,{value:t.contactForm.email,"onUpdate:value":i[8]||(i[8]=l=>t.contactForm.email=l),placeholder:t.t("community.contacts.emailPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),e(O,{label:t.t("community.contacts.notesLabel")},{default:a(()=>[e(I,{value:t.contactForm.notes,"onUpdate:value":i[9]||(i[9]=l=>t.contactForm.notes=l),"auto-size":{minRows:2,maxRows:4}},null,8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])])}const Gt=gt(Ft,[["render",Jt],["__scopeId","data-v-7ac975f5"],["__file","/tmp/cc-web-panel-v9Hwrq/repo/packages/web-panel/src/views/Community.vue"]]);export{Gt as default};
1
+ import{I as y,J as f,U as x,R as c,c as e,K as a,V as g,r as b,o as Z,a as W,b as q,P as d,Q as p,F as M,Z as yt,S as B,$ as ft}from"./vendor-BMxUs6UX.js";import{_ as gt,b as G,u as Y,S as $,U as tt,V as et,W as at,X as ot,d as m}from"./index-xm1KHUEQ.js";import{aT as _t,B as pt,ab as vt,a4 as xt,aE as bt,J as kt,aP as ht,ai as Ct,R as wt}from"./icons-BsDmGpcT.js";const Ft={__name:"Community",setup(nt,{expose:i}){i();const{t:s,locale:t}=G(),v=Y(),N=b(!1),k=b(!1),A=b(!1),h=b(""),C=b({...$}),w=b([]),z=b([]),j=b([]),E=b("posts"),R=b(!1),U=b(!1),F=W({author:"",content:""}),_=W({name:"",did:"",email:"",notes:""}),K=q(()=>[{title:s("community.contactColumns.name"),key:"name",dataIndex:"name",width:"160px"},{title:s("community.contactColumns.did"),key:"did",dataIndex:"did"},{title:s("community.contactColumns.email"),key:"email",dataIndex:"email",width:"200px"},{title:s("community.contactColumns.createdAt"),key:"createdAt",dataIndex:"createdAt",width:"160px"},{title:s("community.contactColumns.action"),key:"action",width:"180px"}]),P=q(()=>[{title:s("community.friendColumns.contact"),key:"contact"},{title:s("community.friendColumns.status"),key:"status",width:"120px"},{title:s("community.friendColumns.createdAt"),key:"createdAt",dataIndex:"createdAt",width:"160px"},{title:s("community.friendColumns.action"),key:"action",width:"100px"}]),O=q(()=>z.value.map(n=>{const o=w.value.find(u=>u.id===n.contactId);return{...n,contactName:o?o.name:""}})),I=q(()=>new Set(z.value.map(n=>n.contactId)));function D(n){return I.value.has(n)}function V(n){const o=["#1677ff","#52c41a","#722ed1","#faad14","#ff4d4f","#13c2c2","#eb2f96"];let u=0;for(let S=0;S<n.length;S++)u=u*31+n.charCodeAt(S)>>>0;return o[u%o.length]}function l(n){return n?n.length>28?n.slice(0,16)+"..."+n.slice(-8):n:""}function r(n){if(!n)return"—";if(typeof n!="string")return String(n);const o=new Date(n);if(isNaN(o.getTime()))return n;const u=t.value==="zh-CN"?"zh-CN":"en-US";return o.toLocaleString(u,{hour12:!1})}function H(n){return{accepted:"green",pending:"orange",blocked:"red"}[n]||"default"}function lt(n){const o=`community.status.${n}`,u=s(o);return u===o?n:u}async function T(){N.value=!0;try{const[n,o,u,S]=await Promise.all([v.execute("social stats --json",1e4).catch(()=>({output:""})),v.execute("social contact list --json",1e4).catch(()=>({output:""})),v.execute("social friend list --json",1e4).catch(()=>({output:""})),v.execute("social post list --json",1e4).catch(()=>({output:""}))]);C.value=tt(n.output),w.value=et(o.output),z.value=at(u.output),j.value=ot(S.output).sort((L,ut)=>(ut.createdAt||"").localeCompare(L.createdAt||""))}catch(n){m.error(s("community.messages.loadFailed",{err:n?.message||n}))}finally{N.value=!1}}async function st(){const n=F.content.trim();if(!n){m.warning(s("community.messages.contentRequired"));return}k.value=!0;try{const o=n.replace(/"/g,'\\"'),u=F.author.trim(),S=u?`social post publish "${o}" --author "${u.replace(/"/g,'\\"')}"`:`social post publish "${o}"`,{output:L}=await v.execute(S,15e3);if(/error|失败/i.test(L)&&!/"id"/.test(L)){m.error(s("community.messages.publishFailed",{err:L.slice(0,120)}));return}m.success(s("community.messages.publishOk")),R.value=!1,J(),await T()}catch(o){m.error(s("community.messages.publishFailed",{err:o?.message||o}))}finally{k.value=!1}}async function it(){const n=_.name.trim();if(!n){m.warning(s("community.messages.nameRequired"));return}A.value=!0;try{const o=[`social contact add "${n.replace(/"/g,'\\"')}"`];_.did.trim()&&o.push(`--did "${_.did.trim().replace(/"/g,'\\"')}"`),_.email.trim()&&o.push(`--email "${_.email.trim().replace(/"/g,'\\"')}"`),_.notes.trim()&&o.push(`--notes "${_.notes.trim().replace(/"/g,'\\"')}"`);const{output:u}=await v.execute(o.join(" "),15e3);if(/error|失败/i.test(u)&&!/"id"/.test(u)){m.error(s("community.messages.addFailed",{err:u.slice(0,120)}));return}m.success(s("community.messages.addOk")),U.value=!1,Q(),await T()}catch(o){m.error(s("community.messages.addFailed",{err:o?.message||o}))}finally{A.value=!1}}async function ct(n){try{const{output:o}=await v.execute(`social contact delete ${n.id}`,1e4);if(/error|失败/i.test(o)){m.error(s("community.messages.deleteFailed",{err:o.slice(0,120)}));return}m.success(s("community.messages.deleteOk")),await T()}catch(o){m.error(s("community.messages.deleteFailed",{err:o?.message||o}))}}async function rt(n){h.value=n.id;try{const{output:o}=await v.execute(`social friend add ${n.id}`,1e4);if(/error|失败/i.test(o)&&!/"id"/.test(o)){m.error(s("community.messages.friendRequestFailed",{err:o.slice(0,120)}));return}m.success(s("community.messages.friendRequestOk")),await T(),E.value="friends"}catch(o){m.error(s("community.messages.friendRequestFailed",{err:o?.message||o}))}finally{h.value=""}}async function dt(n){try{const{output:o}=await v.execute(`social friend remove ${n.contactId}`,1e4);if(/error|失败/i.test(o)){m.error(s("community.messages.removeFailed",{err:o.slice(0,120)}));return}m.success(s("community.messages.removeOk")),await T()}catch(o){m.error(s("community.messages.removeFailed",{err:o?.message||o}))}}async function mt(n){try{await v.execute(`social post like ${n.id}`,1e4),n.likes++,T()}catch(o){m.error(s("community.messages.likeFailed",{err:o?.message||o}))}}function J(){F.author="",F.content=""}function Q(){_.name="",_.did="",_.email="",_.notes=""}Z(T);const X={t:s,locale:t,ws:v,loading:N,publishing:k,addingContact:A,addingFriend:h,stats:C,contacts:w,friends:z,posts:j,activeTab:E,showPostModal:R,showContactModal:U,postForm:F,contactForm:_,contactColumns:K,friendColumns:P,friendRows:O,friendIds:I,isFriend:D,avatarColor:V,shortDid:l,formatTime:r,statusColor:H,statusLabel:lt,loadAll:T,publishPost:st,addContact:it,deleteContact:ct,sendFriendRequest:rt,removeFriend:dt,likePost:mt,resetPostForm:J,resetContactForm:Q,ref:b,computed:q,onMounted:Z,reactive:W,get useI18n(){return G},get ReloadOutlined(){return wt},get EditOutlined(){return Ct},get UserAddOutlined(){return ht},get TeamOutlined(){return kt},get HeartOutlined(){return bt},get FileTextOutlined(){return xt},get MessageOutlined(){return vt},get BellOutlined(){return pt},get LikeOutlined(){return _t},get message(){return m},get useWsStore(){return Y},get parseSocialStats(){return tt},get parseContacts(){return et},get parseFriends(){return at},get parsePosts(){return ot},get STATS_DEFAULTS(){return $}};return Object.defineProperty(X,"__isScriptSetup",{enumerable:!1,value:!0}),X}},Ot={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Tt={class:"page-title"},St={class:"page-sub"},zt={key:0,style:{"text-align":"center",padding:"60px"}},Rt={key:1,style:{"text-align":"center",padding:"60px",color:"var(--text-muted)"}},Pt={key:2,class:"post-feed"},At={class:"post-head"},Ut={class:"post-meta"},It={class:"post-author"},Lt={class:"post-time"},qt={class:"post-body"},Mt={style:{color:"var(--text-primary)","font-weight":"500"}},Bt={key:0,style:{color:"var(--text-secondary)","font-size":"11px","font-family":"monospace"}},Nt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},jt={key:0,style:{color:"var(--text-primary)","font-weight":"500"}},Et={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"11px"}},Dt={key:1,style:{color:"var(--text-muted)"}},Vt={key:0,style:{color:"var(--text-secondary)","font-size":"12px"}},Ht={key:1,style:{color:"var(--text-muted)"}},Kt={key:3,style:{color:"var(--text-secondary)","font-size":"11px"}},Wt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}};function Jt(nt,i,s,t,v,N){const k=y("a-button"),A=y("a-space"),h=y("a-statistic"),C=y("a-card"),w=y("a-col"),z=y("a-row"),j=y("a-spin"),E=y("a-avatar"),R=y("a-tab-pane"),U=y("a-tag"),F=y("a-popconfirm"),_=y("a-table"),K=y("a-tabs"),P=y("a-input"),O=y("a-form-item"),I=y("a-textarea"),D=y("a-form"),V=y("a-modal");return d(),f("div",null,[x("div",Ot,[x("div",null,[x("h2",Tt,c(t.t("community.title")),1),x("p",St,c(t.t("community.subtitle")),1)]),e(A,null,{default:a(()=>[e(k,{loading:t.loading,onClick:t.loadAll},{icon:a(()=>[e(t.ReloadOutlined)]),default:a(()=>[p(" "+c(t.t("community.refresh")),1)]),_:1},8,["loading"]),e(k,{type:"primary",onClick:i[0]||(i[0]=l=>t.showPostModal=!0)},{icon:a(()=>[e(t.EditOutlined)]),default:a(()=>[p(" "+c(t.t("community.publishButton")),1)]),_:1}),e(k,{onClick:i[1]||(i[1]=l=>t.showContactModal=!0)},{icon:a(()=>[e(t.UserAddOutlined)]),default:a(()=>[p(" "+c(t.t("community.addContactButton")),1)]),_:1})]),_:1})]),g(" Stats overview "),e(z,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:a(()=>[e(w,{xs:12,sm:8,lg:5},{default:a(()=>[e(C,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[e(h,{title:t.t("community.stats.contacts"),value:t.stats.contacts,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:a(()=>[e(t.TeamOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),e(w,{xs:12,sm:8,lg:5},{default:a(()=>[e(C,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[e(h,{title:t.t("community.stats.friends"),value:t.stats.friends,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:a(()=>[e(t.HeartOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),e(w,{xs:12,sm:8,lg:5},{default:a(()=>[e(C,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[e(h,{title:t.t("community.stats.posts"),value:t.stats.posts,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:a(()=>[e(t.FileTextOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),e(w,{xs:12,sm:8,lg:5},{default:a(()=>[e(C,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[e(h,{title:t.t("community.stats.messages"),value:t.stats.messages,"value-style":{color:"#faad14",fontSize:"20px"}},{prefix:a(()=>[e(t.MessageOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),e(w,{xs:24,sm:8,lg:4},{default:a(()=>[e(C,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[e(h,{title:t.t("community.stats.pendingRequests"),value:t.stats.pendingRequests,"value-style":{color:t.stats.pendingRequests>0?"#ff4d4f":"#888",fontSize:"20px"}},{prefix:a(()=>[e(t.BellOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1})]),_:1}),g(" Tabs "),e(K,{activeKey:t.activeTab,"onUpdate:activeKey":i[2]||(i[2]=l=>t.activeTab=l),class:"community-tabs"},{default:a(()=>[g(" ── Posts tab ─────────────────────────────────────────────── "),e(R,{key:"posts",tab:t.t("community.tabs.posts")},{default:a(()=>[t.loading&&!t.posts.length?(d(),f("div",zt,[e(j,{size:"large"})])):t.posts.length?(d(),f("div",Pt,[(d(!0),f(M,null,yt(t.posts,l=>(d(),B(C,{key:l.key,class:"post-card","body-style":{padding:"16px"}},{default:a(()=>[x("div",At,[e(E,{style:ft({backgroundColor:t.avatarColor(l.author)})},{default:a(()=>[p(c(l.author.slice(0,1).toUpperCase()),1)]),_:2},1032,["style"]),x("div",Ut,[x("div",It,c(l.author),1),x("div",Lt,c(t.formatTime(l.createdAt)),1)]),e(k,{size:"small",type:"text",onClick:r=>t.likePost(l)},{icon:a(()=>[e(t.LikeOutlined)]),default:a(()=>[p(" "+c(l.likes),1)]),_:2},1032,["onClick"])]),x("div",qt,c(l.content),1)]),_:2},1024))),128))])):(d(),f("div",Rt,[e(t.FileTextOutlined,{style:{"font-size":"40px","margin-bottom":"12px",display:"block"}}),p(" "+c(t.t("community.posts.emptyText")),1)]))]),_:1},8,["tab"]),g(" ── Friends tab ───────────────────────────────────────────── "),e(R,{key:"friends",tab:t.t("community.tabs.friends")},{default:a(()=>[e(_,{columns:t.friendColumns,"data-source":t.friendRows,pagination:{pageSize:20,showTotal:l=>t.t("community.totals.rows",{count:l})},size:"small",loading:t.loading,style:{background:"var(--bg-card)"}},{bodyCell:a(({column:l,record:r})=>[l.key==="contact"?(d(),f(M,{key:0},[x("span",Mt,c(r.contactName||r.contactId),1),r.contactName?(d(),f("div",Bt,c(r.contactId),1)):g("v-if",!0)],64)):g("v-if",!0),l.key==="status"?(d(),B(U,{key:1,color:t.statusColor(r.status)},{default:a(()=>[p(c(t.statusLabel(r.status)),1)]),_:2},1032,["color"])):g("v-if",!0),l.key==="action"?(d(),B(F,{key:2,title:t.t("community.friends.removeConfirm"),"ok-text":t.t("community.friends.removeOk"),"cancel-text":t.t("common.cancel"),onConfirm:H=>t.removeFriend(r)},{default:a(()=>[e(k,{size:"small",type:"link",danger:""},{default:a(()=>[p(c(t.t("community.friends.remove")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):g("v-if",!0)]),emptyText:a(()=>[x("div",Nt,[e(t.HeartOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),p(" "+c(t.t("community.friends.emptyText")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),g(" ── Contacts tab ──────────────────────────────────────────── "),e(R,{key:"contacts",tab:t.t("community.tabs.contacts")},{default:a(()=>[e(_,{columns:t.contactColumns,"data-source":t.contacts,pagination:{pageSize:20,showTotal:l=>t.t("community.totals.rows",{count:l})},size:"small",loading:t.loading,style:{background:"var(--bg-card)"}},{bodyCell:a(({column:l,record:r})=>[l.key==="name"?(d(),f("span",jt,c(r.name),1)):g("v-if",!0),l.key==="did"?(d(),f(M,{key:1},[r.did?(d(),f("span",Et,c(t.shortDid(r.did)),1)):(d(),f("span",Dt,"—"))],64)):g("v-if",!0),l.key==="email"?(d(),f(M,{key:2},[r.email?(d(),f("span",Vt,c(r.email),1)):(d(),f("span",Ht,"—"))],64)):g("v-if",!0),l.key==="createdAt"?(d(),f("span",Kt,c(t.formatTime(r.createdAt)),1)):g("v-if",!0),l.key==="action"?(d(),f(M,{key:4},[t.isFriend(r.id)?(d(),B(U,{key:1,color:"green",style:{"font-size":"11px"}},{default:a(()=>[p(c(t.t("community.contacts.alreadyFriend")),1)]),_:1})):(d(),B(k,{key:0,size:"small",type:"link",loading:t.addingFriend===r.id,onClick:H=>t.sendFriendRequest(r)},{default:a(()=>[p(c(t.t("community.contacts.addFriend")),1)]),_:1},8,["loading","onClick"])),e(F,{title:t.t("community.contacts.deleteConfirm"),"ok-text":t.t("community.contacts.deleteOk"),"cancel-text":t.t("common.cancel"),onConfirm:H=>t.deleteContact(r)},{default:a(()=>[e(k,{size:"small",type:"link",danger:"",style:{"margin-left":"4px"}},{default:a(()=>[p(c(t.t("community.contacts.delete")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])],64)):g("v-if",!0)]),emptyText:a(()=>[x("div",Wt,[e(t.TeamOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),p(" "+c(t.t("community.contacts.emptyText")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"])]),_:1},8,["activeKey"]),g(" ── Publish post modal ──────────────────────────────────────── "),e(V,{open:t.showPostModal,"onUpdate:open":i[5]||(i[5]=l=>t.showPostModal=l),title:t.t("community.posts.publishTitle"),"confirm-loading":t.publishing,"ok-text":t.t("community.posts.publishOk"),"cancel-text":t.t("common.cancel"),onOk:t.publishPost,onCancel:t.resetPostForm},{default:a(()=>[e(D,{"label-col":{span:4},"wrapper-col":{span:20},style:{"margin-top":"16px"}},{default:a(()=>[e(O,{label:t.t("community.posts.authorLabel")},{default:a(()=>[e(P,{value:t.postForm.author,"onUpdate:value":i[3]||(i[3]=l=>t.postForm.author=l),placeholder:t.t("community.posts.authorPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),e(O,{label:t.t("community.posts.contentLabel"),required:""},{default:a(()=>[e(I,{value:t.postForm.content,"onUpdate:value":i[4]||(i[4]=l=>t.postForm.content=l),placeholder:t.t("community.posts.contentPlaceholder"),"auto-size":{minRows:4,maxRows:10},maxlength:2e3,"show-count":""},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),g(" ── Add contact modal ───────────────────────────────────────── "),e(V,{open:t.showContactModal,"onUpdate:open":i[10]||(i[10]=l=>t.showContactModal=l),title:t.t("community.contacts.addTitle"),"confirm-loading":t.addingContact,"ok-text":t.t("community.contacts.addOk"),"cancel-text":t.t("common.cancel"),onOk:t.addContact,onCancel:t.resetContactForm},{default:a(()=>[e(D,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:a(()=>[e(O,{label:t.t("community.contacts.nameLabel"),required:""},{default:a(()=>[e(P,{value:t.contactForm.name,"onUpdate:value":i[6]||(i[6]=l=>t.contactForm.name=l),placeholder:t.t("community.contacts.namePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),e(O,{label:t.t("community.contacts.didLabel")},{default:a(()=>[e(P,{value:t.contactForm.did,"onUpdate:value":i[7]||(i[7]=l=>t.contactForm.did=l),placeholder:t.t("community.contacts.didPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),e(O,{label:t.t("community.contacts.emailLabel")},{default:a(()=>[e(P,{value:t.contactForm.email,"onUpdate:value":i[8]||(i[8]=l=>t.contactForm.email=l),placeholder:t.t("community.contacts.emailPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),e(O,{label:t.t("community.contacts.notesLabel")},{default:a(()=>[e(I,{value:t.contactForm.notes,"onUpdate:value":i[9]||(i[9]=l=>t.contactForm.notes=l),"auto-size":{minRows:2,maxRows:4}},null,8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])])}const Gt=gt(Ft,[["render",Jt],["__scopeId","data-v-7ac975f5"],["__file","/tmp/cc-web-panel-1UABPy/repo/packages/web-panel/src/views/Community.vue"]]);export{Gt as default};
@@ -1 +1 @@
1
- import{l as j,i as x,q as k,L as D,f as I,H as S,P as v,R as y}from"./index-BgN5G5vF.js";import{b as i,d as g,c as b}from"./vendor-BMxUs6UX.js";import{c as A}from"./createContext-D55X4fZX.js";import{i as L,a as N,b as O,c as T,d as _,g as w,e as F,f as B}from"./_getTag-DnrRH4E6.js";const H=t=>{const{componentCls:o}=t;return{[o]:{display:"inline-flex","&-block":{display:"flex",width:"100%"},"&-vertical":{flexDirection:"column"}}}},R=t=>{const{componentCls:o}=t;return{[o]:{display:"inline-flex","&-rtl":{direction:"rtl"},"&-vertical":{flexDirection:"column"},"&-align":{flexDirection:"column","&-center":{alignItems:"center"},"&-start":{alignItems:"flex-start"},"&-end":{alignItems:"flex-end"},"&-baseline":{alignItems:"baseline"}},[`${o}-item`]:{"&:empty":{display:"none"}}}}},q=j("Space",t=>[R(t),H(t)]);var E="[object Map]",K="[object Set]",M=Object.prototype,V=M.hasOwnProperty;function h(t){if(t==null)return!0;if(L(t)&&(N(t)||typeof t=="string"||typeof t.splice=="function"||O(t)||T(t)||_(t)))return!t.length;var o=w(t);if(o==E||o==K)return!t.size;if(F(t))return!B(t).length;for(var e in t)if(V.call(t,e))return!1;return!0}const G=()=>({compactSize:String,compactDirection:v.oneOf(y("horizontal","vertical")).def("horizontal"),isFirstItem:S(),isLastItem:S()}),s=A(null),Z=(t,o)=>{const e=s.useInject(),a=i(()=>{if(!e||h(e))return"";const{compactDirection:r,isFirstItem:l,isLastItem:n}=e,c=r==="vertical"?"-vertical-":"-";return x({[`${t.value}-compact${c}item`]:!0,[`${t.value}-compact${c}first-item`]:l,[`${t.value}-compact${c}last-item`]:n,[`${t.value}-compact${c}item-rtl`]:o.value==="rtl"})});return{compactSize:i(()=>e?.compactSize),compactDirection:i(()=>e?.compactDirection),compactItemClassnames:a}},tt=g({name:"NoCompactStyle",setup(t,o){let{slots:e}=o;return s.useProvide(null),()=>{var a;return(a=e.default)===null||a===void 0?void 0:a.call(e)}}}),J=()=>({prefixCls:String,size:{type:String},direction:v.oneOf(y("horizontal","vertical")).def("horizontal"),align:v.oneOf(y("start","end","center","baseline")),block:{type:Boolean,default:void 0}}),Q=g({name:"CompactItem",props:G(),setup(t,o){let{slots:e}=o;return s.useProvide(t),()=>{var a;return(a=e.default)===null||a===void 0?void 0:a.call(e)}}}),et=g({name:"ASpaceCompact",inheritAttrs:!1,props:J(),setup(t,o){let{attrs:e,slots:a}=o;const{prefixCls:r,direction:l}=k("space-compact",t),n=s.useInject(),[c,$]=q(r),z=i(()=>x(r.value,$.value,{[`${r.value}-rtl`]:l.value==="rtl",[`${r.value}-block`]:t.block,[`${r.value}-vertical`]:t.direction==="vertical"}));return()=>{var m;const p=D(((m=a.default)===null||m===void 0?void 0:m.call(a))||[]);return p.length===0?null:c(b("div",I(I({},e),{},{class:[z.value,e.class]}),[p.map((u,d)=>{var f;const P=u&&u.key||`${r.value}-item-${d}`,C=!n||h(n);return b(Q,{key:P,compactSize:(f=t.size)!==null&&f!==void 0?f:"middle",compactDirection:t.direction,isFirstItem:d===0&&(C||n?.isFirstItem),isLastItem:d===p.length-1&&(C||n?.isLastItem)},{default:()=>[u]})})]))}}});export{et as C,tt as N,q as a,Z as u};
1
+ import{l as j,i as x,q as k,L as D,f as I,H as S,P as v,R as y}from"./index-xm1KHUEQ.js";import{b as i,d as g,c as b}from"./vendor-BMxUs6UX.js";import{c as A}from"./createContext-BbIbOPL2.js";import{i as L,a as N,b as O,c as T,d as _,g as w,e as F,f as B}from"./_getTag-DnrRH4E6.js";const H=t=>{const{componentCls:o}=t;return{[o]:{display:"inline-flex","&-block":{display:"flex",width:"100%"},"&-vertical":{flexDirection:"column"}}}},R=t=>{const{componentCls:o}=t;return{[o]:{display:"inline-flex","&-rtl":{direction:"rtl"},"&-vertical":{flexDirection:"column"},"&-align":{flexDirection:"column","&-center":{alignItems:"center"},"&-start":{alignItems:"flex-start"},"&-end":{alignItems:"flex-end"},"&-baseline":{alignItems:"baseline"}},[`${o}-item`]:{"&:empty":{display:"none"}}}}},q=j("Space",t=>[R(t),H(t)]);var E="[object Map]",K="[object Set]",M=Object.prototype,V=M.hasOwnProperty;function h(t){if(t==null)return!0;if(L(t)&&(N(t)||typeof t=="string"||typeof t.splice=="function"||O(t)||T(t)||_(t)))return!t.length;var o=w(t);if(o==E||o==K)return!t.size;if(F(t))return!B(t).length;for(var e in t)if(V.call(t,e))return!1;return!0}const G=()=>({compactSize:String,compactDirection:v.oneOf(y("horizontal","vertical")).def("horizontal"),isFirstItem:S(),isLastItem:S()}),s=A(null),Z=(t,o)=>{const e=s.useInject(),a=i(()=>{if(!e||h(e))return"";const{compactDirection:r,isFirstItem:l,isLastItem:n}=e,c=r==="vertical"?"-vertical-":"-";return x({[`${t.value}-compact${c}item`]:!0,[`${t.value}-compact${c}first-item`]:l,[`${t.value}-compact${c}last-item`]:n,[`${t.value}-compact${c}item-rtl`]:o.value==="rtl"})});return{compactSize:i(()=>e?.compactSize),compactDirection:i(()=>e?.compactDirection),compactItemClassnames:a}},tt=g({name:"NoCompactStyle",setup(t,o){let{slots:e}=o;return s.useProvide(null),()=>{var a;return(a=e.default)===null||a===void 0?void 0:a.call(e)}}}),J=()=>({prefixCls:String,size:{type:String},direction:v.oneOf(y("horizontal","vertical")).def("horizontal"),align:v.oneOf(y("start","end","center","baseline")),block:{type:Boolean,default:void 0}}),Q=g({name:"CompactItem",props:G(),setup(t,o){let{slots:e}=o;return s.useProvide(t),()=>{var a;return(a=e.default)===null||a===void 0?void 0:a.call(e)}}}),et=g({name:"ASpaceCompact",inheritAttrs:!1,props:J(),setup(t,o){let{attrs:e,slots:a}=o;const{prefixCls:r,direction:l}=k("space-compact",t),n=s.useInject(),[c,$]=q(r),z=i(()=>x(r.value,$.value,{[`${r.value}-rtl`]:l.value==="rtl",[`${r.value}-block`]:t.block,[`${r.value}-vertical`]:t.direction==="vertical"}));return()=>{var m;const p=D(((m=a.default)===null||m===void 0?void 0:m.call(a))||[]);return p.length===0?null:c(b("div",I(I({},e),{},{class:[z.value,e.class]}),[p.map((u,d)=>{var f;const P=u&&u.key||`${r.value}-item-${d}`,C=!n||h(n);return b(Q,{key:P,compactSize:(f=t.size)!==null&&f!==void 0?f:"middle",compactDirection:t.direction,isFirstItem:d===0&&(C||n?.isFirstItem),isLastItem:d===p.length-1&&(C||n?.isLastItem)},{default:()=>[u]})})]))}}});export{et as C,tt as N,q as a,Z as u};
@@ -1 +1 @@
1
- import{I as p,J as m,U as g,R as r,c as a,K as o,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 H,$ as ie}from"./vendor-BMxUs6UX.js";import{t as J,_ as he,u as re,b as se,d as v}from"./index-BgN5G5vF.js";import{s as _e,am as ke,ak as xe,G as ze,Z as Ae,b2 as Se,D as Te,b3 as Ce,as as Oe,R as Fe}from"./icons-BsDmGpcT.js";const Re=Object.freeze(["file-md5","file-sha1","file-sha256","file-sha512","ipv4","ipv6","domain","url","email"]);function T(e,l=0){return typeof e=="number"&&Number.isFinite(e)?e:l}function ye(e,l=0){if(!e||typeof e!="object")return null;const d=e.id||"";if(!d)return null;const t=Array.isArray(e.labels)?e.labels:[];return{key:d,id:d,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:l}}function ce(e){const l=J(e);return Array.isArray(l)?l.map(ye).filter(Boolean):[]}function ue(e){const l=J(e);return!l||typeof l!="object"||Array.isArray(l)?null:{matched:!!l.matched,type:String(l.type||"unknown"),indicator:l.indicator?ye(l.indicator):null}}function de(e){const l={total:0,byType:{}},d=J(e);if(!d||typeof d!="object"||Array.isArray(d))return l;if(l.total=T(d.total,0),d.byType&&typeof d.byType=="object")for(const[t,C]of Object.entries(d.byType))typeof C=="number"&&Number.isFinite(C)&&(l.byType[t]=C);return l}function we(e,l=0){if(!e||typeof e!="object")return null;const d=e.entity||"";return d?{key:d,entity:d,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:l}:null}function me(e){const l=J(e);return Array.isArray(l)?l.map(we).filter(Boolean):[]}function Ue(e,l=0){return!e||typeof e!="object"?null:{key:l,score:T(e.score,0),reasons:Array.isArray(e.reasons)?e.reasons:[],event:e.event&&typeof e.event=="object"?e.event:null,_idx:l}}function pe(e){const l=J(e);return Array.isArray(l)?l.map(Ue).filter(Boolean):[]}function $(e){if(!e)return{noAuditLog:!1,error:""};const l=/no such table:\s*audit_log/i.test(e),d=e.match(/Failed:\s*(.+?)(?:\r?\n|$)/i);return{noAuditLog:l,error:d?d[1].trim():""}}function je(e){if(e==null||e==="")return"—";const l=typeof e=="number"?new Date(e):new Date(String(e));return isNaN(l.getTime())?String(e):l.toLocaleString("zh-CN",{hour12:!1})}const Be={__name:"Compliance",setup(e,{expose:l}){l();const d=re(),{t}=se(),C=h(!1),Z=h(!1),w=h(!1),U=h(!1),I=h([]),M=h({total:0,byType:{}}),L=h([]),z=h([]),k=h({noAuditLog:!1,error:""}),S=h("threat"),D=h(""),x=h(!1),j=h(!1),N=h(!1),G=X({observable:""}),B=h(null),O=X({entity:"",days:30}),A=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(()=>L.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 K(i){return i>=80?"#ff4d4f":i>=50?"#faad14":"#52c41a"}function n(i){return i>=70?"#ff4d4f":i>=40?"#faad14":"#52c41a"}function u(i,y){return i?i.length>y?i.slice(0,y)+"...":i:""}function Y({key:i}){i==="match"?(B.value=null,x.value=!0):i==="ueba-build"?j.value=!0:i==="ueba-analyze"&&(N.value=!0)}async function Q(){C.value=!0;try{const[i,y,f]=await Promise.all([d.execute("compliance threat-intel list --limit 200 --json",1e4).catch(()=>({output:""})),d.execute("compliance threat-intel stats --json",8e3).catch(()=>({output:""})),d.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),L.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=G.observable.trim();if(!i){v.warning(t("compliance.msg.matchEmpty"));return}Z.value=!0,B.value=null;try{const y=`compliance threat-intel match "${i.replace(/"/g,'\\"')}" --json`,{output:f}=await d.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{Z.value=!1}}async function be(i){try{const y=`compliance threat-intel remove ${i.type} "${i.value.replace(/"/g,'\\"')}" --json`,{output:f}=await d.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 d.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,S.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"];A.entity.trim()&&i.push(`--entity "${A.entity.trim().replace(/"/g,'\\"')}"`),A.threshold!=null&&i.push(`--threshold ${A.threshold}`),A.days!=null&&i.push(`--days ${A.days}`),i.push("--json");const{output:y}=await d.execute(i.join(" "),3e4),f=$(y);if(f.noAuditLog){k.value=f,v.warning(t("compliance.msg.auditEmptyAnalyze")),N.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})),N.value=!1,S.value="ueba"}catch(i){v.error(t("compliance.msg.analyzeFailed")+": "+(i?.message||i))}finally{U.value=!1}}ne(Q);const le={ws:d,t,loading:C,matching:Z,building:w,analyzing:U,indicators:I,threatStats:M,uebaTop:L,anomalies:z,uebaError:k,activeTab:S,iocTypeFilter:D,showMatchModal:x,showBuildModal:j,showAnalyzeModal:N,matchForm:G,matchResult:B,buildForm:O,analyzeForm:A,indicatorColumns:ee,uebaColumns:te,filteredIndicators:ae,threatTypeCount:oe,typeBreakdown:W,highRiskCount:F,IOC_TYPE_COLORS:P,iocTypeColor:V,confidenceColor:K,riskColor:n,truncate:u,handleNewClick:Y,loadAll:Q,matchObservable:fe,removeIndicator:be,buildBaseline:ve,runAnalyze:ge,ref:h,computed:E,onMounted:ne,reactive:X,get ReloadOutlined(){return Fe},get PlusOutlined(){return Oe},get AimOutlined(){return Ce},get DatabaseOutlined(){return Te},get FundOutlined(){return Se},get SafetyCertificateOutlined(){return Ae},get BlockOutlined(){return ze},get UserOutlined(){return xe},get WarningOutlined(){return ke},get AlertOutlined(){return _e},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 je},get IOC_TYPES(){return Re}};return Object.defineProperty(le,"__isScriptSetup",{enumerable:!1,value:!0}),le}},Ee={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Ie={class:"page-title"},Me={class:"page-sub"},Le={class:"filter-bar"},Ne={key:1,style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px","word-break":"break-all"}},Pe={key:0,style:{color:"var(--text-muted)"}},qe={key:1,style:{color:"var(--text-muted)"}},De={key:0,style:{color:"var(--text-secondary)","font-size":"12px"}},We={key:1,style:{color:"var(--text-muted)"}},Ve={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"}},He={key:0,style:{color:"var(--text-primary)","font-family":"monospace","font-weight":"500"}},Je={key:2,style:{color:"var(--text-secondary)"}},Ze={key:5,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"11px"}},Ge={style:{padding:"30px",color:"var(--text-muted)","text-align":"center"}},Qe={key:2,style:{color:"var(--text-primary)",margin:"24px 0 8px","font-size":"14px"}},Xe={style:{flex:"1"}},$e={style:{display:"flex",gap:"8px","align-items":"center"}},et={key:0,style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px"}},tt={key:1,style:{color:"var(--text-secondary)","font-size":"11px"}},at={key:0,style:{"margin-top":"4px"}},ot={style:{"margin-top":"8px","font-size":"12px",color:"var(--text-secondary)"}},lt={key:0,style:{"margin-top":"12px","font-size":"12px"}},nt={style:{color:"var(--text-secondary)"}},it={style:{color:"var(--text-secondary)"}},rt={key:0,style:{"margin-top":"4px"}},st={style:{color:"var(--text-secondary)","font-size":"12px",margin:"0"}},ct={style:{color:"var(--text-secondary)","font-size":"12px",margin:"0"}};function ut(e,l,d,t,C,Z){const w=p("a-button"),U=p("a-menu-item"),I=p("a-menu"),M=p("a-dropdown"),L=p("a-space"),z=p("a-statistic"),k=p("a-card"),S=p("a-col"),D=p("a-row"),x=p("a-tag"),j=p("a-radio-button"),N=p("a-radio-group"),G=p("a-popconfirm"),B=p("a-table"),O=p("a-tab-pane"),A=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"),K=p("a-input-number");return s(),m("div",null,[g("div",Ee,[g("div",null,[g("h2",Ie,r(e.$t("compliance.title")),1),g("p",Me,r(e.$t("compliance.subtitle")),1)]),a(L,null,{default:o(()=>[a(w,{loading:t.loading,onClick:t.loadAll},{icon:o(()=>[a(t.ReloadOutlined)]),default:o(()=>[b(" "+r(e.$t("compliance.refresh")),1)]),_:1},8,["loading"]),a(M,{trigger:["click"]},{overlay:o(()=>[a(I,{onClick:t.handleNewClick},{default:o(()=>[a(U,{key:"match"},{default:o(()=>[a(t.AimOutlined),b(" "+r(e.$t("compliance.actions.match")),1)]),_:1}),a(U,{key:"ueba-build"},{default:o(()=>[a(t.DatabaseOutlined),b(" "+r(e.$t("compliance.actions.uebaBuild")),1)]),_:1}),a(U,{key:"ueba-analyze"},{default:o(()=>[a(t.FundOutlined),b(" "+r(e.$t("compliance.actions.uebaAnalyze")),1)]),_:1})]),_:1})]),default:o(()=>[a(w,{type:"primary"},{icon:o(()=>[a(t.PlusOutlined)]),default:o(()=>[b(" "+r(e.$t("compliance.actionDropdown")),1)]),_:1})]),_:1})]),_:1})]),c(" Stats overview "),a(D,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:o(()=>[a(S,{xs:12,sm:8,lg:5},{default:o(()=>[a(k,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(z,{title:e.$t("compliance.stats.iocTotal"),value:t.threatStats.total,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:o(()=>[a(t.SafetyCertificateOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),a(S,{xs:12,sm:8,lg:5},{default:o(()=>[a(k,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(z,{title:e.$t("compliance.stats.iocTypes"),value:t.threatTypeCount,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:o(()=>[a(t.BlockOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),a(S,{xs:12,sm:8,lg:5},{default:o(()=>[a(k,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(z,{title:e.$t("compliance.stats.riskEntities"),value:t.uebaTop.length,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:o(()=>[a(t.UserOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),a(S,{xs:12,sm:8,lg:5},{default:o(()=>[a(k,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(z,{title:e.$t("compliance.stats.highRisk"),value:t.highRiskCount,"value-style":{color:t.highRiskCount>0?"#ff4d4f":"#52c41a",fontSize:"20px"}},{prefix:o(()=>[a(t.WarningOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),a(S,{xs:24,sm:8,lg:4},{default:o(()=>[a(k,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(z,{title:e.$t("compliance.stats.recentAnomalies"),value:t.anomalies.length,"value-style":{color:"#faad14",fontSize:"20px"}},{prefix:o(()=>[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:o(()=>[a(L,{size:[12,8],wrap:""},{default:o(()=>[(s(!0),m(R,null,H(t.typeBreakdown,([n,u])=>(s(),_(x,{key:n,color:t.iocTypeColor(n)},{default:o(()=>[b(r(n)+": "+r(u),1)]),_:2},1032,["color"]))),128))]),_:1})]),_:1},8,["title"])):c("v-if",!0),c(" Tabs "),a(oe,{activeKey:t.activeTab,"onUpdate:activeKey":l[1]||(l[1]=n=>t.activeTab=n),class:"compliance-tabs"},{default:o(()=>[c(" ── Threat Intel tab ──────────────────────────────────────── "),a(O,{key:"threat",tab:e.$t("compliance.tabs.threat")},{default:o(()=>[g("div",Le,[a(N,{value:t.iocTypeFilter,"onUpdate:value":l[0]||(l[0]=n=>t.iocTypeFilter=n),size:"small"},{default:o(()=>[a(j,{value:""},{default:o(()=>[b(r(e.$t("compliance.filter.all")),1)]),_:1}),(s(!0),m(R,null,H(t.IOC_TYPES,n=>(s(),_(j,{key:n,value:n},{default:o(()=>[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:o(({column:n,record:u})=>[n.key==="type"?(s(),_(x,{key:0,color:t.iocTypeColor(u.type),style:{"font-family":"monospace"}},{default:o(()=>[b(r(u.type),1)]),_:2},1032,["color"])):c("v-if",!0),n.key==="value"?(s(),m("span",Ne,r(t.truncate(u.value,64)),1)):c("v-if",!0),n.key==="labels"?(s(),m(R,{key:2},[(s(!0),m(R,null,H(u.labels,Y=>(s(),_(x,{key:Y,color:"orange",style:{"font-size":"10px",margin:"1px"}},{default:o(()=>[b(r(Y),1)]),_:2},1024))),128)),u.labels.length?c("v-if",!0):(s(),m("span",Pe,"—"))],64)):c("v-if",!0),n.key==="confidence"?(s(),m(R,{key:3},[u.confidence!=null?(s(),m("span",{key:0,style:ie({color:t.confidenceColor(u.confidence),fontWeight:500})},r(u.confidence),5)):(s(),m("span",qe,"—"))],64)):c("v-if",!0),n.key==="source"?(s(),m(R,{key:4},[u.sourceName?(s(),m("span",De,r(u.sourceName),1)):(s(),m("span",We,"—"))],64)):c("v-if",!0),n.key==="lastSeen"?(s(),m("span",Ve,r(t.formatComplianceTime(u.lastSeenAt)),1)):c("v-if",!0),n.key==="action"?(s(),_(G,{key:6,title:e.$t("compliance.table.deleteConfirm"),"ok-text":e.$t("compliance.table.deleteOk"),"cancel-text":e.$t("compliance.table.cancel"),onConfirm:Y=>t.removeIndicator(u)},{default:o(()=>[a(w,{size:"small",type:"link",danger:""},{default:o(()=>[b(r(e.$t("compliance.table.delete")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):c("v-if",!0)]),emptyText:o(()=>[g("div",Ke,[a(t.SafetyCertificateOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),b(" "+r(e.$t("compliance.table.emptyThreatsLine1"))+" ",1),l[11]||(l[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:o(()=>[t.uebaError.noAuditLog?(s(),_(A,{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(),_(A,{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:o(({column:n,record:u})=>[n.key==="entity"?(s(),m("span",He,r(u.entity),1)):c("v-if",!0),n.key==="riskScore"?(s(),_(ee,{key:1,percent:Math.min(u.riskScore,100),"stroke-color":t.riskColor(u.riskScore),size:"small",format:()=>u.riskScore.toFixed(1)},null,8,["percent","stroke-color","format"])):c("v-if",!0),n.key==="eventCount"?(s(),m("span",Je,r(u.eventCount),1)):c("v-if",!0),n.key==="failureRate"?(s(),m("span",{key:3,style:ie({color:u.failureRate>.3?"#ff4d4f":"var(--text-secondary)",fontFamily:"monospace"})},r((u.failureRate*100).toFixed(1))+"% ",5)):c("v-if",!0),n.key==="uniqueResources"?(s(),_(x,{key:4,color:"cyan",style:{"font-size":"11px"}},{default:o(()=>[b(r(u.uniqueResources),1)]),_:2},1024)):c("v-if",!0),n.key==="burstiness"?(s(),m("span",Ze,r((u.burstiness*100).toFixed(0))+"% ",1)):c("v-if",!0)]),emptyText:o(()=>[g("div",Ge,[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",Qe,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:o(({item:n})=>[a(te,{style:{background:"var(--bg-card)",padding:"10px 16px"}},{default:o(()=>[g("div",Xe,[g("div",$e,[a(x,{color:t.riskColor(n.score*100)},{default:o(()=>[b("score "+r(n.score.toFixed(2)),1)]),_:2},1032,["color"]),n.event?.entity?(s(),m("span",et,r(n.event.entity),1)):c("v-if",!0),n.event?.action?(s(),m("span",tt," → "+r(n.event.action),1)):c("v-if",!0)]),n.reasons.length?(s(),m("div",at,[(s(!0),m(R,null,H(n.reasons,u=>(s(),_(x,{key:u,color:"volcano",style:{"font-size":"10px",margin:"1px"}},{default:o(()=>[b(r(u),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":l[3]||(l[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:o(()=>[a(P,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:o(()=>[a(F,{label:e.$t("compliance.match.label"),required:""},{default:o(()=>[a(W,{value:t.matchForm.observable,"onUpdate:value":l[2]||(l[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:o(()=>[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",ot,[b(r(e.$t("compliance.match.detectType"))+" ",1),a(x,{color:t.iocTypeColor(t.matchResult.type)},{default:o(()=>[b(r(t.matchResult.type),1)]),_:1},8,["color"])]),t.matchResult.indicator?(s(),m("div",lt,[g("div",nt,r(e.$t("compliance.match.sourcePrefix"))+" "+r(t.matchResult.indicator.sourceName||"—"),1),g("div",it,r(e.$t("compliance.match.confidencePrefix"))+" "+r(t.matchResult.indicator.confidence??"—"),1),t.matchResult.indicator.labels.length?(s(),m("div",rt,[(s(!0),m(R,null,H(t.matchResult.indicator.labels,n=>(s(),_(x,{key:n,color:"orange",style:{"font-size":"10px"}},{default:o(()=>[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":l[6]||(l[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:o(()=>[a(P,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:o(()=>[a(F,{label:e.$t("compliance.build.entityLabel")},{default:o(()=>[a(W,{value:t.buildForm.entity,"onUpdate:value":l[4]||(l[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:o(()=>[a(K,{value:t.buildForm.days,"onUpdate:value":l[5]||(l[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",st,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":l[10]||(l[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:o(()=>[a(P,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:o(()=>[a(F,{label:e.$t("compliance.analyze.entityLabel")},{default:o(()=>[a(W,{value:t.analyzeForm.entity,"onUpdate:value":l[7]||(l[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:o(()=>[a(K,{value:t.analyzeForm.threshold,"onUpdate:value":l[8]||(l[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:o(()=>[a(K,{value:t.analyzeForm.days,"onUpdate:value":l[9]||(l[9]=n=>t.analyzeForm.days=n),min:1,max:30,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"])]),_:1}),g("p",ct,r(e.$t("compliance.analyze.footnote")),1)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])])}const yt=he(Be,[["render",ut],["__scopeId","data-v-d3ffc3f8"],["__file","/tmp/cc-web-panel-v9Hwrq/repo/packages/web-panel/src/views/Compliance.vue"]]);export{yt as default};
1
+ import{I as p,J as m,U as g,R as r,c as a,K as o,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 J,$ as ie}from"./vendor-BMxUs6UX.js";import{t as Z,_ as he,u as re,b as se,d as v}from"./index-xm1KHUEQ.js";import{s as _e,am as ke,ak as xe,G as ze,Z as Ae,b2 as Se,D as Te,b3 as Ce,as as Oe,R as Fe}from"./icons-BsDmGpcT.js";const Re=Object.freeze(["file-md5","file-sha1","file-sha256","file-sha512","ipv4","ipv6","domain","url","email"]);function T(e,l=0){return typeof e=="number"&&Number.isFinite(e)?e:l}function ye(e,l=0){if(!e||typeof e!="object")return null;const d=e.id||"";if(!d)return null;const t=Array.isArray(e.labels)?e.labels:[];return{key:d,id:d,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:l}}function ce(e){const l=Z(e);return Array.isArray(l)?l.map(ye).filter(Boolean):[]}function ue(e){const l=Z(e);return!l||typeof l!="object"||Array.isArray(l)?null:{matched:!!l.matched,type:String(l.type||"unknown"),indicator:l.indicator?ye(l.indicator):null}}function de(e){const l={total:0,byType:{}},d=Z(e);if(!d||typeof d!="object"||Array.isArray(d))return l;if(l.total=T(d.total,0),d.byType&&typeof d.byType=="object")for(const[t,C]of Object.entries(d.byType))typeof C=="number"&&Number.isFinite(C)&&(l.byType[t]=C);return l}function we(e,l=0){if(!e||typeof e!="object")return null;const d=e.entity||"";return d?{key:d,entity:d,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:l}:null}function me(e){const l=Z(e);return Array.isArray(l)?l.map(we).filter(Boolean):[]}function Ue(e,l=0){return!e||typeof e!="object"?null:{key:l,score:T(e.score,0),reasons:Array.isArray(e.reasons)?e.reasons:[],event:e.event&&typeof e.event=="object"?e.event:null,_idx:l}}function pe(e){const l=Z(e);return Array.isArray(l)?l.map(Ue).filter(Boolean):[]}function $(e){if(!e)return{noAuditLog:!1,error:""};const l=/no such table:\s*audit_log/i.test(e),d=e.match(/Failed:\s*(.+?)(?:\r?\n|$)/i);return{noAuditLog:l,error:d?d[1].trim():""}}function Be(e){if(e==null||e==="")return"—";const l=typeof e=="number"?new Date(e):new Date(String(e));return isNaN(l.getTime())?String(e):l.toLocaleString("zh-CN",{hour12:!1})}const je={__name:"Compliance",setup(e,{expose:l}){l();const d=re(),{t}=se(),C=h(!1),G=h(!1),w=h(!1),U=h(!1),I=h([]),M=h({total:0,byType:{}}),L=h([]),z=h([]),k=h({noAuditLog:!1,error:""}),S=h("threat"),D=h(""),x=h(!1),B=h(!1),P=h(!1),H=X({observable:""}),j=h(null),O=X({entity:"",days:30}),A=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(()=>L.value.filter(i=>i.riskScore>=70).length),N={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 N[i]||"default"}function K(i){return i>=80?"#ff4d4f":i>=50?"#faad14":"#52c41a"}function n(i){return i>=70?"#ff4d4f":i>=40?"#faad14":"#52c41a"}function u(i,y){return i?i.length>y?i.slice(0,y)+"...":i:""}function Y({key:i}){i==="match"?(j.value=null,x.value=!0):i==="ueba-build"?B.value=!0:i==="ueba-analyze"&&(P.value=!0)}async function Q(){C.value=!0;try{const[i,y,f]=await Promise.all([d.execute("compliance threat-intel list --limit 200 --json",1e4).catch(()=>({output:""})),d.execute("compliance threat-intel stats --json",8e3).catch(()=>({output:""})),d.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),L.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,j.value=null;try{const y=`compliance threat-intel match "${i.replace(/"/g,'\\"')}" --json`,{output:f}=await d.execute(y,8e3),q=ue(f);if(!q){v.error(t("compliance.msg.matchFailed")+": "+f.slice(0,120));return}j.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 d.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 d.execute(i.join(" "),3e4),f=$(y);if(f.noAuditLog){k.value=f,v.warning(t("compliance.msg.auditEmptyBuild")),B.value=!1;return}if(f.error){v.error(t("compliance.msg.buildFailed")+": "+f.error);return}v.success(t("compliance.msg.buildSuccess")),B.value=!1,S.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"];A.entity.trim()&&i.push(`--entity "${A.entity.trim().replace(/"/g,'\\"')}"`),A.threshold!=null&&i.push(`--threshold ${A.threshold}`),A.days!=null&&i.push(`--days ${A.days}`),i.push("--json");const{output:y}=await d.execute(i.join(" "),3e4),f=$(y);if(f.noAuditLog){k.value=f,v.warning(t("compliance.msg.auditEmptyAnalyze")),P.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})),P.value=!1,S.value="ueba"}catch(i){v.error(t("compliance.msg.analyzeFailed")+": "+(i?.message||i))}finally{U.value=!1}}ne(Q);const le={ws:d,t,loading:C,matching:G,building:w,analyzing:U,indicators:I,threatStats:M,uebaTop:L,anomalies:z,uebaError:k,activeTab:S,iocTypeFilter:D,showMatchModal:x,showBuildModal:B,showAnalyzeModal:P,matchForm:H,matchResult:j,buildForm:O,analyzeForm:A,indicatorColumns:ee,uebaColumns:te,filteredIndicators:ae,threatTypeCount:oe,typeBreakdown:W,highRiskCount:F,IOC_TYPE_COLORS:N,iocTypeColor:V,confidenceColor:K,riskColor:n,truncate:u,handleNewClick:Y,loadAll:Q,matchObservable:fe,removeIndicator:be,buildBaseline:ve,runAnalyze:ge,ref:h,computed:E,onMounted:ne,reactive:X,get ReloadOutlined(){return Fe},get PlusOutlined(){return Oe},get AimOutlined(){return Ce},get DatabaseOutlined(){return Te},get FundOutlined(){return Se},get SafetyCertificateOutlined(){return Ae},get BlockOutlined(){return ze},get UserOutlined(){return xe},get WarningOutlined(){return ke},get AlertOutlined(){return _e},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 Re}};return Object.defineProperty(le,"__isScriptSetup",{enumerable:!1,value:!0}),le}},Ee={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Ie={class:"page-title"},Me={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"}},Ne={key:0,style:{color:"var(--text-muted)"}},qe={key:1,style:{color:"var(--text-muted)"}},De={key:0,style:{color:"var(--text-secondary)","font-size":"12px"}},We={key:1,style:{color:"var(--text-muted)"}},Ve={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"}},Je={key:0,style:{color:"var(--text-primary)","font-family":"monospace","font-weight":"500"}},Ze={key:2,style:{color:"var(--text-secondary)"}},Ge={key:5,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"11px"}},He={style:{padding:"30px",color:"var(--text-muted)","text-align":"center"}},Qe={key:2,style:{color:"var(--text-primary)",margin:"24px 0 8px","font-size":"14px"}},Xe={style:{flex:"1"}},$e={style:{display:"flex",gap:"8px","align-items":"center"}},et={key:0,style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px"}},tt={key:1,style:{color:"var(--text-secondary)","font-size":"11px"}},at={key:0,style:{"margin-top":"4px"}},ot={style:{"margin-top":"8px","font-size":"12px",color:"var(--text-secondary)"}},lt={key:0,style:{"margin-top":"12px","font-size":"12px"}},nt={style:{color:"var(--text-secondary)"}},it={style:{color:"var(--text-secondary)"}},rt={key:0,style:{"margin-top":"4px"}},st={style:{color:"var(--text-secondary)","font-size":"12px",margin:"0"}},ct={style:{color:"var(--text-secondary)","font-size":"12px",margin:"0"}};function ut(e,l,d,t,C,G){const w=p("a-button"),U=p("a-menu-item"),I=p("a-menu"),M=p("a-dropdown"),L=p("a-space"),z=p("a-statistic"),k=p("a-card"),S=p("a-col"),D=p("a-row"),x=p("a-tag"),B=p("a-radio-button"),P=p("a-radio-group"),H=p("a-popconfirm"),j=p("a-table"),O=p("a-tab-pane"),A=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"),N=p("a-form"),V=p("a-modal"),K=p("a-input-number");return s(),m("div",null,[g("div",Ee,[g("div",null,[g("h2",Ie,r(e.$t("compliance.title")),1),g("p",Me,r(e.$t("compliance.subtitle")),1)]),a(L,null,{default:o(()=>[a(w,{loading:t.loading,onClick:t.loadAll},{icon:o(()=>[a(t.ReloadOutlined)]),default:o(()=>[b(" "+r(e.$t("compliance.refresh")),1)]),_:1},8,["loading"]),a(M,{trigger:["click"]},{overlay:o(()=>[a(I,{onClick:t.handleNewClick},{default:o(()=>[a(U,{key:"match"},{default:o(()=>[a(t.AimOutlined),b(" "+r(e.$t("compliance.actions.match")),1)]),_:1}),a(U,{key:"ueba-build"},{default:o(()=>[a(t.DatabaseOutlined),b(" "+r(e.$t("compliance.actions.uebaBuild")),1)]),_:1}),a(U,{key:"ueba-analyze"},{default:o(()=>[a(t.FundOutlined),b(" "+r(e.$t("compliance.actions.uebaAnalyze")),1)]),_:1})]),_:1})]),default:o(()=>[a(w,{type:"primary"},{icon:o(()=>[a(t.PlusOutlined)]),default:o(()=>[b(" "+r(e.$t("compliance.actionDropdown")),1)]),_:1})]),_:1})]),_:1})]),c(" Stats overview "),a(D,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:o(()=>[a(S,{xs:12,sm:8,lg:5},{default:o(()=>[a(k,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(z,{title:e.$t("compliance.stats.iocTotal"),value:t.threatStats.total,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:o(()=>[a(t.SafetyCertificateOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),a(S,{xs:12,sm:8,lg:5},{default:o(()=>[a(k,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(z,{title:e.$t("compliance.stats.iocTypes"),value:t.threatTypeCount,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:o(()=>[a(t.BlockOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),a(S,{xs:12,sm:8,lg:5},{default:o(()=>[a(k,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(z,{title:e.$t("compliance.stats.riskEntities"),value:t.uebaTop.length,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:o(()=>[a(t.UserOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),a(S,{xs:12,sm:8,lg:5},{default:o(()=>[a(k,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(z,{title:e.$t("compliance.stats.highRisk"),value:t.highRiskCount,"value-style":{color:t.highRiskCount>0?"#ff4d4f":"#52c41a",fontSize:"20px"}},{prefix:o(()=>[a(t.WarningOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),a(S,{xs:24,sm:8,lg:4},{default:o(()=>[a(k,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(z,{title:e.$t("compliance.stats.recentAnomalies"),value:t.anomalies.length,"value-style":{color:"#faad14",fontSize:"20px"}},{prefix:o(()=>[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:o(()=>[a(L,{size:[12,8],wrap:""},{default:o(()=>[(s(!0),m(R,null,J(t.typeBreakdown,([n,u])=>(s(),_(x,{key:n,color:t.iocTypeColor(n)},{default:o(()=>[b(r(n)+": "+r(u),1)]),_:2},1032,["color"]))),128))]),_:1})]),_:1},8,["title"])):c("v-if",!0),c(" Tabs "),a(oe,{activeKey:t.activeTab,"onUpdate:activeKey":l[1]||(l[1]=n=>t.activeTab=n),class:"compliance-tabs"},{default:o(()=>[c(" ── Threat Intel tab ──────────────────────────────────────── "),a(O,{key:"threat",tab:e.$t("compliance.tabs.threat")},{default:o(()=>[g("div",Le,[a(P,{value:t.iocTypeFilter,"onUpdate:value":l[0]||(l[0]=n=>t.iocTypeFilter=n),size:"small"},{default:o(()=>[a(B,{value:""},{default:o(()=>[b(r(e.$t("compliance.filter.all")),1)]),_:1}),(s(!0),m(R,null,J(t.IOC_TYPES,n=>(s(),_(B,{key:n,value:n},{default:o(()=>[b(r(n),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),a(j,{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:o(({column:n,record:u})=>[n.key==="type"?(s(),_(x,{key:0,color:t.iocTypeColor(u.type),style:{"font-family":"monospace"}},{default:o(()=>[b(r(u.type),1)]),_:2},1032,["color"])):c("v-if",!0),n.key==="value"?(s(),m("span",Pe,r(t.truncate(u.value,64)),1)):c("v-if",!0),n.key==="labels"?(s(),m(R,{key:2},[(s(!0),m(R,null,J(u.labels,Y=>(s(),_(x,{key:Y,color:"orange",style:{"font-size":"10px",margin:"1px"}},{default:o(()=>[b(r(Y),1)]),_:2},1024))),128)),u.labels.length?c("v-if",!0):(s(),m("span",Ne,"—"))],64)):c("v-if",!0),n.key==="confidence"?(s(),m(R,{key:3},[u.confidence!=null?(s(),m("span",{key:0,style:ie({color:t.confidenceColor(u.confidence),fontWeight:500})},r(u.confidence),5)):(s(),m("span",qe,"—"))],64)):c("v-if",!0),n.key==="source"?(s(),m(R,{key:4},[u.sourceName?(s(),m("span",De,r(u.sourceName),1)):(s(),m("span",We,"—"))],64)):c("v-if",!0),n.key==="lastSeen"?(s(),m("span",Ve,r(t.formatComplianceTime(u.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:Y=>t.removeIndicator(u)},{default:o(()=>[a(w,{size:"small",type:"link",danger:""},{default:o(()=>[b(r(e.$t("compliance.table.delete")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):c("v-if",!0)]),emptyText:o(()=>[g("div",Ke,[a(t.SafetyCertificateOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),b(" "+r(e.$t("compliance.table.emptyThreatsLine1"))+" ",1),l[11]||(l[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:o(()=>[t.uebaError.noAuditLog?(s(),_(A,{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(),_(A,{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(j,{columns:t.uebaColumns,"data-source":t.uebaTop,pagination:!1,size:"small",loading:t.loading,style:{background:"var(--bg-card)"}},{bodyCell:o(({column:n,record:u})=>[n.key==="entity"?(s(),m("span",Je,r(u.entity),1)):c("v-if",!0),n.key==="riskScore"?(s(),_(ee,{key:1,percent:Math.min(u.riskScore,100),"stroke-color":t.riskColor(u.riskScore),size:"small",format:()=>u.riskScore.toFixed(1)},null,8,["percent","stroke-color","format"])):c("v-if",!0),n.key==="eventCount"?(s(),m("span",Ze,r(u.eventCount),1)):c("v-if",!0),n.key==="failureRate"?(s(),m("span",{key:3,style:ie({color:u.failureRate>.3?"#ff4d4f":"var(--text-secondary)",fontFamily:"monospace"})},r((u.failureRate*100).toFixed(1))+"% ",5)):c("v-if",!0),n.key==="uniqueResources"?(s(),_(x,{key:4,color:"cyan",style:{"font-size":"11px"}},{default:o(()=>[b(r(u.uniqueResources),1)]),_:2},1024)):c("v-if",!0),n.key==="burstiness"?(s(),m("span",Ge,r((u.burstiness*100).toFixed(0))+"% ",1)):c("v-if",!0)]),emptyText:o(()=>[g("div",He,[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",Qe,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:o(({item:n})=>[a(te,{style:{background:"var(--bg-card)",padding:"10px 16px"}},{default:o(()=>[g("div",Xe,[g("div",$e,[a(x,{color:t.riskColor(n.score*100)},{default:o(()=>[b("score "+r(n.score.toFixed(2)),1)]),_:2},1032,["color"]),n.event?.entity?(s(),m("span",et,r(n.event.entity),1)):c("v-if",!0),n.event?.action?(s(),m("span",tt," → "+r(n.event.action),1)):c("v-if",!0)]),n.reasons.length?(s(),m("div",at,[(s(!0),m(R,null,J(n.reasons,u=>(s(),_(x,{key:u,color:"volcano",style:{"font-size":"10px",margin:"1px"}},{default:o(()=>[b(r(u),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":l[3]||(l[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:o(()=>[a(N,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:o(()=>[a(F,{label:e.$t("compliance.match.label"),required:""},{default:o(()=>[a(W,{value:t.matchForm.observable,"onUpdate:value":l[2]||(l[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:o(()=>[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",ot,[b(r(e.$t("compliance.match.detectType"))+" ",1),a(x,{color:t.iocTypeColor(t.matchResult.type)},{default:o(()=>[b(r(t.matchResult.type),1)]),_:1},8,["color"])]),t.matchResult.indicator?(s(),m("div",lt,[g("div",nt,r(e.$t("compliance.match.sourcePrefix"))+" "+r(t.matchResult.indicator.sourceName||"—"),1),g("div",it,r(e.$t("compliance.match.confidencePrefix"))+" "+r(t.matchResult.indicator.confidence??"—"),1),t.matchResult.indicator.labels.length?(s(),m("div",rt,[(s(!0),m(R,null,J(t.matchResult.indicator.labels,n=>(s(),_(x,{key:n,color:"orange",style:{"font-size":"10px"}},{default:o(()=>[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":l[6]||(l[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:o(()=>[a(N,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:o(()=>[a(F,{label:e.$t("compliance.build.entityLabel")},{default:o(()=>[a(W,{value:t.buildForm.entity,"onUpdate:value":l[4]||(l[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:o(()=>[a(K,{value:t.buildForm.days,"onUpdate:value":l[5]||(l[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",st,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":l[10]||(l[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:o(()=>[a(N,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:o(()=>[a(F,{label:e.$t("compliance.analyze.entityLabel")},{default:o(()=>[a(W,{value:t.analyzeForm.entity,"onUpdate:value":l[7]||(l[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:o(()=>[a(K,{value:t.analyzeForm.threshold,"onUpdate:value":l[8]||(l[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:o(()=>[a(K,{value:t.analyzeForm.days,"onUpdate:value":l[9]||(l[9]=n=>t.analyzeForm.days=n),min:1,max:30,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"])]),_:1}),g("p",ct,r(e.$t("compliance.analyze.footnote")),1)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])])}const yt=he(je,[["render",ut],["__scopeId","data-v-d3ffc3f8"],["__file","/tmp/cc-web-panel-1UABPy/repo/packages/web-panel/src/views/Compliance.vue"]]);export{yt as default};