chainlesschain 0.157.9 → 0.159.0

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 (184) hide show
  1. package/bin/chainlesschain.js +0 -0
  2. package/package.json +1 -1
  3. package/src/assets/web-panel/.build-hash +1 -1
  4. package/src/assets/web-panel/assets/{AIOps-C4XQxptM.js → AIOps-ztGJppiG.js} +1 -1
  5. package/src/assets/web-panel/assets/{ActionButton-CvKbykKA.js → ActionButton-DCuat-R-.js} +1 -1
  6. package/src/assets/web-panel/assets/{Analytics-DFMAWKUR.js → Analytics-m_EtU-RR.js} +2 -2
  7. package/src/assets/web-panel/assets/AppLayout-8HizVjee.css +1 -0
  8. package/src/assets/web-panel/assets/AppLayout-Crz8jbEC.js +1 -0
  9. package/src/assets/web-panel/assets/Audit-CNLWjMXN.js +1 -0
  10. package/src/assets/web-panel/assets/Audit-kU7vbN-D.css +1 -0
  11. package/src/assets/web-panel/assets/Backup-CggaSq9O.js +1 -0
  12. package/src/assets/web-panel/assets/Backup-DxLiJzmk.css +1 -0
  13. package/src/assets/web-panel/assets/{BaseInput-CvAa9Hm_.js → BaseInput-BssiYvl6.js} +1 -1
  14. package/src/assets/web-panel/assets/{Chat-3Kj2JQP4.js → Chat-tuVfpQUO.js} +1 -1
  15. package/src/assets/web-panel/assets/{Checkbox-YsCNWg9S.js → Checkbox-BUUkXdQg.js} +1 -1
  16. package/src/assets/web-panel/assets/{Codegen-DDiVk21N.js → Codegen-CHu-7YGr.js} +1 -1
  17. package/src/assets/web-panel/assets/{Col-Dpb7Eik4.js → Col-2IaMFwmX.js} +1 -1
  18. package/src/assets/web-panel/assets/{Community-Bglv8oIv.js → Community-CYL7Fvjq.js} +1 -1
  19. package/src/assets/web-panel/assets/{Compact-DC8UsEAe.js → Compact-5yRVELhA.js} +1 -1
  20. package/src/assets/web-panel/assets/{Compliance-DzVghx7L.js → Compliance-CKuIDJHK.js} +1 -1
  21. package/src/assets/web-panel/assets/{Cowork-pgKzBNDo.js → Cowork-CFkkMMDK.js} +4 -4
  22. package/src/assets/web-panel/assets/{Cron-I81HiCa1.js → Cron-DIfkI7vf.js} +2 -2
  23. package/src/assets/web-panel/assets/{Crosschain-48CdkgQf.js → Crosschain-BkjY-lst.js} +1 -1
  24. package/src/assets/web-panel/assets/{DID-CVYxjLQn.js → DID-ChzRkgNy.js} +2 -2
  25. package/src/assets/web-panel/assets/{Dashboard-sqj42zKx.js → Dashboard-DKrbXVNn.js} +2 -2
  26. package/src/assets/web-panel/assets/{Dropdown-DBfZJHBI.js → Dropdown-BYGoxH1z.js} +1 -1
  27. package/src/assets/web-panel/assets/{Federation-BT-pF1wN.js → Federation-B8QX-IaA.js} +1 -1
  28. package/src/assets/web-panel/assets/{FormItemContext-B-sn9E_W.js → FormItemContext-Be6TSNxz.js} +1 -1
  29. package/src/assets/web-panel/assets/{Git-DTh2i-Qk.js → Git-BBnGgbBR.js} +2 -2
  30. package/src/assets/web-panel/assets/{Governance-D788Lws6.js → Governance-CxUHZMsp.js} +1 -1
  31. package/src/assets/web-panel/assets/{Inference-CnFa6Se9.js → Inference-BlnOG71q.js} +1 -1
  32. package/src/assets/web-panel/assets/{KnowledgeGraph-DHaMxawn.js → KnowledgeGraph-vkVq38kC.js} +1 -1
  33. package/src/assets/web-panel/assets/{Logs-B39LUZs9.js → Logs-Bxx7WARH.js} +2 -2
  34. package/src/assets/web-panel/assets/{Marketplace-BdOCF2RA.js → Marketplace-Bh8ExT9_.js} +1 -1
  35. package/src/assets/web-panel/assets/McpTools-CTQrNVAQ.css +1 -0
  36. package/src/assets/web-panel/assets/McpTools-Djj_a3ko.js +5 -0
  37. package/src/assets/web-panel/assets/{Memory-Vl_lYCs2.js → Memory-DlgNgAov.js} +2 -2
  38. package/src/assets/web-panel/assets/NLProgramming-BN3jaoen.js +1 -0
  39. package/src/assets/web-panel/assets/Notes-DKkPfXlY.css +1 -0
  40. package/src/assets/web-panel/assets/Notes-De7mIkkV.js +7 -0
  41. package/src/assets/web-panel/assets/{Organization-Cxhhw4aD.js → Organization-B-98mdK2.js} +4 -4
  42. package/src/assets/web-panel/assets/{Overflow-L_28D41_.js → Overflow-G0I8IlY3.js} +1 -1
  43. package/src/assets/web-panel/assets/{OverrideContext-DEW2m7K6.js → OverrideContext-GHsJf9ok.js} +1 -1
  44. package/src/assets/web-panel/assets/{P2P-BflX74Hm.js → P2P-DIUgHZ1z.js} +2 -2
  45. package/src/assets/web-panel/assets/{Permissions-ByLhEAbz.js → Permissions-B8XycCVk.js} +4 -4
  46. package/src/assets/web-panel/assets/{Pipeline-CnZJNdgt.js → Pipeline-cUpETlXS.js} +1 -1
  47. package/src/assets/web-panel/assets/Portal-SsPhn64D.js +1 -0
  48. package/src/assets/web-panel/assets/Privacy-B6J89UBw.js +1 -0
  49. package/src/assets/web-panel/assets/{ProjectSettings-N0r_mtec.js → ProjectSettings-2Ftw0zt_.js} +2 -2
  50. package/src/assets/web-panel/assets/{Projects-DLvUzeIB.js → Projects-CcOdFpgr.js} +2 -2
  51. package/src/assets/web-panel/assets/{Providers-B2A35VhD.js → Providers-D0r2qSf-.js} +2 -2
  52. package/src/assets/web-panel/assets/QuickAsk-CwsPpfkq.js +1 -0
  53. package/src/assets/web-panel/assets/{Recommend-DYb61WNp.js → Recommend-BYEDetJm.js} +1 -1
  54. package/src/assets/web-panel/assets/{Reputation-C9BfnI0z.js → Reputation-Bli4hBGH.js} +1 -1
  55. package/src/assets/web-panel/assets/{Row-CpPHVi7H.js → Row-DTW9_BYi.js} +1 -1
  56. package/src/assets/web-panel/assets/{RssFeed-CbqJDErh.js → RssFeed-kwj_himl.js} +3 -3
  57. package/src/assets/web-panel/assets/{Search-C0gd765-.js → Search-DymcqASO.js} +1 -1
  58. package/src/assets/web-panel/assets/{Security-DsYWAhpE.js → Security-Bh3yvyNN.js} +3 -3
  59. package/src/assets/web-panel/assets/{Services-7Blny0Jc.js → Services-O4UZaYur.js} +2 -2
  60. package/src/assets/web-panel/assets/{Skeleton-TzxE-JJt.js → Skeleton-B82oQZTz.js} +1 -1
  61. package/src/assets/web-panel/assets/Skills-BfkrC05g.js +1 -0
  62. package/src/assets/web-panel/assets/{Sla-mftEtvGn.js → Sla-DEs5XCIf.js} +1 -1
  63. package/src/assets/web-panel/assets/SpeechSettings-BWMhb10j.js +1 -0
  64. package/src/assets/web-panel/assets/SpeechSettings-CiKvsIyV.css +1 -0
  65. package/src/assets/web-panel/assets/{Tasks-Db9TRjE7.js → Tasks-CIBUb9M1.js} +1 -1
  66. package/src/assets/web-panel/assets/Templates-DAkzr0xS.css +1 -0
  67. package/src/assets/web-panel/assets/Templates-iqSuJY-O.js +1 -0
  68. package/src/assets/web-panel/assets/{Tenant-BB-LLJMZ.js → Tenant-CLqZjkVq.js} +1 -1
  69. package/src/assets/web-panel/assets/{Tokens-DHOkHNur.js → Tokens-Bwz8aQtK.js} +1 -1
  70. package/src/assets/web-panel/assets/Trigger-CxnChVoS.js +1 -0
  71. package/src/assets/web-panel/assets/{Trust-BpC4gDis.js → Trust-Bp23lyZl.js} +1 -1
  72. package/src/assets/web-panel/assets/UkeySign-_VAMquoh.js +1 -0
  73. package/src/assets/web-panel/assets/{VideoEditing-CeDFfKrq.js → VideoEditing-Bxqwg4zW.js} +1 -1
  74. package/src/assets/web-panel/assets/{Wallet-CcNCVaor.js → Wallet-Cvht6Yrh.js} +4 -4
  75. package/src/assets/web-panel/assets/{WebAuthn-BbIPA6Ca.js → WebAuthn-DD4EomJu.js} +4 -4
  76. package/src/assets/web-panel/assets/WorkflowEditor-CEKNTS5G.css +1 -0
  77. package/src/assets/web-panel/assets/WorkflowEditor-CJy5e0fl.js +1 -0
  78. package/src/assets/web-panel/assets/{chat-CVn-r3oV.js → chat-DY27mJje.js} +1 -1
  79. package/src/assets/web-panel/assets/{collapseMotion-D3P4mRvK.js → collapseMotion-CyadT_6x.js} +1 -1
  80. package/src/assets/web-panel/assets/{colors-2MPUdPu2.js → colors-B7fDvuJc.js} +1 -1
  81. package/src/assets/web-panel/assets/{compact-item-B4vcKR0x.js → compact-item-DgthOVXi.js} +1 -1
  82. package/src/assets/web-panel/assets/{createContext-Div8Cl0F.js → createContext-Blw2vgkG.js} +1 -1
  83. package/src/assets/web-panel/assets/{hasIn-9c9xldOR.js → hasIn-BfL1HJZl.js} +1 -1
  84. package/src/assets/web-panel/assets/{icons-ukMaZ3tx.js → icons-CJACPYXu.js} +4 -4
  85. package/src/assets/web-panel/assets/{index-D1JeOKve.js → index-00RNC3ZQ.js} +2 -2
  86. package/src/assets/web-panel/assets/{index-DJAPu9VF.js → index-B9B9Zbf3.js} +1 -1
  87. package/src/assets/web-panel/assets/index-BAsMNMbh.js +1 -0
  88. package/src/assets/web-panel/assets/{index-BbqCdQXU.js → index-BB5y5Y0z.js} +3 -3
  89. package/src/assets/web-panel/assets/{index-CtM3tjRj.js → index-BHnaIQEm.js} +1 -1
  90. package/src/assets/web-panel/assets/index-BVjDIZQ4.js +1 -0
  91. package/src/assets/web-panel/assets/index-BZeRnzuY.js +55 -0
  92. package/src/assets/web-panel/assets/{index-OhUZFfxQ.js → index-BZfoAtZC.js} +1 -1
  93. package/src/assets/web-panel/assets/index-Bl2nXm2J.js +13 -0
  94. package/src/assets/web-panel/assets/{index-COJ-mQYg.js → index-BsleJWGy.js} +2 -2
  95. package/src/assets/web-panel/assets/{index-BuVNDnn8.js → index-BuEOhTAw.js} +5 -5
  96. package/src/assets/web-panel/assets/{index-BfoYep3e.js → index-Bw1dwHWm.js} +1 -1
  97. package/src/assets/web-panel/assets/{index-BCfVA9mJ.js → index-Bw_UV2ez.js} +1 -1
  98. package/src/assets/web-panel/assets/index-C8GYpC65.js +1 -0
  99. package/src/assets/web-panel/assets/{index-CVYrm1az.js → index-CBHlKa-J.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-IzAqu_OK.js → index-CL-7KCFI.js} +2 -2
  101. package/src/assets/web-panel/assets/{index-BntG0RJO.js → index-CiN4NEAa.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-B4hcllQg.js → index-CqjUUbil.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-D-0g6tCK.js → index-Cqtt1N0F.js} +1 -1
  104. package/src/assets/web-panel/assets/index-D1QP9Ue1.js +1 -0
  105. package/src/assets/web-panel/assets/index-D6BUjL6I.js +1 -0
  106. package/src/assets/web-panel/assets/{index-C1GXp5YD.js → index-DN7ywgBJ.js} +1 -1
  107. package/src/assets/web-panel/assets/index-DasW8LIs.js +1 -0
  108. package/src/assets/web-panel/assets/{index-C-CTCrAH.js → index-Dd9McFt_.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-COdKVelL.js → index-DdzLEdL6.js} +1 -1
  110. package/src/assets/web-panel/assets/index-DhML6F3z.js +1 -0
  111. package/src/assets/web-panel/assets/{index-DogHNcyC.js → index-DjN0nHiV.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-ZW72ov7W.js → index-DjhWpiZW.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-B65KFSc3.js → index-DouFuKIR.js} +1 -1
  114. package/src/assets/web-panel/assets/{index--tOLU2ID.js → index-DyRzaN4b.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-B58J4NxK.js → index-DzWwjWYN.js} +1 -1
  116. package/src/assets/web-panel/assets/index-Dza_w3kG.js +1 -0
  117. package/src/assets/web-panel/assets/{index-dV8k_pMc.js → index-Q4qgOtOe.js} +1 -1
  118. package/src/assets/web-panel/assets/index-Vit9TJBu.js +36 -0
  119. package/src/assets/web-panel/assets/{index-3KbT-bG7.js → index-lkJllVbJ.js} +3 -3
  120. package/src/assets/web-panel/assets/{index-Ca3iTiXs.js → index-uMWaXVtR.js} +2 -2
  121. package/src/assets/web-panel/assets/{index-BjGOthNv.js → index-uwh_ikIt.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-D0GALIQZ.js → index-x8iHfZRd.js} +3 -3
  123. package/src/assets/web-panel/assets/{initDefaultProps--L8bzddm.js → initDefaultProps-BeWIEzBr.js} +1 -1
  124. package/src/assets/web-panel/assets/{motion-BR7NF0vx.js → motion-CIQOKmi6.js} +3 -3
  125. package/src/assets/web-panel/assets/{move-BpyQMRtF.js → move-ZgRPlBji.js} +1 -1
  126. package/src/assets/web-panel/assets/{omit-RkKN6uqw.js → omit-BS0H_YEP.js} +1 -1
  127. package/src/assets/web-panel/assets/{pickAttrs-Bk8_mKGY.js → pickAttrs-BOGgGau8.js} +1 -1
  128. package/src/assets/web-panel/assets/{placementArrow-CBAaXBxj.js → placementArrow--c5TQkDQ.js} +1 -1
  129. package/src/assets/web-panel/assets/{responsiveObserve-BzrPInK7.js → responsiveObserve-CrHOX7jp.js} +1 -1
  130. package/src/assets/web-panel/assets/{slide-CXFBsLyp.js → slide-Dd2mJUD0.js} +1 -1
  131. package/src/assets/web-panel/assets/{statusUtils-6TeOuUzQ.js → statusUtils-5QFvAofV.js} +1 -1
  132. package/src/assets/web-panel/assets/{styleChecker-CQt4HHRm.js → styleChecker-CiDrXnbi.js} +1 -1
  133. package/src/assets/web-panel/assets/{transition-CGYDOK3N.js → transition-CVd2ueaJ.js} +1 -1
  134. package/src/assets/web-panel/assets/{useConfigInject-BKqJUQaF.js → useConfigInject-DIkkDpt1.js} +2 -2
  135. package/src/assets/web-panel/assets/useFlexGapSupport-rrtj6f1h.js +1 -0
  136. package/src/assets/web-panel/assets/useFs-CK8VYPus.js +1 -0
  137. package/src/assets/web-panel/assets/{useMergedState-DbHXwBgv.js → useMergedState-CLY-UHry.js} +1 -1
  138. package/src/assets/web-panel/assets/{useRefs-DRyTVik7.js → useRefs-HzOoMkZk.js} +1 -1
  139. package/src/assets/web-panel/assets/useShellMode-CgR0wCYM.js +1 -0
  140. package/src/assets/web-panel/assets/{useState-DoAhV80c.js → useState-yWVBuz1S.js} +1 -1
  141. package/src/assets/web-panel/assets/{vendor-BVetwVfk.js → vendor-D0Qjn73K.js} +1 -1
  142. package/src/assets/web-panel/assets/vnode-xRp-KMjS.js +1 -0
  143. package/src/assets/web-panel/assets/ws-4ur1fGsk.js +1 -0
  144. package/src/assets/web-panel/assets/{zoom-BNV3xYvt.js → zoom-CrI_kdTW.js} +1 -1
  145. package/src/assets/web-panel/index.html +3 -3
  146. package/src/commands/nlprog.js +25 -15
  147. package/src/gateways/ws/ws-server.js +12 -1
  148. package/src/gateways/ws/ws-session-gateway.js +12 -1
  149. package/src/lib/listen-with-port-fallback.js +103 -0
  150. package/src/lib/web-ui-server.js +33 -0
  151. package/src/runtime/agent-runtime.js +80 -18
  152. package/src/assets/web-panel/assets/AppLayout-BkNdtTbn.js +0 -1
  153. package/src/assets/web-panel/assets/AppLayout-CKMl4NLf.css +0 -1
  154. package/src/assets/web-panel/assets/Audit-Bw7KSJD_.js +0 -1
  155. package/src/assets/web-panel/assets/Audit-L4_ApS01.css +0 -1
  156. package/src/assets/web-panel/assets/Backup-D46qSgzQ.js +0 -1
  157. package/src/assets/web-panel/assets/Backup-fZqtfC1m.css +0 -1
  158. package/src/assets/web-panel/assets/McpTools-CyhSLDwf.css +0 -1
  159. package/src/assets/web-panel/assets/McpTools-DbwkdBUE.js +0 -4
  160. package/src/assets/web-panel/assets/NLProgramming-CgD2H0Pc.js +0 -1
  161. package/src/assets/web-panel/assets/Notes-BG69sJKi.css +0 -1
  162. package/src/assets/web-panel/assets/Notes-BvC5_V2H.js +0 -2
  163. package/src/assets/web-panel/assets/Portal-CHsntPCQ.js +0 -1
  164. package/src/assets/web-panel/assets/Privacy-BJIajCGG.js +0 -1
  165. package/src/assets/web-panel/assets/Skills-DfaRaffm.js +0 -1
  166. package/src/assets/web-panel/assets/Templates-DOY_oZnm.css +0 -1
  167. package/src/assets/web-panel/assets/Templates-DgonVRQJ.js +0 -1
  168. package/src/assets/web-panel/assets/Trigger-BV4JPD3z.js +0 -1
  169. package/src/assets/web-panel/assets/WorkflowEditor-D5bX6woe.css +0 -1
  170. package/src/assets/web-panel/assets/WorkflowEditor-DxkitXpf.js +0 -1
  171. package/src/assets/web-panel/assets/index-BcnQrVVZ.js +0 -1
  172. package/src/assets/web-panel/assets/index-BzBaZFuT.js +0 -1
  173. package/src/assets/web-panel/assets/index-CDoxJ9Cl.js +0 -1
  174. package/src/assets/web-panel/assets/index-CIE6ht2b.js +0 -1
  175. package/src/assets/web-panel/assets/index-CIWKlZ1X.js +0 -13
  176. package/src/assets/web-panel/assets/index-D--EKCHy.js +0 -1
  177. package/src/assets/web-panel/assets/index-DIe3dY84.js +0 -1
  178. package/src/assets/web-panel/assets/index-DdHPswKn.js +0 -1
  179. package/src/assets/web-panel/assets/index-DgWftysw.js +0 -1
  180. package/src/assets/web-panel/assets/index-Dk3ZySO2.js +0 -55
  181. package/src/assets/web-panel/assets/index-ZZ_4A9um.js +0 -36
  182. package/src/assets/web-panel/assets/useFlexGapSupport--RuYYIc6.js +0 -1
  183. package/src/assets/web-panel/assets/vnode-I9keNa_U.js +0 -1
  184. package/src/assets/web-panel/assets/ws-Bv7YH0VB.js +0 -1
@@ -1 +0,0 @@
1
- import{u as ze}from"./ws-Bv7YH0VB.js";import{s as ie}from"./community-parser-CO25nZFt.js";import{_ as Ae}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{a as E}from"./index-BbqCdQXU.js";import{Y as Ce,aC as Re,p as se,aw as Oe,aD as De,A as we,aa as Ne}from"./icons-ukMaZ3tx.js";import{l as Ee,F as f,D as _,c as t,x as e,m as h,G as b,q as v,r as L,v as r,J as y,u as g,H as C,L as j,N as je,I as c,j as Y}from"./vendor-BVetwVfk.js";import"./index-ZZ_4A9um.js";import"./useConfigInject-BKqJUQaF.js";import"./transition-CGYDOK3N.js";import"./Keyframes-C7fCrnlS.js";import"./Portal-CHsntPCQ.js";import"./index-U4Zd5IK6.js";function ue(s){const n=ie(s);if(!n)return null;try{return JSON.parse(n)}catch{}const i=n.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!i)return null;try{return JSON.parse(i[0])}catch{return null}}const B=Object.freeze(["auth","permission","data","system","file","did","crypto","api"]),H=Object.freeze(["low","medium","high","critical"]);function G(s,n=0){return typeof s=="number"&&Number.isFinite(s)?s:n}function re(s){if(!s)return{noDb:!1,error:""};const n=ie(s),i=/Database not available/i.test(n);return{noDb:i,error:i?"Database not available":""}}function Ie(s,n=0){if(!s||typeof s!="object")return null;const i=s.id||"";if(!i)return null;let p=s.details;if(typeof p=="string"&&p)try{p=JSON.parse(p)}catch{}const u=typeof s.success=="boolean"?s.success:s.success===1||s.success==="1"||s.success===!0;return{key:i,id:i,eventType:String(s.event_type??s.eventType??"").toLowerCase(),operation:String(s.operation||""),actor:s.actor??"",target:s.target??"",details:p??null,riskLevel:String(s.risk_level??s.riskLevel??"low").toLowerCase(),ipAddress:s.ip_address??s.ipAddress??"",userAgent:s.user_agent??s.userAgent??"",success:u,errorMessage:s.error_message??s.errorMessage??"",createdAt:s.created_at??s.createdAt??"",_idx:n}}function Ue(s){const n=ue(s);return Array.isArray(n)?n.map(Ie).filter(Boolean):[]}const Fe={total:0,failures:0,highRisk:0,byEventType:{},byRiskLevel:{}};function Je(s){const n=JSON.parse(JSON.stringify(Fe));for(const p of B)n.byEventType[p]=0;for(const p of H)n.byRiskLevel[p]=0;const i=ue(s);if(!i||typeof i!="object"||Array.isArray(i))return n;if(n.total=G(i.total,0),n.failures=G(i.failures,0),n.highRisk=G(i.highRisk,0),i.byEventType&&typeof i.byEventType=="object")for(const[p,u]of Object.entries(i.byEventType))typeof u=="number"&&Number.isFinite(u)&&(n.byEventType[p]=u);if(i.byRiskLevel&&typeof i.byRiskLevel=="object")for(const[p,u]of Object.entries(i.byRiskLevel))typeof u=="number"&&Number.isFinite(u)&&(n.byRiskLevel[p]=u);return n}function ne(s){if(s==null||s==="")return"—";const n=String(s),i=n.includes(" ")&&!n.includes("T")?n.replace(" ","T")+"Z":n,p=new Date(i);return isNaN(p.getTime())?n:p.toLocaleString("zh-CN",{hour12:!1})}const Me={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Be={class:"type-name"},Ve={class:"type-count"},$e={class:"filter-bar"},Ke={key:0,style:{color:"var(--text-secondary)","font-size":"11px","font-family":"monospace"}},Pe={style:{color:"var(--text-primary)","font-weight":"500","font-family":"monospace","font-size":"12px"}},We={key:0,style:{color:"#ff4d4f","font-size":"11px","margin-top":"2px"}},qe={key:0,style:{color:"var(--text-secondary)","font-size":"12px"}},Ye={key:1,style:{color:"var(--text-muted)"}},Ge={key:0,style:{color:"var(--text-secondary)","font-size":"12px","font-family":"monospace"}},He={key:1,style:{color:"var(--text-muted)"}},Ze={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Qe={key:0,style:{"padding-top":"8px"}},Xe={style:{"font-family":"monospace","font-size":"12px"}},et={style:{"margin-left":"8px",color:"var(--text-secondary)","font-size":"12px"}},tt={style:{"font-family":"monospace"}},ot={key:0,style:{"font-family":"monospace","font-size":"12px"}},at={key:1,style:{color:"var(--text-muted)"}},lt={key:0,style:{"font-family":"monospace","font-size":"12px"}},st={key:1,style:{color:"var(--text-muted)"}},rt={style:{"font-family":"monospace","font-size":"12px"}},nt={style:{"font-family":"monospace","font-size":"11px"}},it={style:{color:"#ff4d4f"}},ut={class:"details-pre"},ct={__name:"Audit",setup(s){const n=ze(),i=L(!1),p=L([]),u=L({total:0,failures:0,highRisk:0,byEventType:{},byRiskLevel:{}}),V=L({noDb:!1,error:""}),Z=L("events"),I=L(""),O=L(""),D=L(""),w=L(""),U=L(!1),$=L(!1),d=L(null),ce=[{title:"时间",key:"createdAt",width:"160px"},{title:"类型",key:"eventType",width:"110px"},{title:"操作",key:"operation"},{title:"角色",key:"actor",width:"140px"},{title:"目标",key:"target",width:"180px"},{title:"风险",key:"riskLevel",width:"90px"},{title:"状态",key:"success",width:"80px"},{title:"操作",key:"action",width:"80px"}],K=Y(()=>u.value.total?(u.value.total-u.value.failures)/u.value.total*100:100),de=Y(()=>!!(O.value||D.value||w.value||U.value)),fe=Y(()=>{let o=p.value;if(D.value&&(o=o.filter(l=>l.eventType===D.value)),w.value&&(o=o.filter(l=>l.riskLevel===w.value)),U.value&&(o=o.filter(l=>!l.success)),O.value){const l=O.value.toLowerCase();o=o.filter(k=>(k.operation||"").toLowerCase().includes(l)||(k.actor||"").toLowerCase().includes(l)||(k.target||"").toLowerCase().includes(l))}return o});function P(o){return{auth:"认证",permission:"权限",data:"数据",system:"系统",file:"文件",did:"DID",crypto:"加密",api:"API"}[o]||o}function F(o){return{auth:"blue",permission:"purple",data:"cyan",system:"default",file:"green",did:"gold",crypto:"magenta",api:"volcano"}[o]||"default"}function Q(o){return{auth:"#1677ff",permission:"#722ed1",data:"#13c2c2",system:"#888",file:"#52c41a",did:"#faad14",crypto:"#eb2f96",api:"#fa541c"}[o]||"#888"}function J(o){return{low:"低",medium:"中",high:"高",critical:"关键"}[o]||o}function W(o){return{low:"default",medium:"gold",high:"orange",critical:"red"}[o]||"default"}function pe(o){return{low:"#888",medium:"#faad14",high:"#fa8c16",critical:"#ff4d4f"}[o]||"#888"}function X(o,l){return l?Math.round(o/l*100):0}function ve(o,l){return o?o.length<=l?o:o.slice(0,l)+"…":""}function ye(o){if(typeof o=="string")return o;try{return JSON.stringify(o,null,2)}catch{return String(o)}}let ee=null;function _e(){clearTimeout(ee),ee=setTimeout(()=>{O.value=I.value.trim()},300)}function me(){O.value=I.value.trim()}async function te(){i.value=!0,V.value={noDb:!1,error:""};try{const[o,l]=await Promise.all([n.execute("audit log --json -n 200",12e3).catch(()=>({output:""})),n.execute("audit stats --json",8e3).catch(()=>({output:""}))]),k=[o,l].map(T=>re(T.output)).find(T=>T.noDb);k&&(V.value=k),p.value=Ue(o.output),u.value=Je(l.output)}catch(o){E.error("加载审计日志失败: "+(o?.message||o))}finally{i.value=!1}}function be(o){d.value=o,$.value=!0}async function ge(){try{const{output:o}=await n.execute("audit export -f json -n 10000",2e4);if(re(o).noDb){E.error("需要先 cc init 初始化项目");return}if(!o.trim().startsWith("[")){E.error("导出失败: "+o.slice(0,120));return}const k=new Blob([o.trim()],{type:"application/json"}),T=URL.createObjectURL(k),R=document.createElement("a");R.href=T,R.download=`audit-${new Date().toISOString().slice(0,10)}.json`,document.body.appendChild(R),R.click(),document.body.removeChild(R),URL.revokeObjectURL(T),E.success("已导出到下载文件夹")}catch(o){E.error("导出失败: "+(o?.message||o))}}return Ee(te),(o,l)=>{const k=v("a-button"),T=v("a-space"),R=v("a-alert"),N=v("a-statistic"),z=v("a-card"),A=v("a-col"),q=v("a-row"),S=v("a-tag"),ke=v("a-input-search"),M=v("a-radio-button"),oe=v("a-radio-group"),xe=v("a-checkbox"),he=v("a-table"),ae=v("a-tab-pane"),le=v("a-progress"),Le=v("a-tabs"),x=v("a-descriptions-item"),Se=v("a-descriptions"),Te=v("a-modal");return r(),f("div",null,[_("div",Me,[l[8]||(l[8]=_("div",null,[_("h2",{class:"page-title"},"审计日志"),_("p",{class:"page-sub"},"安全事件追踪 · 风险评估 · 合规导出")],-1)),t(T,null,{default:e(()=>[t(k,{loading:i.value,onClick:te},{icon:e(()=>[t(g(Ce))]),default:e(()=>[l[6]||(l[6]=y(" 刷新 ",-1))]),_:1},8,["loading"]),t(k,{onClick:ge},{icon:e(()=>[t(g(Re))]),default:e(()=>[l[7]||(l[7]=y(" 导出 JSON ",-1))]),_:1})]),_:1})]),V.value.noDb?(r(),h(R,{key:0,type:"info","show-icon":"",message:"该模块需要项目级数据库",description:"`cc audit ...` 命令仅在 chainlesschain 项目目录下可用。请先运行 `cc init` 初始化项目,或在已初始化的目录启动 `cc serve`。",style:{"margin-bottom":"16px"}})):b("",!0),t(q,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:e(()=>[t(A,{xs:12,sm:8,lg:5},{default:e(()=>[t(z,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:e(()=>[t(N,{title:"事件总数",value:u.value.total,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:e(()=>[t(g(se))]),_:1},8,["value"])]),_:1})]),_:1}),t(A,{xs:12,sm:8,lg:5},{default:e(()=>[t(z,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:e(()=>[t(N,{title:"失败次数",value:u.value.failures,"value-style":{color:u.value.failures>0?"#ff4d4f":"#52c41a",fontSize:"20px"}},{prefix:e(()=>[t(g(Oe))]),_:1},8,["value","value-style"])]),_:1})]),_:1}),t(A,{xs:12,sm:8,lg:5},{default:e(()=>[t(z,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:e(()=>[t(N,{title:"高风险",value:u.value.highRisk,"value-style":{color:u.value.highRisk>0?"#fa8c16":"#52c41a",fontSize:"20px"}},{prefix:e(()=>[t(g(De))]),_:1},8,["value","value-style"])]),_:1})]),_:1}),t(A,{xs:12,sm:8,lg:5},{default:e(()=>[t(z,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:e(()=>[t(N,{title:"关键事件",value:u.value.byRiskLevel.critical||0,"value-style":{color:(u.value.byRiskLevel.critical||0)>0?"#ff4d4f":"#888",fontSize:"20px"}},{prefix:e(()=>[t(g(we))]),_:1},8,["value","value-style"])]),_:1})]),_:1}),t(A,{xs:24,sm:8,lg:4},{default:e(()=>[t(z,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:e(()=>[t(N,{title:"成功率",value:K.value,suffix:"%",precision:1,"value-style":{color:K.value>=95?"#52c41a":K.value>=80?"#faad14":"#ff4d4f",fontSize:"20px"}},{prefix:e(()=>[t(g(Ne))]),_:1},8,["value","value-style"])]),_:1})]),_:1})]),_:1}),t(z,{title:"事件类型",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:e(()=>[t(q,{gutter:[12,12]},{default:e(()=>[(r(!0),f(C,null,j(g(B),a=>(r(),h(A,{key:a,xs:12,sm:8,lg:3},{default:e(()=>[_("div",{class:"type-pill",style:je({borderLeftColor:Q(a)})},[t(S,{color:F(a),style:{"font-family":"monospace","font-size":"11px"}},{default:e(()=>[y(c(a),1)]),_:2},1032,["color"]),_("div",Be,c(P(a)),1),_("div",Ve,c(u.value.byEventType[a]||0),1)],4)]),_:2},1024))),128))]),_:1})]),_:1}),t(Le,{activeKey:Z.value,"onUpdate:activeKey":l[4]||(l[4]=a=>Z.value=a),class:"audit-tabs"},{default:e(()=>[t(ae,{key:"events",tab:"事件流"},{default:e(()=>[_("div",$e,[t(ke,{value:I.value,"onUpdate:value":l[0]||(l[0]=a=>I.value=a),placeholder:"搜索操作 / 角色 / 目标...","allow-clear":"",style:{"max-width":"280px"},onSearch:me,onInput:_e},null,8,["value"]),t(oe,{value:D.value,"onUpdate:value":l[1]||(l[1]=a=>D.value=a),size:"small","button-style":"solid"},{default:e(()=>[t(M,{value:""},{default:e(()=>[...l[9]||(l[9]=[y("全部类型",-1)])]),_:1}),(r(!0),f(C,null,j(g(B),a=>(r(),h(M,{key:a,value:a},{default:e(()=>[y(c(P(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),t(oe,{value:w.value,"onUpdate:value":l[2]||(l[2]=a=>w.value=a),size:"small"},{default:e(()=>[t(M,{value:""},{default:e(()=>[...l[10]||(l[10]=[y("全部风险",-1)])]),_:1}),(r(!0),f(C,null,j(g(H),a=>(r(),h(M,{key:a,value:a},{default:e(()=>[y(c(J(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),t(xe,{checked:U.value,"onUpdate:checked":l[3]||(l[3]=a=>U.value=a)},{default:e(()=>[...l[11]||(l[11]=[y("仅失败",-1)])]),_:1},8,["checked"])]),t(he,{columns:ce,"data-source":fe.value,pagination:{pageSize:20,showTotal:a=>`共 ${a} 条`},size:"small",loading:i.value,style:{background:"var(--bg-card)"}},{bodyCell:e(({column:a,record:m})=>[a.key==="createdAt"?(r(),f("span",Ke,c(g(ne)(m.createdAt)),1)):b("",!0),a.key==="eventType"?(r(),h(S,{key:1,color:F(m.eventType),style:{"font-family":"monospace"}},{default:e(()=>[y(c(m.eventType),1)]),_:2},1032,["color"])):b("",!0),a.key==="operation"?(r(),f(C,{key:2},[_("span",Pe,c(m.operation),1),m.errorMessage?(r(),f("div",We,c(m.errorMessage),1)):b("",!0)],64)):b("",!0),a.key==="actor"?(r(),f(C,{key:3},[m.actor?(r(),f("span",qe,c(m.actor),1)):(r(),f("span",Ye,"—"))],64)):b("",!0),a.key==="target"?(r(),f(C,{key:4},[m.target?(r(),f("span",Ge,c(ve(m.target,32)),1)):(r(),f("span",He,"—"))],64)):b("",!0),a.key==="riskLevel"?(r(),h(S,{key:5,color:W(m.riskLevel)},{default:e(()=>[y(c(J(m.riskLevel)),1)]),_:2},1032,["color"])):b("",!0),a.key==="success"?(r(),h(S,{key:6,color:m.success?"green":"red"},{default:e(()=>[y(c(m.success?"OK":"FAIL"),1)]),_:2},1032,["color"])):b("",!0),a.key==="action"?(r(),h(k,{key:7,size:"small",type:"link",onClick:dt=>be(m)},{default:e(()=>[...l[12]||(l[12]=[y("详情",-1)])]),_:1},8,["onClick"])):b("",!0)]),emptyText:e(()=>[_("div",Ze,[t(g(se),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),y(" "+c(de.value?"没有符合条件的事件":"暂无审计事件"),1)])]),_:1},8,["data-source","pagination","loading"])]),_:1}),t(ae,{key:"breakdown",tab:"分布统计"},{default:e(()=>[t(q,{gutter:[16,16]},{default:e(()=>[t(A,{xs:24,lg:12},{default:e(()=>[t(z,{title:"按事件类型",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:e(()=>[(r(!0),f(C,null,j(g(B),a=>(r(),f("div",{key:a,class:"bd-row"},[t(S,{color:F(a),style:{"min-width":"80px","text-align":"center","font-family":"monospace"}},{default:e(()=>[y(c(a),1)]),_:2},1032,["color"]),t(le,{percent:X(u.value.byEventType[a]||0,u.value.total),"stroke-color":Q(a),format:()=>`${u.value.byEventType[a]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1})]),_:1}),t(A,{xs:24,lg:12},{default:e(()=>[t(z,{title:"按风险等级",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:e(()=>[(r(!0),f(C,null,j(g(H),a=>(r(),f("div",{key:a,class:"bd-row"},[t(S,{color:W(a),style:{"min-width":"80px","text-align":"center"}},{default:e(()=>[y(c(J(a)),1)]),_:2},1032,["color"]),t(le,{percent:X(u.value.byRiskLevel[a]||0,u.value.total),"stroke-color":pe(a),format:()=>`${u.value.byRiskLevel[a]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,["activeKey"]),t(Te,{open:$.value,"onUpdate:open":l[5]||(l[5]=a=>$.value=a),title:`事件详情:${d.value?.id?.slice(0,8)||""}`,width:720,footer:null},{default:e(()=>[d.value?(r(),f("div",Qe,[t(Se,{column:2,size:"small",bordered:""},{default:e(()=>[t(x,{label:"ID",span:2},{default:e(()=>[_("span",Xe,c(d.value.id),1)]),_:1}),t(x,{label:"事件类型"},{default:e(()=>[t(S,{color:F(d.value.eventType),style:{"font-family":"monospace"}},{default:e(()=>[y(c(d.value.eventType),1)]),_:1},8,["color"]),_("span",et,c(P(d.value.eventType)),1)]),_:1}),t(x,{label:"风险等级"},{default:e(()=>[t(S,{color:W(d.value.riskLevel)},{default:e(()=>[y(c(J(d.value.riskLevel)),1)]),_:1},8,["color"])]),_:1}),t(x,{label:"操作",span:2},{default:e(()=>[_("span",tt,c(d.value.operation),1)]),_:1}),t(x,{label:"状态"},{default:e(()=>[t(S,{color:d.value.success?"green":"red"},{default:e(()=>[y(c(d.value.success?"成功":"失败"),1)]),_:1},8,["color"])]),_:1}),t(x,{label:"时间"},{default:e(()=>[y(c(g(ne)(d.value.createdAt)),1)]),_:1}),t(x,{label:"角色"},{default:e(()=>[d.value.actor?(r(),f("span",ot,c(d.value.actor),1)):(r(),f("span",at,"—"))]),_:1}),t(x,{label:"目标"},{default:e(()=>[d.value.target?(r(),f("span",lt,c(d.value.target),1)):(r(),f("span",st,"—"))]),_:1}),d.value.ipAddress?(r(),h(x,{key:0,label:"IP"},{default:e(()=>[_("span",rt,c(d.value.ipAddress),1)]),_:1})):b("",!0),d.value.userAgent?(r(),h(x,{key:1,label:"User-Agent"},{default:e(()=>[_("span",nt,c(d.value.userAgent),1)]),_:1})):b("",!0),d.value.errorMessage?(r(),h(x,{key:2,label:"错误信息",span:2},{default:e(()=>[_("span",it,c(d.value.errorMessage),1)]),_:1})):b("",!0),d.value.details?(r(),h(x,{key:3,label:"详细信息",span:2},{default:e(()=>[_("pre",ut,c(ye(d.value.details)),1)]),_:1})):b("",!0)]),_:1})])):b("",!0)]),_:1},8,["open","title"])])}}},St=Ae(ct,[["__scopeId","data-v-345c408a"]]);export{St as default};
@@ -1 +0,0 @@
1
- .page-title[data-v-345c408a]{margin:0;color:var(--text-primary);font-size:22px;font-weight:600}.page-sub[data-v-345c408a]{margin:4px 0 0;color:var(--text-secondary);font-size:13px}.audit-tabs[data-v-345c408a] .ant-tabs-nav{margin-bottom:16px}.filter-bar[data-v-345c408a]{display:flex;align-items:center;gap:12px;margin-bottom:12px;flex-wrap:wrap}.type-pill[data-v-345c408a]{padding:8px 10px;border-radius:6px;background:#1677ff0a;border:1px solid var(--border-color);border-left:3px solid #1677ff;height:100%;text-align:center}.type-name[data-v-345c408a]{color:var(--text-primary);font-size:12px;margin-top:4px}.type-count[data-v-345c408a]{color:var(--text-primary);font-size:18px;font-weight:600;margin-top:2px}.bd-row[data-v-345c408a]{display:flex;align-items:center;margin-bottom:8px}.details-pre[data-v-345c408a]{margin:0;padding:8px 10px;background:var(--bg-base);border:1px solid var(--border-color);border-radius:4px;font-size:11px;max-height:300px;overflow:auto;color:var(--text-primary)}
@@ -1 +0,0 @@
1
- import{u as Me}from"./ws-Bv7YH0VB.js";import{_ as Ne}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{Y as Le,ac as me,q as re,ae as N,ar as U,ap as Te}from"./icons-ukMaZ3tx.js";import{l as je,F as s,D as p,c as a,x as o,r as n,q as y,v as l,J as f,u as v,m as b,G as r,I as u,H as De}from"./vendor-BVetwVfk.js";const Re={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Ee={key:0,style:{"text-align":"center",padding:"30px"}},Ue={key:0,style:{"font-family":"monospace",color:"var(--text-muted)","font-size":"12px"}},Je={key:1},Ke={key:2,style:{color:"var(--text-secondary)","font-size":"12px"}},Ve={key:3,style:{"margin-top":"16px"}},qe={style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px",color:"#aaa","font-size":"12px","max-height":"200px","overflow-y":"auto","white-space":"pre-wrap"}},Ge={key:4,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},He={key:0,style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px","margin-top":"8px"}},We={style:{"font-family":"monospace"}},Ye={key:0},Qe={key:1,style:{"margin-top":"12px"}},Xe={style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px",color:"#aaa","font-size":"12px","white-space":"pre-wrap"}},Ze={key:0,style:{"text-align":"center",padding:"30px"}},et={key:0,style:{"margin-bottom":"16px"}},tt={style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px",color:"#aaa","font-size":"12px","max-height":"200px","overflow-y":"auto","white-space":"pre-wrap"}},at={key:0,style:{"font-family":"monospace","font-size":"12px"}},ot={key:2,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},lt={key:0,style:{"text-align":"center",padding:"30px"}},nt={key:2,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},st={key:0,style:{"text-align":"center",padding:"30px"}},rt={key:0,style:{"font-family":"monospace",color:"var(--text-muted)","font-size":"12px"}},it={key:1},ut={key:2},ct={key:3,style:{color:"var(--text-secondary)","font-size":"12px"}},dt={key:3,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},pt={key:0,style:{"margin-top":"12px"}},vt={style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px",color:"#aaa","font-size":"12px","white-space":"pre-wrap"}},yt={__name:"Backup",setup(ft){const g=Me(),ie=n("backup"),J=n(!1),K=n(!1),V=n(!1),B=n(""),w=n([]),_=n(""),be=[{title:"备份 ID",key:"id"},{title:"大小",key:"size",width:120},{title:"创建时间",key:"createdAt"},{title:"操作",key:"action",width:100}];async function ue(){K.value=!0,B.value="";try{const{output:t}=await g.execute("backup list --json",15e3),e=M(t);Array.isArray(e)?w.value=e:e&&Array.isArray(e.backups)?w.value=e.backups:(w.value=[],t&&t.trim()&&(_.value=t))}catch(t){B.value=`加载备份列表失败: ${t.message}`}finally{K.value=!1}}async function xe(){V.value=!0,_.value="",B.value="";try{const{output:t}=await g.execute("backup create --json",3e4);_.value=t||"备份已创建",await ue()}catch(t){_.value=`创建备份失败: ${t.message}`}finally{V.value=!1}}const q=n(!1),G=n(!1),k=n(null),z=n("");function _e(t){k.value=t,z.value="",q.value=!0}async function ke(){if(k.value){G.value=!0,z.value="";try{const{output:t}=await g.execute(`backup restore ${k.value.id}`,6e4);z.value=t||"恢复完成"}catch(t){z.value=`恢复失败: ${t.message}`}finally{G.value=!1}}}const H=n(!1),L=n(""),I=n(!1),T=n("未知"),j=n(0),W=n(""),x=n(""),Y=n(!1),Q=n(!1),S=n([]),he=[{title:"文件路径",key:"path"},{title:"冲突类型",key:"type",width:120}];async function X(){H.value=!0,L.value="";try{const{output:t}=await g.execute("sync status --json",15e3),e=M(t);e?(I.value=e.online||e.synced||e.status==="online"||!1,T.value=I.value?"已同步":"未同步",j.value=e.pending??e.pendingChanges??0,W.value=e.lastSync||e.lastSyncTime||""):we(t)}catch(t){L.value=`加载同步状态失败: ${t.message}`}finally{H.value=!1}}function we(t){if(!t){T.value="未知";return}I.value=/synced|online|up.to.date/i.test(t),T.value=I.value?"已同步":"未同步";const e=t.match(/pending[:\s]+(\d+)/i);j.value=e?parseInt(e[1]):0;const c=t.match(/last[:\s]+(.+)/i);c&&(W.value=c[1].trim())}async function ze(){Y.value=!0,x.value="";try{const{output:t}=await g.execute("sync push",3e4);x.value=t||"推送完成",await X()}catch(t){x.value=`推送失败: ${t.message}`}finally{Y.value=!1}}async function Se(){Q.value=!0,x.value="";try{const{output:t}=await g.execute("sync pull",3e4);x.value=t||"拉取完成",await X()}catch(t){x.value=`拉取失败: ${t.message}`}finally{Q.value=!1}}async function Ce(){try{const{output:t}=await g.execute("sync conflicts --json",15e3),e=M(t);Array.isArray(e)?S.value=e:e&&Array.isArray(e.conflicts)?S.value=e.conflicts:S.value=[]}catch{S.value=[]}}const Z=n(!1),D=n(""),C=n(!1),ee=n(""),te=n(!1),O=n(""),A=n([]),Ae=[{title:"CID",key:"cid"},{title:"名称",key:"name"},{title:"大小",key:"size",width:120},{title:"固定时间",key:"pinnedAt"},{title:"操作",key:"action",width:120}];async function Pe(){Z.value=!0,D.value="";try{const{output:t}=await g.execute("ipfs status --json",15e3),e=M(t);if(e)C.value=e.online||e.status==="online"||e.connected||!1,ee.value=e.peerId||e.id||"";else{C.value=t?/online|connected|running/i.test(t):!1;const c=t?t.match(/(?:peer\s*id|id)[:\s]+(\S+)/i):null;ee.value=c?c[1]:""}}catch(t){D.value=`加载 IPFS 状态失败: ${t.message}`}finally{Z.value=!1}}async function ae(){te.value=!0,O.value="";try{const{output:t}=await g.execute("ipfs pins --json",15e3),e=M(t);Array.isArray(e)?A.value=e:e&&Array.isArray(e.pins)?A.value=e.pins:A.value=[]}catch(t){O.value=`加载固定列表失败: ${t.message}`}finally{te.value=!1}}const oe=n(!1),le=n(!1),R=n(""),F=n("");async function ce(){if(R.value.trim()){le.value=!0,F.value="";try{const{output:t}=await g.execute(`ipfs pin "${R.value.trim()}"`,3e4);F.value=t||"固定成功",await ae()}catch(t){F.value=`固定失败: ${t.message}`}finally{le.value=!1}}}async function $e(t){try{await g.execute(`ipfs unpin ${t.cid}`,15e3),await ae()}catch(e){O.value=`取消固定失败: ${e.message}`}}function M(t){if(!t||!t.trim())return null;try{return JSON.parse(t.trim())}catch{const c=t.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(c)try{return JSON.parse(c[0])}catch{}return null}}function de(t){if(t==null||isNaN(t))return"-";const e=Number(t);if(e===0)return"0 B";const c=["B","KB","MB","GB","TB"],h=Math.floor(Math.log(e)/Math.log(1024));return(e/Math.pow(1024,h)).toFixed(h>0?1:0)+" "+c[h]}async function pe(){J.value=!0;try{await Promise.all([ue(),X(),Ce(),Pe(),ae()])}finally{J.value=!1}}return je(pe),(t,e)=>{const c=y("a-button"),h=y("a-space"),E=y("a-spin"),ve=y("a-empty"),ne=y("a-table"),m=y("a-card"),ye=y("a-modal"),se=y("a-tab-pane"),P=y("a-statistic"),$=y("a-col"),fe=y("a-row"),ge=y("a-tag"),Be=y("a-popconfirm"),Ie=y("a-input"),Oe=y("a-tabs");return l(),s("div",null,[p("div",Re,[e[6]||(e[6]=p("div",null,[p("h2",{class:"page-title"},"备份与同步"),p("p",{class:"page-sub"},"备份管理 / 数据同步 / IPFS")],-1)),a(c,{type:"primary",ghost:"",loading:J.value,onClick:pe},{icon:o(()=>[a(v(Le))]),default:o(()=>[e[5]||(e[5]=f(" 刷新 ",-1))]),_:1},8,["loading"])]),a(Oe,{activeKey:ie.value,"onUpdate:activeKey":e[4]||(e[4]=i=>ie.value=i),type:"card"},{default:o(()=>[a(se,{key:"backup"},{tab:o(()=>[a(v(re)),e[7]||(e[7]=f(" 备份管理",-1))]),default:o(()=>[a(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"}},{title:o(()=>[a(h,null,{default:o(()=>[a(v(re)),e[8]||(e[8]=p("span",null,"备份操作",-1))]),_:1})]),extra:o(()=>[a(c,{type:"primary",loading:V.value,onClick:xe},{icon:o(()=>[a(v(me))]),default:o(()=>[e[9]||(e[9]=f(" 创建备份 ",-1))]),_:1},8,["loading"])]),default:o(()=>[K.value?(l(),s("div",Ee,[a(E)])):w.value.length===0&&!_.value?(l(),b(ve,{key:1,description:"暂无备份记录"})):r("",!0),w.value.length>0?(l(),b(ne,{key:2,columns:be,"data-source":w.value,pagination:!1,size:"small","row-key":"id"},{bodyCell:o(({column:i,record:d})=>[i.key==="id"?(l(),s("span",Ue,u(d.id.length>20?d.id.slice(0,20)+"...":d.id),1)):r("",!0),i.key==="size"?(l(),s("span",Je,u(de(d.size)),1)):r("",!0),i.key==="createdAt"?(l(),s("span",Ke,u(d.createdAt||"-"),1)):r("",!0),i.key==="action"?(l(),b(c,{key:3,size:"small",type:"link",onClick:Fe=>_e(d)},{default:o(()=>[...e[10]||(e[10]=[f(" 恢复 ",-1)])]),_:1},8,["onClick"])):r("",!0)]),_:1},8,["data-source"])):r("",!0),_.value?(l(),s("div",Ve,[e[11]||(e[11]=p("div",{style:{color:"var(--text-secondary)","font-size":"11px","margin-bottom":"6px"}},"最近操作结果",-1)),p("pre",qe,u(_.value),1)])):r("",!0),B.value?(l(),s("div",Ge,u(B.value),1)):r("",!0)]),_:1}),a(ye,{open:q.value,"onUpdate:open":e[0]||(e[0]=i=>q.value=i),title:"确认恢复备份","ok-text":"确认恢复","cancel-text":"取消","confirm-loading":G.value,onOk:ke,"ok-type":"danger"},{default:o(()=>[e[15]||(e[15]=p("p",{style:{color:"var(--text-secondary)"}}," 确定要恢复以下备份吗?此操作将覆盖当前数据。 ",-1)),k.value?(l(),s("div",He,[p("div",null,[e[12]||(e[12]=p("strong",null,"备份 ID:",-1)),e[13]||(e[13]=f()),p("span",We,u(k.value.id),1)]),k.value.createdAt?(l(),s("div",Ye,[e[14]||(e[14]=p("strong",null,"创建时间:",-1)),f(" "+u(k.value.createdAt),1)])):r("",!0)])):r("",!0),z.value?(l(),s("div",Qe,[p("pre",Xe,u(z.value),1)])):r("",!0)]),_:1},8,["open","confirm-loading"])]),_:1}),a(se,{key:"sync"},{tab:o(()=>[a(v(N)),e[16]||(e[16]=f(" 数据同步",-1))]),default:o(()=>[H.value?(l(),s("div",Ze,[a(E)])):(l(),s(De,{key:1},[a(fe,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:o(()=>[a($,{xs:24,sm:8},{default:o(()=>[a(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(P,{title:"同步状态",value:T.value,"value-style":{color:I.value?"#52c41a":"#888",fontSize:"16px"}},{prefix:o(()=>[a(v(N))]),_:1},8,["value","value-style"])]),_:1})]),_:1}),a($,{xs:24,sm:8},{default:o(()=>[a(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(P,{title:"待同步变更",value:j.value,"value-style":{color:j.value>0?"#faad14":"#52c41a",fontSize:"16px"}},{prefix:o(()=>[a(v(N))]),_:1},8,["value","value-style"])]),_:1})]),_:1}),a($,{xs:24,sm:8},{default:o(()=>[a(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(P,{title:"最近同步",value:W.value||"无","value-style":{color:"var(--text-secondary)",fontSize:"16px"}},{prefix:o(()=>[a(v(N))]),_:1},8,["value"])]),_:1})]),_:1})]),_:1}),a(h,{style:{"margin-bottom":"16px"}},{default:o(()=>[a(c,{loading:Y.value,onClick:ze,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:o(()=>[a(v(re))]),default:o(()=>[e[17]||(e[17]=f(" 推送 ",-1))]),_:1},8,["loading"]),a(c,{loading:Q.value,onClick:Se,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:o(()=>[a(v(N))]),default:o(()=>[e[18]||(e[18]=f(" 拉取 ",-1))]),_:1},8,["loading"])]),_:1}),x.value?(l(),s("div",et,[e[19]||(e[19]=p("div",{style:{color:"var(--text-secondary)","font-size":"11px","margin-bottom":"6px"}},"操作结果",-1)),p("pre",tt,u(x.value),1)])):r("",!0),S.value.length>0?(l(),b(m,{key:1,title:"冲突列表",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(ne,{columns:he,"data-source":S.value,pagination:!1,size:"small","row-key":"path"},{bodyCell:o(({column:i,record:d})=>[i.key==="path"?(l(),s("span",at,u(d.path),1)):r("",!0),i.key==="type"?(l(),b(ge,{key:1,color:"red"},{default:o(()=>[f(u(d.type||"冲突"),1)]),_:2},1024)):r("",!0)]),_:1},8,["data-source"])]),_:1})):r("",!0)],64)),L.value?(l(),s("div",ot,u(L.value),1)):r("",!0)]),_:1}),a(se,{key:"ipfs"},{tab:o(()=>[a(v(U)),e[20]||(e[20]=f(" IPFS 存储",-1))]),default:o(()=>[a(m,{title:"IPFS 状态",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"}},{extra:o(()=>[a(ge,{color:C.value?"green":"default"},{default:o(()=>[f(u(C.value?"在线":"离线"),1)]),_:1},8,["color"])]),default:o(()=>[Z.value?(l(),s("div",lt,[a(E)])):(l(),b(fe,{key:1,gutter:[16,16]},{default:o(()=>[a($,{xs:24,sm:8},{default:o(()=>[a(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(P,{title:"节点状态",value:C.value?"已连接":"未连接","value-style":{color:C.value?"#52c41a":"#888",fontSize:"16px"}},{prefix:o(()=>[a(v(U))]),_:1},8,["value","value-style"])]),_:1})]),_:1}),a($,{xs:24,sm:8},{default:o(()=>[a(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(P,{title:"已固定文件",value:A.value.length,"value-style":{fontSize:"16px"}},{prefix:o(()=>[a(v(U))]),_:1},8,["value"])]),_:1})]),_:1}),a($,{xs:24,sm:8},{default:o(()=>[a(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(P,{title:"Peer ID",value:ee.value||"-","value-style":{color:"var(--text-muted)",fontSize:"12px",fontFamily:"monospace"}},{prefix:o(()=>[a(v(U))]),_:1},8,["value"])]),_:1})]),_:1})]),_:1})),D.value?(l(),s("div",nt,u(D.value),1)):r("",!0)]),_:1}),a(m,{title:"固定文件列表",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{extra:o(()=>[a(c,{size:"small",onClick:e[1]||(e[1]=i=>oe.value=!0),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:o(()=>[a(v(me))]),default:o(()=>[e[21]||(e[21]=f(" 固定文件 ",-1))]),_:1})]),default:o(()=>[te.value?(l(),s("div",st,[a(E)])):A.value.length===0?(l(),b(ve,{key:1,description:"暂无固定文件"})):(l(),b(ne,{key:2,columns:Ae,"data-source":A.value,pagination:{pageSize:10},size:"small","row-key":"cid"},{bodyCell:o(({column:i,record:d})=>[i.key==="cid"?(l(),s("span",rt,u(d.cid.length>24?d.cid.slice(0,24)+"...":d.cid),1)):r("",!0),i.key==="name"?(l(),s("span",it,u(d.name||"-"),1)):r("",!0),i.key==="size"?(l(),s("span",ut,u(de(d.size)),1)):r("",!0),i.key==="pinnedAt"?(l(),s("span",ct,u(d.pinnedAt||"-"),1)):r("",!0),i.key==="action"?(l(),b(Be,{key:4,title:"确定取消固定?","ok-text":"确定","cancel-text":"取消",onConfirm:Fe=>$e(d)},{default:o(()=>[a(c,{size:"small",type:"link",danger:""},{default:o(()=>[a(v(Te)),e[22]||(e[22]=f(" 取消固定 ",-1))]),_:1})]),_:1},8,["onConfirm"])):r("",!0)]),_:1},8,["data-source"])),O.value?(l(),s("div",dt,u(O.value),1)):r("",!0)]),_:1}),a(ye,{open:oe.value,"onUpdate:open":e[3]||(e[3]=i=>oe.value=i),title:"固定文件到 IPFS","confirm-loading":le.value,onOk:ce,"ok-text":"固定","cancel-text":"取消"},{default:o(()=>[e[23]||(e[23]=p("div",{style:{"margin-bottom":"12px",color:"var(--text-secondary)"}},"请输入要固定的文件路径",-1)),a(Ie,{value:R.value,"onUpdate:value":e[2]||(e[2]=i=>R.value=i),placeholder:"文件路径,例如: /path/to/file.txt",onPressEnter:ce},null,8,["value"]),F.value?(l(),s("div",pt,[p("pre",vt,u(F.value),1)])):r("",!0)]),_:1},8,["open","confirm-loading"])]),_:1})]),_:1},8,["activeKey"])])}}},_t=Ne(yt,[["__scopeId","data-v-3d5d81e6"]]);export{_t as default};
@@ -1 +0,0 @@
1
- [data-v-3d5d81e6] .ant-table{background:transparent}[data-v-3d5d81e6] .ant-tabs-card>.ant-tabs-nav .ant-tabs-tab{background:var(--bg-card);border-color:var(--border-color)}[data-v-3d5d81e6] .ant-tabs-card>.ant-tabs-nav .ant-tabs-tab-active{background:var(--bg-card-hover);border-bottom-color:var(--bg-card-hover)}[data-v-3d5d81e6] .ant-select-selector{background:var(--bg-card)!important;border-color:var(--border-color)!important}
@@ -1 +0,0 @@
1
- .servers-grid[data-v-8a49311e]{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px}
@@ -1,4 +0,0 @@
1
- import{u as j}from"./ws-Bv7YH0VB.js";import{_ as R}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{Y as $,d as W,$ as q,aa as D}from"./icons-ukMaZ3tx.js";import{l as E,F as u,D as m,c as o,x as a,r as b,q as d,v as l,J as k,u as v,H as F,L as A,m as C,I as p,G as z,j as G}from"./vendor-BVetwVfk.js";const H={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},J={key:0,style:{"text-align":"center",padding:"30px"}},U={key:1,style:{"text-align":"center",padding:"30px",color:"var(--text-muted)"}},Y={key:2,class:"servers-grid"},K={style:{display:"flex","align-items":"center",gap:"10px","margin-bottom":"6px"}},Q={style:{color:"#e0e0e0","font-weight":"500","font-family":"monospace"}},X={key:0,style:{color:"var(--text-secondary)","font-size":"11px","font-family":"monospace"}},Z={key:1,style:{color:"var(--text-secondary)","font-size":"11px","margin-top":"4px"}},ee={key:0,style:{"text-align":"center",padding:"30px"}},te={key:0,style:{color:"#91caff","font-family":"monospace","font-size":"12px"}},oe={__name:"McpTools",setup(ae){const w=j(),f=b(!1),g=b([]),y=b([]),x=b(""),P=G(()=>{if(!x.value)return y.value;const r=x.value.toLowerCase();return y.value.filter(t=>t.name?.toLowerCase().includes(r)||t.description?.toLowerCase().includes(r))}),T=[{title:"工具名称",key:"name",dataIndex:"name",width:"30%"},{title:"服务器",key:"server",dataIndex:"server",width:"20%"},{title:"描述",dataIndex:"description",ellipsis:!0}];async function M(){f.value=!0;try{const[r,t]=await Promise.all([w.execute("mcp servers",15e3).catch(()=>({output:""})),w.execute("mcp tools",15e3).catch(()=>({output:""}))]);g.value=I(r.output),y.value=L(t.output)}catch(r){console.error("MCP load failed:",r)}finally{f.value=!1}}function I(r){const t=[],_=r.split(`
2
- `);let s=null;for(const i of _){const e=i.trim();if(!e||e.startsWith("─")||e.startsWith("MCP"))continue;const c=e.match(/^[●•]?\s*([a-z][a-z0-9-_]+)\s*$/i)||e.match(/^([a-z][a-z0-9-_]+)\s*[::]/);c?(s&&t.push(s),s={key:c[1],name:c[1],command:"",args:[],description:""}):s&&(e.startsWith("command:")||e.startsWith("Command:")?s.command=e.replace(/^command:\s*/i,"").trim():e.startsWith("args:")||e.startsWith("Args:")?s.args=e.replace(/^args:\s*/i,"").split(",").map(h=>h.trim()):s.description||(s.description=e.slice(0,80)))}return s&&t.push(s),!t.length&&r.trim()&&!r.includes("No MCP")&&r.split(`
3
- `).filter(e=>e.trim()&&!e.includes("─")).slice(0,10).forEach((e,c)=>{t.push({key:c,name:e.trim(),command:"",args:[],description:""})}),t}function L(r){const t=[],_=r.split(`
4
- `);let s="unknown";for(const i of _){const e=i.trim();if(!e||e.startsWith("─"))continue;if(e.match(/^\[/)||e.match(/^Server:/i)){s=e.replace(/[\[\]]/g,"").replace(/^Server:\s*/i,"").trim();continue}const c=e.match(/^[●•]?\s*([a-z][a-z0-9_-]+)\s*[-–]\s*(.+)/i)||e.match(/^[●•]?\s*([a-z][a-z0-9_-]+)$/);c&&t.push({key:t.length,name:c[1],description:c[2]||"",server:s})}return t}return E(M),(r,t)=>{const _=d("a-button"),s=d("a-statistic"),i=d("a-card"),e=d("a-col"),c=d("a-row"),h=d("a-spin"),N=d("a-badge"),B=d("a-input-search"),O=d("a-tag"),V=d("a-table");return l(),u("div",null,[m("div",H,[t[2]||(t[2]=m("div",null,[m("h2",{class:"page-title"},"MCP 工具"),m("p",{class:"page-sub"},"Model Context Protocol — 已挂载工具与服务器")],-1)),o(_,{type:"primary",ghost:"",loading:f.value,onClick:M},{icon:a(()=>[o(v($))]),default:a(()=>[t[1]||(t[1]=k(" 刷新 ",-1))]),_:1},8,["loading"])]),o(c,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:a(()=>[o(e,{xs:24,sm:8},{default:a(()=>[o(i,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"},size:"small"},{default:a(()=>[o(s,{title:"服务器数量",value:g.value.length,"value-style":"color: #1677ff; font-size: 20px;"},{prefix:a(()=>[o(v(W))]),_:1},8,["value"])]),_:1})]),_:1}),o(e,{xs:24,sm:8},{default:a(()=>[o(i,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"},size:"small"},{default:a(()=>[o(s,{title:"工具数量",value:y.value.length,"value-style":"color: #52c41a; font-size: 20px;"},{prefix:a(()=>[o(v(q))]),_:1},8,["value"])]),_:1})]),_:1}),o(e,{xs:24,sm:8},{default:a(()=>[o(i,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"},size:"small"},{default:a(()=>[o(s,{title:"运行状态",value:"就绪","value-style":"color: #52c41a; font-size: 20px;"},{prefix:a(()=>[o(v(D))]),_:1})]),_:1})]),_:1})]),_:1}),o(i,{title:"已配置服务器",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:a(()=>[f.value?(l(),u("div",J,[o(h)])):g.value.length?(l(),u("div",Y,[(l(!0),u(F,null,A(g.value,n=>(l(),C(i,{key:n.name,size:"small",style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{default:a(()=>[m("div",K,[o(v(W),{style:{color:"#1677ff"}}),m("span",Q,p(n.name),1),o(N,{status:"success"})]),n.command?(l(),u("div",X,p(n.command)+" "+p(n.args?.join(" ")),1)):z("",!0),n.description?(l(),u("div",Z,p(n.description),1)):z("",!0)]),_:2},1024))),128))])):(l(),u("div",U,[...t[3]||(t[3]=[k(" 暂无 MCP 服务器,使用 ",-1),m("code",{style:{background:"var(--bg-card-hover)",padding:"2px 6px","border-radius":"3px"}},"chainlesschain mcp add",-1),k(" 添加 ",-1)])]))]),_:1}),o(i,{title:"可用工具",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{extra:a(()=>[o(B,{value:x.value,"onUpdate:value":t[0]||(t[0]=n=>x.value=n),placeholder:"搜索工具...","allow-clear":"",size:"small",style:{width:"200px"}},null,8,["value"])]),default:a(()=>[f.value?(l(),u("div",ee,[o(h)])):(l(),C(V,{key:1,columns:T,"data-source":P.value,pagination:{pageSize:15},size:"small"},{bodyCell:a(({column:n,record:S})=>[n.key==="name"?(l(),u("span",te,p(S.name),1)):z("",!0),n.key==="server"?(l(),C(O,{key:1,color:"blue",style:{"font-size":"10px"}},{default:a(()=>[k(p(S.server),1)]),_:2},1024)):z("",!0)]),emptyText:a(()=>[...t[4]||(t[4]=[m("div",{style:{padding:"30px",color:"var(--text-muted)"}},"暂无可用工具",-1)])]),_:1},8,["data-source"]))]),_:1})])}}},ie=R(oe,[["__scopeId","data-v-8a49311e"]]);export{ie as default};
@@ -1 +0,0 @@
1
- import{u as tt}from"./ws-Bv7YH0VB.js";import{s as nt}from"./community-parser-CO25nZFt.js";import{_ as at}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{a as v}from"./index-BbqCdQXU.js";import{Y as ot,ac as lt,B as rt,e as ve,a as ge,aL as st,as as it,aa as ut}from"./icons-ukMaZ3tx.js";import{l as ct,F as f,D as x,c as n,x as t,m as S,G as g,q as p,r as k,v as i,J as u,u as m,H as C,L as w,I as c,N as pt,j as _e,a as xe}from"./vendor-BVetwVfk.js";import"./index-ZZ_4A9um.js";import"./useConfigInject-BKqJUQaF.js";import"./transition-CGYDOK3N.js";import"./Keyframes-C7fCrnlS.js";import"./Portal-CHsntPCQ.js";import"./index-U4Zd5IK6.js";function J(l){const o=nt(l);if(!o)return null;try{return JSON.parse(o)}catch{}const s=o.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!s)return null;try{return JSON.parse(s[0])}catch{return null}}const ae=Object.freeze(["create_component","add_feature","fix_bug","refactor","add_api","add_test","update_style","configure","general"]),$e=Object.freeze(["draft","complete","refined"]),be=Object.freeze(["naming","architecture","testing","style","imports","components"]);function I(l,o=0){return typeof l=="number"&&Number.isFinite(l)?l:o}function q(l,o){if(l==null)return o;if(typeof l!="string")return l;try{return JSON.parse(l)}catch{return l}}function dt(l){const o=J(l);return!o||typeof o!="object"||Array.isArray(o)?null:{intent:String(o.intent||"general"),confidence:I(o.confidence,0)}}function ft(l){const o=J(l);if(!o||typeof o!="object"||Array.isArray(o))return null;const s=Array.isArray(o.entities)?o.entities.map(_=>_&&typeof _=="object"?{type:String(_.type||""),value:String(_.value||"")}:null).filter(Boolean):[];return{entities:s,count:I(o.count,s.length)}}function yt(l){const o=J(l);if(!o||typeof o!="object"||Array.isArray(o))return null;const s=Array.isArray(o.detected)?o.detected.filter(_=>typeof _=="string"):[];return{detected:s,primary:o.primary?String(o.primary):s[0]||null}}function mt(l,o=0){if(!l||typeof l!="object")return null;const s=l.id||"";return s?{key:s,id:s,inputText:l.inputText??l.input_text??"",intent:String(l.intent||"general"),entities:q(l.entities,[]),techStack:q(l.techStack??l.tech_stack,[]),spec:q(l.spec,null),completenessScore:I(l.completenessScore??l.completeness_score,0),ambiguities:q(l.ambiguities,[]),status:String(l.status||"draft").toLowerCase(),createdAt:l.createdAt??l.created_at??null,updatedAt:l.updatedAt??l.updated_at??null,_idx:o}:null}function vt(l){const o=J(l);return Array.isArray(o)?o.map(mt).filter(Boolean):[]}function gt(l){const o=J(l);return!o||typeof o!="object"||Array.isArray(o)||o.translationId===void 0?null:{translated:!!o.translated,translationId:o.translationId,intent:String(o.intent||""),completeness:I(o.completeness,0)}}function _t(l){if(!l)return{noDb:!1,error:""};const o=/Cannot read properties of undefined \(reading ['"]prepare['"]\)/i.test(l)||/TypeError.*prepare/i.test(l),s=l.match(/TypeError:\s*(.+?)(?:\r?\n|$)/i);return{noDb:o,error:s?s[1].trim():""}}function xt(l,o=0){if(!l||typeof l!="object")return null;const s=l.id||"";return s?{key:s,id:s,category:String(l.category||""),pattern:String(l.pattern||""),examples:q(l.examples,[]),confidence:I(l.confidence,0),sourceFiles:q(l.sourceFiles??l.source_files,[]),createdAt:l.createdAt??l.created_at??null,_idx:o}:null}function bt(l){const o=J(l);return Array.isArray(o)?o.map(xt).filter(Boolean):[]}const kt={translations:{total:0,byIntent:{},byStatus:{draft:0,complete:0,refined:0},avgCompleteness:0},conventions:{total:0,byCategory:{}}};function St(l){const o=JSON.parse(JSON.stringify(kt));for(const _ of ae)o.translations.byIntent[_]=0;for(const _ of be)o.conventions.byCategory[_]=0;const s=J(l);if(!s||typeof s!="object"||Array.isArray(s))return o;if(s.translations&&typeof s.translations=="object"){if(o.translations.total=I(s.translations.total,0),o.translations.avgCompleteness=I(s.translations.avgCompleteness??s.translations.avg_completeness,0),s.translations.byIntent&&typeof s.translations.byIntent=="object")for(const[_,A]of Object.entries(s.translations.byIntent))typeof A=="number"&&Number.isFinite(A)&&(o.translations.byIntent[_]=A);if(s.translations.byStatus&&typeof s.translations.byStatus=="object")for(const _ of Object.keys(o.translations.byStatus))o.translations.byStatus[_]=I(s.translations.byStatus[_],0)}if(s.conventions&&typeof s.conventions=="object"&&(o.conventions.total=I(s.conventions.total,0),s.conventions.byCategory&&typeof s.conventions.byCategory=="object"))for(const[_,A]of Object.entries(s.conventions.byCategory))typeof A=="number"&&Number.isFinite(A)&&(o.conventions.byCategory[_]=A);return o}function ne(l){if(l==null||l==="")return"—";const o=typeof l=="number"?new Date(l):new Date(String(l));return isNaN(o.getTime())?String(l):o.toLocaleString("zh-CN",{hour12:!1})}const zt={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Ct={class:"filter-bar"},At={key:0,style:{color:"var(--text-primary)"}},ht={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},Tt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},jt={class:"filter-bar"},wt={key:1,style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px"}},Nt={key:0,style:{color:"var(--text-muted)"}},Ot={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},Ft={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},$t={key:0,style:{"margin-bottom":"12px"}},Rt={style:{color:"var(--text-secondary)","font-size":"12px"}},It={key:1,style:{"margin-bottom":"12px"}},Ut={style:{"font-size":"12px",color:"var(--text-secondary)","margin-bottom":"4px"}},Lt={key:0,style:{color:"var(--text-muted)"}},Dt={key:2},Et={key:0,style:{color:"var(--text-muted)"}},Jt={key:0,style:{"padding-top":"8px"}},Bt={style:{"white-space":"pre-wrap",color:"var(--text-primary)"}},Mt={style:{"margin-top":"16px"}},Pt={class:"json-block"},qt={class:"json-block"},Vt={key:0},Kt={class:"json-block"},Gt={__name:"NLProgramming",setup(l){const o=tt(),s=k(!1),_=k(!1),A=k(!1),oe=k(!1),ke=k([]),le=k([]),N=k({translations:{total:0,byIntent:{},byStatus:{draft:0,complete:0,refined:0},avgCompleteness:0},conventions:{total:0,byCategory:{}}}),re=k("translations"),V=k(""),K=k(""),H=k(""),se=k(!1),Q=k(!1),X=k(!1),ie=k(!1),ue=xe({text:""}),O=xe({text:"",intent:null}),b=xe({category:"naming",pattern:"",examples:"",confidence:.8}),F=k(null),$=k(null),j=k(null),Z=k({noDb:!1,error:""}),z=k(null),Re=[{title:"原文",key:"inputText"},{title:"意图",key:"intent",width:"140px"},{title:"完整度",key:"completeness",width:"160px"},{title:"状态",key:"status",width:"100px"},{title:"更新时间",key:"updatedAt",width:"160px"},{title:"操作",key:"action",width:"210px"}],Ie=[{title:"类别",key:"category",width:"120px"},{title:"模式",key:"pattern"},{title:"示例",key:"examples",width:"220px"},{title:"置信度",key:"confidence",width:"90px"},{title:"创建时间",key:"createdAt",width:"160px"},{title:"操作",key:"action",width:"90px"}],Ue=_e(()=>N.value.translations.avgCompleteness*100),Le=_e(()=>{let r=ke.value;return V.value&&(r=r.filter(e=>e.intent===V.value)),K.value&&(r=r.filter(e=>e.status===K.value)),r}),De=_e(()=>H.value?le.value.filter(r=>r.category===H.value):le.value);function B(r){return{create_component:"创建组件",add_feature:"新增功能",fix_bug:"修复 Bug",refactor:"重构",add_api:"加 API",add_test:"加测试",update_style:"改样式",configure:"配置",general:"通用"}[r]||r}function ee(r){return{create_component:"blue",add_feature:"green",fix_bug:"red",refactor:"purple",add_api:"cyan",add_test:"orange",update_style:"magenta",configure:"gold",general:"default"}[r]||"default"}function G(r){return{draft:"草稿",complete:"已完成",refined:"已精炼"}[r]||r}function Se(r){return{draft:"default",complete:"green",refined:"cyan"}[r]||"default"}function ce(r){return{naming:"命名",architecture:"架构",testing:"测试",style:"样式",imports:"导入",components:"组件"}[r]||r}function Ee(r){return{naming:"blue",architecture:"purple",testing:"cyan",style:"magenta",imports:"orange",components:"green"}[r]||"default"}function pe(r){return r>=.7?"#52c41a":r>=.4?"#faad14":"#ff4d4f"}function Je(r,e){return r?r.length>e?r.slice(0,e)+"...":r:""}function de(r){if(r==null)return"—";if(typeof r=="string")return r;try{return JSON.stringify(r,null,2)}catch{return String(r)}}function Be({key:r}){r==="analyze"?(F.value=null,$.value=null,j.value=null,se.value=!0):r==="translate"?(Z.value={noDb:!1,error:""},Q.value=!0):r==="convention"&&(X.value=!0)}async function U(){s.value=!0;try{const[r,e,y]=await Promise.all([o.execute("nlprog list --limit 200 --json",1e4).catch(()=>({output:""})),o.execute("nlprog conventions --limit 200 --json",1e4).catch(()=>({output:""})),o.execute("nlprog stats --json",8e3).catch(()=>({output:""}))]);ke.value=vt(r.output),le.value=bt(e.output),N.value=St(y.output)}catch(r){v.error("加载 NL 数据失败: "+(r?.message||r))}finally{s.value=!1}}async function Me(){const r=ue.text.trim();if(!r){v.warning("请输入文本");return}_.value=!0,F.value=null,$.value=null,j.value=null;try{const e=r.replace(/"/g,'\\"'),[y,R,L]=await Promise.all([o.execute(`nlprog classify "${e}" --json`,8e3).catch(()=>({output:""})),o.execute(`nlprog extract "${e}" --json`,8e3).catch(()=>({output:""})),o.execute(`nlprog detect-stack "${e}" --json`,8e3).catch(()=>({output:""}))]);F.value=dt(y.output),$.value=ft(R.output),j.value=yt(L.output),!F.value&&!$.value&&!j.value&&v.error("分析失败")}catch(e){v.error("分析失败: "+(e?.message||e))}finally{_.value=!1}}async function Pe(){const r=O.text.trim();if(!r){v.warning("请输入自然语言文本");return}A.value=!0,Z.value={noDb:!1,error:""};try{const e=[`nlprog translate "${r.replace(/"/g,'\\"')}"`];O.intent&&e.push(`--intent ${O.intent}`),e.push("--json");const{output:y}=await o.execute(e.join(" "),12e3),R=_t(y);if(R.noDb){Z.value=R;return}const L=gt(y);if(!L){v.error("翻译失败: "+y.slice(0,120));return}v.success(`翻译完成 (完整度 ${(L.completeness*100).toFixed(0)}%)`),Q.value=!1,ze(),await U()}catch(e){v.error("翻译失败: "+(e?.message||e))}finally{A.value=!1}}async function qe(r,e){if(e!==r.status)try{const{output:y}=await o.execute(`nlprog status ${r.id} ${e} --json`,8e3);if(/error|invalid/i.test(y)&&!/"updated"/.test(y)){v.error("状态转换失败: "+y.slice(0,120));return}v.success(`已更新为 ${G(e)}`),await U()}catch(y){v.error("状态转换失败: "+(y?.message||y))}}async function Ve(r){try{const{output:e}=await o.execute(`nlprog remove ${r.id} --json`,8e3);if(/error/i.test(e)&&!/"removed"/.test(e)){v.error("删除失败: "+e.slice(0,120));return}v.success("已删除"),await U()}catch(e){v.error("删除失败: "+(e?.message||e))}}function Ke(r){z.value=r,ie.value=!0}async function Ge(){const r=b.pattern.trim();if(!r){v.warning("请填写模式");return}if(b.examples.trim())try{JSON.parse(b.examples)}catch{v.warning("示例 JSON 格式错误");return}oe.value=!0;try{const e=[`nlprog convention-add --category ${b.category}`];e.push(`--pattern "${r.replace(/"/g,'\\"')}"`),b.examples.trim()&&e.push(`--examples '${b.examples.trim().replace(/'/g,"'\\''")}'`),b.confidence!=null&&e.push(`--confidence ${b.confidence}`),e.push("--json");const{output:y}=await o.execute(e.join(" "),1e4);if(/error|invalid|失败/i.test(y)&&!/"added"/.test(y)){v.error("添加失败: "+y.slice(0,120));return}v.success("约定已添加"),X.value=!1,Ce(),re.value="conventions",await U()}catch(e){v.error("添加失败: "+(e?.message||e))}finally{oe.value=!1}}async function We(r){try{const{output:e}=await o.execute(`nlprog convention-remove ${r.id} --json`,8e3);if(/error/i.test(e)&&!/"removed"/.test(e)){v.error("删除失败: "+e.slice(0,120));return}v.success("已删除"),await U()}catch(e){v.error("删除失败: "+(e?.message||e))}}function ze(){O.text="",O.intent=null}function Ce(){b.category="naming",b.pattern="",b.examples="",b.confidence=.8}return ct(U),(r,e)=>{const y=p("a-button"),R=p("a-menu-item"),L=p("a-menu"),Ae=p("a-dropdown"),he=p("a-space"),W=p("a-statistic"),D=p("a-card"),Y=p("a-col"),Ye=p("a-row"),h=p("a-tag"),M=p("a-radio-button"),fe=p("a-radio-group"),Te=p("a-progress"),je=p("a-popconfirm"),we=p("a-table"),Ne=p("a-tab-pane"),He=p("a-tabs"),ye=p("a-textarea"),E=p("a-form-item"),me=p("a-form"),te=p("a-modal"),Oe=p("a-select-option"),Fe=p("a-select"),Qe=p("a-alert"),Xe=p("a-input"),Ze=p("a-input-number"),P=p("a-descriptions-item"),et=p("a-descriptions");return i(),f("div",null,[x("div",zt,[e[20]||(e[20]=x("div",null,[x("h2",{class:"page-title"},"自然语言编程"),x("p",{class:"page-sub"},"意图识别 · 实体抽取 · 技术栈检测 · 自然语言→规约")],-1)),n(he,null,{default:t(()=>[n(y,{loading:s.value,onClick:U},{icon:t(()=>[n(m(ot))]),default:t(()=>[e[15]||(e[15]=u(" 刷新 ",-1))]),_:1},8,["loading"]),n(Ae,{trigger:["click"]},{overlay:t(()=>[n(L,{onClick:Be},{default:t(()=>[n(R,{key:"analyze"},{default:t(()=>[n(m(rt)),e[17]||(e[17]=u(" 文本分析",-1))]),_:1}),n(R,{key:"translate"},{default:t(()=>[n(m(ve)),e[18]||(e[18]=u(" 翻译为规约",-1))]),_:1}),n(R,{key:"convention"},{default:t(()=>[n(m(ge)),e[19]||(e[19]=u(" 添加约定",-1))]),_:1})]),_:1})]),default:t(()=>[n(y,{type:"primary"},{icon:t(()=>[n(m(lt))]),default:t(()=>[e[16]||(e[16]=u(" 操作 ▼ ",-1))]),_:1})]),_:1})]),_:1})]),n(Ye,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:t(()=>[n(Y,{xs:12,sm:8,lg:5},{default:t(()=>[n(D,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[n(W,{title:"翻译总数",value:N.value.translations.total,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:t(()=>[n(m(ve))]),_:1},8,["value"])]),_:1})]),_:1}),n(Y,{xs:12,sm:8,lg:5},{default:t(()=>[n(D,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[n(W,{title:"平均完整度",value:Ue.value,precision:1,suffix:"%","value-style":{color:N.value.translations.avgCompleteness>=.7?"#52c41a":"#faad14",fontSize:"20px"}},{prefix:t(()=>[n(m(st))]),_:1},8,["value","value-style"])]),_:1})]),_:1}),n(Y,{xs:12,sm:8,lg:5},{default:t(()=>[n(D,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[n(W,{title:"草稿",value:N.value.translations.byStatus.draft,"value-style":{color:"#faad14",fontSize:"20px"}},{prefix:t(()=>[n(m(it))]),_:1},8,["value"])]),_:1})]),_:1}),n(Y,{xs:12,sm:8,lg:5},{default:t(()=>[n(D,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[n(W,{title:"已完成",value:N.value.translations.byStatus.complete,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:t(()=>[n(m(ut))]),_:1},8,["value"])]),_:1})]),_:1}),n(Y,{xs:24,sm:8,lg:4},{default:t(()=>[n(D,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[n(W,{title:"项目约定",value:N.value.conventions.total,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:t(()=>[n(m(ge))]),_:1},8,["value"])]),_:1})]),_:1})]),_:1}),N.value.translations.total>0?(i(),S(D,{key:0,title:"意图分布",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:t(()=>[n(he,{size:[12,8],wrap:""},{default:t(()=>[(i(!0),f(C,null,w(m(ae),a=>(i(),S(h,{key:a,color:ee(a)},{default:t(()=>[u(c(B(a))+": "+c(N.value.translations.byIntent[a]||0),1)]),_:2},1032,["color"]))),128))]),_:1})]),_:1})):g("",!0),n(He,{activeKey:re.value,"onUpdate:activeKey":e[3]||(e[3]=a=>re.value=a),class:"nlprog-tabs"},{default:t(()=>[n(Ne,{key:"translations",tab:"翻译"},{default:t(()=>[x("div",Ct,[n(fe,{value:V.value,"onUpdate:value":e[0]||(e[0]=a=>V.value=a),size:"small"},{default:t(()=>[n(M,{value:""},{default:t(()=>[...e[21]||(e[21]=[u("全部意图",-1)])]),_:1}),(i(!0),f(C,null,w(m(ae),a=>(i(),S(M,{key:a,value:a},{default:t(()=>[u(c(B(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),n(fe,{value:K.value,"onUpdate:value":e[1]||(e[1]=a=>K.value=a),size:"small","button-style":"solid"},{default:t(()=>[n(M,{value:""},{default:t(()=>[...e[22]||(e[22]=[u("全部状态",-1)])]),_:1}),(i(!0),f(C,null,w(m($e),a=>(i(),S(M,{key:a,value:a},{default:t(()=>[u(c(G(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),n(we,{columns:Re,"data-source":Le.value,pagination:{pageSize:20,showTotal:a=>`共 ${a} 条`},size:"small",loading:s.value,style:{background:"var(--bg-card)"}},{bodyCell:t(({column:a,record:d})=>[a.key==="inputText"?(i(),f("span",At,c(Je(d.inputText,80)),1)):g("",!0),a.key==="intent"?(i(),S(h,{key:1,color:ee(d.intent),style:{"font-size":"11px"}},{default:t(()=>[u(c(B(d.intent)),1)]),_:2},1032,["color"])):g("",!0),a.key==="completeness"?(i(),S(Te,{key:2,percent:Math.round(d.completenessScore*100),size:"small","stroke-color":pe(d.completenessScore),format:()=>(d.completenessScore*100).toFixed(0)+"%"},null,8,["percent","stroke-color","format"])):g("",!0),a.key==="status"?(i(),S(h,{key:3,color:Se(d.status)},{default:t(()=>[u(c(G(d.status)),1)]),_:2},1032,["color"])):g("",!0),a.key==="updatedAt"?(i(),f("span",ht,c(m(ne)(d.updatedAt)),1)):g("",!0),a.key==="action"?(i(),f(C,{key:5},[n(y,{size:"small",type:"link",onClick:T=>Ke(d)},{default:t(()=>[...e[23]||(e[23]=[u("详情",-1)])]),_:1},8,["onClick"]),n(Ae,{trigger:["click"]},{overlay:t(()=>[n(L,{onClick:T=>qe(d,T.key)},{default:t(()=>[(i(!0),f(C,null,w(m($e),T=>(i(),S(R,{key:T,disabled:T===d.status},{default:t(()=>[u(c(G(T)),1)]),_:2},1032,["disabled"]))),128))]),_:2},1032,["onClick"])]),default:t(()=>[n(y,{size:"small",type:"link"},{default:t(()=>[...e[24]||(e[24]=[u("状态 ▼",-1)])]),_:1})]),_:2},1024),n(je,{title:"删除该翻译?","ok-text":"删除","cancel-text":"取消",onConfirm:T=>Ve(d)},{default:t(()=>[n(y,{size:"small",type:"link",danger:""},{default:t(()=>[...e[25]||(e[25]=[u("删除",-1)])]),_:1})]),_:1},8,["onConfirm"])],64)):g("",!0)]),emptyText:t(()=>[x("div",Tt,[n(m(ve),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),u(" "+c(V.value||K.value?"没有符合条件的翻译":'暂无翻译,点"操作 → 翻译为规约"创建第一个'),1)])]),_:1},8,["data-source","pagination","loading"])]),_:1}),n(Ne,{key:"conventions",tab:"项目约定"},{default:t(()=>[x("div",jt,[n(fe,{value:H.value,"onUpdate:value":e[2]||(e[2]=a=>H.value=a),size:"small","button-style":"solid"},{default:t(()=>[n(M,{value:""},{default:t(()=>[...e[26]||(e[26]=[u("全部",-1)])]),_:1}),(i(!0),f(C,null,w(m(be),a=>(i(),S(M,{key:a,value:a},{default:t(()=>[u(c(ce(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),n(we,{columns:Ie,"data-source":De.value,pagination:{pageSize:20,showTotal:a=>`共 ${a} 条`},size:"small",loading:s.value,style:{background:"var(--bg-card)"}},{bodyCell:t(({column:a,record:d})=>[a.key==="category"?(i(),S(h,{key:0,color:Ee(d.category)},{default:t(()=>[u(c(ce(d.category)),1)]),_:2},1032,["color"])):g("",!0),a.key==="pattern"?(i(),f("span",wt,c(d.pattern),1)):g("",!0),a.key==="examples"?(i(),f(C,{key:2},[(i(!0),f(C,null,w(Array.isArray(d.examples)?d.examples.slice(0,3):[],T=>(i(),S(h,{key:T,color:"default",style:{"font-size":"10px","font-family":"monospace",margin:"1px"}},{default:t(()=>[u(c(T),1)]),_:2},1024))),128)),!Array.isArray(d.examples)||d.examples.length===0?(i(),f("span",Nt,"—")):g("",!0)],64)):g("",!0),a.key==="confidence"?(i(),f("span",{key:3,style:pt({color:pe(d.confidence),fontWeight:500})},c((d.confidence*100).toFixed(0))+"% ",5)):g("",!0),a.key==="createdAt"?(i(),f("span",Ot,c(m(ne)(d.createdAt)),1)):g("",!0),a.key==="action"?(i(),S(je,{key:5,title:"删除该约定?","ok-text":"删除","cancel-text":"取消",onConfirm:T=>We(d)},{default:t(()=>[n(y,{size:"small",type:"link",danger:""},{default:t(()=>[...e[27]||(e[27]=[u("删除",-1)])]),_:1})]),_:1},8,["onConfirm"])):g("",!0)]),emptyText:t(()=>[x("div",Ft,[n(m(ge),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),e[28]||(e[28]=u(' 暂无约定,点"操作 → 添加约定"创建第一个 ',-1))])]),_:1},8,["data-source","pagination","loading"])]),_:1})]),_:1},8,["activeKey"]),n(te,{open:se.value,"onUpdate:open":e[5]||(e[5]=a=>se.value=a),title:"文本分析(无状态)","confirm-loading":_.value,width:600,"ok-text":"分析","cancel-text":"关闭",onOk:Me},{default:t(()=>[n(me,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:t(()=>[n(E,{label:"文本",required:""},{default:t(()=>[n(ye,{value:ue.text,"onUpdate:value":e[4]||(e[4]=a=>ue.text=a),placeholder:"例如: create a login button component using React","auto-size":{minRows:3,maxRows:6}},null,8,["value"])]),_:1})]),_:1}),F.value||$.value||j.value?(i(),S(D,{key:0,size:"small",style:{background:"var(--bg-base)","margin-top":"8px"}},{default:t(()=>[F.value?(i(),f("div",$t,[e[29]||(e[29]=x("div",{style:{"font-size":"12px",color:"var(--text-secondary)","margin-bottom":"4px"}},"意图",-1)),n(h,{color:ee(F.value.intent),style:{"margin-right":"6px"}},{default:t(()=>[u(c(B(F.value.intent)),1)]),_:1},8,["color"]),x("span",Rt,"置信度: "+c((F.value.confidence*100).toFixed(0))+"%",1)])):g("",!0),$.value?(i(),f("div",It,[x("div",Ut,"实体("+c($.value.count)+")",1),$.value.entities.length?g("",!0):(i(),f("span",Lt,"未识别到")),(i(!0),f(C,null,w($.value.entities,(a,d)=>(i(),S(h,{key:d,color:"purple",style:{"font-family":"monospace","font-size":"11px",margin:"1px"}},{default:t(()=>[u(" ["+c(a.type)+"] "+c(a.value),1)]),_:2},1024))),128))])):g("",!0),j.value?(i(),f("div",Dt,[e[30]||(e[30]=x("div",{style:{"font-size":"12px",color:"var(--text-secondary)","margin-bottom":"4px"}},"技术栈",-1)),j.value.detected.length?(i(),f(C,{key:1},[n(h,{color:"cyan",style:{"font-family":"monospace"}},{default:t(()=>[u("主: "+c(j.value.primary),1)]),_:1}),(i(!0),f(C,null,w(j.value.detected.filter(a=>a!==j.value.primary),a=>(i(),S(h,{key:a,color:"default",style:{"font-family":"monospace","font-size":"11px"}},{default:t(()=>[u(c(a),1)]),_:2},1024))),128))],64)):(i(),f("span",Et,"未识别到"))])):g("",!0)]),_:1})):g("",!0)]),_:1},8,["open","confirm-loading"]),n(te,{open:Q.value,"onUpdate:open":e[8]||(e[8]=a=>Q.value=a),title:"翻译为规约","confirm-loading":A.value,width:540,"ok-text":"翻译","cancel-text":"取消",onOk:Pe,onCancel:ze},{default:t(()=>[n(me,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:t(()=>[n(E,{label:"自然语言",required:""},{default:t(()=>[n(ye,{value:O.text,"onUpdate:value":e[6]||(e[6]=a=>O.text=a),placeholder:"例如: create a Vue 3 LoginForm component with email and password fields","auto-size":{minRows:3,maxRows:6}},null,8,["value"])]),_:1}),n(E,{label:"意图覆盖"},{default:t(()=>[n(Fe,{value:O.intent,"onUpdate:value":e[7]||(e[7]=a=>O.intent=a),"allow-clear":"",placeholder:"留空则自动识别"},{default:t(()=>[(i(!0),f(C,null,w(m(ae),a=>(i(),S(Oe,{key:a,value:a},{default:t(()=>[u(c(B(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})]),_:1}),Z.value.noDb?(i(),S(Qe,{key:0,type:"warning","show-icon":"",message:"该命令需要项目级数据库",description:"`cc nlprog translate` 仅在 chainlesschain 项目目录下可用。请先运行 `cc init` 初始化项目,或在已初始化的目录启动 `cc serve`。",style:{"margin-top":"12px"}})):g("",!0)]),_:1},8,["open","confirm-loading"]),n(te,{open:X.value,"onUpdate:open":e[13]||(e[13]=a=>X.value=a),title:"添加项目约定","confirm-loading":oe.value,width:540,"ok-text":"添加","cancel-text":"取消",onOk:Ge,onCancel:Ce},{default:t(()=>[n(me,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:t(()=>[n(E,{label:"类别",required:""},{default:t(()=>[n(Fe,{value:b.category,"onUpdate:value":e[9]||(e[9]=a=>b.category=a)},{default:t(()=>[(i(!0),f(C,null,w(m(be),a=>(i(),S(Oe,{key:a,value:a},{default:t(()=>[u(c(ce(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1}),n(E,{label:"模式",required:""},{default:t(()=>[n(Xe,{value:b.pattern,"onUpdate:value":e[10]||(e[10]=a=>b.pattern=a),placeholder:"例如: kebab-case for file names"},null,8,["value"])]),_:1}),n(E,{label:"示例"},{default:t(()=>[n(ye,{value:b.examples,"onUpdate:value":e[11]||(e[11]=a=>b.examples=a),placeholder:'JSON 数组,例如 ["login-form.vue","user-card.vue"]',"auto-size":{minRows:2,maxRows:4}},null,8,["value"])]),_:1}),n(E,{label:"置信度"},{default:t(()=>[n(Ze,{value:b.confidence,"onUpdate:value":e[12]||(e[12]=a=>b.confidence=a),min:0,max:1,step:.05,style:{width:"100%"}},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"]),n(te,{open:ie.value,"onUpdate:open":e[14]||(e[14]=a=>ie.value=a),title:`翻译详情:${z.value?.id?.slice(0,8)||""}`,width:720,footer:null},{default:t(()=>[z.value?(i(),f("div",Jt,[n(et,{column:2,size:"small",bordered:""},{default:t(()=>[n(P,{label:"意图"},{default:t(()=>[n(h,{color:ee(z.value.intent)},{default:t(()=>[u(c(B(z.value.intent)),1)]),_:1},8,["color"])]),_:1}),n(P,{label:"状态"},{default:t(()=>[n(h,{color:Se(z.value.status)},{default:t(()=>[u(c(G(z.value.status)),1)]),_:1},8,["color"])]),_:1}),n(P,{label:"完整度",span:2},{default:t(()=>[n(Te,{percent:Math.round(z.value.completenessScore*100),"stroke-color":pe(z.value.completenessScore),size:"small"},null,8,["percent","stroke-color"])]),_:1}),n(P,{label:"创建时间"},{default:t(()=>[u(c(m(ne)(z.value.createdAt)),1)]),_:1}),n(P,{label:"更新时间"},{default:t(()=>[u(c(m(ne)(z.value.updatedAt)),1)]),_:1}),n(P,{label:"原文",span:2},{default:t(()=>[x("span",Bt,c(z.value.inputText),1)]),_:1})]),_:1}),x("div",Mt,[e[31]||(e[31]=x("h4",{style:{color:"var(--text-primary)","font-size":"13px","margin-bottom":"8px"}},"实体",-1)),x("pre",Pt,c(de(z.value.entities)),1)]),x("div",null,[e[32]||(e[32]=x("h4",{style:{color:"var(--text-primary)","font-size":"13px","margin-bottom":"8px"}},"技术栈",-1)),x("pre",qt,c(de(z.value.techStack)),1)]),z.value.spec?(i(),f("div",Vt,[e[33]||(e[33]=x("h4",{style:{color:"var(--text-primary)","font-size":"13px","margin-bottom":"8px"}},"规约",-1)),x("pre",Kt,c(de(z.value.spec)),1)])):g("",!0)])):g("",!0)]),_:1},8,["open","title"])])}}},rn=at(Gt,[["__scopeId","data-v-87b8b4dc"]]);export{rn as default};
@@ -1 +0,0 @@
1
- [data-v-4630ece9] .note-row:hover td{background:var(--bg-card-hover)!important;cursor:pointer}
@@ -1,2 +0,0 @@
1
- import{u as X}from"./ws-Bv7YH0VB.js";import{_ as Z}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{ac as ee,Y as te,a as ae}from"./icons-ukMaZ3tx.js";import{a as C}from"./index-BbqCdQXU.js";import{l as oe,F as v,D as p,I as d,c as o,x as l,m as x,G as _,r as s,q as c,j as le,v as i,J as m,u as j,H as R,L as A}from"./vendor-BVetwVfk.js";import"./index-ZZ_4A9um.js";import"./useConfigInject-BKqJUQaF.js";import"./transition-CGYDOK3N.js";import"./Keyframes-C7fCrnlS.js";import"./Portal-CHsntPCQ.js";import"./index-U4Zd5IK6.js";const ne={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},se={class:"page-sub"},ie={style:{"margin-bottom":"16px",display:"flex",gap:"10px"}},re={key:0,style:{"text-align":"center",padding:"60px"}},ue={key:0,style:{color:"#e0e0e0","font-weight":"500"}},ce={key:2,style:{color:"var(--text-secondary)","font-size":"12px"}},pe={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},de={key:0,style:{"max-height":"60vh","overflow-y":"auto"}},ve={style:{"margin-bottom":"10px"}},me={style:{"white-space":"pre-wrap",color:"#ccc","font-family":"inherit","line-height":"1.7",background:"var(--bg-base)",padding:"16px","border-radius":"6px",border:"1px solid var(--border-color)"}},fe={__name:"Notes",setup(ge){const $=X(),h=s(!1),S=s(!1),z=s(!1),U=s(""),V=s([]),w=s([]),k=s(!1),f=s(""),b=s(!1),W=s(!1),g=s(null),n=s({title:"",content:"",tags:""}),E=le(()=>k.value?w.value:V.value),G=[{title:"标题",dataIndex:"title",key:"title",width:"30%"},{title:"预览",key:"content",ellipsis:!0},{title:"标签",key:"tags",width:"20%"},{title:"操作",key:"actions",width:"80px"}];async function B(){h.value=!0,U.value="";try{const{output:a}=await $.execute("note list",2e4);V.value=q(a)}catch(a){U.value=`加载失败: ${a.message}`}finally{h.value=!1}}function q(a){const e=[],y=a.split(`
2
- `);for(const O of y){const r=O.trim();if(!r||r.startsWith("─")||r.startsWith("Note")||r.match(/^\d+ note/i))continue;const u=r.match(/^(\d+)\.\s+(.+?)(?:\s+\[([^\]]+)\])?\s*(?:-\s*(.*))?$/);u?e.push({key:u[1],id:u[1],title:u[2].trim(),tags:u[3]?u[3].split(",").map(T=>T.trim()):[],preview:(u[4]||"").trim().slice(0,100),content:""}):r.length>2&&!r.startsWith("✖")&&!r.startsWith("[")&&e.push({key:e.length,id:String(e.length),title:r,tags:[],preview:"",content:""})}return e}async function H(){if(!f.value.trim()){L();return}S.value=!0,k.value=!0;try{const{output:a}=await $.execute(`note search "${f.value}"`,15e3);w.value=q(a)}catch{w.value=[]}finally{S.value=!1}}function L(){f.value="",k.value=!1,w.value=[]}async function J(){if(!n.value.title.trim()){C.warning("请输入标题");return}z.value=!0;try{let a=`note add "${n.value.title}"`;n.value.content&&(a+=` -c "${n.value.content.replace(/"/g,'\\"')}"`),n.value.tags&&(a+=` -t "${n.value.tags}"`);const{output:e}=await $.execute(a,15e3);e.includes("✖")||e.toLowerCase().includes("error")?C.error("添加失败: "+e.slice(0,100)):(C.success("笔记已添加"),b.value=!1,n.value={title:"",content:"",tags:""},await B())}catch(a){C.error("添加失败: "+a.message)}finally{z.value=!1}}function P(a){g.value=a,W.value=!0}return oe(B),(a,e)=>{const y=c("a-button"),O=c("a-space"),r=c("a-input-search"),u=c("a-tag"),T=c("a-spin"),Q=c("a-table"),D=c("a-input"),F=c("a-form-item"),Y=c("a-textarea"),K=c("a-form"),M=c("a-modal");return i(),v("div",null,[p("div",ne,[p("div",null,[e[7]||(e[7]=p("h2",{class:"page-title"},"笔记管理",-1)),p("p",se,"个人知识库 · "+d(V.value.length)+" 条笔记",1)]),o(O,null,{default:l(()=>[o(y,{onClick:e[0]||(e[0]=t=>b.value=!0),type:"primary"},{icon:l(()=>[o(j(ee))]),default:l(()=>[e[8]||(e[8]=m(" 新建笔记 ",-1))]),_:1}),o(y,{ghost:"",loading:h.value,onClick:B},{icon:l(()=>[o(j(te))]),default:l(()=>[e[9]||(e[9]=m(" 刷新 ",-1))]),_:1},8,["loading"])]),_:1})]),p("div",ie,[o(r,{value:f.value,"onUpdate:value":e[1]||(e[1]=t=>f.value=t),placeholder:"搜索笔记...","allow-clear":"",style:{"max-width":"400px"},loading:S.value,onSearch:H,onClear:L},null,8,["value","loading"]),k.value?(i(),x(u,{key:0,color:"blue",closable:"",onClose:L},{default:l(()=>[m(" 搜索: "+d(f.value),1)]),_:1})):_("",!0)]),h.value?(i(),v("div",re,[o(T,{size:"large"})])):(i(),x(Q,{key:1,columns:G,"data-source":E.value,pagination:{pageSize:20,showTotal:t=>`共 ${t} 条`},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"note-row"},{bodyCell:l(({column:t,record:N})=>[t.key==="title"?(i(),v("span",ue,d(N.title),1)):_("",!0),t.key==="tags"?(i(!0),v(R,{key:1},A(N.tags,I=>(i(),x(u,{key:I,color:"blue",style:{"font-size":"10px",margin:"1px"}},{default:l(()=>[m(d(I),1)]),_:2},1024))),128)):_("",!0),t.key==="content"?(i(),v("span",ce,d(N.preview),1)):_("",!0),t.key==="actions"?(i(),x(y,{key:3,size:"small",type:"link",onClick:I=>P(N)},{default:l(()=>[...e[10]||(e[10]=[m("查看",-1)])]),_:1},8,["onClick"])):_("",!0)]),emptyText:l(()=>[p("div",pe,[o(j(ae),{style:{"font-size":"40px","margin-bottom":"12px",display:"block"}}),m(" "+d(U.value||'暂无笔记,点击"新建笔记"添加'),1)])]),_:1},8,["data-source","pagination"])),o(M,{open:b.value,"onUpdate:open":e[5]||(e[5]=t=>b.value=t),title:"新建笔记","confirm-loading":z.value,onOk:J},{default:l(()=>[o(K,{"label-col":{span:4},"wrapper-col":{span:20},style:{"margin-top":"16px"}},{default:l(()=>[o(F,{label:"标题",required:""},{default:l(()=>[o(D,{value:n.value.title,"onUpdate:value":e[2]||(e[2]=t=>n.value.title=t),placeholder:"笔记标题"},null,8,["value"])]),_:1}),o(F,{label:"内容"},{default:l(()=>[o(Y,{value:n.value.content,"onUpdate:value":e[3]||(e[3]=t=>n.value.content=t),rows:5,placeholder:"笔记内容..."},null,8,["value"])]),_:1}),o(F,{label:"标签"},{default:l(()=>[o(D,{value:n.value.tags,"onUpdate:value":e[4]||(e[4]=t=>n.value.tags=t),placeholder:"用逗号分隔,如: work,ideas"},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"]),o(M,{open:W.value,"onUpdate:open":e[6]||(e[6]=t=>W.value=t),title:g.value?.title,footer:null,width:"700px"},{default:l(()=>[g.value?(i(),v("div",de,[p("div",ve,[(i(!0),v(R,null,A(g.value.tags,t=>(i(),x(u,{key:t,color:"blue"},{default:l(()=>[m(d(t),1)]),_:2},1024))),128))]),p("pre",me,d(g.value.content||g.value.preview),1)])):_("",!0)]),_:1},8,["open","title"])])}}},ze=Z(fe,[["__scopeId","data-v-4630ece9"]]);export{ze as default};
@@ -1 +0,0 @@
1
- import{P as f}from"./index-U4Zd5IK6.js";import{p as c,i as g,j as l,d as p,Z as m,l as C,w as v,_ as x,n as P,c as h,T as R}from"./vendor-BVetwVfk.js";function S(e){let{prefixCls:s,animation:t,transitionName:o}=e;return t?{name:`${s}-${t}`}:o?{name:o}:{}}const u=Symbol("PortalContextKey"),T=function(e){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{inTriggerContext:!0};c(u,{inTriggerContext:s.inTriggerContext,shouldRender:l(()=>{const{sPopupVisible:t,popupRef:o,forceRender:n,autoDestroy:r}=e||{};let i=!1;return(t||o||n)&&(i=!0),!t&&r&&(i=!1),i})})},y=()=>{T({},{inTriggerContext:!1});const e=g(u,{shouldRender:l(()=>!1),inTriggerContext:!1});return{shouldRender:l(()=>e.shouldRender.value||e.inTriggerContext===!1)}},U=p({compatConfig:{MODE:3},name:"Portal",inheritAttrs:!1,props:{getContainer:f.func.isRequired,didUpdate:Function},setup(e,s){let{slots:t}=s,o=!0,n;const{shouldRender:r}=y();function i(){r.value&&(n=e.getContainer())}m(()=>{o=!1,i()}),C(()=>{n||i()});const d=v(r,()=>{r.value&&!n&&(n=e.getContainer()),n&&d()});return x(()=>{P(()=>{var a;r.value&&((a=e.didUpdate)===null||a===void 0||a.call(e,e))})}),()=>{var a;return r.value?o?(a=t.default)===null||a===void 0?void 0:a.call(t):n?h(R,{to:n},t):null:null}}});export{U as P,S as g,T as u};
@@ -1 +0,0 @@
1
- import{u as Xe}from"./ws-Bv7YH0VB.js";import{s as Ze}from"./community-parser-CO25nZFt.js";import{_ as et}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{a as f}from"./index-BbqCdQXU.js";import{Y as tt,ac as at,E as ue,l as pe,L as Re,o as lt,aL as ot}from"./icons-ukMaZ3tx.js";import{l as nt,F as c,D as y,c as a,x as l,q as v,r as b,v as s,J as m,u as x,I as p,H as R,L,m as C,G as h,N as it,j as X,a as Z}from"./vendor-BVetwVfk.js";import"./index-ZZ_4A9um.js";import"./useConfigInject-BKqJUQaF.js";import"./transition-CGYDOK3N.js";import"./Keyframes-C7fCrnlS.js";import"./Portal-CHsntPCQ.js";import"./index-U4Zd5IK6.js";function H(o){const i=Ze(o);if(!i)return null;try{return JSON.parse(i)}catch{}const r=i.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!r)return null;try{return JSON.parse(r[0])}catch{return null}}const st=Object.freeze(["initializing","training","aggregating","completed","failed"]),rt=Object.freeze(["pending","computing","completed"]),Ae=Object.freeze(["shamir","beaver","gmw"]),ut=Object.freeze(["laplace","gaussian","exponential"]),pt=Object.freeze(["paillier","bfv","ckks"]),dt=Object.freeze(["sum","product","mean","count"]);function g(o,i=0){return typeof o=="number"&&Number.isFinite(o)?o:i}function ct(o,i=0){if(!o||typeof o!="object")return null;const r=o.id||"";return r?{key:r,id:r,name:String(o.name||r),description:String(o.description||""),_idx:i}:null}function de(o){const i=H(o);return Array.isArray(i)?i.map(ct).filter(Boolean):[]}function mt(o,i=0){if(!o||typeof o!="object")return null;const r=o.id||"";return r?{key:r,id:r,name:String(o.name||""),modelType:o.modelType??o.model_type??"neural_network",architecture:String(o.architecture||""),status:String(o.status||"initializing").toLowerCase(),currentRound:g(o.currentRound??o.current_round,0),totalRounds:g(o.totalRounds??o.total_rounds,0),participantCount:g(o.participantCount??o.participant_count,0),accuracy:g(o.accuracy,0),loss:o.loss==null?null:g(o.loss,null),learningRate:g(o.learningRate??o.learning_rate,0),aggregationStrategy:o.aggregationStrategy??o.aggregation_strategy??"",privacyBudgetSpent:g(o.privacyBudgetSpent??o.privacy_budget_spent,0),createdAt:o.createdAt??o.created_at??null,updatedAt:o.updatedAt??o.updated_at??null,_idx:i}:null}function ft(o){const i=H(o);return Array.isArray(i)?i.map(mt).filter(Boolean):[]}function yt(o,i=0){if(!o||typeof o!="object")return null;const r=o.id||"";if(!r)return null;let A=o.participantIds??o.participant_ids??[];if(typeof A=="string")try{A=JSON.parse(A)}catch{A=[]}return Array.isArray(A)||(A=[]),{key:r,id:r,computationType:o.computationType??o.computation_type??"",protocol:String(o.protocol||"shamir").toLowerCase(),participantCount:g(o.participantCount??o.participant_count,0),participantIds:A,resultHash:o.resultHash??o.result_hash??null,status:String(o.status||"pending").toLowerCase(),sharesReceived:g(o.sharesReceived??o.shares_received,0),sharesRequired:g(o.sharesRequired??o.shares_required,0),computationTimeMs:o.computationTimeMs??o.computation_time_ms??null,errorMessage:o.errorMessage??o.error_message??"",createdAt:o.createdAt??o.created_at??null,completedAt:o.completedAt??o.completed_at??null,_idx:i}}function vt(o){const i=H(o);return Array.isArray(i)?i.map(yt).filter(Boolean):[]}function gt(o){const i=H(o);return!i||typeof i!="object"||Array.isArray(i)?null:{published:!!i.published,reason:i.reason||null,data:i.data??null,epsilon:g(i.epsilon,0),delta:g(i.delta,0),mechanism:String(i.mechanism||""),budgetSpent:g(i.budgetSpent??i.budget_spent,0),budgetRemaining:g(i.budgetRemaining??i.budget_remaining,0)}}function _t(o){const i=H(o);return!i||typeof i!="object"||Array.isArray(i)?null:{result:i.result??null,operation:String(i.operation||""),scheme:String(i.scheme||""),inputCount:g(i.inputCount??i.input_count,0),encrypted:i.encrypted!==!1}}const bt={privacyBudget:{spent:0,limit:0,remaining:0,exhausted:!1},federatedLearning:{totalModels:0,completed:0,training:0,avgAccuracy:0},mpc:{totalComputations:0,completed:0,pending:0,byProtocol:{}}};function xt(o){const i=JSON.parse(JSON.stringify(bt)),r=H(o);if(!r||typeof r!="object"||Array.isArray(r))return i;if(r.privacyBudget&&typeof r.privacyBudget=="object"&&(i.privacyBudget.spent=g(r.privacyBudget.spent,0),i.privacyBudget.limit=g(r.privacyBudget.limit,0),i.privacyBudget.remaining=g(r.privacyBudget.remaining,0),i.privacyBudget.exhausted=!!r.privacyBudget.exhausted),r.federatedLearning&&typeof r.federatedLearning=="object"&&(i.federatedLearning.totalModels=g(r.federatedLearning.totalModels,0),i.federatedLearning.completed=g(r.federatedLearning.completed,0),i.federatedLearning.training=g(r.federatedLearning.training,0),i.federatedLearning.avgAccuracy=g(r.federatedLearning.avgAccuracy,0)),r.mpc&&typeof r.mpc=="object"&&(i.mpc.totalComputations=g(r.mpc.totalComputations,0),i.mpc.completed=g(r.mpc.completed,0),i.mpc.pending=g(r.mpc.pending,0),r.mpc.byProtocol&&typeof r.mpc.byProtocol=="object"))for(const[A,F]of Object.entries(r.mpc.byProtocol))typeof F=="number"&&Number.isFinite(F)&&(i.mpc.byProtocol[A]=F);return i}function Me(o){if(o==null||o==="")return"—";const i=typeof o=="number"?new Date(o):new Date(String(o));return isNaN(i.getTime())?String(o):i.toLocaleString("zh-CN",{hour12:!1})}const ht={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},kt={style:{"font-size":"11px",color:"var(--text-secondary)"}},St={class:"catalog-name"},Ct={class:"catalog-desc"},zt={class:"catalog-name"},Rt={class:"catalog-desc"},At={class:"catalog-name"},Mt={class:"catalog-desc"},jt={class:"filter-bar"},Ot={style:{color:"var(--text-primary)","font-weight":"500"}},Tt={style:{color:"var(--text-secondary)","font-size":"11px","margin-top":"2px"}},Lt={style:{"font-size":"11px",color:"var(--text-secondary)"}},Pt={key:0,style:{"font-size":"11px",color:"var(--text-secondary)"}},$t={key:5,style:{"font-family":"monospace",color:"var(--text-secondary)"}},Bt={key:6,style:{color:"var(--text-secondary)","font-size":"11px"}},Ut={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},wt={class:"filter-bar"},Nt={key:0,style:{color:"var(--text-primary)","font-family":"monospace","font-weight":"500"}},Ft={key:0,style:{"font-family":"monospace",color:"var(--text-secondary)","font-size":"12px"}},Et={key:1,style:{color:"var(--text-muted)"}},qt={key:5,style:{color:"var(--text-secondary)","font-size":"11px"}},Jt={key:1,style:{color:"var(--text-muted)","font-size":"11px","font-family":"monospace"}},Ht={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Dt={style:{"margin-top":"12px","font-size":"12px",color:"var(--text-secondary)"}},It={style:{"margin-top":"12px","font-size":"12px",color:"var(--text-secondary)"}},Vt={__name:"Privacy",setup(o){const i=Xe(),r=b(!1),A=b(!1),F=b(!1),ee=b(!1),te=b(""),ae=b(""),ce=b([]),me=b([]),fe=b([]),le=b([]),ye=b([]),M=b({privacyBudget:{spent:0,limit:0,remaining:0,exhausted:!1},federatedLearning:{totalModels:0,completed:0,training:0,avgAccuracy:0},mpc:{totalComputations:0,completed:0,pending:0,byProtocol:{}}}),oe=b("models"),D=b(""),V=b(""),K=b(""),G=b(!1),W=b(!1),ne=b(!1),ie=b(!1),d=Z({name:"",modelType:"",architecture:"",rounds:10,lr:.01,participants:0}),k=Z({type:"",protocol:"shamir",participants:"",threshold:null}),S=Z({data:"",mechanism:"laplace",epsilon:.1,delta:1e-5,sensitivity:1}),j=Z({data:"",operation:"sum",scheme:"paillier"}),O=b(null),P=b(null),je=[{title:"名称",key:"name"},{title:"状态",key:"status",width:"120px"},{title:"进度",key:"progress",width:"160px"},{title:"准确度",key:"accuracy",width:"110px"},{title:"参与方",key:"participants",width:"90px"},{title:"预算 ε",key:"budget",width:"100px"},{title:"更新时间",key:"updatedAt",width:"160px"},{title:"操作",key:"action",width:"180px"}],Oe=[{title:"类型",key:"type",width:"160px"},{title:"协议",key:"protocol",width:"100px"},{title:"份额进度",key:"progress"},{title:"状态",key:"status",width:"110px"},{title:"耗时",key:"time",width:"110px"},{title:"创建时间",key:"createdAt",width:"160px"},{title:"操作",key:"action",width:"160px"}],Te=X(()=>M.value.federatedLearning.avgAccuracy*100),Le=X(()=>{const n=M.value.privacyBudget.remaining,e=M.value.privacyBudget.limit;if(e===0)return"#888";const _=n/e;return _<.2?"#ff4d4f":_<.5?"#faad14":"#52c41a"}),Pe=X(()=>D.value?le.value.filter(n=>n.status===D.value):le.value),$e=X(()=>{let n=ye.value;return V.value&&(n=n.filter(e=>e.protocol===V.value)),K.value&&(n=n.filter(e=>e.status===K.value)),n});function ve(n){return{initializing:"初始化",training:"训练中",aggregating:"聚合中",completed:"已完成",failed:"失败"}[n]||n}function Be(n){return{initializing:"default",training:"processing",aggregating:"cyan",completed:"green",failed:"red"}[n]||"default"}function ge(n){return{pending:"待处理",computing:"计算中",completed:"已完成"}[n]||n}function Ue(n){return{pending:"default",computing:"processing",completed:"green"}[n]||"default"}function we(n){return n>=.85?"#52c41a":n>=.6?"#faad14":"#ff4d4f"}function Ne(n){return n.status==="initializing"||n.status==="training"||n.status==="aggregating"}function Fe({key:n}){n==="model"?G.value=!0:n==="computation"?W.value=!0:n==="dp"?(O.value=null,ne.value=!0):n==="he"&&(P.value=null,ie.value=!0)}async function B(){r.value=!0;try{const[n,e,_,q,se,re]=await Promise.all([i.execute("privacy protocols --json",8e3).catch(()=>({output:""})),i.execute("privacy dp-mechanisms --json",8e3).catch(()=>({output:""})),i.execute("privacy he-schemes --json",8e3).catch(()=>({output:""})),i.execute("privacy models --limit 100 --json",1e4).catch(()=>({output:""})),i.execute("privacy computations --limit 100 --json",1e4).catch(()=>({output:""})),i.execute("privacy report --json",8e3).catch(()=>({output:""}))]);ce.value=de(n.output),me.value=de(e.output),fe.value=de(_.output),le.value=ft(q.output),ye.value=vt(se.output),M.value=xt(re.output)}catch(n){f.error("加载隐私计算数据失败: "+(n?.message||n))}finally{r.value=!1}}async function Ee(){if(!d.name.trim()){f.warning("请输入模型名称");return}A.value=!0;try{const n=[`privacy create-model "${d.name.trim().replace(/"/g,'\\"')}"`];d.modelType.trim()&&n.push(`--type "${d.modelType.trim().replace(/"/g,'\\"')}"`),d.architecture.trim()&&n.push(`--arch "${d.architecture.trim().replace(/"/g,'\\"')}"`),d.rounds!=null&&n.push(`--rounds ${d.rounds}`),d.lr!=null&&n.push(`--lr ${d.lr}`),d.participants!=null&&n.push(`--participants ${d.participants}`),n.push("--json");const{output:e}=await i.execute(n.join(" "),12e3);if(/error|失败/i.test(e)&&!/"modelId"/.test(e)){f.error("创建失败: "+e.slice(0,120));return}f.success("FL 模型已创建"),G.value=!1,_e(),await B()}catch(n){f.error("创建失败: "+(n?.message||n))}finally{A.value=!1}}async function qe(){if(!k.type.trim()){f.warning("请输入计算类型");return}A.value=!0;try{const n=[`privacy create-computation "${k.type.trim().replace(/"/g,'\\"')}"`];if(n.push(`--protocol ${k.protocol}`),k.participants.trim()){const _=k.participants.split(/[,\s]+/).filter(Boolean).join(",");_&&n.push(`--participants "${_}"`)}k.threshold!=null&&n.push(`--threshold ${k.threshold}`),n.push("--json");const{output:e}=await i.execute(n.join(" "),1e4);if(/error|失败|invalid/i.test(e)&&!/"computationId"/.test(e)){f.error("创建失败: "+e.slice(0,120));return}f.success("MPC 计算已创建"),W.value=!1,be(),oe.value="computations",await B()}catch(n){f.error("创建失败: "+(n?.message||n))}finally{A.value=!1}}async function Je(n){te.value=n.id;try{const{output:e}=await i.execute(`privacy train ${n.id} --json`,12e3);if(/error|失败/i.test(e)&&!/"trained"/.test(e)){f.error("训练失败: "+e.slice(0,120));return}f.success("训练一轮完成"),await B()}catch(e){f.error("训练失败: "+(e?.message||e))}finally{te.value=""}}async function He(n){try{const{output:e}=await i.execute(`privacy fail-model ${n.id} --json`,8e3);if(/error/i.test(e)&&!/"failed"/.test(e)){f.error("标记失败: "+e.slice(0,120));return}f.success("已标记为失败"),await B()}catch(e){f.error("标记失败: "+(e?.message||e))}}async function De(n){ae.value=n.id;try{const{output:e}=await i.execute(`privacy submit-share ${n.id} --json`,1e4);if(/error|失败/i.test(e)&&!/"submitted"/.test(e)){f.error("提交失败: "+e.slice(0,120));return}f.success("份额已提交"),await B()}catch(e){f.error("提交失败: "+(e?.message||e))}finally{ae.value=""}}async function Ie(){if(!S.data.trim()){f.warning("请输入数据");return}F.value=!0,O.value=null;try{const n=["privacy dp-publish"];n.push(`--data ${JSON.stringify(S.data.trim())}`),n.push(`--mechanism ${S.mechanism}`),S.epsilon!=null&&n.push(`--epsilon ${S.epsilon}`),S.delta!=null&&n.push(`--delta ${S.delta}`),S.sensitivity!=null&&n.push(`--sensitivity ${S.sensitivity}`),n.push("--json");const{output:e}=await i.execute(n.join(" "),1e4),_=gt(e);if(!_){f.error("发布失败: "+e.slice(0,120));return}O.value=_,_.published?(f.success("已发布"),await B()):f.warning(`发布拒绝: ${_.reason||"unknown"}`)}catch(n){f.error("发布失败: "+(n?.message||n))}finally{F.value=!1}}async function Ve(){if(!j.data.trim()){f.warning("请输入数据");return}try{JSON.parse(j.data)}catch{f.warning("数据格式错误,请输入合法 JSON 数组");return}ee.value=!0,P.value=null;try{const n=["privacy he-query"];n.push(`--data ${JSON.stringify(j.data.trim())}`),n.push(`--operation ${j.operation}`),n.push(`--scheme ${j.scheme}`),n.push("--json");const{output:e}=await i.execute(n.join(" "),1e4),_=_t(e);if(!_){f.error("查询失败: "+e.slice(0,120));return}P.value=_,f.success(`计算完成 (${_.scheme}/${_.operation})`)}catch(n){f.error("查询失败: "+(n?.message||n))}finally{ee.value=!1}}function _e(){d.name="",d.modelType="",d.architecture="",d.rounds=10,d.lr=.01,d.participants=0}function be(){k.type="",k.protocol="shamir",k.participants="",k.threshold=null}return nt(B),(n,e)=>{const _=v("a-button"),q=v("a-menu-item"),se=v("a-menu"),re=v("a-dropdown"),Ke=v("a-space"),U=v("a-statistic"),T=v("a-card"),w=v("a-col"),xe=v("a-row"),N=v("a-tag"),$=v("a-radio-button"),J=v("a-radio-group"),he=v("a-progress"),Ge=v("a-popconfirm"),ke=v("a-table"),Se=v("a-tab-pane"),We=v("a-tabs"),I=v("a-input"),z=v("a-form-item"),E=v("a-input-number"),Y=v("a-form"),Q=v("a-modal"),Ye=v("a-select-option"),Qe=v("a-select"),Ce=v("a-textarea");return s(),c("div",null,[y("div",ht,[e[32]||(e[32]=y("div",null,[y("h2",{class:"page-title"},"隐私计算"),y("p",{class:"page-sub"},"联邦学习 · 多方计算 · 差分隐私 · 同态加密")],-1)),a(Ke,null,{default:l(()=>[a(_,{loading:r.value,onClick:B},{icon:l(()=>[a(x(tt))]),default:l(()=>[e[26]||(e[26]=m(" 刷新 ",-1))]),_:1},8,["loading"]),a(re,{trigger:["click"]},{overlay:l(()=>[a(se,{onClick:Fe},{default:l(()=>[a(q,{key:"model"},{default:l(()=>[a(x(ue)),e[28]||(e[28]=m(" 创建联邦学习模型",-1))]),_:1}),a(q,{key:"computation"},{default:l(()=>[a(x(pe)),e[29]||(e[29]=m(" 创建 MPC 计算",-1))]),_:1}),a(q,{key:"dp"},{default:l(()=>[a(x(Re)),e[30]||(e[30]=m(" 差分隐私发布",-1))]),_:1}),a(q,{key:"he"},{default:l(()=>[a(x(lt)),e[31]||(e[31]=m(" 同态加密查询",-1))]),_:1})]),_:1})]),default:l(()=>[a(_,{type:"primary"},{icon:l(()=>[a(x(at))]),default:l(()=>[e[27]||(e[27]=m(" 操作 ▼ ",-1))]),_:1})]),_:1})]),_:1})]),a(xe,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:l(()=>[a(w,{xs:12,sm:8,lg:5},{default:l(()=>[a(T,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[a(U,{title:"FL 模型",value:M.value.federatedLearning.totalModels,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:l(()=>[a(x(ue))]),_:1},8,["value"])]),_:1})]),_:1}),a(w,{xs:12,sm:8,lg:5},{default:l(()=>[a(T,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[a(U,{title:"平均准确度",value:Te.value,precision:1,suffix:"%","value-style":{color:M.value.federatedLearning.avgAccuracy>=.8?"#52c41a":"#faad14",fontSize:"20px"}},{prefix:l(()=>[a(x(ot))]),_:1},8,["value","value-style"])]),_:1})]),_:1}),a(w,{xs:12,sm:8,lg:5},{default:l(()=>[a(T,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[a(U,{title:"MPC 计算",value:M.value.mpc.totalComputations,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:l(()=>[a(x(pe))]),_:1},8,["value"])]),_:1})]),_:1}),a(w,{xs:12,sm:8,lg:5},{default:l(()=>[a(T,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[a(U,{title:"预算余量 ε",value:M.value.privacyBudget.remaining,precision:2,"value-style":{color:Le.value,fontSize:"20px"}},{prefix:l(()=>[a(x(Re))]),suffix:l(()=>[y("span",kt,"/ "+p(M.value.privacyBudget.limit),1)]),_:1},8,["value","value-style"])]),_:1})]),_:1}),a(w,{xs:24,sm:8,lg:4},{default:l(()=>[a(T,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[a(U,{title:"预算状态",value:M.value.privacyBudget.exhausted?"已耗尽":"充足","value-style":{color:M.value.privacyBudget.exhausted?"#ff4d4f":"#52c41a",fontSize:"20px"}},null,8,["value","value-style"])]),_:1})]),_:1})]),_:1}),a(xe,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:l(()=>[a(w,{xs:24,md:8},{default:l(()=>[a(T,{title:"MPC 协议",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"},"body-style":{padding:"12px 16px"}},{default:l(()=>[(s(!0),c(R,null,L(ce.value,t=>(s(),c("div",{key:t.id,class:"catalog-item"},[a(N,{color:"purple",style:{"font-family":"monospace"}},{default:l(()=>[m(p(t.id),1)]),_:2},1024),y("span",St,p(t.name),1),y("span",Ct,p(t.description),1)]))),128))]),_:1})]),_:1}),a(w,{xs:24,md:8},{default:l(()=>[a(T,{title:"DP 噪声机制",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"},"body-style":{padding:"12px 16px"}},{default:l(()=>[(s(!0),c(R,null,L(me.value,t=>(s(),c("div",{key:t.id,class:"catalog-item"},[a(N,{color:"orange",style:{"font-family":"monospace"}},{default:l(()=>[m(p(t.id),1)]),_:2},1024),y("span",zt,p(t.name),1),y("span",Rt,p(t.description),1)]))),128))]),_:1})]),_:1}),a(w,{xs:24,md:8},{default:l(()=>[a(T,{title:"HE 同态方案",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"},"body-style":{padding:"12px 16px"}},{default:l(()=>[(s(!0),c(R,null,L(fe.value,t=>(s(),c("div",{key:t.id,class:"catalog-item"},[a(N,{color:"cyan",style:{"font-family":"monospace"}},{default:l(()=>[m(p(t.id),1)]),_:2},1024),y("span",At,p(t.name),1),y("span",Mt,p(t.description),1)]))),128))]),_:1})]),_:1})]),_:1}),a(We,{activeKey:oe.value,"onUpdate:activeKey":e[3]||(e[3]=t=>oe.value=t),class:"privacy-tabs"},{default:l(()=>[a(Se,{key:"models",tab:"联邦学习"},{default:l(()=>[y("div",jt,[a(J,{value:D.value,"onUpdate:value":e[0]||(e[0]=t=>D.value=t),size:"small","button-style":"solid"},{default:l(()=>[a($,{value:""},{default:l(()=>[...e[33]||(e[33]=[m("全部",-1)])]),_:1}),(s(!0),c(R,null,L(x(st),t=>(s(),C($,{key:t,value:t},{default:l(()=>[m(p(ve(t)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),a(ke,{columns:je,"data-source":Pe.value,pagination:{pageSize:20,showTotal:t=>`共 ${t} 条`},size:"small",loading:r.value,style:{background:"var(--bg-card)"}},{bodyCell:l(({column:t,record:u})=>[t.key==="name"?(s(),c(R,{key:0},[y("span",Ot,p(u.name),1),y("div",Tt,p(u.modelType)+" / "+p(u.architecture),1)],64)):h("",!0),t.key==="status"?(s(),C(N,{key:1,color:Be(u.status)},{default:l(()=>[m(p(ve(u.status)),1)]),_:2},1032,["color"])):h("",!0),t.key==="progress"?(s(),c(R,{key:2},[a(he,{percent:u.totalRounds?Math.round(100*u.currentRound/u.totalRounds):0,size:"small",status:u.status==="failed"?"exception":u.status==="completed"?"success":"active"},null,8,["percent","status"]),y("div",Lt,p(u.currentRound)+" / "+p(u.totalRounds)+" 轮 ",1)],64)):h("",!0),t.key==="accuracy"?(s(),c(R,{key:3},[y("span",{style:it({color:we(u.accuracy),fontFamily:"monospace"})},p((u.accuracy*100).toFixed(1))+"% ",5),u.loss!=null?(s(),c("div",Pt," loss "+p(u.loss.toFixed(3)),1)):h("",!0)],64)):h("",!0),t.key==="participants"?(s(),C(N,{key:4,color:"blue",style:{"font-size":"11px"}},{default:l(()=>[m(p(u.participantCount),1)]),_:2},1024)):h("",!0),t.key==="budget"?(s(),c("span",$t,p(u.privacyBudgetSpent.toFixed(3)),1)):h("",!0),t.key==="updatedAt"?(s(),c("span",Bt,p(x(Me)(u.updatedAt)),1)):h("",!0),t.key==="action"?(s(),c(R,{key:7},[Ne(u)?(s(),C(_,{key:0,size:"small",type:"link",loading:te.value===u.id,onClick:ze=>Je(u)},{default:l(()=>[...e[34]||(e[34]=[m(" 训练一轮 ",-1)])]),_:1},8,["loading","onClick"])):h("",!0),u.status!=="failed"&&u.status!=="completed"?(s(),C(Ge,{key:1,title:"标记该模型为失败?","ok-text":"确认","cancel-text":"取消",onConfirm:ze=>He(u)},{default:l(()=>[a(_,{size:"small",type:"link",danger:""},{default:l(()=>[...e[35]||(e[35]=[m("标记失败",-1)])]),_:1})]),_:1},8,["onConfirm"])):h("",!0)],64)):h("",!0)]),emptyText:l(()=>[y("div",Ut,[a(x(ue),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),m(" "+p(D.value?"没有符合条件的模型":'暂无 FL 模型,点"操作 → 创建联邦学习模型"创建第一个'),1)])]),_:1},8,["data-source","pagination","loading"])]),_:1}),a(Se,{key:"computations",tab:"MPC 计算"},{default:l(()=>[y("div",wt,[a(J,{value:V.value,"onUpdate:value":e[1]||(e[1]=t=>V.value=t),size:"small"},{default:l(()=>[a($,{value:""},{default:l(()=>[...e[36]||(e[36]=[m("全部协议",-1)])]),_:1}),(s(!0),c(R,null,L(x(Ae),t=>(s(),C($,{key:t,value:t},{default:l(()=>[m(p(t),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),a(J,{value:K.value,"onUpdate:value":e[2]||(e[2]=t=>K.value=t),size:"small"},{default:l(()=>[a($,{value:""},{default:l(()=>[...e[37]||(e[37]=[m("全部状态",-1)])]),_:1}),(s(!0),c(R,null,L(x(rt),t=>(s(),C($,{key:t,value:t},{default:l(()=>[m(p(ge(t)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),a(ke,{columns:Oe,"data-source":$e.value,pagination:{pageSize:20,showTotal:t=>`共 ${t} 条`},size:"small",loading:r.value,style:{background:"var(--bg-card)"}},{bodyCell:l(({column:t,record:u})=>[t.key==="type"?(s(),c("span",Nt,p(u.computationType),1)):h("",!0),t.key==="protocol"?(s(),C(N,{key:1,color:"purple",style:{"font-family":"monospace"}},{default:l(()=>[m(p(u.protocol),1)]),_:2},1024)):h("",!0),t.key==="progress"?(s(),C(he,{key:2,percent:u.sharesRequired?Math.round(100*u.sharesReceived/u.sharesRequired):0,size:"small",status:u.status==="completed"?"success":"active",format:()=>`${u.sharesReceived}/${u.sharesRequired}`},null,8,["percent","status","format"])):h("",!0),t.key==="status"?(s(),C(N,{key:3,color:Ue(u.status)},{default:l(()=>[m(p(ge(u.status)),1)]),_:2},1032,["color"])):h("",!0),t.key==="time"?(s(),c(R,{key:4},[u.computationTimeMs!=null?(s(),c("span",Ft,p(u.computationTimeMs)+" ms ",1)):(s(),c("span",Et,"—"))],64)):h("",!0),t.key==="createdAt"?(s(),c("span",qt,p(x(Me)(u.createdAt)),1)):h("",!0),t.key==="action"?(s(),c(R,{key:6},[u.status!=="completed"?(s(),C(_,{key:0,size:"small",type:"link",loading:ae.value===u.id,onClick:ze=>De(u)},{default:l(()=>[...e[38]||(e[38]=[m(" 提交份额 ",-1)])]),_:1},8,["loading","onClick"])):(s(),c("span",Jt," hash "+p(u.resultHash?.slice(0,8)||"—"),1))],64)):h("",!0)]),emptyText:l(()=>[y("div",Ht,[a(x(pe),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),e[39]||(e[39]=m(' 暂无 MPC 计算,点"操作 → 创建 MPC 计算"创建第一个 ',-1))])]),_:1},8,["data-source","pagination","loading"])]),_:1})]),_:1},8,["activeKey"]),a(Q,{open:G.value,"onUpdate:open":e[10]||(e[10]=t=>G.value=t),title:"创建联邦学习模型","confirm-loading":A.value,width:540,"ok-text":"创建","cancel-text":"取消",onOk:Ee,onCancel:_e},{default:l(()=>[a(Y,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:l(()=>[a(z,{label:"模型名称",required:""},{default:l(()=>[a(I,{value:d.name,"onUpdate:value":e[4]||(e[4]=t=>d.name=t),placeholder:"例如: fraud-detector"},null,8,["value"])]),_:1}),a(z,{label:"模型类型"},{default:l(()=>[a(I,{value:d.modelType,"onUpdate:value":e[5]||(e[5]=t=>d.modelType=t),placeholder:"neural_network(默认)"},null,8,["value"])]),_:1}),a(z,{label:"架构"},{default:l(()=>[a(I,{value:d.architecture,"onUpdate:value":e[6]||(e[6]=t=>d.architecture=t),placeholder:"mlp(默认)"},null,8,["value"])]),_:1}),a(z,{label:"总轮次"},{default:l(()=>[a(E,{value:d.rounds,"onUpdate:value":e[7]||(e[7]=t=>d.rounds=t),min:1,max:1e3,style:{width:"100%"}},null,8,["value"])]),_:1}),a(z,{label:"学习率"},{default:l(()=>[a(E,{value:d.lr,"onUpdate:value":e[8]||(e[8]=t=>d.lr=t),min:0,max:1,step:.001,style:{width:"100%"}},null,8,["value"])]),_:1}),a(z,{label:"参与方数量"},{default:l(()=>[a(E,{value:d.participants,"onUpdate:value":e[9]||(e[9]=t=>d.participants=t),min:0,max:1e3,style:{width:"100%"}},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"]),a(Q,{open:W.value,"onUpdate:open":e[15]||(e[15]=t=>W.value=t),title:"创建 MPC 计算","confirm-loading":A.value,width:520,"ok-text":"创建","cancel-text":"取消",onOk:qe,onCancel:be},{default:l(()=>[a(Y,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:l(()=>[a(z,{label:"计算类型",required:""},{default:l(()=>[a(I,{value:k.type,"onUpdate:value":e[11]||(e[11]=t=>k.type=t),placeholder:"例如: sum / multiplication"},null,8,["value"])]),_:1}),a(z,{label:"协议"},{default:l(()=>[a(Qe,{value:k.protocol,"onUpdate:value":e[12]||(e[12]=t=>k.protocol=t)},{default:l(()=>[(s(!0),c(R,null,L(x(Ae),t=>(s(),C(Ye,{key:t,value:t},{default:l(()=>[m(p(t),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1}),a(z,{label:"参与方 ID"},{default:l(()=>[a(Ce,{value:k.participants,"onUpdate:value":e[13]||(e[13]=t=>k.participants=t),placeholder:"逗号分隔,例如: alice,bob,carol","auto-size":{minRows:2,maxRows:4}},null,8,["value"])]),_:1}),a(z,{label:"所需份额"},{default:l(()=>[a(E,{value:k.threshold,"onUpdate:value":e[14]||(e[14]=t=>k.threshold=t),min:2,max:100,placeholder:"留空自动取半数",style:{width:"100%"}},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"]),a(Q,{open:ne.value,"onUpdate:open":e[21]||(e[21]=t=>ne.value=t),title:"差分隐私发布","confirm-loading":F.value,width:520,"ok-text":"发布","cancel-text":"关闭",onOk:Ie},{default:l(()=>[a(Y,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:l(()=>[a(z,{label:"数据",required:""},{default:l(()=>[a(I,{value:S.data,"onUpdate:value":e[16]||(e[16]=t=>S.data=t),placeholder:"数字或 JSON 数组,例如 10 或 [1,2,3]"},null,8,["value"])]),_:1}),a(z,{label:"噪声机制"},{default:l(()=>[a(J,{value:S.mechanism,"onUpdate:value":e[17]||(e[17]=t=>S.mechanism=t)},{default:l(()=>[(s(!0),c(R,null,L(x(ut),t=>(s(),C($,{key:t,value:t},{default:l(()=>[m(p(t),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1}),a(z,{label:"ε (epsilon)"},{default:l(()=>[a(E,{value:S.epsilon,"onUpdate:value":e[18]||(e[18]=t=>S.epsilon=t),min:0,step:.01,style:{width:"100%"}},null,8,["value"])]),_:1}),a(z,{label:"δ (delta)"},{default:l(()=>[a(E,{value:S.delta,"onUpdate:value":e[19]||(e[19]=t=>S.delta=t),min:0,step:1e-6,style:{width:"100%"}},null,8,["value"])]),_:1}),a(z,{label:"敏感度"},{default:l(()=>[a(E,{value:S.sensitivity,"onUpdate:value":e[20]||(e[20]=t=>S.sensitivity=t),min:0,step:.1,style:{width:"100%"}},null,8,["value"])]),_:1})]),_:1}),O.value?(s(),C(T,{key:0,size:"small",style:{background:"var(--bg-base)","margin-top":"8px"}},{default:l(()=>[O.value.published?(s(),c(R,{key:0},[a(U,{title:"加噪后数据",value:O.value.data,precision:3,"value-style":{color:"#52c41a"}},null,8,["value"]),y("div",Dt,[y("div",null,"消耗预算: "+p(O.value.budgetSpent.toFixed(3)),1),y("div",null,"剩余预算: "+p(O.value.budgetRemaining.toFixed(3)),1),y("div",null,"机制: "+p(O.value.mechanism)+" (ε="+p(O.value.epsilon)+")",1)])],64)):(s(),C(U,{key:1,title:"发布失败",value:O.value.reason||"unknown","value-style":{color:"#ff4d4f"}},null,8,["value"]))]),_:1})):h("",!0)]),_:1},8,["open","confirm-loading"]),a(Q,{open:ie.value,"onUpdate:open":e[25]||(e[25]=t=>ie.value=t),title:"同态加密查询","confirm-loading":ee.value,width:500,"ok-text":"查询","cancel-text":"关闭",onOk:Ve},{default:l(()=>[a(Y,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:l(()=>[a(z,{label:"数据",required:""},{default:l(()=>[a(Ce,{value:j.data,"onUpdate:value":e[22]||(e[22]=t=>j.data=t),placeholder:"JSON 数组,例如 [1,2,3,4,5]","auto-size":{minRows:2,maxRows:4}},null,8,["value"])]),_:1}),a(z,{label:"操作"},{default:l(()=>[a(J,{value:j.operation,"onUpdate:value":e[23]||(e[23]=t=>j.operation=t)},{default:l(()=>[(s(!0),c(R,null,L(x(dt),t=>(s(),C($,{key:t,value:t},{default:l(()=>[m(p(t),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1}),a(z,{label:"同态方案"},{default:l(()=>[a(J,{value:j.scheme,"onUpdate:value":e[24]||(e[24]=t=>j.scheme=t)},{default:l(()=>[(s(!0),c(R,null,L(x(pt),t=>(s(),C($,{key:t,value:t},{default:l(()=>[m(p(t),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})]),_:1}),P.value?(s(),C(T,{key:0,size:"small",style:{background:"var(--bg-base)","margin-top":"8px"}},{default:l(()=>[a(U,{title:"加密计算结果",value:P.value.result,"value-style":{color:"#1677ff"}},null,8,["value"]),y("div",It,[y("div",null,"方案: "+p(P.value.scheme),1),y("div",null,"操作: "+p(P.value.operation),1),y("div",null,"输入项数: "+p(P.value.inputCount),1),P.value.encrypted?(s(),C(N,{key:0,color:"green",style:{"margin-top":"4px","font-size":"10px"}},{default:l(()=>[...e[40]||(e[40]=[m("已加密",-1)])]),_:1})):h("",!0)])]),_:1})):h("",!0)]),_:1},8,["open","confirm-loading"])])}}},na=et(Vt,[["__scopeId","data-v-70813c86"]]);export{na as default};
@@ -1 +0,0 @@
1
- import{k as O,r as v,j as h,l as A,F as f,D as i,I as y,u as s,c as r,x as d,H as C,L,q as p,B as F,v as u,J as g,m as M}from"./vendor-BVetwVfk.js";import{u as N}from"./ws-Bv7YH0VB.js";import{p as Q}from"./parsers-DftYMnlk.js";import{u as V}from"./chat-CVn-r3oV.js";import{_ as $}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{b as D,Y as E,a9 as R}from"./icons-ukMaZ3tx.js";const T=O("skills",()=>{const _=v(!1),e=v([]),c=v(""),m=v("all"),x=h(()=>{const n=new Set(["all"]);return e.value.forEach(l=>{l.category&&n.add(l.category),l.executionMode&&n.add(l.executionMode)}),[...n]}),k=h(()=>{let n=e.value;if(m.value!=="all"&&(n=n.filter(l=>l.category===m.value||l.executionMode===m.value)),c.value){const l=c.value.toLowerCase();n=n.filter(o=>o.name?.toLowerCase().includes(l)||o.description?.toLowerCase().includes(l)||o.title?.toLowerCase().includes(l))}return n});async function b(){const n=N();_.value=!0;try{const{output:l}=await n.execute("skill list",2e4),o=Q(l);e.value=o}catch(l){console.error("Failed to load skills:",l)}finally{_.value=!1}}return{loading:_,allSkills:e,searchQuery:c,selectedCategory:m,categories:x,filteredSkills:k,loadSkills:b}}),U={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},H={class:"page-sub"},J={style:{display:"flex",gap:"12px","margin-bottom":"20px","flex-wrap":"wrap"}},P={key:0,style:{"text-align":"center",padding:"60px"}},W={key:1,class:"skills-grid"},Y={style:{display:"flex","justify-content":"space-between","align-items":"flex-start"}},G={style:{flex:"1","min-width":"0"}},K={style:{"font-weight":"500",color:"#e0e0e0","font-size":"14px","margin-bottom":"4px","font-family":"monospace"}},X={style:{color:"var(--text-secondary)","font-size":"12px","line-height":"1.5"}},Z={style:{"margin-left":"12px","flex-shrink":"0"}},ee={style:{"margin-top":"10px",display:"flex","justify-content":"flex-end"}},te={key:2,style:{"text-align":"center",padding:"60px",color:"var(--text-muted)"}},oe={__name:"Skills",setup(_){const e=T(),c=V(),m=F(),x=h(()=>e.categories.filter(o=>o!=="all").slice(0,6));function k(o){return{"built-in":"内置","cli-direct":"CLI",agent:"Agent","llm-query":"LLM",hybrid:"混合",workspace:"工作区",marketplace:"市场"}[o]||o}function b(o){return{"cli-direct":"CLI",agent:"Agent","llm-query":"LLM",hybrid:"混合","built-in":"内置"}[o]||o||"未知"}function n(o){return{"cli-direct":"cyan",agent:"purple","llm-query":"blue",hybrid:"orange","built-in":"green"}[o]||"default"}async function l(o){await c.createSession("agent"),m.push("/chat"),setTimeout(()=>{c.currentSessionId&&c.sendMessage(c.currentSessionId,`/skill run ${o}`)},300)}return A(()=>{e.allSkills.length||e.loadSkills()}),(o,t)=>{const S=p("a-button"),z=p("a-input-search"),w=p("a-radio-button"),I=p("a-radio-group"),q=p("a-spin"),B=p("a-tag"),j=p("a-card");return u(),f("div",null,[i("div",U,[i("div",null,[t[3]||(t[3]=i("h2",{class:"page-title"},"技能管理",-1)),i("p",H,y(s(e).allSkills.length)+" 个可用技能",1)]),r(S,{type:"primary",ghost:"",loading:s(e).loading,onClick:t[0]||(t[0]=a=>s(e).loadSkills())},{icon:d(()=>[r(s(E))]),default:d(()=>[t[4]||(t[4]=g(" 刷新 ",-1))]),_:1},8,["loading"])]),i("div",J,[r(z,{value:s(e).searchQuery,"onUpdate:value":t[1]||(t[1]=a=>s(e).searchQuery=a),placeholder:"搜索技能名称或描述...",style:{width:"300px"},"allow-clear":""},null,8,["value"]),r(I,{value:s(e).selectedCategory,"onUpdate:value":t[2]||(t[2]=a=>s(e).selectedCategory=a),"button-style":"solid"},{default:d(()=>[r(w,{value:"all"},{default:d(()=>[...t[5]||(t[5]=[g("全部",-1)])]),_:1}),(u(!0),f(C,null,L(x.value,a=>(u(),M(w,{key:a,value:a},{default:d(()=>[g(y(k(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),s(e).loading?(u(),f("div",P,[r(q,{size:"large"}),t[6]||(t[6]=i("div",{style:{color:"var(--text-muted)","margin-top":"12px"}},"加载技能中...",-1))])):s(e).filteredSkills.length?(u(),f("div",W,[(u(!0),f(C,null,L(s(e).filteredSkills,a=>(u(),M(j,{key:a.name,class:"skill-card",size:"small",hoverable:"",style:{background:"var(--bg-card)","border-color":"var(--border-color)",cursor:"default"}},{default:d(()=>[i("div",Y,[i("div",G,[i("div",K,y(a.name),1),i("div",X,y(a.description||"暂无描述"),1)]),i("div",Z,[r(B,{color:n(a.executionMode),style:{"font-size":"10px"}},{default:d(()=>[g(y(b(a.executionMode)),1)]),_:2},1032,["color"])])]),i("div",ee,[r(S,{size:"small",type:"primary",ghost:"",onClick:le=>l(a.name)},{icon:d(()=>[r(s(R))]),default:d(()=>[t[7]||(t[7]=g(" 运行 ",-1))]),_:1},8,["onClick"])])]),_:2},1024))),128))])):(u(),f("div",te,[r(s(D),{style:{"font-size":"48px","margin-bottom":"16px",display:"block"}}),i("div",null,y(s(e).allSkills.length?"没有匹配的技能":"点击刷新加载技能列表"),1)]))])}}},ce=$(oe,[["__scopeId","data-v-a1cd8dd9"]]);export{ce as default};
@@ -1 +0,0 @@
1
- .template-card[data-v-22e50acf]{transition:border-color .2s,box-shadow .2s}.template-card[data-v-22e50acf]:hover{border-color:#1677ff!important;box-shadow:0 0 0 2px #1677ff26}
@@ -1 +0,0 @@
1
- import{l as fe,F as x,D as n,c as t,x as o,r as c,q as l,a as ye,B as ge,v as p,H as A,L as R,u,I as d,J as i,m as y,G as U}from"./vendor-BVetwVfk.js";import{u as _e}from"./ws-Bv7YH0VB.js";import{_ as xe}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{R as M,a9 as G,b as be,y as H,ac as ke,a as W,aq as we,ap as Ce}from"./icons-ukMaZ3tx.js";import{a as h}from"./index-BbqCdQXU.js";import"./index-ZZ_4A9um.js";import"./useConfigInject-BKqJUQaF.js";import"./transition-CGYDOK3N.js";import"./Keyframes-C7fCrnlS.js";import"./Portal-CHsntPCQ.js";import"./index-U4Zd5IK6.js";const ze={style:{display:"flex","align-items":"flex-start",gap:"10px"}},he={style:{flex:"1","min-width":"0"}},Pe={style:{"font-weight":"500",color:"#e0e0e0","font-size":"14px","font-family":"monospace","margin-bottom":"4px"}},Oe={style:{color:"var(--text-secondary)","font-size":"12px","line-height":"1.5"}},Ie={style:{"margin-top":"12px","text-align":"right"}},Te={style:{margin:"0","font-size":"12px","white-space":"pre-wrap","max-height":"200px","overflow-y":"auto"}},$e={key:0,style:{"text-align":"center",padding:"40px"}},Be={style:{display:"flex","align-items":"flex-start",gap:"10px"}},je={style:{flex:"1","min-width":"0"}},Se={style:{"font-weight":"500",color:"#e0e0e0","font-size":"14px","margin-bottom":"4px"}},Ne={style:{color:"var(--text-secondary)","font-size":"12px","line-height":"1.5"}},Ae={key:0,style:{"margin-top":"4px"}},Re={style:{"margin-top":"12px","text-align":"right"}},Ue={style:{margin:"0","font-size":"12px","white-space":"pre-wrap","max-height":"200px","overflow-y":"auto"}},qe={style:{"margin-bottom":"16px"}},De={style:{display:"flex","align-items":"center",gap:"8px","margin-bottom":"8px"}},Le={style:{"font-weight":"500",color:"#e0e0e0","font-size":"14px",flex:"1",overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"}},Fe={style:{color:"var(--text-secondary)","font-size":"12px","line-height":"1.5","max-height":"60px",overflow:"hidden","text-overflow":"ellipsis","white-space":"pre-wrap"}},Je={style:{"margin-top":"12px",display:"flex",gap:"8px","justify-content":"flex-end"}},Y="cc_prompt_templates",Ke={__name:"Templates",setup(Ve){const P=_e(),Q=ge(),q=c("project"),O=c(""),v=c(null),b=c(!1),I=c(""),X=[{name:"code-project",description:"代码项目 — 代码审查、重构、单元测试"},{name:"data-science",description:"数据科学 — ML/数据分析、可视化"},{name:"devops",description:"DevOps — 基础设施、部署、监控"},{name:"medical-triage",description:"医疗分诊 — 症状分析、分诊建议"},{name:"agriculture-expert",description:"农业专家 — 作物管理、病虫害"},{name:"general-assistant",description:"通用助手 — 日常问答、任务管理"},{name:"ai-media-creator",description:"AI 媒体创作 — 图文生成、视频脚本"},{name:"ai-doc-creator",description:"AI 文档创作 — 文档生成、格式转换"},{name:"empty",description:"空白模板 — 最小项目结构"}];function Z(s){I.value=s,b.value=!0}async function ee(){b.value=!1;const s=I.value;if(s){O.value=s,v.value=null;try{const e=`init --template ${s} --yes`,{output:m,exitCode:_}=await P.execute(e,3e4);v.value={success:_===0,output:m}}catch(e){v.value={success:!1,output:`初始化失败: ${e.message}`}}finally{O.value=""}}}const T=c(!1),k=c([]),$=c(""),f=c(null);async function te(){T.value=!0;try{const{output:s}=await P.execute("bi templates --json",15e3),e=JSON.parse(s);k.value=Array.isArray(e)?e:e.templates||[]}catch{k.value=[]}finally{T.value=!1}}async function oe(s){$.value=s,f.value=null;try{const e=`bi dashboard create --template ${s} --json`,{output:m,exitCode:_}=await P.execute(e,3e4);f.value={success:_===0,output:m}}catch(e){f.value={success:!1,output:`创建失败: ${e.message}`}}finally{$.value=""}}const g=c([]),w=c(!1),r=ye({name:"",category:"general",content:""});function ae(){try{const s=localStorage.getItem(Y);g.value=s?JSON.parse(s):[]}catch{g.value=[]}}function D(){localStorage.setItem(Y,JSON.stringify(g.value))}function ne(){!r.name||!r.content||(g.value.push({name:r.name,category:r.category,content:r.content}),D(),L(),h.success("模板已保存"))}function L(){w.value=!1,r.name="",r.category="general",r.content=""}function se(s){g.value.splice(s,1),D(),h.success("模板已删除")}function le(s){navigator.clipboard.writeText(s.content).then(()=>{h.success("已复制到剪贴板")}).catch(()=>{h.error("复制失败")})}function ie(s){Q.push({path:"/chat",query:{prompt:s.content}})}function re(s){return{general:"blue",code:"green",writing:"orange",analysis:"purple"}[s]||"default"}return fe(()=>{ae(),te()}),(s,e)=>{const m=l("a-button"),_=l("a-card"),B=l("a-col"),j=l("a-row"),F=l("a-alert"),S=l("a-tab-pane"),pe=l("a-spin"),J=l("a-empty"),K=l("a-tag"),ue=l("a-tabs"),V=l("a-modal"),ce=l("a-input"),N=l("a-form-item"),C=l("a-select-option"),de=l("a-select"),me=l("a-textarea"),ve=l("a-form");return p(),x("div",null,[e[27]||(e[27]=n("div",{style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},[n("div",null,[n("h2",{class:"page-title"},"模板中心"),n("p",{class:"page-sub"},"项目模板 / BI 模板 / Prompt 模板")])],-1)),t(ue,{activeKey:q.value,"onUpdate:activeKey":e[3]||(e[3]=a=>q.value=a),type:"card"},{default:o(()=>[t(S,{key:"project"},{tab:o(()=>[t(u(be)),e[10]||(e[10]=i(" 项目模板 ",-1))]),default:o(()=>[t(j,{gutter:[16,16]},{default:o(()=>[(p(),x(A,null,R(X,a=>t(B,{key:a.name,xs:24,sm:12,lg:8},{default:o(()=>[t(_,{size:"small",hoverable:"",class:"template-card",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[n("div",ze,[t(u(M),{style:{"font-size":"24px",color:"#1677ff","flex-shrink":"0","margin-top":"2px"}}),n("div",he,[n("div",Pe,d(a.name),1),n("div",Oe,d(a.description),1)])]),n("div",Ie,[t(m,{type:"primary",size:"small",loading:O.value===a.name,onClick:z=>Z(a.name)},{icon:o(()=>[t(u(G))]),default:o(()=>[e[11]||(e[11]=i(" 初始化 ",-1))]),_:1},8,["loading","onClick"])])]),_:2},1024)]),_:2},1024)),64))]),_:1}),v.value?(p(),y(F,{key:0,message:v.value.success?"初始化成功":"初始化失败",type:v.value.success?"success":"error","show-icon":"",closable:"",style:{"margin-top":"16px"},onClose:e[0]||(e[0]=a=>v.value=null)},{description:o(()=>[n("pre",Te,d(v.value.output),1)]),_:1},8,["message","type"])):U("",!0)]),_:1}),t(S,{key:"bi"},{tab:o(()=>[t(u(H)),e[12]||(e[12]=i(" BI 模板 ",-1))]),default:o(()=>[T.value?(p(),x("div",$e,[t(pe),e[13]||(e[13]=n("div",{style:{color:"var(--text-muted)","margin-top":"8px"}},"加载 BI 模板...",-1))])):k.value.length?(p(),y(j,{key:2,gutter:[16,16]},{default:o(()=>[(p(!0),x(A,null,R(k.value,a=>(p(),y(B,{key:a.id,xs:24,sm:12,lg:8},{default:o(()=>[t(_,{size:"small",hoverable:"",class:"template-card",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[n("div",Be,[t(u(H),{style:{"font-size":"24px",color:"#722ed1","flex-shrink":"0","margin-top":"2px"}}),n("div",je,[n("div",Se,d(a.name),1),n("div",Ne,d(a.description||"暂无描述"),1),a.id?(p(),x("div",Ae,[t(K,{size:"small",color:"purple"},{default:o(()=>[i(d(a.id),1)]),_:2},1024)])):U("",!0)])]),n("div",Re,[t(m,{type:"primary",size:"small",loading:$.value===a.id,onClick:z=>oe(a.id)},{icon:o(()=>[t(u(G))]),default:o(()=>[e[14]||(e[14]=i(" 创建仪表板 ",-1))]),_:1},8,["loading","onClick"])])]),_:2},1024)]),_:2},1024))),128))]),_:1})):(p(),y(J,{key:1,description:"暂无 BI 模板"})),f.value?(p(),y(F,{key:3,message:f.value.success?"仪表板创建成功":"创建失败",type:f.value.success?"success":"error","show-icon":"",closable:"",style:{"margin-top":"16px"},onClose:e[1]||(e[1]=a=>f.value=null)},{description:o(()=>[n("pre",Ue,d(f.value.output),1)]),_:1},8,["message","type"])):U("",!0)]),_:1}),t(S,{key:"prompts"},{tab:o(()=>[t(u(W)),e[15]||(e[15]=i(" Prompt 模板 ",-1))]),default:o(()=>[n("div",qe,[t(m,{type:"primary",onClick:e[2]||(e[2]=a=>w.value=!0)},{icon:o(()=>[t(u(ke))]),default:o(()=>[e[16]||(e[16]=i(" 新建模板 ",-1))]),_:1})]),g.value.length?(p(),y(j,{key:1,gutter:[16,16]},{default:o(()=>[(p(!0),x(A,null,R(g.value,(a,z)=>(p(),y(B,{key:z,xs:24,sm:12,lg:8},{default:o(()=>[t(_,{size:"small",class:"template-card",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[n("div",De,[t(u(W),{style:{"font-size":"18px",color:"#52c41a"}}),n("span",Le,d(a.name),1),t(K,{color:re(a.category),size:"small"},{default:o(()=>[i(d(a.category),1)]),_:2},1032,["color"])]),n("div",Fe,d(a.content.length>120?a.content.slice(0,120)+"...":a.content),1),n("div",Je,[t(m,{size:"small",onClick:E=>ie(a)},{icon:o(()=>[t(u(M))]),default:o(()=>[e[17]||(e[17]=i(" 使用 ",-1))]),_:1},8,["onClick"]),t(m,{size:"small",onClick:E=>le(a)},{icon:o(()=>[t(u(we))]),default:o(()=>[e[18]||(e[18]=i(" 复制 ",-1))]),_:1},8,["onClick"]),t(m,{size:"small",danger:"",onClick:E=>se(z)},{icon:o(()=>[t(u(Ce))]),default:o(()=>[e[19]||(e[19]=i(" 删除 ",-1))]),_:1},8,["onClick"])])]),_:2},1024)]),_:2},1024))),128))]),_:1})):(p(),y(J,{key:0,description:"暂无 Prompt 模板,点击上方按钮创建"}))]),_:1})]),_:1},8,["activeKey"]),t(V,{open:b.value,"onUpdate:open":e[4]||(e[4]=a=>b.value=a),title:"确认初始化",onOk:ee,onCancel:e[5]||(e[5]=a=>b.value=!1),"ok-text":"确认","cancel-text":"取消"},{default:o(()=>[n("p",null,[e[20]||(e[20]=i("确定要使用模板 ",-1)),n("strong",null,d(I.value),1),e[21]||(e[21]=i(" 初始化项目吗?",-1))]),e[22]||(e[22]=n("p",{style:{color:"var(--text-muted)","font-size":"12px"}},"这将在当前工作目录创建项目结构。",-1))]),_:1},8,["open"]),t(V,{open:w.value,"onUpdate:open":e[9]||(e[9]=a=>w.value=a),title:"新建 Prompt 模板",onOk:ne,onCancel:L,"ok-text":"保存","cancel-text":"取消","ok-button-props":{disabled:!r.name||!r.content}},{default:o(()=>[t(ve,{layout:"vertical"},{default:o(()=>[t(N,{label:"模板名称",required:""},{default:o(()=>[t(ce,{value:r.name,"onUpdate:value":e[6]||(e[6]=a=>r.name=a),placeholder:"输入模板名称"},null,8,["value"])]),_:1}),t(N,{label:"分类"},{default:o(()=>[t(de,{value:r.category,"onUpdate:value":e[7]||(e[7]=a=>r.category=a),style:{width:"100%"}},{default:o(()=>[t(C,{value:"general"},{default:o(()=>[...e[23]||(e[23]=[i("general",-1)])]),_:1}),t(C,{value:"code"},{default:o(()=>[...e[24]||(e[24]=[i("code",-1)])]),_:1}),t(C,{value:"writing"},{default:o(()=>[...e[25]||(e[25]=[i("writing",-1)])]),_:1}),t(C,{value:"analysis"},{default:o(()=>[...e[26]||(e[26]=[i("analysis",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),t(N,{label:"模板内容",required:""},{default:o(()=>[t(me,{value:r.content,"onUpdate:value":e[8]||(e[8]=a=>r.content=a),rows:6,placeholder:"输入 Prompt 模板内容"},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","ok-button-props"])])}}},ot=xe(Ke,[["__scopeId","data-v-22e50acf"]]);export{ot as default};
@@ -1 +0,0 @@
1
- import{_ as P,l as I}from"./index-ZZ_4A9um.js";import{P as _}from"./index-U4Zd5IK6.js";import{w as z}from"./raf-Deuc0E8-.js";import{_ as $,t as fe,c as Ct,K as Be,x as Ve,M as Fe,N as $t,O as Le,P as Ie,y as et}from"./useConfigInject-BKqJUQaF.js";import{a as U,s as G,P as We}from"./motion-BR7NF0vx.js";import{c as C,$ as xt,a0 as ce,a5 as ze,d as Q,r as W,w as V,l as pe,o as Xe,s as x,j as K,n as wt,_ as Ye,M as je,a1 as Ue,P as Ht,a4 as Ge,H as ke,p as Ke,i as qe}from"./vendor-BVetwVfk.js";import{g as de,u as Ze}from"./Portal-CHsntPCQ.js";import{c as he}from"./vnode-I9keNa_U.js";import{i as Qe}from"./isVisible-C7tPsqfj.js";import{i as Je}from"./ResizeObserver.es-D6qJbdzf.js";import{l as tn,M as ve,r as en,S as Rt,a as at,d as nn,b as Tt,c as ge,i as on,f as rn,g as Bt,j as Vt}from"./_getTag-CWA3v-Ds.js";import{a as sn}from"./transition-CGYDOK3N.js";function an(){return""}function un(t){return t?t.ownerDocument:window.document}function me(){}const ln=()=>({action:_.oneOfType([_.string,_.arrayOf(_.string)]).def([]),showAction:_.any.def([]),hideAction:_.any.def([]),getPopupClassNameFromAlign:_.any.def(an),onPopupVisibleChange:Function,afterPopupVisibleChange:_.func.def(me),popup:_.any,arrow:_.bool.def(!0),popupStyle:{type:Object,default:void 0},prefixCls:_.string.def("rc-trigger-popup"),popupClassName:_.string.def(""),popupPlacement:String,builtinPlacements:_.object,popupTransitionName:String,popupAnimation:_.any,mouseEnterDelay:_.number.def(0),mouseLeaveDelay:_.number.def(.1),zIndex:Number,focusDelay:_.number.def(0),blurDelay:_.number.def(.15),getPopupContainer:Function,getDocument:_.func.def(un),forceRender:{type:Boolean,default:void 0},destroyPopupOnHide:{type:Boolean,default:!1},mask:{type:Boolean,default:!1},maskClosable:{type:Boolean,default:!0},popupAlign:_.object.def(()=>({})),popupVisible:{type:Boolean,default:void 0},defaultPopupVisible:{type:Boolean,default:!1},maskTransitionName:String,maskAnimation:String,stretch:String,alignPoint:{type:Boolean,default:void 0},autoDestroy:{type:Boolean,default:!1},mobile:Object,getTriggerDOMNode:Function}),Mt={visible:Boolean,prefixCls:String,zIndex:Number,destroyPopupOnHide:Boolean,forceRender:Boolean,arrow:{type:Boolean,default:!0},animation:[String,Object],transitionName:String,stretch:{type:String},align:{type:Object},point:{type:Object},getRootDomNode:{type:Function},getClassNameFromAlign:{type:Function},onAlign:{type:Function},onMouseenter:{type:Function},onMouseleave:{type:Function},onMousedown:{type:Function},onTouchstart:{type:Function}},fn=P(P({},Mt),{mobile:{type:Object}}),cn=P(P({},Mt),{mask:Boolean,mobile:{type:Object},maskAnimation:String,maskTransitionName:String});function ye(t){const{prefixCls:e,visible:n,zIndex:i,mask:o,maskAnimation:r,maskTransitionName:s}=t;if(!o)return null;let a={};return(s||r)&&(a=de({prefixCls:e,transitionName:s,animation:r})),C(xt,$({appear:!0},a),{default:()=>[ce(C("div",{style:{zIndex:i},class:`${e}-mask`},null),[[ze("if"),n]])]})}ye.displayName="Mask";const pn=Q({compatConfig:{MODE:3},name:"MobilePopupInner",inheritAttrs:!1,props:fn,emits:["mouseenter","mouseleave","mousedown","touchstart","align"],setup(t,e){let{expose:n,slots:i}=e;const o=W();return n({forceAlign:()=>{},getElement:()=>o.value}),()=>{var r;const{zIndex:s,visible:a,prefixCls:l,mobile:{popupClassName:u,popupStyle:h,popupMotion:p={},popupRender:c}={}}=t,f=P({zIndex:s},h);let d=fe((r=i.default)===null||r===void 0?void 0:r.call(i));d.length>1&&(d=C("div",{class:`${l}-content`},[d])),c&&(d=c(d));const g=Ct(l,u);return C(xt,$({ref:o},p),{default:()=>[a?C("div",{class:g,style:f},[d]):null]})}}});var dn=function(t,e,n,i){function o(r){return r instanceof n?r:new n(function(s){s(r)})}return new(n||(n=Promise))(function(r,s){function a(h){try{u(i.next(h))}catch(p){s(p)}}function l(h){try{u(i.throw(h))}catch(p){s(p)}}function u(h){h.done?r(h.value):o(h.value).then(a,l)}u((i=i.apply(t,e||[])).next())})};const Ft=["measure","align",null,"motion"],hn=((t,e)=>{const n=x(null),i=x(),o=x(!1);function r(l){o.value||(n.value=l)}function s(){z.cancel(i.value)}function a(l){s(),i.value=z(()=>{let u=n.value;switch(n.value){case"align":u="motion";break;case"motion":u="stable";break}r(u),l?.()})}return V(t,()=>{r("measure")},{immediate:!0,flush:"post"}),pe(()=>{V(n,()=>{n.value==="measure"&&e(),n.value&&(i.value=z(()=>dn(void 0,void 0,void 0,function*(){const l=Ft.indexOf(n.value),u=Ft[l+1];u&&l!==-1&&r(u)})))},{immediate:!0,flush:"post"})}),Xe(()=>{o.value=!0,s()}),[n,a]}),vn=(t=>{const e=x({width:0,height:0});function n(o){e.value={width:o.offsetWidth,height:o.offsetHeight}}return[K(()=>{const o={};if(t.value){const{width:r,height:s}=e.value;t.value.indexOf("height")!==-1&&s?o.height=`${s}px`:t.value.indexOf("minHeight")!==-1&&s&&(o.minHeight=`${s}px`),t.value.indexOf("width")!==-1&&r?o.width=`${r}px`:t.value.indexOf("minWidth")!==-1&&r&&(o.minWidth=`${r}px`)}return o}),n]});function Lt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),n.push.apply(n,i)}return n}function It(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Lt(Object(n),!0).forEach(function(i){gn(t,i,n[i])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Lt(Object(n)).forEach(function(i){Object.defineProperty(t,i,Object.getOwnPropertyDescriptor(n,i))})}return t}function bt(t){"@babel/helpers - typeof";return bt=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},bt(t)}function gn(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var j,mn={Webkit:"-webkit-",Moz:"-moz-",ms:"-ms-",O:"-o-"};function ut(){if(j!==void 0)return j;j="";var t=document.createElement("p").style,e="Transform";for(var n in mn)n+e in t&&(j=n);return j}function we(){return ut()?"".concat(ut(),"TransitionProperty"):"transitionProperty"}function ft(){return ut()?"".concat(ut(),"Transform"):"transform"}function Wt(t,e){var n=we();n&&(t.style[n]=e,n!=="transitionProperty"&&(t.style.transitionProperty=e))}function ht(t,e){var n=ft();n&&(t.style[n]=e,n!=="transform"&&(t.style.transform=e))}function yn(t){return t.style.transitionProperty||t.style[we()]}function wn(t){var e=window.getComputedStyle(t,null),n=e.getPropertyValue("transform")||e.getPropertyValue(ft());if(n&&n!=="none"){var i=n.replace(/[^0-9\-.,]/g,"").split(",");return{x:parseFloat(i[12]||i[4],0),y:parseFloat(i[13]||i[5],0)}}return{x:0,y:0}}var Tn=/matrix\((.*)\)/,bn=/matrix3d\((.*)\)/;function Pn(t,e){var n=window.getComputedStyle(t,null),i=n.getPropertyValue("transform")||n.getPropertyValue(ft());if(i&&i!=="none"){var o,r=i.match(Tn);if(r)r=r[1],o=r.split(",").map(function(a){return parseFloat(a,10)}),o[4]=e.x,o[5]=e.y,ht(t,"matrix(".concat(o.join(","),")"));else{var s=i.match(bn)[1];o=s.split(",").map(function(a){return parseFloat(a,10)}),o[12]=e.x,o[13]=e.y,ht(t,"matrix3d(".concat(o.join(","),")"))}}else ht(t,"translateX(".concat(e.x,"px) translateY(").concat(e.y,"px) translateZ(0)"))}var _n=/[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source,J;function zt(t){var e=t.style.display;t.style.display="none",t.offsetHeight,t.style.display=e}function X(t,e,n){var i=n;if(bt(e)==="object"){for(var o in e)e.hasOwnProperty(o)&&X(t,o,e[o]);return}if(typeof i<"u"){typeof i=="number"&&(i="".concat(i,"px")),t.style[e]=i;return}return J(t,e)}function On(t){var e,n,i,o=t.ownerDocument,r=o.body,s=o&&o.documentElement;return e=t.getBoundingClientRect(),n=Math.floor(e.left),i=Math.floor(e.top),n-=s.clientLeft||r.clientLeft||0,i-=s.clientTop||r.clientTop||0,{left:n,top:i}}function Te(t,e){var n=t["page".concat(e?"Y":"X","Offset")],i="scroll".concat(e?"Top":"Left");if(typeof n!="number"){var o=t.document;n=o.documentElement[i],typeof n!="number"&&(n=o.body[i])}return n}function be(t){return Te(t)}function Pe(t){return Te(t,!0)}function q(t){var e=On(t),n=t.ownerDocument,i=n.defaultView||n.parentWindow;return e.left+=be(i),e.top+=Pe(i),e}function St(t){return t!=null&&t==t.window}function _e(t){return St(t)?t.document:t.nodeType===9?t:t.ownerDocument}function Cn(t,e,n){var i=n,o="",r=_e(t);return i=i||r.defaultView.getComputedStyle(t,null),i&&(o=i.getPropertyValue(e)||i[e]),o}var xn=new RegExp("^(".concat(_n,")(?!px)[a-z%]+$"),"i"),Mn=/^(top|right|bottom|left)$/,vt="currentStyle",gt="runtimeStyle",B="left",Sn="px";function An(t,e){var n=t[vt]&&t[vt][e];if(xn.test(n)&&!Mn.test(e)){var i=t.style,o=i[B],r=t[gt][B];t[gt][B]=t[vt][B],i[B]=e==="fontSize"?"1em":n||0,n=i.pixelLeft+Sn,i[B]=o,t[gt][B]=r}return n===""?"auto":n}typeof window<"u"&&(J=window.getComputedStyle?Cn:An);function nt(t,e){return t==="left"?e.useCssRight?"right":t:e.useCssBottom?"bottom":t}function Xt(t){if(t==="left")return"right";if(t==="right")return"left";if(t==="top")return"bottom";if(t==="bottom")return"top"}function Yt(t,e,n){X(t,"position")==="static"&&(t.style.position="relative");var i=-999,o=-999,r=nt("left",n),s=nt("top",n),a=Xt(r),l=Xt(s);r!=="left"&&(i=999),s!=="top"&&(o=999);var u="",h=q(t);("left"in e||"top"in e)&&(u=yn(t)||"",Wt(t,"none")),"left"in e&&(t.style[a]="",t.style[r]="".concat(i,"px")),"top"in e&&(t.style[l]="",t.style[s]="".concat(o,"px")),zt(t);var p=q(t),c={};for(var f in e)if(e.hasOwnProperty(f)){var d=nt(f,n),g=f==="left"?i:o,w=h[f]-p[f];d===f?c[d]=g+w:c[d]=g-w}X(t,c),zt(t),("left"in e||"top"in e)&&Wt(t,u);var m={};for(var y in e)if(e.hasOwnProperty(y)){var b=nt(y,n),O=e[y]-h[y];y===b?m[b]=c[b]+O:m[b]=c[b]-O}X(t,m)}function Dn(t,e){var n=q(t),i=wn(t),o={x:i.x,y:i.y};"left"in e&&(o.x=i.x+e.left-n.left),"top"in e&&(o.y=i.y+e.top-n.top),Pn(t,o)}function En(t,e,n){if(n.ignoreShake){var i=q(t),o=i.left.toFixed(0),r=i.top.toFixed(0),s=e.left.toFixed(0),a=e.top.toFixed(0);if(o===s&&r===a)return}n.useCssRight||n.useCssBottom?Yt(t,e,n):n.useCssTransform&&ft()in document.body.style?Dn(t,e):Yt(t,e,n)}function At(t,e){for(var n=0;n<t.length;n++)e(t[n])}function Oe(t){return J(t,"boxSizing")==="border-box"}var Nn=["margin","border","padding"],Pt=-1,$n=2,_t=1,Hn=0;function Rn(t,e,n){var i={},o=t.style,r;for(r in e)e.hasOwnProperty(r)&&(i[r]=o[r],o[r]=e[r]);n.call(t);for(r in e)e.hasOwnProperty(r)&&(o[r]=i[r])}function k(t,e,n){var i=0,o,r,s;for(r=0;r<e.length;r++)if(o=e[r],o)for(s=0;s<n.length;s++){var a=void 0;o==="border"?a="".concat(o).concat(n[s],"Width"):a=o+n[s],i+=parseFloat(J(t,a))||0}return i}var D={getParent:function(e){var n=e;do n.nodeType===11&&n.host?n=n.host:n=n.parentNode;while(n&&n.nodeType!==1&&n.nodeType!==9);return n}};At(["Width","Height"],function(t){D["doc".concat(t)]=function(e){var n=e.document;return Math.max(n.documentElement["scroll".concat(t)],n.body["scroll".concat(t)],D["viewport".concat(t)](n))},D["viewport".concat(t)]=function(e){var n="client".concat(t),i=e.document,o=i.body,r=i.documentElement,s=r[n];return i.compatMode==="CSS1Compat"&&s||o&&o[n]||s}});function jt(t,e,n){var i=n;if(St(t))return e==="width"?D.viewportWidth(t):D.viewportHeight(t);if(t.nodeType===9)return e==="width"?D.docWidth(t):D.docHeight(t);var o=e==="width"?["Left","Right"]:["Top","Bottom"],r=Math.floor(e==="width"?t.getBoundingClientRect().width:t.getBoundingClientRect().height),s=Oe(t),a=0;(r==null||r<=0)&&(r=void 0,a=J(t,e),(a==null||Number(a)<0)&&(a=t.style[e]||0),a=Math.floor(parseFloat(a))||0),i===void 0&&(i=s?_t:Pt);var l=r!==void 0||s,u=r||a;return i===Pt?l?u-k(t,["border","padding"],o):a:l?i===_t?u:u+(i===$n?-k(t,["border"],o):k(t,["margin"],o)):a+k(t,Nn.slice(i),o)}var Bn={position:"absolute",visibility:"hidden",display:"block"};function Ut(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];var i,o=e[0];return o.offsetWidth!==0?i=jt.apply(void 0,e):Rn(o,Bn,function(){i=jt.apply(void 0,e)}),i}At(["width","height"],function(t){var e=t.charAt(0).toUpperCase()+t.slice(1);D["outer".concat(e)]=function(i,o){return i&&Ut(i,t,o?Hn:_t)};var n=t==="width"?["Left","Right"]:["Top","Bottom"];D[t]=function(i,o){var r=o;if(r!==void 0){if(i){var s=Oe(i);return s&&(r+=k(i,["padding","border"],n)),X(i,t,r)}return}return i&&Ut(i,t,Pt)}});function Ce(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}var v={getWindow:function(e){if(e&&e.document&&e.setTimeout)return e;var n=e.ownerDocument||e;return n.defaultView||n.parentWindow},getDocument:_e,offset:function(e,n,i){if(typeof n<"u")En(e,n,i||{});else return q(e)},isWindow:St,each:At,css:X,clone:function(e){var n,i={};for(n in e)e.hasOwnProperty(n)&&(i[n]=e[n]);var o=e.overflow;if(o)for(n in e)e.hasOwnProperty(n)&&(i.overflow[n]=e.overflow[n]);return i},mix:Ce,getWindowScrollLeft:function(e){return be(e)},getWindowScrollTop:function(e){return Pe(e)},merge:function(){for(var e={},n=0;n<arguments.length;n++)v.mix(e,n<0||arguments.length<=n?void 0:arguments[n]);return e},viewportWidth:0,viewportHeight:0};Ce(v,D);var mt=v.getParent;function Ot(t){if(v.isWindow(t)||t.nodeType===9)return null;var e=v.getDocument(t),n=e.body,i,o=v.css(t,"position"),r=o==="fixed"||o==="absolute";if(!r)return t.nodeName.toLowerCase()==="html"?null:mt(t);for(i=mt(t);i&&i!==n&&i.nodeType!==9;i=mt(i))if(o=v.css(i,"position"),o!=="static")return i;return null}var Gt=v.getParent;function Vn(t){if(v.isWindow(t)||t.nodeType===9)return!1;var e=v.getDocument(t),n=e.body,i=null;for(i=Gt(t);i&&i!==n&&i!==e;i=Gt(i)){var o=v.css(i,"position");if(o==="fixed")return!0}return!1}function Dt(t,e){for(var n={left:0,right:1/0,top:0,bottom:1/0},i=Ot(t),o=v.getDocument(t),r=o.defaultView||o.parentWindow,s=o.body,a=o.documentElement;i;){if((navigator.userAgent.indexOf("MSIE")===-1||i.clientWidth!==0)&&i!==s&&i!==a&&v.css(i,"overflow")!=="visible"){var l=v.offset(i);l.left+=i.clientLeft,l.top+=i.clientTop,n.top=Math.max(n.top,l.top),n.right=Math.min(n.right,l.left+i.clientWidth),n.bottom=Math.min(n.bottom,l.top+i.clientHeight),n.left=Math.max(n.left,l.left)}else if(i===s||i===a)break;i=Ot(i)}var u=null;if(!v.isWindow(t)&&t.nodeType!==9){u=t.style.position;var h=v.css(t,"position");h==="absolute"&&(t.style.position="fixed")}var p=v.getWindowScrollLeft(r),c=v.getWindowScrollTop(r),f=v.viewportWidth(r),d=v.viewportHeight(r),g=a.scrollWidth,w=a.scrollHeight,m=window.getComputedStyle(s);if(m.overflowX==="hidden"&&(g=r.innerWidth),m.overflowY==="hidden"&&(w=r.innerHeight),t.style&&(t.style.position=u),e||Vn(t))n.left=Math.max(n.left,p),n.top=Math.max(n.top,c),n.right=Math.min(n.right,p+f),n.bottom=Math.min(n.bottom,c+d);else{var y=Math.max(g,p+f);n.right=Math.min(n.right,y);var b=Math.max(w,c+d);n.bottom=Math.min(n.bottom,b)}return n.top>=0&&n.left>=0&&n.bottom>n.top&&n.right>n.left?n:null}function Fn(t,e,n,i){var o=v.clone(t),r={width:e.width,height:e.height};return i.adjustX&&o.left<n.left&&(o.left=n.left),i.resizeWidth&&o.left>=n.left&&o.left+r.width>n.right&&(r.width-=o.left+r.width-n.right),i.adjustX&&o.left+r.width>n.right&&(o.left=Math.max(n.right-r.width,n.left)),i.adjustY&&o.top<n.top&&(o.top=n.top),i.resizeHeight&&o.top>=n.top&&o.top+r.height>n.bottom&&(r.height-=o.top+r.height-n.bottom),i.adjustY&&o.top+r.height>n.bottom&&(o.top=Math.max(n.bottom-r.height,n.top)),v.mix(o,r)}function Et(t){var e,n,i;if(!v.isWindow(t)&&t.nodeType!==9)e=v.offset(t),n=v.outerWidth(t),i=v.outerHeight(t);else{var o=v.getWindow(t);e={left:v.getWindowScrollLeft(o),top:v.getWindowScrollTop(o)},n=v.viewportWidth(o),i=v.viewportHeight(o)}return e.width=n,e.height=i,e}function kt(t,e){var n=e.charAt(0),i=e.charAt(1),o=t.width,r=t.height,s=t.left,a=t.top;return n==="c"?a+=r/2:n==="b"&&(a+=r),i==="c"?s+=o/2:i==="r"&&(s+=o),{left:s,top:a}}function it(t,e,n,i,o){var r=kt(e,n[1]),s=kt(t,n[0]),a=[s.left-r.left,s.top-r.top];return{left:Math.round(t.left-a[0]+i[0]-o[0]),top:Math.round(t.top-a[1]+i[1]-o[1])}}function Kt(t,e,n){return t.left<n.left||t.left+e.width>n.right}function qt(t,e,n){return t.top<n.top||t.top+e.height>n.bottom}function Ln(t,e,n){return t.left>n.right||t.left+e.width<n.left}function In(t,e,n){return t.top>n.bottom||t.top+e.height<n.top}function ot(t,e,n){var i=[];return v.each(t,function(o){i.push(o.replace(e,function(r){return n[r]}))}),i}function rt(t,e){return t[e]=-t[e],t}function Zt(t,e){var n;return/%$/.test(t)?n=parseInt(t.substring(0,t.length-1),10)/100*e:n=parseInt(t,10),n||0}function Qt(t,e){t[0]=Zt(t[0],e.width),t[1]=Zt(t[1],e.height)}function xe(t,e,n,i){var o=n.points,r=n.offset||[0,0],s=n.targetOffset||[0,0],a=n.overflow,l=n.source||t;r=[].concat(r),s=[].concat(s),a=a||{};var u={},h=0,p=!!(a&&a.alwaysByViewport),c=Dt(l,p),f=Et(l);Qt(r,f),Qt(s,e);var d=it(f,e,o,r,s),g=v.merge(f,d);if(c&&(a.adjustX||a.adjustY)&&i){if(a.adjustX&&Kt(d,f,c)){var w=ot(o,/[lr]/gi,{l:"r",r:"l"}),m=rt(r,0),y=rt(s,0),b=it(f,e,w,m,y);Ln(b,f,c)||(h=1,o=w,r=m,s=y)}if(a.adjustY&&qt(d,f,c)){var O=ot(o,/[tb]/gi,{t:"b",b:"t"}),A=rt(r,1),T=rt(s,1),E=it(f,e,O,A,T);In(E,f,c)||(h=1,o=O,r=A,s=T)}h&&(d=it(f,e,o,r,s),v.mix(g,d));var M=Kt(d,f,c),S=qt(d,f,c);if(M||S){var R=o;M&&(R=ot(o,/[lr]/gi,{l:"r",r:"l"})),S&&(R=ot(o,/[tb]/gi,{t:"b",b:"t"})),o=R,r=n.offset||[0,0],s=n.targetOffset||[0,0]}u.adjustX=a.adjustX&&M,u.adjustY=a.adjustY&&S,(u.adjustX||u.adjustY)&&(g=Fn(d,f,c,u))}return g.width!==f.width&&v.css(l,"width",v.width(l)+g.width-f.width),g.height!==f.height&&v.css(l,"height",v.height(l)+g.height-f.height),v.offset(l,{left:g.left,top:g.top},{useCssRight:n.useCssRight,useCssBottom:n.useCssBottom,useCssTransform:n.useCssTransform,ignoreShake:n.ignoreShake}),{points:o,offset:r,targetOffset:s,overflow:u}}function Wn(t,e){var n=Dt(t,e),i=Et(t);return!n||i.left+i.width<=n.left||i.top+i.height<=n.top||i.left>=n.right||i.top>=n.bottom}function Nt(t,e,n){var i=n.target||e,o=Et(i),r=!Wn(i,n.overflow&&n.overflow.alwaysByViewport);return xe(t,o,n,r)}Nt.__getOffsetParent=Ot;Nt.__getVisibleRectForElement=Dt;function zn(t,e,n){var i,o,r=v.getDocument(t),s=r.defaultView||r.parentWindow,a=v.getWindowScrollLeft(s),l=v.getWindowScrollTop(s),u=v.viewportWidth(s),h=v.viewportHeight(s);"pageX"in e?i=e.pageX:i=a+e.clientX,"pageY"in e?o=e.pageY:o=l+e.clientY;var p={left:i,top:o,width:0,height:0},c=i>=0&&i<=a+u&&o>=0&&o<=l+h,f=[n.points[0],"cc"];return xe(t,p,It(It({},n),{},{points:f}),c)}function Xn(t,e){return t===e?!0:!t||!e?!1:"pageX"in e&&"pageY"in e?t.pageX===e.pageX&&t.pageY===e.pageY:"clientX"in e&&"clientY"in e?t.clientX===e.clientX&&t.clientY===e.clientY:!1}function Yn(t,e){t!==document.activeElement&&I(e,t)&&typeof t.focus=="function"&&t.focus()}function Jt(t,e){let n=null,i=null;function o(s){let[{target:a}]=s;if(!document.documentElement.contains(a))return;const{width:l,height:u}=a.getBoundingClientRect(),h=Math.floor(l),p=Math.floor(u);(n!==h||i!==p)&&Promise.resolve().then(()=>{e({width:h,height:p})}),n=h,i=p}const r=new Je(o);return t&&r.observe(t),()=>{r.disconnect()}}const jn=((t,e)=>{let n=!1,i=null;function o(){clearTimeout(i)}function r(s){if(!n||s===!0){if(t()===!1)return;n=!0,o(),i=setTimeout(()=>{n=!1},e.value)}else o(),i=setTimeout(()=>{n=!1,r()},e.value)}return[r,()=>{n=!1,o()}]});function Un(){this.__data__=[],this.size=0}function Me(t,e){return t===e||t!==t&&e!==e}function ct(t,e){for(var n=t.length;n--;)if(Me(t[n][0],e))return n;return-1}var Gn=Array.prototype,kn=Gn.splice;function Kn(t){var e=this.__data__,n=ct(e,t);if(n<0)return!1;var i=e.length-1;return n==i?e.pop():kn.call(e,n,1),--this.size,!0}function qn(t){var e=this.__data__,n=ct(e,t);return n<0?void 0:e[n][1]}function Zn(t){return ct(this.__data__,t)>-1}function Qn(t,e){var n=this.__data__,i=ct(n,t);return i<0?(++this.size,n.push([t,e])):n[i][1]=e,this}function N(t){var e=-1,n=t==null?0:t.length;for(this.clear();++e<n;){var i=t[e];this.set(i[0],i[1])}}N.prototype.clear=Un;N.prototype.delete=Kn;N.prototype.get=qn;N.prototype.has=Zn;N.prototype.set=Qn;function Jn(){this.__data__=new N,this.size=0}function ti(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n}function ei(t){return this.__data__.get(t)}function ni(t){return this.__data__.has(t)}var Z=tn(Object,"create");function ii(){this.__data__=Z?Z(null):{},this.size=0}function oi(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}var ri="__lodash_hash_undefined__",si=Object.prototype,ai=si.hasOwnProperty;function ui(t){var e=this.__data__;if(Z){var n=e[t];return n===ri?void 0:n}return ai.call(e,t)?e[t]:void 0}var li=Object.prototype,fi=li.hasOwnProperty;function ci(t){var e=this.__data__;return Z?e[t]!==void 0:fi.call(e,t)}var pi="__lodash_hash_undefined__";function di(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=Z&&e===void 0?pi:e,this}function F(t){var e=-1,n=t==null?0:t.length;for(this.clear();++e<n;){var i=t[e];this.set(i[0],i[1])}}F.prototype.clear=ii;F.prototype.delete=oi;F.prototype.get=ui;F.prototype.has=ci;F.prototype.set=di;function hi(){this.size=0,this.__data__={hash:new F,map:new(ve||N),string:new F}}function vi(t){var e=typeof t;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?t!=="__proto__":t===null}function pt(t,e){var n=t.__data__;return vi(e)?n[typeof e=="string"?"string":"hash"]:n.map}function gi(t){var e=pt(this,t).delete(t);return this.size-=e?1:0,e}function mi(t){return pt(this,t).get(t)}function yi(t){return pt(this,t).has(t)}function wi(t,e){var n=pt(this,t),i=n.size;return n.set(t,e),this.size+=n.size==i?0:1,this}function L(t){var e=-1,n=t==null?0:t.length;for(this.clear();++e<n;){var i=t[e];this.set(i[0],i[1])}}L.prototype.clear=hi;L.prototype.delete=gi;L.prototype.get=mi;L.prototype.has=yi;L.prototype.set=wi;var Ti=200;function bi(t,e){var n=this.__data__;if(n instanceof N){var i=n.__data__;if(!ve||i.length<Ti-1)return i.push([t,e]),this.size=++n.size,this;n=this.__data__=new L(i)}return n.set(t,e),this.size=n.size,this}function H(t){var e=this.__data__=new N(t);this.size=e.size}H.prototype.clear=Jn;H.prototype.delete=ti;H.prototype.get=ei;H.prototype.has=ni;H.prototype.set=bi;var Pi="__lodash_hash_undefined__";function _i(t){return this.__data__.set(t,Pi),this}function Oi(t){return this.__data__.has(t)}function lt(t){var e=-1,n=t==null?0:t.length;for(this.__data__=new L;++e<n;)this.add(t[e])}lt.prototype.add=lt.prototype.push=_i;lt.prototype.has=Oi;function Ci(t,e){for(var n=-1,i=t==null?0:t.length;++n<i;)if(e(t[n],n,t))return!0;return!1}function xi(t,e){return t.has(e)}var Mi=1,Si=2;function Se(t,e,n,i,o,r){var s=n&Mi,a=t.length,l=e.length;if(a!=l&&!(s&&l>a))return!1;var u=r.get(t),h=r.get(e);if(u&&h)return u==e&&h==t;var p=-1,c=!0,f=n&Si?new lt:void 0;for(r.set(t,e),r.set(e,t);++p<a;){var d=t[p],g=e[p];if(i)var w=s?i(g,d,p,e,t,r):i(d,g,p,t,e,r);if(w!==void 0){if(w)continue;c=!1;break}if(f){if(!Ci(e,function(m,y){if(!xi(f,y)&&(d===m||o(d,m,n,i,r)))return f.push(y)})){c=!1;break}}else if(!(d===g||o(d,g,n,i,r))){c=!1;break}}return r.delete(t),r.delete(e),c}var te=en.Uint8Array;function Ai(t){var e=-1,n=Array(t.size);return t.forEach(function(i,o){n[++e]=[o,i]}),n}function Di(t){var e=-1,n=Array(t.size);return t.forEach(function(i){n[++e]=i}),n}var Ei=1,Ni=2,$i="[object Boolean]",Hi="[object Date]",Ri="[object Error]",Bi="[object Map]",Vi="[object Number]",Fi="[object RegExp]",Li="[object Set]",Ii="[object String]",Wi="[object Symbol]",zi="[object ArrayBuffer]",Xi="[object DataView]",ee=Rt?Rt.prototype:void 0,yt=ee?ee.valueOf:void 0;function Yi(t,e,n,i,o,r,s){switch(n){case Xi:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case zi:return!(t.byteLength!=e.byteLength||!r(new te(t),new te(e)));case $i:case Hi:case Vi:return Me(+t,+e);case Ri:return t.name==e.name&&t.message==e.message;case Fi:case Ii:return t==e+"";case Bi:var a=Ai;case Li:var l=i&Ei;if(a||(a=Di),t.size!=e.size&&!l)return!1;var u=s.get(t);if(u)return u==e;i|=Ni,s.set(t,e);var h=Se(a(t),a(e),i,o,r,s);return s.delete(t),h;case Wi:if(yt)return yt.call(t)==yt.call(e)}return!1}function ji(t,e){for(var n=-1,i=e.length,o=t.length;++n<i;)t[o+n]=e[n];return t}function Ui(t,e,n){var i=e(t);return at(t)?i:ji(i,n(t))}function Gi(t,e){for(var n=-1,i=t==null?0:t.length,o=0,r=[];++n<i;){var s=t[n];e(s,n,t)&&(r[o++]=s)}return r}function ki(){return[]}var Ki=Object.prototype,qi=Ki.propertyIsEnumerable,ne=Object.getOwnPropertySymbols,Zi=ne?function(t){return t==null?[]:(t=Object(t),Gi(ne(t),function(e){return qi.call(t,e)}))}:ki;function Qi(t,e){for(var n=-1,i=Array(t);++n<t;)i[n]=e(n);return i}var Ji=9007199254740991,to=/^(?:0|[1-9]\d*)$/;function eo(t,e){var n=typeof t;return e=e??Ji,!!e&&(n=="number"||n!="symbol"&&to.test(t))&&t>-1&&t%1==0&&t<e}var no=Object.prototype,io=no.hasOwnProperty;function oo(t,e){var n=at(t),i=!n&&nn(t),o=!n&&!i&&Tt(t),r=!n&&!i&&!o&&ge(t),s=n||i||o||r,a=s?Qi(t.length,String):[],l=a.length;for(var u in t)(e||io.call(t,u))&&!(s&&(u=="length"||o&&(u=="offset"||u=="parent")||r&&(u=="buffer"||u=="byteLength"||u=="byteOffset")||eo(u,l)))&&a.push(u);return a}function ro(t){return on(t)?oo(t):rn(t)}function ie(t){return Ui(t,ro,Zi)}var so=1,ao=Object.prototype,uo=ao.hasOwnProperty;function lo(t,e,n,i,o,r){var s=n&so,a=ie(t),l=a.length,u=ie(e),h=u.length;if(l!=h&&!s)return!1;for(var p=l;p--;){var c=a[p];if(!(s?c in e:uo.call(e,c)))return!1}var f=r.get(t),d=r.get(e);if(f&&d)return f==e&&d==t;var g=!0;r.set(t,e),r.set(e,t);for(var w=s;++p<l;){c=a[p];var m=t[c],y=e[c];if(i)var b=s?i(y,m,c,e,t,r):i(m,y,c,t,e,r);if(!(b===void 0?m===y||o(m,y,n,i,r):b)){g=!1;break}w||(w=c=="constructor")}if(g&&!w){var O=t.constructor,A=e.constructor;O!=A&&"constructor"in t&&"constructor"in e&&!(typeof O=="function"&&O instanceof O&&typeof A=="function"&&A instanceof A)&&(g=!1)}return r.delete(t),r.delete(e),g}var fo=1,oe="[object Arguments]",re="[object Array]",st="[object Object]",co=Object.prototype,se=co.hasOwnProperty;function po(t,e,n,i,o,r){var s=at(t),a=at(e),l=s?re:Bt(t),u=a?re:Bt(e);l=l==oe?st:l,u=u==oe?st:u;var h=l==st,p=u==st,c=l==u;if(c&&Tt(t)){if(!Tt(e))return!1;s=!0,h=!1}if(c&&!h)return r||(r=new H),s||ge(t)?Se(t,e,n,i,o,r):Yi(t,e,l,n,i,o,r);if(!(n&fo)){var f=h&&se.call(t,"__wrapped__"),d=p&&se.call(e,"__wrapped__");if(f||d){var g=f?t.value():t,w=d?e.value():e;return r||(r=new H),o(g,w,n,i,r)}}return c?(r||(r=new H),lo(t,e,n,i,o,r)):!1}function Ae(t,e,n,i,o){return t===e?!0:t==null||e==null||!Vt(t)&&!Vt(e)?t!==t&&e!==e:po(t,e,n,i,Ae,o)}function ho(t,e){return Ae(t,e)}const vo={align:Object,target:[Object,Function],onAlign:Function,monitorBufferTime:Number,monitorWindowResize:Boolean,disabled:Boolean};function ae(t){return typeof t!="function"?null:t()}function ue(t){return typeof t!="object"||!t?null:t}const go=Q({compatConfig:{MODE:3},name:"Align",props:vo,emits:["align"],setup(t,e){let{expose:n,slots:i}=e;const o=W({}),r=W(),[s,a]=jn(()=>{const{disabled:c,target:f,align:d,onAlign:g}=t;if(!c&&f&&r.value){const w=r.value;let m;const y=ae(f),b=ue(f);o.value.element=y,o.value.point=b,o.value.align=d;const{activeElement:O}=document;return y&&Qe(y)?m=Nt(w,y,d):b&&(m=zn(w,b,d)),Yn(O,w),g&&m&&g(w,m),!0}return!1},K(()=>t.monitorBufferTime)),l=W({cancel:()=>{}}),u=W({cancel:()=>{}}),h=()=>{const c=t.target,f=ae(c),d=ue(c);r.value!==u.value.element&&(u.value.cancel(),u.value.element=r.value,u.value.cancel=Jt(r.value,s)),(o.value.element!==f||!Xn(o.value.point,d)||!ho(o.value.align,t.align))&&(s(),l.value.element!==f&&(l.value.cancel(),l.value.element=f,l.value.cancel=Jt(f,s)))};pe(()=>{wt(()=>{h()})}),Ye(()=>{wt(()=>{h()})}),V(()=>t.disabled,c=>{c?a():s()},{immediate:!0,flush:"post"});const p=W(null);return V(()=>t.monitorWindowResize,c=>{c?p.value||(p.value=U(window,"resize",s)):p.value&&(p.value.remove(),p.value=null)},{flush:"post"}),je(()=>{l.value.cancel(),u.value.cancel(),p.value&&p.value.remove(),a()}),n({forceAlign:()=>s(!0)}),()=>{const c=i?.default();return c?he(c[0],{ref:r},!0,!0):null}}}),mo=Q({compatConfig:{MODE:3},name:"PopupInner",inheritAttrs:!1,props:Mt,emits:["mouseenter","mouseleave","mousedown","touchstart","align"],setup(t,e){let{expose:n,attrs:i,slots:o}=e;const r=x(),s=x(),a=x(),[l,u]=vn(Ge(t,"stretch")),h=()=>{t.stretch&&u(t.getRootDomNode())},p=x(!1);let c;V(()=>t.visible,T=>{clearTimeout(c),T?c=setTimeout(()=>{p.value=t.visible}):p.value=!1},{immediate:!0});const[f,d]=hn(p,h),g=x(),w=()=>t.point?t.point:t.getRootDomNode,m=()=>{var T;(T=r.value)===null||T===void 0||T.forceAlign()},y=(T,E)=>{var M;const S=t.getClassNameFromAlign(E),R=a.value;a.value!==S&&(a.value=S),f.value==="align"&&(R!==S?Promise.resolve().then(()=>{m()}):d(()=>{var Y;(Y=g.value)===null||Y===void 0||Y.call(g)}),(M=t.onAlign)===null||M===void 0||M.call(t,T,E))},b=K(()=>{const T=typeof t.animation=="object"?t.animation:de(t);return["onAfterEnter","onAfterLeave"].forEach(E=>{const M=T[E];T[E]=S=>{d(),f.value="stable",M?.(S)}}),T}),O=()=>new Promise(T=>{g.value=T});V([b,f],()=>{!b.value&&f.value==="motion"&&d()},{immediate:!0}),n({forceAlign:m,getElement:()=>s.value.$el||s.value});const A=K(()=>{var T;return!(!((T=t.align)===null||T===void 0)&&T.points&&(f.value==="align"||f.value==="stable"))});return()=>{var T;const{zIndex:E,align:M,prefixCls:S,destroyPopupOnHide:R,onMouseenter:Y,onMouseleave:De,onTouchstart:Ee=()=>{},onMousedown:Ne}=t,dt=f.value,$e=[P(P({},l.value),{zIndex:E,opacity:dt==="motion"||dt==="stable"||!p.value?null:0,pointerEvents:!p.value&&dt!=="stable"?"none":null}),i.style];let tt=fe((T=o.default)===null||T===void 0?void 0:T.call(o,{visible:t.visible}));tt.length>1&&(tt=C("div",{class:`${S}-content`},[tt]));const He=Ct(S,i.class,a.value,!t.arrow&&`${S}-arrow-hidden`),Re=p.value||!t.visible?sn(b.value.name,b.value):{};return C(xt,$($({ref:s},Re),{},{onBeforeEnter:O}),{default:()=>!R||t.visible?ce(C(go,{target:w(),key:"popup",ref:r,monitorWindowResize:!0,disabled:A.value,align:M,onAlign:y},{default:()=>C("div",{class:He,onMouseenter:Y,onMouseleave:De,onMousedown:Ht(Ne,["capture"]),[G?"onTouchstartPassive":"onTouchstart"]:Ht(Ee,["capture"]),style:$e},[tt])}),[[Ue,p.value]]):null})}}}),yo=Q({compatConfig:{MODE:3},name:"Popup",inheritAttrs:!1,props:cn,setup(t,e){let{attrs:n,slots:i,expose:o}=e;const r=x(!1),s=x(!1),a=x(),l=x();return V([()=>t.visible,()=>t.mobile],()=>{r.value=t.visible,t.visible&&t.mobile&&(s.value=!0)},{immediate:!0,flush:"post"}),o({forceAlign:()=>{var u;(u=a.value)===null||u===void 0||u.forceAlign()},getElement:()=>{var u;return(u=a.value)===null||u===void 0?void 0:u.getElement()}}),()=>{const u=P(P(P({},t),n),{visible:r.value}),h=s.value?C(pn,$($({},u),{},{mobile:t.mobile,ref:a}),{default:i.default}):C(mo,$($({},u),{},{ref:a}),{default:i.default});return C("div",{ref:l},[C(ye,u,null),h])}}});function wo(t,e,n){return n?t[0]===e[0]:t[0]===e[0]&&t[1]===e[1]}function le(t,e,n){const i=t[e]||{};return P(P({},i),n)}function To(t,e,n,i){const{points:o}=n,r=Object.keys(t);for(let s=0;s<r.length;s+=1){const a=r[s];if(wo(t[a].points,o,i))return`${e}-placement-${a}`}return""}const bo={methods:{setState(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=arguments.length>1?arguments[1]:void 0,n=typeof t=="function"?t(this.$data,this.$props):t;if(this.getDerivedStateFromProps){const i=this.getDerivedStateFromProps(Be(this),P(P({},this.$data),n));if(i===null)return;n=P(P({},n),i||{})}P(this.$data,n),this._.isMounted&&this.$forceUpdate(),wt(()=>{e&&e()})},__emit(){const t=[].slice.call(arguments,0);let e=t[0];e=`on${e[0].toUpperCase()}${e.substring(1)}`;const n=this.$props[e]||this.$attrs[e];if(t.length&&n)if(Array.isArray(n))for(let i=0,o=n.length;i<o;i++)n[i](...t.slice(1));else n(...t.slice(1))}}},Po=["onClick","onMousedown","onTouchstart","onMouseenter","onMouseleave","onFocus","onBlur","onContextmenu"],Bo=Q({compatConfig:{MODE:3},name:"Trigger",mixins:[bo],inheritAttrs:!1,props:ln(),setup(t){const e=K(()=>{const{popupPlacement:o,popupAlign:r,builtinPlacements:s}=t;return o&&s?le(s,o,r):r}),n=x(null),i=o=>{n.value=o};return{vcTriggerContext:qe("vcTriggerContext",{}),popupRef:n,setPopupRef:i,triggerRef:x(null),align:e,focusTime:null,clickOutsideHandler:null,contextmenuOutsideHandler1:null,contextmenuOutsideHandler2:null,touchOutsideHandler:null,attachId:null,delayTimer:null,hasPopupMouseDown:!1,preClickTime:null,preTouchTime:null,mouseDownTimeout:null,childOriginEvents:{}}},data(){const t=this.$props;let e;return this.popupVisible!==void 0?e=!!t.popupVisible:e=!!t.defaultPopupVisible,Po.forEach(n=>{this[`fire${n}`]=i=>{this.fireEvents(n,i)}}),{prevPopupVisible:e,sPopupVisible:e,point:null}},watch:{popupVisible(t){t!==void 0&&(this.prevPopupVisible=this.sPopupVisible,this.sPopupVisible=t)}},created(){Ke("vcTriggerContext",{onPopupMouseDown:this.onPopupMouseDown,onPopupMouseenter:this.onPopupMouseenter,onPopupMouseleave:this.onPopupMouseleave}),Ze(this)},deactivated(){this.setPopupVisible(!1)},mounted(){this.$nextTick(()=>{this.updatedCal()})},updated(){this.$nextTick(()=>{this.updatedCal()})},beforeUnmount(){this.clearDelayTimer(),this.clearOutsideHandler(),clearTimeout(this.mouseDownTimeout),z.cancel(this.attachId)},methods:{updatedCal(){const t=this.$props;if(this.$data.sPopupVisible){let n;!this.clickOutsideHandler&&(this.isClickToHide()||this.isContextmenuToShow())&&(n=t.getDocument(this.getRootDomNode()),this.clickOutsideHandler=U(n,"mousedown",this.onDocumentClick)),this.touchOutsideHandler||(n=n||t.getDocument(this.getRootDomNode()),this.touchOutsideHandler=U(n,"touchstart",this.onDocumentClick,G?{passive:!1}:!1)),!this.contextmenuOutsideHandler1&&this.isContextmenuToShow()&&(n=n||t.getDocument(this.getRootDomNode()),this.contextmenuOutsideHandler1=U(n,"scroll",this.onContextmenuClose)),!this.contextmenuOutsideHandler2&&this.isContextmenuToShow()&&(this.contextmenuOutsideHandler2=U(window,"blur",this.onContextmenuClose))}else this.clearOutsideHandler()},onMouseenter(t){const{mouseEnterDelay:e}=this.$props;this.fireEvents("onMouseenter",t),this.delaySetPopupVisible(!0,e,e?null:t)},onMouseMove(t){this.fireEvents("onMousemove",t),this.setPoint(t)},onMouseleave(t){this.fireEvents("onMouseleave",t),this.delaySetPopupVisible(!1,this.$props.mouseLeaveDelay)},onPopupMouseenter(){const{vcTriggerContext:t={}}=this;t.onPopupMouseenter&&t.onPopupMouseenter(),this.clearDelayTimer()},onPopupMouseleave(t){var e;if(t&&t.relatedTarget&&!t.relatedTarget.setTimeout&&I((e=this.popupRef)===null||e===void 0?void 0:e.getElement(),t.relatedTarget))return;this.isMouseLeaveToHide()&&this.delaySetPopupVisible(!1,this.$props.mouseLeaveDelay);const{vcTriggerContext:n={}}=this;n.onPopupMouseleave&&n.onPopupMouseleave(t)},onFocus(t){this.fireEvents("onFocus",t),this.clearDelayTimer(),this.isFocusToShow()&&(this.focusTime=Date.now(),this.delaySetPopupVisible(!0,this.$props.focusDelay))},onMousedown(t){this.fireEvents("onMousedown",t),this.preClickTime=Date.now()},onTouchstart(t){this.fireEvents("onTouchstart",t),this.preTouchTime=Date.now()},onBlur(t){I(t.target,t.relatedTarget||document.activeElement)||(this.fireEvents("onBlur",t),this.clearDelayTimer(),this.isBlurToHide()&&this.delaySetPopupVisible(!1,this.$props.blurDelay))},onContextmenu(t){t.preventDefault(),this.fireEvents("onContextmenu",t),this.setPopupVisible(!0,t)},onContextmenuClose(){this.isContextmenuToShow()&&this.close()},onClick(t){if(this.fireEvents("onClick",t),this.focusTime){let n;if(this.preClickTime&&this.preTouchTime?n=Math.min(this.preClickTime,this.preTouchTime):this.preClickTime?n=this.preClickTime:this.preTouchTime&&(n=this.preTouchTime),Math.abs(n-this.focusTime)<20)return;this.focusTime=0}this.preClickTime=0,this.preTouchTime=0,this.isClickToShow()&&(this.isClickToHide()||this.isBlurToHide())&&t&&t.preventDefault&&t.preventDefault(),t&&t.domEvent&&t.domEvent.preventDefault();const e=!this.$data.sPopupVisible;(this.isClickToHide()&&!e||e&&this.isClickToShow())&&this.setPopupVisible(!this.$data.sPopupVisible,t)},onPopupMouseDown(){const{vcTriggerContext:t={}}=this;this.hasPopupMouseDown=!0,clearTimeout(this.mouseDownTimeout),this.mouseDownTimeout=setTimeout(()=>{this.hasPopupMouseDown=!1},0),t.onPopupMouseDown&&t.onPopupMouseDown(...arguments)},onDocumentClick(t){if(this.$props.mask&&!this.$props.maskClosable)return;const e=t.target,n=this.getRootDomNode(),i=this.getPopupDomNode();(!I(n,e)||this.isContextMenuOnly())&&!I(i,e)&&!this.hasPopupMouseDown&&this.delaySetPopupVisible(!1,.1)},getPopupDomNode(){var t;return((t=this.popupRef)===null||t===void 0?void 0:t.getElement())||null},getRootDomNode(){var t,e,n,i;const{getTriggerDOMNode:o}=this.$props;if(o){const r=((e=(t=this.triggerRef)===null||t===void 0?void 0:t.$el)===null||e===void 0?void 0:e.nodeName)==="#comment"?null:et(this.triggerRef);return et(o(r))}try{const r=((i=(n=this.triggerRef)===null||n===void 0?void 0:n.$el)===null||i===void 0?void 0:i.nodeName)==="#comment"?null:et(this.triggerRef);if(r)return r}catch{}return et(this)},handleGetPopupClassFromAlign(t){const e=[],n=this.$props,{popupPlacement:i,builtinPlacements:o,prefixCls:r,alignPoint:s,getPopupClassNameFromAlign:a}=n;return i&&o&&e.push(To(o,r,t,s)),a&&e.push(a(t)),e.join(" ")},getPopupAlign(){const t=this.$props,{popupPlacement:e,popupAlign:n,builtinPlacements:i}=t;return e&&i?le(i,e,n):n},getComponent(){const t={};this.isMouseEnterToShow()&&(t.onMouseenter=this.onPopupMouseenter),this.isMouseLeaveToHide()&&(t.onMouseleave=this.onPopupMouseleave),t.onMousedown=this.onPopupMouseDown,t[G?"onTouchstartPassive":"onTouchstart"]=this.onPopupMouseDown;const{handleGetPopupClassFromAlign:e,getRootDomNode:n,$attrs:i}=this,{prefixCls:o,destroyPopupOnHide:r,popupClassName:s,popupAnimation:a,popupTransitionName:l,popupStyle:u,mask:h,maskAnimation:p,maskTransitionName:c,zIndex:f,stretch:d,alignPoint:g,mobile:w,arrow:m,forceRender:y}=this.$props,{sPopupVisible:b,point:O}=this.$data,A=P(P({prefixCls:o,arrow:m,destroyPopupOnHide:r,visible:b,point:g?O:null,align:this.align,animation:a,getClassNameFromAlign:e,stretch:d,getRootDomNode:n,mask:h,zIndex:f,transitionName:l,maskAnimation:p,maskTransitionName:c,class:s,style:u,onAlign:i.onPopupAlign||me},t),{ref:this.setPopupRef,mobile:w,forceRender:y});return C(yo,A,{default:this.$slots.popup||(()=>Ie(this,"popup"))})},attachParent(t){z.cancel(this.attachId);const{getPopupContainer:e,getDocument:n}=this.$props,i=this.getRootDomNode();let o;e?(i||e.length===0)&&(o=e(i)):o=n(this.getRootDomNode()).body,o?o.appendChild(t):this.attachId=z(()=>{this.attachParent(t)})},getContainer(){const{$props:t}=this,{getDocument:e}=t,n=e(this.getRootDomNode()).createElement("div");return n.style.position="absolute",n.style.top="0",n.style.left="0",n.style.width="100%",this.attachParent(n),n},setPopupVisible(t,e){const{alignPoint:n,sPopupVisible:i,onPopupVisibleChange:o}=this;this.clearDelayTimer(),i!==t&&(Le(this,"popupVisible")||this.setState({sPopupVisible:t,prevPopupVisible:i}),o&&o(t)),n&&e&&t&&this.setPoint(e)},setPoint(t){const{alignPoint:e}=this.$props;!e||!t||this.setState({point:{pageX:t.pageX,pageY:t.pageY}})},handlePortalUpdate(){this.prevPopupVisible!==this.sPopupVisible&&this.afterPopupVisibleChange(this.sPopupVisible)},delaySetPopupVisible(t,e,n){const i=e*1e3;if(this.clearDelayTimer(),i){const o=n?{pageX:n.pageX,pageY:n.pageY}:null;this.delayTimer=setTimeout(()=>{this.setPopupVisible(t,o),this.clearDelayTimer()},i)}else this.setPopupVisible(t,n)},clearDelayTimer(){this.delayTimer&&(clearTimeout(this.delayTimer),this.delayTimer=null)},clearOutsideHandler(){this.clickOutsideHandler&&(this.clickOutsideHandler.remove(),this.clickOutsideHandler=null),this.contextmenuOutsideHandler1&&(this.contextmenuOutsideHandler1.remove(),this.contextmenuOutsideHandler1=null),this.contextmenuOutsideHandler2&&(this.contextmenuOutsideHandler2.remove(),this.contextmenuOutsideHandler2=null),this.touchOutsideHandler&&(this.touchOutsideHandler.remove(),this.touchOutsideHandler=null)},createTwoChains(t){let e=()=>{};const n=$t(this);return this.childOriginEvents[t]&&n[t]?this[`fire${t}`]:(e=this.childOriginEvents[t]||n[t]||e,e)},isClickToShow(){const{action:t,showAction:e}=this.$props;return t.indexOf("click")!==-1||e.indexOf("click")!==-1},isContextMenuOnly(){const{action:t}=this.$props;return t==="contextmenu"||t.length===1&&t[0]==="contextmenu"},isContextmenuToShow(){const{action:t,showAction:e}=this.$props;return t.indexOf("contextmenu")!==-1||e.indexOf("contextmenu")!==-1},isClickToHide(){const{action:t,hideAction:e}=this.$props;return t.indexOf("click")!==-1||e.indexOf("click")!==-1},isMouseEnterToShow(){const{action:t,showAction:e}=this.$props;return t.indexOf("hover")!==-1||e.indexOf("mouseenter")!==-1},isMouseLeaveToHide(){const{action:t,hideAction:e}=this.$props;return t.indexOf("hover")!==-1||e.indexOf("mouseleave")!==-1},isFocusToShow(){const{action:t,showAction:e}=this.$props;return t.indexOf("focus")!==-1||e.indexOf("focus")!==-1},isBlurToHide(){const{action:t,hideAction:e}=this.$props;return t.indexOf("focus")!==-1||e.indexOf("blur")!==-1},forcePopupAlign(){var t;this.$data.sPopupVisible&&((t=this.popupRef)===null||t===void 0||t.forceAlign())},fireEvents(t,e){this.childOriginEvents[t]&&this.childOriginEvents[t](e);const n=this.$props[t]||this.$attrs[t];n&&n(e)},close(){this.setPopupVisible(!1)}},render(){const{$attrs:t}=this,e=Ve(Fe(this)),{alignPoint:n,getPopupContainer:i}=this.$props,o=e[0];this.childOriginEvents=$t(o);const r={key:"trigger"};this.isContextmenuToShow()?r.onContextmenu=this.onContextmenu:r.onContextmenu=this.createTwoChains("onContextmenu"),this.isClickToHide()||this.isClickToShow()?(r.onClick=this.onClick,r.onMousedown=this.onMousedown,r[G?"onTouchstartPassive":"onTouchstart"]=this.onTouchstart):(r.onClick=this.createTwoChains("onClick"),r.onMousedown=this.createTwoChains("onMousedown"),r[G?"onTouchstartPassive":"onTouchstart"]=this.createTwoChains("onTouchstart")),this.isMouseEnterToShow()?(r.onMouseenter=this.onMouseenter,n&&(r.onMousemove=this.onMouseMove)):r.onMouseenter=this.createTwoChains("onMouseenter"),this.isMouseLeaveToHide()?r.onMouseleave=this.onMouseleave:r.onMouseleave=this.createTwoChains("onMouseleave"),this.isFocusToShow()||this.isBlurToHide()?(r.onFocus=this.onFocus,r.onBlur=this.onBlur):(r.onFocus=this.createTwoChains("onFocus"),r.onBlur=u=>{u&&(!u.relatedTarget||!I(u.target,u.relatedTarget))&&this.createTwoChains("onBlur")(u)});const s=Ct(o&&o.props&&o.props.class,t.class);s&&(r.class=s);const a=he(o,P(P({},r),{ref:"triggerRef"}),!0,!0),l=C(We,{key:"portal",getContainer:i&&(()=>i(this.getRootDomNode())),didUpdate:this.handlePortalUpdate,visible:this.$data.sPopupVisible},{default:this.getComponent});return C(ke,null,[a,l])}});export{bo as B,L as M,lt as S,Bo as T,te as U,ji as a,oo as b,xi as c,ki as d,Me as e,Ui as f,Zi as g,H as h,eo as i,ie as j,ro as k,Ae as l,ho as m,Di as s};
@@ -1 +0,0 @@
1
- .step-card[data-v-0d6dcf38]{background:#fafafa;border:1px solid #eee;border-radius:4px;padding:12px;margin-bottom:12px}.active[data-v-0d6dcf38]{background:#e3f2fd}.page-title[data-v-0d6dcf38]{margin:0;font-size:20px}.page-sub[data-v-0d6dcf38]{margin:4px 0 0;color:#888;font-size:13px}
@@ -1 +0,0 @@
1
- import{k as T,r as b,l as Y,F as v,D as _,c as s,x as o,q as p,v as c,J as m,u as h,m as j,E as K,I as y,P as Q,H as V,L as D,G as N,j as X}from"./vendor-BVetwVfk.js";import{u as Z}from"./ws-Bv7YH0VB.js";import{_ as ee}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{ac as te,Y as ae}from"./icons-ukMaZ3tx.js";import{a as C}from"./index-BbqCdQXU.js";import"./index-ZZ_4A9um.js";import"./useConfigInject-BKqJUQaF.js";import"./transition-CGYDOK3N.js";import"./Keyframes-C7fCrnlS.js";import"./Portal-CHsntPCQ.js";import"./index-U4Zd5IK6.js";const se=T("workflow",()=>{const f=Z(),l=b([]),t=b(null),x=b([]),w=b("idle"),R=b(!1),z=b(null);async function J(){R.value=!0,z.value=null;try{await f.waitConnected();const e=await f.sendRaw({type:"workflow-list"});return l.value=Array.isArray(e.workflows)?e.workflows:[],l.value}catch(e){throw z.value=e.message,e}finally{R.value=!1}}async function W(e){await f.waitConnected();const n=await f.sendRaw({type:"workflow-get",id:e});return t.value=n.workflow||null,t.value}async function A(e){await f.waitConnected();const n=await f.sendRaw({type:"workflow-save",workflow:e});if(n.saved){const u=l.value.findIndex(r=>r.id===e.id);u>=0?l.value.splice(u,1,e):l.value.push(e)}return n}async function B(e){await f.waitConnected();const n=await f.sendRaw({type:"workflow-remove",id:e});return n.removed&&(l.value=l.value.filter(u=>u.id!==e)),n}async function q(e,{onEvent:n}={}){await f.waitConnected(),x.value=[],w.value="running";const u=f.onMessage(r=>{!r||typeof r.type!="string"||r.type.startsWith("workflow:")&&(x.value.push(r),n&&n(r),r.type==="workflow:done"&&(w.value=r.status||"completed"))});try{return await f.sendRaw({type:"workflow-run",id:e},12e4)}catch(r){throw w.value="failed",z.value=r.message,r}finally{u()}}function M(e){const n=[];if(!e||typeof e!="object")return{valid:!1,errors:["workflow must be an object"]};if(e.id||n.push("id required"),e.name||n.push("name required"),!Array.isArray(e.steps)||e.steps.length===0)n.push("steps required");else{let g=function(i){$.set(i,E);for(const O of r.get(i)||[]){if(!r.has(O)){n.push(`unknown dependency: ${O}`);continue}const I=$.get(O);if(I===E){n.push(`cycle via ${i} -> ${O}`);return}I===L&&g(O)}$.set(i,S)};const u=new Set;for(const i of e.steps)i.id||n.push("step.id required"),u.has(i.id)&&n.push(`duplicate step id: ${i.id}`),u.add(i.id);const r=new Map;for(const i of e.steps)r.set(i.id,i.dependsOn||[]);const L=0,E=1,S=2,$=new Map([...r.keys()].map(i=>[i,L]));for(const i of r.keys())$.get(i)===L&&g(i)}return{valid:n.length===0,errors:n}}function d(e){return JSON.stringify(e,null,2)}return{workflows:l,current:t,runEvents:x,runStatus:w,loading:R,error:z,list:J,get:W,save:A,remove:B,run:q,validateLocal:M,exportJson:d}}),ne={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},oe={style:{flex:"1"}},le={style:{"font-weight":"500"}},re={style:{color:"#888","font-size":"12px"}},ie={style:{color:"#888","font-size":"12px"}},ue={key:0,style:{"margin-top":"12px",color:"#d32f2f"}},de={style:{color:"#1976d2"}},ce={key:0},pe={key:1},fe={key:2,style:{color:"#555"}},ve={__name:"WorkflowEditor",setup(f){const l=se(),t=b(null),x=b(!1),w=X(()=>t.value?l.validateLocal(t.value):null);Y(()=>l.list().catch(()=>{}));function R(){t.value={id:"",name:"",description:"",steps:[{id:"step1",message:"",dependsOn:[]}]}}async function z(d){try{const e=await l.get(d);e&&(t.value=JSON.parse(JSON.stringify(e)),t.value.steps||(t.value.steps=[]))}catch(e){C.error(`加载失败: ${e.message}`)}}function J(){t.value.steps||(t.value.steps=[]),t.value.steps.push({id:`step${t.value.steps.length+1}`,message:"",dependsOn:[]})}function W(d){t.value.steps.splice(d,1)}async function A(){const d=l.validateLocal(t.value);if(!d.valid){C.error(d.errors[0]);return}try{await l.save(t.value),C.success("保存成功")}catch(e){C.error(`保存失败: ${e.message}`)}}async function B(d){try{await l.remove(d),t.value?.id===d&&(t.value=null),C.success("已删除")}catch(e){C.error(`删除失败: ${e.message}`)}}async function q(){x.value=!0;try{await l.run(t.value.id),C.success(`运行完成:${l.runStatus}`)}catch(d){C.error(`运行失败: ${d.message}`)}finally{x.value=!1}}function M(){const d=l.exportJson(t.value),e=new Blob([d],{type:"application/json"}),n=URL.createObjectURL(e),u=document.createElement("a");u.href=n,u.download=`${t.value.id||"workflow"}.json`,u.click(),URL.revokeObjectURL(n)}return(d,e)=>{const n=p("a-button"),u=p("a-space"),r=p("a-empty"),L=p("a-list-item"),E=p("a-list"),S=p("a-card"),$=p("a-col"),g=p("a-input"),i=p("a-form-item"),O=p("a-divider"),I=p("a-select"),F=p("a-input-group"),G=p("a-textarea"),H=p("a-form"),P=p("a-row");return c(),v("div",null,[_("div",ne,[e[6]||(e[6]=_("div",null,[_("h2",{class:"page-title"},"工作流编辑器"),_("p",{class:"page-sub"},"创建、编辑、运行 Cowork 工作流(N1 — 初版:表单编辑,画布视图规划中)")],-1)),s(u,null,{default:o(()=>[s(n,{onClick:R,type:"primary"},{icon:o(()=>[s(h(te))]),default:o(()=>[e[4]||(e[4]=m(" 新建 ",-1))]),_:1}),s(n,{ghost:"",loading:h(l).loading,onClick:e[0]||(e[0]=a=>h(l).list())},{icon:o(()=>[s(h(ae))]),default:o(()=>[e[5]||(e[5]=m(" 刷新 ",-1))]),_:1},8,["loading"])]),_:1})]),s(P,{gutter:16},{default:o(()=>[s($,{span:8},{default:o(()=>[s(S,{title:"工作流列表",size:"small"},{default:o(()=>[h(l).workflows.length?(c(),j(E,{key:1,"data-source":h(l).workflows,size:"small"},{renderItem:o(({item:a})=>[s(L,{class:K({active:t.value?.id===a.id}),style:{cursor:"pointer"},onClick:U=>z(a.id)},{default:o(()=>[_("div",oe,[_("div",le,y(a.name||a.id),1),_("div",re,y((a.steps||[]).length)+" 步骤 ",1)]),s(n,{size:"small",danger:"",type:"text",onClick:Q(U=>B(a.id),["stop"])},{default:o(()=>[...e[7]||(e[7]=[m("删除",-1)])]),_:1},8,["onClick"])]),_:2},1032,["class","onClick"])]),_:1},8,["data-source"])):(c(),j(r,{key:0,description:"暂无工作流"}))]),_:1})]),_:1}),s($,{span:16},{default:o(()=>[t.value?(c(),j(S,{key:0,size:"small"},{title:o(()=>[m(" 编辑: "+y(t.value.name||t.value.id),1)]),extra:o(()=>[s(u,null,{default:o(()=>[s(n,{size:"small",onClick:M},{default:o(()=>[...e[8]||(e[8]=[m("导出 JSON",-1)])]),_:1}),s(n,{size:"small",loading:x.value,onClick:q,disabled:!t.value.id},{default:o(()=>[...e[9]||(e[9]=[m(" 运行 ",-1)])]),_:1},8,["loading","disabled"]),s(n,{size:"small",type:"primary",onClick:A},{default:o(()=>[...e[10]||(e[10]=[m("保存",-1)])]),_:1})]),_:1})]),default:o(()=>[s(H,{layout:"vertical",model:t.value},{default:o(()=>[s(i,{label:"ID (唯一标识)"},{default:o(()=>[s(g,{value:t.value.id,"onUpdate:value":e[1]||(e[1]=a=>t.value.id=a),placeholder:"my-workflow"},null,8,["value"])]),_:1}),s(i,{label:"名称"},{default:o(()=>[s(g,{value:t.value.name,"onUpdate:value":e[2]||(e[2]=a=>t.value.name=a),placeholder:"我的工作流"},null,8,["value"])]),_:1}),s(i,{label:"描述"},{default:o(()=>[s(g,{value:t.value.description,"onUpdate:value":e[3]||(e[3]=a=>t.value.description=a),placeholder:"(可选)"},null,8,["value"])]),_:1}),s(O,null,{default:o(()=>[...e[11]||(e[11]=[m("步骤",-1)])]),_:1}),(c(!0),v(V,null,D(t.value.steps,(a,U)=>(c(),v("div",{key:U,class:"step-card"},[s(u,{style:{width:"100%","margin-bottom":"8px"},direction:"vertical"},{default:o(()=>[s(F,{compact:""},{default:o(()=>[s(g,{value:a.id,"onUpdate:value":k=>a.id=k,placeholder:"step-id",style:{width:"30%"}},null,8,["value","onUpdate:value"]),s(I,{value:a.dependsOn,"onUpdate:value":k=>a.dependsOn=k,mode:"tags",placeholder:"dependsOn",style:{width:"70%"}},null,8,["value","onUpdate:value"])]),_:2},1024),s(G,{value:a.message,"onUpdate:value":k=>a.message=k,rows:2,placeholder:"任务 prompt(支持 \\${step.<id>.summary} 占位)"},null,8,["value","onUpdate:value"]),s(g,{value:a.when,"onUpdate:value":k=>a.when=k,placeholder:"when 条件(可选,如 step.s1.status === 'completed')"},null,8,["value","onUpdate:value"]),s(u,null,{default:o(()=>[s(n,{size:"small",danger:"",onClick:k=>W(U)},{default:o(()=>[...e[12]||(e[12]=[m("删除",-1)])]),_:1},8,["onClick"]),_("span",ie," step "+y(U+1)+" / "+y(t.value.steps.length),1)]),_:2},1024)]),_:2},1024)]))),128)),s(n,{block:"",onClick:J},{default:o(()=>[...e[13]||(e[13]=[m("+ 添加步骤",-1)])]),_:1})]),_:1},8,["model"]),w.value&&!w.value.valid?(c(),v("div",ue,[(c(!0),v(V,null,D(w.value.errors,a=>(c(),v("div",{key:a},"• "+y(a),1))),128))])):N("",!0)]),_:1})):(c(),j(S,{key:1,size:"small"},{default:o(()=>[s(r,{description:"从左侧选择工作流或新建一个"})]),_:1})),h(l).runEvents.length?(c(),j(S,{key:2,size:"small",title:"运行日志",style:{"margin-top":"12px"}},{default:o(()=>[(c(!0),v(V,null,D(h(l).runEvents,(a,U)=>(c(),v("div",{key:U,style:{"font-family":"monospace","font-size":"12px","margin-bottom":"4px"}},[_("span",de,y(a.type),1),a.stepId?(c(),v("span",ce," ["+y(a.stepId)+"]",1)):N("",!0),a.status?(c(),v("span",pe," → "+y(a.status),1)):N("",!0),a.summary?(c(),v("span",fe," — "+y(a.summary),1)):N("",!0)]))),128))]),_:1})):N("",!0)]),_:1})]),_:1})])}}},Oe=ee(ve,[["__scopeId","data-v-0d6dcf38"]]);export{Oe as default};
@@ -1 +0,0 @@
1
- import{_ as l}from"./index-ZZ_4A9um.js";import{i as O}from"./ResizeObserver.es-D6qJbdzf.js";import{y as R}from"./useConfigInject-BKqJUQaF.js";import{d as C,l as M,_ as x,M as H,w as W,g as _,a as y}from"./vendor-BVetwVfk.js";const F=C({compatConfig:{MODE:3},name:"ResizeObserver",props:{disabled:Boolean,onResize:Function},emits:["resize"],setup(i,v){let{slots:c}=v;const n=y({width:0,height:0,offsetHeight:0,offsetWidth:0});let h=null,s=null;const r=()=>{s&&(s.disconnect(),s=null)},b=e=>{const{onResize:t}=i,o=e[0].target,{width:z,height:w}=o.getBoundingClientRect(),{offsetWidth:d,offsetHeight:f}=o,g=Math.floor(z),m=Math.floor(w);if(n.width!==g||n.height!==m||n.offsetWidth!==d||n.offsetHeight!==f){const u={width:g,height:m,offsetWidth:d,offsetHeight:f};l(n,u),t&&Promise.resolve().then(()=>{t(l(l({},u),{offsetWidth:d,offsetHeight:f}),o)})}},p=_(),a=()=>{const{disabled:e}=i;if(e){r();return}const t=R(p);t!==h&&(r(),h=t),!s&&t&&(s=new O(b),s.observe(t))};return M(()=>{a()}),x(()=>{a()}),H(()=>{r()}),W(()=>i.disabled,()=>{a()},{flush:"post"}),()=>{var e;return(e=c.default)===null||e===void 0?void 0:e.call(c)[0]}}});export{F as R};
@@ -1 +0,0 @@
1
- import{A as o}from"./Row-CpPHVi7H.js";import{w as t}from"./index-ZZ_4A9um.js";import"./useConfigInject-BKqJUQaF.js";import"./vendor-BVetwVfk.js";import"./icons-ukMaZ3tx.js";import"./responsiveObserve-BzrPInK7.js";import"./useFlexGapSupport--RuYYIc6.js";import"./styleChecker-CQt4HHRm.js";import"./index-D-0g6tCK.js";const n=t(o);export{n as default};
@@ -1 +0,0 @@
1
- import{C as o}from"./Col-Dpb7Eik4.js";import{w as t}from"./index-ZZ_4A9um.js";import"./useConfigInject-BKqJUQaF.js";import"./vendor-BVetwVfk.js";import"./icons-ukMaZ3tx.js";import"./index-D-0g6tCK.js";const l=t(o);export{l as default};
@@ -1 +0,0 @@
1
- import{g as j,m as M,r as O,u as A,_ as y}from"./useConfigInject-BKqJUQaF.js";import{_ as p,n as U,v as $,k as B,q as P,z as _}from"./index-ZZ_4A9um.js";import{i as N}from"./initDefaultProps--L8bzddm.js";import{c as f,d as R,l as L,_ as V,o as X,r as D}from"./vendor-BVetwVfk.js";import{S as q}from"./Skeleton-TzxE-JJt.js";import{o as Y}from"./omit-RkKN6uqw.js";import"./icons-ukMaZ3tx.js";import"./Keyframes-C7fCrnlS.js";const z=t=>{const{value:n,formatter:e,precision:a,decimalSeparator:s,groupSeparator:u="",prefixCls:r}=t;let c;if(typeof e=="function")c=e({value:n});else{const i=String(n),m=i.match(/^(-?)(\d*)(\.(\d+))?$/);if(!m)c=i;else{const d=m[1];let o=m[2]||"0",l=m[4]||"";o=o.replace(/\B(?=(\d{3})+(?!\d))/g,u),typeof a=="number"&&(l=l.padEnd(a,"0").slice(0,a>0?a:0)),l&&(l=`${s}${l}`),c=[f("span",{key:"int",class:`${r}-content-value-int`},[d,o]),l&&f("span",{key:"decimal",class:`${r}-content-value-decimal`},[l])]}}return f("span",{class:`${r}-content-value`},[c])};z.displayName="StatisticNumber";const G=t=>{const{componentCls:n,marginXXS:e,padding:a,colorTextDescription:s,statisticTitleFontSize:u,colorTextHeading:r,statisticContentFontSize:c,statisticFontFamily:i}=t;return{[`${n}`]:p(p({},O(t)),{[`${n}-title`]:{marginBottom:e,color:s,fontSize:u},[`${n}-skeleton`]:{paddingTop:a},[`${n}-content`]:{color:r,fontSize:c,fontFamily:i,[`${n}-content-value`]:{display:"inline-block",direction:"ltr"},[`${n}-content-prefix, ${n}-content-suffix`]:{display:"inline-block"},[`${n}-content-prefix`]:{marginInlineEnd:e},[`${n}-content-suffix`]:{marginInlineStart:e}}})}},J=j("Statistic",t=>{const{fontSizeHeading3:n,fontSize:e,fontFamily:a}=t,s=M(t,{statisticTitleFontSize:e,statisticContentFontSize:n,statisticFontFamily:a});return[G(s)]}),k=()=>({prefixCls:String,decimalSeparator:String,groupSeparator:String,format:String,value:_([Number,String,Object]),valueStyle:{type:Object,default:void 0},valueRender:P(),formatter:B(),precision:Number,prefix:$(),suffix:$(),title:$(),loading:U()}),v=R({compatConfig:{MODE:3},name:"AStatistic",inheritAttrs:!1,props:N(k(),{decimalSeparator:".",groupSeparator:",",loading:!1}),slots:Object,setup(t,n){let{slots:e,attrs:a}=n;const{prefixCls:s,direction:u}=A("statistic",t),[r,c]=J(s);return()=>{var i,m,d,o,l,g,S;const{value:E=0,valueStyle:H,valueRender:T}=t,x=s.value,h=(i=t.title)!==null&&i!==void 0?i:(m=e.title)===null||m===void 0?void 0:m.call(e),b=(d=t.prefix)!==null&&d!==void 0?d:(o=e.prefix)===null||o===void 0?void 0:o.call(e),F=(l=t.suffix)!==null&&l!==void 0?l:(g=e.suffix)===null||g===void 0?void 0:g.call(e),I=(S=t.formatter)!==null&&S!==void 0?S:e.formatter;let C=f(z,y({"data-for-update":Date.now()},p(p({},t),{prefixCls:x,value:E,formatter:I})),null);return T&&(C=T(C)),r(f("div",y(y({},a),{},{class:[x,{[`${x}-rtl`]:u.value==="rtl"},a.class,c.value]}),[h&&f("div",{class:`${x}-title`},[h]),f(q,{paragraph:!1,loading:t.loading},{default:()=>[f("div",{style:H,class:`${x}-content`},[b&&f("span",{class:`${x}-content-prefix`},[b]),C,F&&f("span",{class:`${x}-content-suffix`},[F])])]})]))}}}),K=[["Y",1e3*60*60*24*365],["M",1e3*60*60*24*30],["D",1e3*60*60*24],["H",1e3*60*60],["m",1e3*60],["s",1e3],["S",1]];function Q(t,n){let e=t;const a=/\[[^\]]*]/g,s=(n.match(a)||[]).map(i=>i.slice(1,-1)),u=n.replace(a,"[]"),r=K.reduce((i,m)=>{let[d,o]=m;if(i.includes(d)){const l=Math.floor(e/o);return e-=l*o,i.replace(new RegExp(`${d}+`,"g"),g=>{const S=g.length;return l.toString().padStart(S,"0")})}return i},u);let c=0;return r.replace(a,()=>{const i=s[c];return c+=1,i})}function W(t,n){const{format:e=""}=n,a=new Date(t).getTime(),s=Date.now(),u=Math.max(a-s,0);return Q(u,e)}const Z=1e3/30;function w(t){return new Date(t).getTime()}const tt=()=>p(p({},k()),{value:_([Number,String,Object]),format:String,onFinish:Function,onChange:Function}),et=R({compatConfig:{MODE:3},name:"AStatisticCountdown",props:N(tt(),{format:"HH:mm:ss"}),setup(t,n){let{emit:e,slots:a}=n;const s=D(),u=D(),r=()=>{const{value:o}=t;w(o)>=Date.now()?c():i()},c=()=>{if(s.value)return;const o=w(t.value);s.value=setInterval(()=>{u.value.$forceUpdate(),o>Date.now()&&e("change",o-Date.now()),r()},Z)},i=()=>{const{value:o}=t;s.value&&(clearInterval(s.value),s.value=void 0,w(o)<Date.now()&&e("finish"))},m=o=>{let{value:l,config:g}=o;const{format:S}=t;return W(l,p(p({},g),{format:S}))},d=o=>o;return L(()=>{r()}),V(()=>{r()}),X(()=>{i()}),()=>{const o=t.value;return f(v,y({ref:u},p(p({},Y(t,["onFinish","onChange"])),{value:o,valueRender:d,formatter:m})),a)}}});v.Countdown=et;v.install=function(t){return t.component(v.name,v),t.component(v.Countdown.name,v.Countdown),t};const ut=v.Countdown;export{ut as StatisticCountdown,v as default};