chainlesschain 0.162.77 → 0.162.79

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 (194) hide show
  1. package/README.md +37 -1
  2. package/bin/chainlesschain.js +20 -1
  3. package/package.json +2 -2
  4. package/src/assets/web-panel/assets/{AIOps--t6qElO3.js → AIOps-D89fD_7T.js} +1 -1
  5. package/src/assets/web-panel/assets/{ActionButton-vRiifAww.js → ActionButton-d75flwX8.js} +1 -1
  6. package/src/assets/web-panel/assets/{Analytics-BfSlGprA.js → Analytics-gvvBEb4T.js} +3 -3
  7. package/src/assets/web-panel/assets/{AppLayout-B6L2I5ld.js → AppLayout-DzHOVS64.js} +4 -4
  8. package/src/assets/web-panel/assets/{Audit-Dwpk7vO2.js → Audit-15K7MhRC.js} +1 -1
  9. package/src/assets/web-panel/assets/{Backup-D7UuR3M8.js → Backup-BgVHsglI.js} +1 -1
  10. package/src/assets/web-panel/assets/{BaseInput-BzMDBTyZ.js → BaseInput-BRnvd4sF.js} +1 -1
  11. package/src/assets/web-panel/assets/{Chat-BxYUynGU.js → Chat-B2vtXu7s.js} +6 -6
  12. package/src/assets/web-panel/assets/{ChatBubbleRenderer-BYyCFqO0.js → ChatBubbleRenderer-d1EFM3dh.js} +1 -1
  13. package/src/assets/web-panel/assets/{Checkbox-DgpLcrjA.js → Checkbox-B5uV5Jhr.js} +1 -1
  14. package/src/assets/web-panel/assets/{Codegen-N5dSkUbq.js → Codegen-cVDMBVGV.js} +1 -1
  15. package/src/assets/web-panel/assets/{Col-C1nf7jzT.js → Col-DtL6q7Hw.js} +1 -1
  16. package/src/assets/web-panel/assets/{Community-BuX21CEd.js → Community-DSyPZkqQ.js} +1 -1
  17. package/src/assets/web-panel/assets/{Compact-M37IFQe_.js → Compact-CzfV_q4O.js} +1 -1
  18. package/src/assets/web-panel/assets/{Compliance-B_OBnXJx.js → Compliance-B_xhhLE1.js} +1 -1
  19. package/src/assets/web-panel/assets/{Cowork-BcIn7Sb2.js → Cowork-Y49Qf0JX.js} +2 -2
  20. package/src/assets/web-panel/assets/{Cron-BtmA9AMI.js → Cron-B7JG-oLj.js} +2 -2
  21. package/src/assets/web-panel/assets/{Crosschain-DlAiW2Iy.js → Crosschain-CukEkQtf.js} +1 -1
  22. package/src/assets/web-panel/assets/{DID-91Skenc5.js → DID-Bd4UVKdn.js} +2 -2
  23. package/src/assets/web-panel/assets/{Dashboard-BTzcKrw1.js → Dashboard-DRCQl7H1.js} +2 -2
  24. package/src/assets/web-panel/assets/{Dropdown-VNCZqfkL.js → Dropdown-De47CuRY.js} +1 -1
  25. package/src/assets/web-panel/assets/{EmailListRenderer-B_o62liK.js → EmailListRenderer-C-wAkceB.js} +1 -1
  26. package/src/assets/web-panel/assets/{FamilyGuardDashboard-BqceYpym.js → FamilyGuardDashboard-DhLF_E0k.js} +1 -1
  27. package/src/assets/web-panel/assets/{Federation-BJFcp8S0.js → Federation-DAipUS1m.js} +1 -1
  28. package/src/assets/web-panel/assets/{FormItemContext-DwsPen2h.js → FormItemContext-BCFyAd2j.js} +1 -1
  29. package/src/assets/web-panel/assets/{GenericCardRenderer-BOU0nfJP.js → GenericCardRenderer-wMdxrEV9.js} +1 -1
  30. package/src/assets/web-panel/assets/{Git-C_92Ngor.js → Git-CcwP7HUN.js} +2 -2
  31. package/src/assets/web-panel/assets/{Governance-SIBJc353.js → Governance-VF760JcB.js} +1 -1
  32. package/src/assets/web-panel/assets/{Inference-DcEwRh8C.js → Inference-DnR-GIn2.js} +1 -1
  33. package/src/assets/web-panel/assets/{KnowledgeGraph-C4LQ8MJI.js → KnowledgeGraph-j-ewVKWO.js} +1 -1
  34. package/src/assets/web-panel/assets/{Logs-BXz2tihi.js → Logs-DgB7wSor.js} +2 -2
  35. package/src/assets/web-panel/assets/{Marketplace-DqXKQJ2n.js → Marketplace-fiKjzVWE.js} +1 -1
  36. package/src/assets/web-panel/assets/{McpTools-CXVGQSUd.js → McpTools-BjXSMQrd.js} +5 -5
  37. package/src/assets/web-panel/assets/{Memory-Bp8huWkt.js → Memory-C0L5lnSS.js} +2 -2
  38. package/src/assets/web-panel/assets/{MobileBridge-B3duw6FB.js → MobileBridge-C0Rgg1Su.js} +3 -3
  39. package/src/assets/web-panel/assets/{MobileProjects-Cn5YO60O.js → MobileProjects-BPA50hQb.js} +1 -1
  40. package/src/assets/web-panel/assets/{Mtc-CE_M_-1m.js → Mtc-BUsHuAjB.js} +2 -2
  41. package/src/assets/web-panel/assets/{MtcAudit-Dev-y1Ei.js → MtcAudit-dlH8Q_7U.js} +2 -2
  42. package/src/assets/web-panel/assets/{Multisig-RILPE0-i.js → Multisig-L3_9beuW.js} +3 -3
  43. package/src/assets/web-panel/assets/{NLProgramming-DsBeFM0w.js → NLProgramming-BG4sXy27.js} +1 -1
  44. package/src/assets/web-panel/assets/{Notes-MONi8b1b.js → Notes-felgIvGS.js} +3 -3
  45. package/src/assets/web-panel/assets/{NotificationSettings-mXNink9t.js → NotificationSettings-DHDT96AK.js} +1 -1
  46. package/src/assets/web-panel/assets/{OrderTableRenderer-Bvtv8CHQ.js → OrderTableRenderer-BYrkEfvR.js} +1 -1
  47. package/src/assets/web-panel/assets/{Organization-_7rEqDWP.js → Organization-DdtOLkHG.js} +4 -4
  48. package/src/assets/web-panel/assets/{Overflow-CuqybwI0.js → Overflow-DLw5Pni7.js} +1 -1
  49. package/src/assets/web-panel/assets/{P2P-BvYN2SXJ.js → P2P-B-mZ5EXz.js} +2 -2
  50. package/src/assets/web-panel/assets/{PdhVaultBrowser-BWGnb4i0.js → PdhVaultBrowser-DeOmNCwK.js} +3 -3
  51. package/src/assets/web-panel/assets/{Permissions-D2vyDMm6.js → Permissions-BeQMX71K.js} +4 -4
  52. package/src/assets/web-panel/assets/{PersonalDataHub-BWaT70CA.js → PersonalDataHub-D5PoqtQI.js} +2 -2
  53. package/src/assets/web-panel/assets/{Pipeline-T_Pztk-K.js → Pipeline-B0f5sqKF.js} +1 -1
  54. package/src/assets/web-panel/assets/{Privacy-BTChzeM8.js → Privacy-Dj_gcxio.js} +1 -1
  55. package/src/assets/web-panel/assets/{ProjectInit-BQQBICYM.js → ProjectInit-DmfPgied.js} +2 -2
  56. package/src/assets/web-panel/assets/{ProjectSettings-BOLO_fhW.js → ProjectSettings-BmBfocrv.js} +2 -2
  57. package/src/assets/web-panel/assets/{Projects-BfqkBhzi.js → Projects-BUif48cc.js} +1 -1
  58. package/src/assets/web-panel/assets/{Providers-DpWEAYh2.js → Providers-B0ztEAOV.js} +1 -1
  59. package/src/assets/web-panel/assets/{QuickAsk-MX8kg-uO.js → QuickAsk-BtMG4jH5.js} +1 -1
  60. package/src/assets/web-panel/assets/{Recommend-UOCp-h2X.js → Recommend-DQKN1En8.js} +1 -1
  61. package/src/assets/web-panel/assets/{Reputation-H_vE2kEf.js → Reputation-D34CvUxg.js} +1 -1
  62. package/src/assets/web-panel/assets/{Row-dupAolkD.js → Row-nnuDNx31.js} +1 -1
  63. package/src/assets/web-panel/assets/{RssFeed-DVoerh51.js → RssFeed-DHx9x8_B.js} +2 -2
  64. package/src/assets/web-panel/assets/{Search-5zxC_iWb.js → Search-CH-JYtn_.js} +1 -1
  65. package/src/assets/web-panel/assets/{Security-vg3XxdEZ.js → Security-nNKBmzm4.js} +3 -3
  66. package/src/assets/web-panel/assets/{Services-CWjum0P4.js → Services-xYk_lDxy.js} +2 -2
  67. package/src/assets/web-panel/assets/{Skeleton-BkVnAX7_.js → Skeleton-DTYyRduA.js} +1 -1
  68. package/src/assets/web-panel/assets/{Skills-2oMJr3sU.js → Skills-DS19-9sF.js} +1 -1
  69. package/src/assets/web-panel/assets/{Sla-Bv8uLcr_.js → Sla-Cr_ir42Y.js} +1 -1
  70. package/src/assets/web-panel/assets/{SpeechSettings-BfvawAGM.js → SpeechSettings-Ch5Iq7Wy.js} +1 -1
  71. package/src/assets/web-panel/assets/{SyncSettings-DzWmsU8K.js → SyncSettings-CTblfa_E.js} +2 -2
  72. package/src/assets/web-panel/assets/{Tasks-cbtuyShK.js → Tasks-z7lz3hjG.js} +1 -1
  73. package/src/assets/web-panel/assets/{Templates-PP2omXNk.js → Templates-DGoMFd4r.js} +1 -1
  74. package/src/assets/web-panel/assets/{Tenant-Cab9qgCx.js → Tenant-DQUPvHxx.js} +1 -1
  75. package/src/assets/web-panel/assets/{Terminal-9kFA0Vf8.js → Terminal-Wt2wrbE6.js} +2 -2
  76. package/src/assets/web-panel/assets/{TimelineRenderer-Cx8kncEg.js → TimelineRenderer-DGTc2UqL.js} +1 -1
  77. package/src/assets/web-panel/assets/{Tokens-D19NKMv_.js → Tokens-DPVnuARF.js} +1 -1
  78. package/src/assets/web-panel/assets/{Trigger-DbRaTJsm.js → Trigger-DV5MPXC1.js} +1 -1
  79. package/src/assets/web-panel/assets/{Trust-8EFY9ZrM.js → Trust-BBkMKqwS.js} +1 -1
  80. package/src/assets/web-panel/assets/{UkeySign--wxy-nr4.js → UkeySign-B_2E0qev.js} +1 -1
  81. package/src/assets/web-panel/assets/{VideoEditing-BlRqqo2c.js → VideoEditing-CA-qKeVb.js} +1 -1
  82. package/src/assets/web-panel/assets/{Wallet-B2x_RfaK.js → Wallet-Ds4WURh-.js} +3 -3
  83. package/src/assets/web-panel/assets/{WebAuthn-DISokPYb.js → WebAuthn-BApiHjzz.js} +5 -5
  84. package/src/assets/web-panel/assets/{WorkflowEditor-DkuLYA12.js → WorkflowEditor-DFzmAnzV.js} +1 -1
  85. package/src/assets/web-panel/assets/{chat-MMwBSP3l.js → chat-DZ6sHPit.js} +1 -1
  86. package/src/assets/web-panel/assets/{colors-CPP3K6Jb.js → colors-DgbwhHtE.js} +1 -1
  87. package/src/assets/web-panel/assets/{compact-item-2ruYr7FB.js → compact-item-C4QVYSzd.js} +1 -1
  88. package/src/assets/web-panel/assets/{createContext-BPpiGxaR.js → createContext-yXIs4TwU.js} +1 -1
  89. package/src/assets/web-panel/assets/devWarning-C-HfIeF7.js +1 -0
  90. package/src/assets/web-panel/assets/{hasIn-CtP3Uqy-.js → hasIn-CPtuUtBl.js} +1 -1
  91. package/src/assets/web-panel/assets/{index-DpBaxHIL.js → index-4g6pGxnX.js} +1 -1
  92. package/src/assets/web-panel/assets/{index-9SEWDDhb.js → index-B91hax9S.js} +1 -1
  93. package/src/assets/web-panel/assets/{index-C2N_-y_W.js → index-B9DUiQ24.js} +3 -3
  94. package/src/assets/web-panel/assets/index-BBgWatYO.js +1 -0
  95. package/src/assets/web-panel/assets/{index-2cESIQ4O.js → index-BCb7MYMS.js} +1 -1
  96. package/src/assets/web-panel/assets/{index-D05imMj-.js → index-BIAxMDe9.js} +1 -1
  97. package/src/assets/web-panel/assets/{index-Bq8gB01i.js → index-BJiGrT6V.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-BM_RMGj5.js → index-BOKVSmKh.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-COSm6DcE.js → index-BWJGry74.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-Bf1tNEoB.js → index-BaVYCMJa.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-DyCZ3fz1.js → index-Bd0JznCS.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-oaNSovPm.js → index-BpBCKK6W.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-DSNoOIwN.js → index-BsXF9cn5.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-DIQO-prS.js → index-BxclR5gc.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-C6qsWs-4.js → index-C0LyE6R6.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-COPqJgcW.js → index-CBAgy5pf.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-BLAT0M1t.js → index-CJ550XXg.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-D7-Zo0uW.js → index-CTlz3MP6.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-Dc1ysHqq.js → index-CaC4gaQZ.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-6Sly6NDj.js → index-CnP2ftM5.js} +1 -1
  111. package/src/assets/web-panel/assets/index-CvCTol_u.js +1 -0
  112. package/src/assets/web-panel/assets/{index-Bjthf-eJ.js → index-D2KRfjEI.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-Bfr1HIma.js → index-DA0ePxNn.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-Byddazfj.js → index-DC5iP1VB.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-BkqTFggQ.js → index-DCGmeXfl.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-BM7y07U3.js → index-DHnWI0jj.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-CZrah8Gb.js → index-DN4qpkKQ.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-DS_ISOVj.js → index-DTLaRwKx.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-DO_a65ut.js → index-DdFjcgqH.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-Dy85x86R.js → index-DopuoTzG.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-DXGebJnR.js → index-DpDAGvyU.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-CUQp8MdV.js → index-EGVlUtH-.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-Cru4qTvK.js → index-IFh9qCi0.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-oD_rJWBp.js → index-UEeNpaDD.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-DzFVlsbg.js → index-ZCyyy3Zt.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-h-zAHKNr.js → index-aKZjRwjv.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-D5g378QF.js → index-jBlY6-bF.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-CZyr02ib.js → index-kbcTc6Pf.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-P_R2pJ9q.js → index-x9bXmSNB.js} +1 -1
  130. package/src/assets/web-panel/assets/{initDefaultProps-BrJf63uk.js → initDefaultProps-BDsxioXk.js} +1 -1
  131. package/src/assets/web-panel/assets/{motion-BD8UoaTG.js → motion-erZ2fiIQ.js} +1 -1
  132. package/src/assets/web-panel/assets/{move-DbunBKV-.js → move-BFiiw4WK.js} +1 -1
  133. package/src/assets/web-panel/assets/{omit-CkGNCa-h.js → omit-BRMVd4pM.js} +1 -1
  134. package/src/assets/web-panel/assets/{pickAttrs-DTvTrHC2.js → pickAttrs-CGjoFXsq.js} +1 -1
  135. package/src/assets/web-panel/assets/{placementArrow-Cb7oz9vL.js → placementArrow-DU_Bnf7w.js} +1 -1
  136. package/src/assets/web-panel/assets/{responsiveObserve-O7lB6MAE.js → responsiveObserve-DPdkYupg.js} +1 -1
  137. package/src/assets/web-panel/assets/{slide-C24m1SKv.js → slide-JfHiG96y.js} +1 -1
  138. package/src/assets/web-panel/assets/{statusUtils-D_-9GtZ3.js → statusUtils-Dy-1guyd.js} +1 -1
  139. package/src/assets/web-panel/assets/{styleChecker-CrAYF9jD.js → styleChecker-Chaljnux.js} +1 -1
  140. package/src/assets/web-panel/assets/{useFlexGapSupport-CmgeoVPN.js → useFlexGapSupport-DOHIHBgY.js} +1 -1
  141. package/src/assets/web-panel/assets/{useFs-DzJSzGsy.js → useFs-BxSoQhIY.js} +1 -1
  142. package/src/assets/web-panel/assets/{usePersonalDataHub-Bgqky5YK.js → usePersonalDataHub-MOR76PYB.js} +1 -1
  143. package/src/assets/web-panel/assets/{vnode-ErTJLgr4.js → vnode-BBGIyeYD.js} +1 -1
  144. package/src/assets/web-panel/assets/{zoom-wlf3cppM.js → zoom-C1oFENec.js} +1 -1
  145. package/src/assets/web-panel/index.html +1 -1
  146. package/src/commands/audit.js +4 -3
  147. package/src/commands/automation.js +6 -14
  148. package/src/commands/bi.js +10 -9
  149. package/src/commands/codegen.js +5 -13
  150. package/src/commands/dao.js +8 -6
  151. package/src/commands/dbevo.js +13 -14
  152. package/src/commands/economy.js +3 -2
  153. package/src/commands/evolution.js +3 -2
  154. package/src/commands/federation.js +4 -3
  155. package/src/commands/governance.js +9 -4
  156. package/src/commands/hardening.js +5 -4
  157. package/src/commands/incentive.js +6 -5
  158. package/src/commands/kg.js +17 -10
  159. package/src/commands/lowcode.js +23 -11
  160. package/src/commands/marketplace.js +4 -3
  161. package/src/commands/mcp.js +17 -5
  162. package/src/commands/ops.js +9 -4
  163. package/src/commands/recommend.js +7 -5
  164. package/src/commands/scim.js +3 -2
  165. package/src/commands/session.js +9 -6
  166. package/src/commands/social.js +4 -3
  167. package/src/commands/sync.js +3 -2
  168. package/src/commands/tenant.js +11 -6
  169. package/src/commands/zkp.js +8 -9
  170. package/src/gateways/ws/ws-agent-handler.js +12 -3
  171. package/src/gateways/ws/ws-server.js +6 -0
  172. package/src/harness/background-task-manager.js +44 -18
  173. package/src/harness/mcp-client.js +125 -46
  174. package/src/lib/agent-core.js +2 -1
  175. package/src/lib/chat-core.js +209 -107
  176. package/src/lib/claude-code-bridge.js +13 -1
  177. package/src/lib/dao-governance.js +3 -3
  178. package/src/lib/downloader.js +82 -25
  179. package/src/lib/headless-config-command.js +62 -0
  180. package/src/lib/json-schema-output.js +55 -11
  181. package/src/lib/mcp-oauth.js +110 -21
  182. package/src/lib/mcp-serve.js +70 -11
  183. package/src/lib/multisig-runtime.js +22 -3
  184. package/src/lib/parse-json-option.js +35 -0
  185. package/src/lib/parse-number-option.js +27 -0
  186. package/src/lib/runnable-provider.js +97 -0
  187. package/src/repl/agent-repl.js +76 -17
  188. package/src/repl/config-summary.js +66 -0
  189. package/src/runtime/agent-core.js +189 -36
  190. package/src/runtime/headless-runner.js +49 -1
  191. package/src/runtime/headless-stream.js +34 -0
  192. package/src/assets/web-panel/assets/devWarning-D7iybGpP.js +0 -1
  193. package/src/assets/web-panel/assets/index-BzJrOJ0f.js +0 -1
  194. package/src/assets/web-panel/assets/index-QN-iyhAl.js +0 -1
@@ -1 +1 @@
1
- import{I as v,J as p,U as y,R as i,c as o,K as n,V as h,S as k,o as te,a as X,b as Q,r as C,P as d,Q as b,F as w,Z as T}from"./vendor-BvqAck49.js";import{_ as xe,u as se,b as oe,d as _}from"./index-C2N_-y_W.js";import{s as Fe}from"./community-parser-CO25nZFt.js";import{aU as Se,aC as Ae,aB as Oe,b0 as Me,aG as ze,b1 as Te,t as Ue,as as Re,R as je}from"./icons-DP3uiYxy.js";function H(e){const s=Fe(e);if(!s)return null;try{return JSON.parse(s)}catch{}const l=s.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!l)return null;try{return JSON.parse(l[0])}catch{return null}}function x(e,s=0){return typeof e=="number"&&Number.isFinite(e)?e:s}function Ne(e,s=0){if(!e||typeof e!="object")return null;const l=e.id||"";return l?{key:l,id:l,name:String(e.name||l),symbol:String(e.symbol||""),chainId:x(e.chainId??e.chain_id,0),_idx:s}:null}function ne(e){const s=H(e);return Array.isArray(s)?s.map(Ne).filter(Boolean):[]}function Be(e,s=0){if(!e||typeof e!="object")return null;const l=e.id||"";return l?{key:l,id:l,fromChain:e.fromChain??e.from_chain??"",toChain:e.toChain??e.to_chain??"",asset:String(e.asset||"native"),amount:x(e.amount,0),senderAddress:e.senderAddress??e.sender_address??"",recipientAddress:e.recipientAddress??e.recipient_address??"",lockTxHash:e.lockTxHash??e.lock_tx_hash??"",mintTxHash:e.mintTxHash??e.mint_tx_hash??"",status:String(e.status||"pending").toLowerCase(),feeAmount:x(e.feeAmount??e.fee_amount,0),feeChain:e.feeChain??e.fee_chain??"",errorMessage:e.errorMessage??e.error_message??"",createdAt:e.createdAt??e.created_at??null,completedAt:e.completedAt??e.completed_at??null,_idx:s}:null}function re(e){const s=H(e);return Array.isArray(s)?s.map(Be).filter(Boolean):[]}function Le(e,s=0){if(!e||typeof e!="object")return null;const l=e.id||"";return l?{key:l,id:l,fromChain:e.fromChain??e.from_chain??"",toChain:e.toChain??e.to_chain??"",fromAsset:e.fromAsset??e.from_asset??"native",toAsset:e.toAsset??e.to_asset??"native",amount:x(e.amount,0),counterpartyAddress:e.counterpartyAddress??e.counterparty_address??"",hashLock:e.hashLock??e.hash_lock??"",expiresAt:e.expiresAt??e.expires_at??null,status:String(e.status||"initiated").toLowerCase(),claimTxHash:e.claimTxHash??e.claim_tx_hash??"",refundTxHash:e.refundTxHash??e.refund_tx_hash??"",createdAt:e.createdAt??e.created_at??null,_idx:s}:null}function le(e){const s=H(e);return Array.isArray(s)?s.map(Le).filter(Boolean):[]}function Pe(e,s=0){if(!e||typeof e!="object")return null;const l=e.id||"";return l?{key:l,id:l,fromChain:e.fromChain??e.from_chain??"",toChain:e.toChain??e.to_chain??"",payload:String(e.payload||""),targetContract:e.targetContract??e.target_contract??"",sourceTxHash:e.sourceTxHash??e.source_tx_hash??"",destinationTxHash:e.destinationTxHash??e.destination_tx_hash??"",status:String(e.status||"pending").toLowerCase(),retries:x(e.retries,0),createdAt:e.createdAt??e.created_at??null,deliveredAt:e.deliveredAt??e.delivered_at??null,_idx:s}:null}function ie(e){const s=H(e);return Array.isArray(s)?s.map(Pe).filter(Boolean):[]}const Ie={bridges:{total:0,byStatus:{},totalVolume:0,totalFees:0},swaps:{total:0,byStatus:{}},messages:{total:0,byStatus:{}}};function de(e){const s=JSON.parse(JSON.stringify(Ie)),l=H(e);return!l||typeof l!="object"||Array.isArray(l)||(l.bridges&&typeof l.bridges=="object"&&(s.bridges.total=x(l.bridges.total,0),s.bridges.totalVolume=x(l.bridges.totalVolume??l.bridges.total_volume,0),s.bridges.totalFees=x(l.bridges.totalFees??l.bridges.total_fees,0),l.bridges.byStatus&&typeof l.bridges.byStatus=="object"&&(s.bridges.byStatus={...l.bridges.byStatus})),l.swaps&&typeof l.swaps=="object"&&(s.swaps.total=x(l.swaps.total,0),l.swaps.byStatus&&typeof l.swaps.byStatus=="object"&&(s.swaps.byStatus={...l.swaps.byStatus})),l.messages&&typeof l.messages=="object"&&(s.messages.total=x(l.messages.total,0),l.messages.byStatus&&typeof l.messages.byStatus=="object"&&(s.messages.byStatus={...l.messages.byStatus}))),s}function ce(e){const s=H(e);return!s||typeof s!="object"||Array.isArray(s)?null:{fee:x(s.fee,0),breakdown:{sourceFee:x(s?.breakdown?.sourceFee??s?.breakdown?.source_fee,0),destFee:x(s?.breakdown?.destFee??s?.breakdown?.dest_fee,0),bridgeFee:x(s?.breakdown?.bridgeFee??s?.breakdown?.bridge_fee,0)},currency:String(s.currency||"USD")}}function He(e){if(e==null||e==="")return"—";const s=typeof e=="number"?new Date(e):new Date(String(e));return isNaN(s.getTime())?String(e):s.toLocaleString("zh-CN",{hour12:!1})}const qe={__name:"Crosschain",setup(e,{expose:s}){s();const l=se(),{t:a}=oe(),K=C(!1),W=C(!1),R=C(!1),j=C(!1),q=C(!1),V=C([]),D=C([]),O=C([]),A=C([]),U=C({bridges:{total:0,byStatus:{},totalVolume:0,totalFees:0},swaps:{total:0,byStatus:{}},messages:{total:0,byStatus:{}}}),L=C("bridges"),M=C(!1),N=C(!1),B=C(!1),G=C(!1),f=X({fromChain:"",toChain:"",amount:null,asset:"",sender:"",recipient:""}),u=X({fromChain:"",toChain:"",amount:null,fromAsset:"",toAsset:"",counterparty:"",timeoutMs:null}),c=X({fromChain:"",toChain:"",payload:"",contract:""}),F=X({fromChain:"",toChain:"",amount:null}),S=C(null),P=Q(()=>[{title:a("crosschain.bridgeCols.route"),key:"route"},{title:a("crosschain.bridgeCols.amount"),key:"amount",width:"160px"},{title:a("crosschain.bridgeCols.fee"),key:"fee",width:"100px"},{title:a("crosschain.bridgeCols.status"),key:"status",width:"110px"},{title:a("crosschain.bridgeCols.createdAt"),key:"createdAt",width:"160px"}]),I=Q(()=>[{title:a("crosschain.swapCols.route"),key:"route"},{title:a("crosschain.swapCols.amount"),key:"amount",width:"110px"},{title:a("crosschain.swapCols.hashLock"),key:"hashLock",width:"160px"},{title:a("crosschain.swapCols.status"),key:"status",width:"120px"},{title:a("crosschain.swapCols.expiresAt"),key:"expiresAt",width:"160px"}]),Z=Q(()=>[{title:a("crosschain.messageCols.route"),key:"route",width:"220px"},{title:a("crosschain.messageCols.payload"),key:"payload"},{title:a("crosschain.messageCols.retries"),key:"retries",width:"80px"},{title:a("crosschain.messageCols.status"),key:"status",width:"110px"},{title:a("crosschain.messageCols.createdAt"),key:"createdAt",width:"160px"}]),t={ethereum:"blue",polygon:"purple",bsc:"gold",arbitrum:"cyan",solana:"magenta"};function m(r){return t[r]||"default"}function ue(r){const g=V.value.find(z=>z.id===r);return g?g.name:r||"—"}function me(r){const g=`crosschain.statusLabels.${r}`,z=a(g);return z===g?r:z}function fe(r){return{pending:"default",locked:"processing",minted:"cyan",completed:"green",refunded:"orange",failed:"red"}[r]||"default"}function he(r){return{initiated:"default",hash_locked:"processing",claimed:"green",refunded:"orange",expired:"red"}[r]||"default"}function pe(r){return{pending:"default",sent:"processing",delivered:"green",failed:"red"}[r]||"default"}function ge(r,g){return r?r.length>g?r.slice(0,g)+"...":r:""}function ye({key:r}){r==="bridge"?M.value=!0:r==="swap"?N.value=!0:r==="message"&&(B.value=!0)}async function J(){K.value=!0;try{const[r,g,z,ke,we]=await Promise.all([l.execute("crosschain chains --json",8e3).catch(()=>({output:""})),l.execute("crosschain bridges --limit 200 --json",1e4).catch(()=>({output:""})),l.execute("crosschain swaps --limit 200 --json",1e4).catch(()=>({output:""})),l.execute("crosschain messages --limit 200 --json",1e4).catch(()=>({output:""})),l.execute("crosschain stats --json",8e3).catch(()=>({output:""}))]);V.value=ne(r.output),D.value=re(g.output),O.value=le(z.output),A.value=ie(ke.output),U.value=de(we.output)}catch(r){_.error(a("crosschain.msg.loadFailed")+": "+(r?.message||r))}finally{K.value=!1}}function E(r){return!r.fromChain||!r.toChain?(_.warning(a("crosschain.msg.pairEmpty")),!1):r.fromChain===r.toChain?(_.warning(a("crosschain.msg.pairSame")),!1):!0}async function be(){if(E(f)){if(!f.amount||f.amount<=0){_.warning(a("crosschain.msg.amountInvalid"));return}W.value=!0;try{const r=[`crosschain bridge ${f.fromChain} ${f.toChain} ${f.amount}`];f.asset.trim()&&r.push(`--asset "${f.asset.trim().replace(/"/g,'\\"')}"`),f.sender.trim()&&r.push(`--sender "${f.sender.trim().replace(/"/g,'\\"')}"`),f.recipient.trim()&&r.push(`--recipient "${f.recipient.trim().replace(/"/g,'\\"')}"`),r.push("--json");const{output:g}=await l.execute(r.join(" "),15e3);if(/error|failed|失败|unsupported/i.test(g)&&!/"bridgeId"/.test(g)){_.error(a("crosschain.msg.bridgeFailed")+": "+g.slice(0,120));return}_.success(a("crosschain.msg.bridgeSuccess")),M.value=!1,Y(),L.value="bridges",await J()}catch(r){_.error(a("crosschain.msg.bridgeFailed")+": "+(r?.message||r))}finally{W.value=!1}}}async function ve(){if(E(u)){if(!u.amount||u.amount<=0){_.warning(a("crosschain.msg.amountInvalid"));return}R.value=!0;try{const r=[`crosschain swap ${u.fromChain} ${u.toChain} ${u.amount}`];u.fromAsset.trim()&&r.push(`--from-asset "${u.fromAsset.trim().replace(/"/g,'\\"')}"`),u.toAsset.trim()&&r.push(`--to-asset "${u.toAsset.trim().replace(/"/g,'\\"')}"`),u.counterparty.trim()&&r.push(`--counterparty "${u.counterparty.trim().replace(/"/g,'\\"')}"`),u.timeoutMs!=null&&r.push(`--timeout ${u.timeoutMs}`),r.push("--json");const{output:g}=await l.execute(r.join(" "),15e3);if(/error|failed|失败|unsupported/i.test(g)&&!/"swapId"/.test(g)){_.error(a("crosschain.msg.swapFailed")+": "+g.slice(0,120));return}_.success(a("crosschain.msg.swapSuccess")),N.value=!1,$(),L.value="swaps",await J()}catch(r){_.error(a("crosschain.msg.swapFailed")+": "+(r?.message||r))}finally{R.value=!1}}}async function _e(){if(E(c)){j.value=!0;try{const r=[`crosschain send ${c.fromChain} ${c.toChain}`];c.payload.trim()&&r.push(`--payload "${c.payload.trim().replace(/"/g,'\\"')}"`),c.contract.trim()&&r.push(`--contract "${c.contract.trim().replace(/"/g,'\\"')}"`),r.push("--json");const{output:g}=await l.execute(r.join(" "),12e3);if(/error|failed|失败|unsupported/i.test(g)&&!/"messageId"/.test(g)){_.error(a("crosschain.msg.sendFailed")+": "+g.slice(0,120));return}_.success(a("crosschain.msg.sendSuccess")),B.value=!1,ee(),L.value="messages",await J()}catch(r){_.error(a("crosschain.msg.sendFailed")+": "+(r?.message||r))}finally{j.value=!1}}}async function Ce(){if(E(F)){if(!F.amount||F.amount<=0){_.warning(a("crosschain.msg.amountInvalid"));return}q.value=!0,S.value=null;try{const r=`crosschain estimate-fee ${F.fromChain} ${F.toChain} ${F.amount} --json`,{output:g}=await l.execute(r,8e3),z=ce(g);if(!z){_.error(a("crosschain.msg.feeFailed")+": "+g.slice(0,120));return}S.value=z}catch(r){_.error(a("crosschain.msg.feeFailed")+": "+(r?.message||r))}finally{q.value=!1}}}function Y(){f.fromChain="",f.toChain="",f.amount=null,f.asset="",f.sender="",f.recipient=""}function $(){u.fromChain="",u.toChain="",u.amount=null,u.fromAsset="",u.toAsset="",u.counterparty="",u.timeoutMs=null}function ee(){c.fromChain="",c.toChain="",c.payload="",c.contract=""}te(J);const ae={ws:l,t:a,loading:K,bridging:W,swapping:R,sending:j,estimating:q,chains:V,bridges:D,swaps:O,messages:A,stats:U,activeTab:L,showBridgeModal:M,showSwapModal:N,showMessageModal:B,showFeeModal:G,bridgeForm:f,swapForm:u,messageForm:c,feeForm:F,feeResult:S,bridgeColumns:P,swapColumns:I,messageColumns:Z,CHAIN_COLORS:t,chainColor:m,chainName:ue,statusLabel:me,bridgeStatusColor:fe,swapStatusColor:he,messageStatusColor:pe,truncate:ge,handleNewClick:ye,loadAll:J,validatePair:E,initiateBridge:be,initiateSwap:ve,sendMessage:_e,estimateFee:Ce,resetBridgeForm:Y,resetSwapForm:$,resetMessageForm:ee,ref:C,computed:Q,onMounted:te,reactive:X,get ReloadOutlined(){return je},get PlusOutlined(){return Re},get SwapOutlined(){return Ue},get InteractionOutlined(){return Te},get MailOutlined(){return ze},get CalculatorOutlined(){return Me},get LinkOutlined(){return Oe},get DollarOutlined(){return Ae},get ArrowRightOutlined(){return Se},get message(){return _},get useI18n(){return oe},get useWsStore(){return se},get parseChains(){return ne},get parseBridges(){return re},get parseSwaps(){return le},get parseMessages(){return ie},get parseStats(){return de},get parseFeeEstimate(){return ce},get formatXChainTime(){return He}};return Object.defineProperty(ae,"__isScriptSetup",{enumerable:!1,value:!0}),ae}},Ve={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},De={class:"page-title"},Je={class:"page-sub"},Ee={style:{opacity:"0.7"}},Xe={key:0,style:{opacity:"0.55","font-size":"10px","margin-left":"4px"}},Ke={style:{color:"var(--text-primary)"}},We={style:{color:"var(--text-primary)"}},Qe={style:{color:"#722ed1","font-weight":"500"}},Ge={style:{color:"var(--text-secondary)","margin-left":"4px","font-size":"11px"}},Ze={key:2,style:{color:"var(--text-secondary)","font-size":"12px"}},Ye={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},$e={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},ea={style:{color:"var(--text-primary)"}},aa={style:{color:"var(--text-secondary)","font-size":"11px",margin:"0 4px"}},ta={style:{color:"var(--text-primary)"}},sa={style:{color:"var(--text-secondary)","font-size":"11px","margin-left":"4px"}},oa={key:1,style:{color:"#722ed1","font-weight":"500"}},na={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"11px"}},ra={key:1,style:{color:"var(--text-muted)"}},la={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},ia={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},da={style:{color:"var(--text-primary)"}},ca={style:{color:"var(--text-primary)"}},ua={key:1,style:{color:"var(--text-secondary)","font-size":"12px"}},ma={key:1,style:{color:"var(--text-muted)"}},fa={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},ha={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},pa={style:{"margin-top":"12px","font-size":"12px",color:"var(--text-secondary)"}};function ga(e,s,l,a,K,W){const R=v("a-button"),j=v("a-menu-item"),q=v("a-menu"),V=v("a-dropdown"),D=v("a-space"),O=v("a-statistic"),A=v("a-card"),U=v("a-col"),L=v("a-row"),M=v("a-tag"),N=v("a-table"),B=v("a-tab-pane"),G=v("a-tabs"),f=v("a-select-option"),u=v("a-select"),c=v("a-form-item"),F=v("a-input-number"),S=v("a-input"),P=v("a-form"),I=v("a-modal"),Z=v("a-textarea");return d(),p("div",null,[y("div",Ve,[y("div",null,[y("h2",De,i(e.$t("crosschain.title")),1),y("p",Je,i(e.$t("crosschain.subtitle")),1)]),o(D,null,{default:n(()=>[o(R,{loading:a.loading,onClick:a.loadAll},{icon:n(()=>[o(a.ReloadOutlined)]),default:n(()=>[b(" "+i(e.$t("crosschain.refresh")),1)]),_:1},8,["loading"]),o(V,{trigger:["click"]},{overlay:n(()=>[o(q,{onClick:a.handleNewClick},{default:n(()=>[o(j,{key:"bridge"},{default:n(()=>[o(a.SwapOutlined),b(" "+i(e.$t("crosschain.actions.bridge")),1)]),_:1}),o(j,{key:"swap"},{default:n(()=>[o(a.InteractionOutlined),b(" "+i(e.$t("crosschain.actions.swap")),1)]),_:1}),o(j,{key:"message"},{default:n(()=>[o(a.MailOutlined),b(" "+i(e.$t("crosschain.actions.message")),1)]),_:1})]),_:1})]),default:n(()=>[o(R,{type:"primary"},{icon:n(()=>[o(a.PlusOutlined)]),default:n(()=>[b(" "+i(e.$t("crosschain.newDropdown")),1)]),_:1})]),_:1}),o(R,{onClick:s[0]||(s[0]=t=>a.showFeeModal=!0)},{icon:n(()=>[o(a.CalculatorOutlined)]),default:n(()=>[b(" "+i(e.$t("crosschain.feeEstimate")),1)]),_:1})]),_:1})]),h(" Stats overview "),o(L,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:n(()=>[o(U,{xs:12,sm:8,lg:5},{default:n(()=>[o(A,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(O,{title:e.$t("crosschain.stats.chains"),value:a.chains.length,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:n(()=>[o(a.LinkOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(U,{xs:12,sm:8,lg:5},{default:n(()=>[o(A,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(O,{title:e.$t("crosschain.stats.bridges"),value:a.stats.bridges.total,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:n(()=>[o(a.SwapOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(U,{xs:12,sm:8,lg:5},{default:n(()=>[o(A,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(O,{title:e.$t("crosschain.stats.swaps"),value:a.stats.swaps.total,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:n(()=>[o(a.InteractionOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(U,{xs:12,sm:8,lg:5},{default:n(()=>[o(A,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(O,{title:e.$t("crosschain.stats.messages"),value:a.stats.messages.total,"value-style":{color:"#faad14",fontSize:"20px"}},{prefix:n(()=>[o(a.MailOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(U,{xs:24,sm:8,lg:4},{default:n(()=>[o(A,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(O,{title:e.$t("crosschain.stats.volume"),value:a.stats.bridges.totalVolume,precision:2,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:n(()=>[o(a.DollarOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),h(" Chain catalogue "),a.chains.length?(d(),k(A,{key:0,title:e.$t("crosschain.chainsCard"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:n(()=>[o(D,{size:[12,8],wrap:""},{default:n(()=>[(d(!0),p(w,null,T(a.chains,t=>(d(),k(M,{key:t.id,color:a.chainColor(t.id)},{default:n(()=>[b(i(t.name)+" ",1),y("span",Ee,"("+i(t.symbol)+")",1),t.chainId>0?(d(),p("span",Xe,"#"+i(t.chainId),1)):h("v-if",!0)]),_:2},1032,["color"]))),128))]),_:1})]),_:1},8,["title"])):h("v-if",!0),h(" Tabs "),o(G,{activeKey:a.activeTab,"onUpdate:activeKey":s[1]||(s[1]=t=>a.activeTab=t),class:"xchain-tabs"},{default:n(()=>[h(" ── Bridges tab ───────────────────────────────────────────── "),o(B,{key:"bridges",tab:e.$t("crosschain.tabs.bridges")},{default:n(()=>[o(N,{columns:a.bridgeColumns,"data-source":a.bridges,pagination:{pageSize:20,showTotal:t=>e.$t("crosschain.table.totalSuffix",{n:t})},size:"small",loading:a.loading,style:{background:"var(--bg-card)"}},{bodyCell:n(({column:t,record:m})=>[t.key==="route"?(d(),p(w,{key:0},[y("span",Ke,i(a.chainName(m.fromChain)),1),o(a.ArrowRightOutlined,{style:{margin:"0 6px",color:"var(--text-secondary)","font-size":"11px"}}),y("span",We,i(a.chainName(m.toChain)),1)],64)):h("v-if",!0),t.key==="amount"?(d(),p(w,{key:1},[y("span",Qe,i(m.amount),1),y("span",Ge,i(m.asset),1)],64)):h("v-if",!0),t.key==="fee"?(d(),p("span",Ze,i(m.feeAmount),1)):h("v-if",!0),t.key==="status"?(d(),k(M,{key:3,color:a.bridgeStatusColor(m.status)},{default:n(()=>[b(i(a.statusLabel(m.status)),1)]),_:2},1032,["color"])):h("v-if",!0),t.key==="createdAt"?(d(),p("span",Ye,i(a.formatXChainTime(m.createdAt)),1)):h("v-if",!0)]),emptyText:n(()=>[y("div",$e,[o(a.SwapOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),b(" "+i(e.$t("crosschain.table.emptyBridges")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),h(" ── Swaps tab ─────────────────────────────────────────────── "),o(B,{key:"swaps",tab:e.$t("crosschain.tabs.swaps")},{default:n(()=>[o(N,{columns:a.swapColumns,"data-source":a.swaps,pagination:{pageSize:20,showTotal:t=>e.$t("crosschain.table.totalSuffix",{n:t})},size:"small",loading:a.loading,style:{background:"var(--bg-card)"}},{bodyCell:n(({column:t,record:m})=>[t.key==="route"?(d(),p(w,{key:0},[y("span",ea,i(a.chainName(m.fromChain)),1),y("span",aa,"("+i(m.fromAsset)+")",1),o(a.ArrowRightOutlined,{style:{margin:"0 4px",color:"var(--text-secondary)","font-size":"11px"}}),y("span",ta,i(a.chainName(m.toChain)),1),y("span",sa,"("+i(m.toAsset)+")",1)],64)):h("v-if",!0),t.key==="amount"?(d(),p("span",oa,i(m.amount),1)):h("v-if",!0),t.key==="hashLock"?(d(),p(w,{key:2},[m.hashLock?(d(),p("span",na,i(m.hashLock.slice(0,14))+"... ",1)):(d(),p("span",ra,"—"))],64)):h("v-if",!0),t.key==="status"?(d(),k(M,{key:3,color:a.swapStatusColor(m.status)},{default:n(()=>[b(i(a.statusLabel(m.status)),1)]),_:2},1032,["color"])):h("v-if",!0),t.key==="expiresAt"?(d(),p("span",la,i(a.formatXChainTime(m.expiresAt)),1)):h("v-if",!0)]),emptyText:n(()=>[y("div",ia,[o(a.InteractionOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),b(" "+i(e.$t("crosschain.table.emptySwaps")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),h(" ── Messages tab ──────────────────────────────────────────── "),o(B,{key:"messages",tab:e.$t("crosschain.tabs.messages")},{default:n(()=>[o(N,{columns:a.messageColumns,"data-source":a.messages,pagination:{pageSize:20,showTotal:t=>e.$t("crosschain.table.totalSuffix",{n:t})},size:"small",loading:a.loading,style:{background:"var(--bg-card)"}},{bodyCell:n(({column:t,record:m})=>[t.key==="route"?(d(),p(w,{key:0},[y("span",da,i(a.chainName(m.fromChain)),1),o(a.ArrowRightOutlined,{style:{margin:"0 6px",color:"var(--text-secondary)","font-size":"11px"}}),y("span",ca,i(a.chainName(m.toChain)),1)],64)):h("v-if",!0),t.key==="payload"?(d(),p("span",ua,i(a.truncate(m.payload,60)||"—"),1)):h("v-if",!0),t.key==="retries"?(d(),p(w,{key:2},[m.retries>0?(d(),k(M,{key:0,color:"orange",style:{"font-size":"11px"}},{default:n(()=>[b(i(e.$t("crosschain.table.retrySuffix",{n:m.retries})),1)]),_:2},1024)):(d(),p("span",ma,"—"))],64)):h("v-if",!0),t.key==="status"?(d(),k(M,{key:3,color:a.messageStatusColor(m.status)},{default:n(()=>[b(i(a.statusLabel(m.status)),1)]),_:2},1032,["color"])):h("v-if",!0),t.key==="createdAt"?(d(),p("span",fa,i(a.formatXChainTime(m.createdAt)),1)):h("v-if",!0)]),emptyText:n(()=>[y("div",ha,[o(a.MailOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),b(" "+i(e.$t("crosschain.table.emptyMessages")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"])]),_:1},8,["activeKey"]),h(" ── Bridge modal ──────────────────────────────────────────── "),o(I,{open:a.showBridgeModal,"onUpdate:open":s[8]||(s[8]=t=>a.showBridgeModal=t),title:e.$t("crosschain.bridge_modal.title"),"confirm-loading":a.bridging,width:540,"ok-text":e.$t("crosschain.bridge_modal.ok"),"cancel-text":e.$t("crosschain.bridge_modal.cancel"),onOk:a.initiateBridge,onCancel:a.resetBridgeForm},{default:n(()=>[o(P,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:n(()=>[o(c,{label:e.$t("crosschain.bridge_modal.fromChain"),required:""},{default:n(()=>[o(u,{value:a.bridgeForm.fromChain,"onUpdate:value":s[2]||(s[2]=t=>a.bridgeForm.fromChain=t),placeholder:e.$t("crosschain.bridge_modal.fromChainPlaceholder")},{default:n(()=>[(d(!0),p(w,null,T(a.chains,t=>(d(),k(f,{key:t.id,value:t.id},{default:n(()=>[b(i(t.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value","placeholder"])]),_:1},8,["label"]),o(c,{label:e.$t("crosschain.bridge_modal.toChain"),required:""},{default:n(()=>[o(u,{value:a.bridgeForm.toChain,"onUpdate:value":s[3]||(s[3]=t=>a.bridgeForm.toChain=t),placeholder:e.$t("crosschain.bridge_modal.toChainPlaceholder")},{default:n(()=>[(d(!0),p(w,null,T(a.chains,t=>(d(),k(f,{key:t.id,value:t.id,disabled:t.id===a.bridgeForm.fromChain},{default:n(()=>[b(i(t.name),1)]),_:2},1032,["value","disabled"]))),128))]),_:1},8,["value","placeholder"])]),_:1},8,["label"]),o(c,{label:e.$t("crosschain.bridge_modal.amount"),required:""},{default:n(()=>[o(F,{value:a.bridgeForm.amount,"onUpdate:value":s[4]||(s[4]=t=>a.bridgeForm.amount=t),min:0,precision:6,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"]),o(c,{label:e.$t("crosschain.bridge_modal.asset")},{default:n(()=>[o(S,{value:a.bridgeForm.asset,"onUpdate:value":s[5]||(s[5]=t=>a.bridgeForm.asset=t),placeholder:e.$t("crosschain.bridge_modal.assetPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(c,{label:e.$t("crosschain.bridge_modal.sender")},{default:n(()=>[o(S,{value:a.bridgeForm.sender,"onUpdate:value":s[6]||(s[6]=t=>a.bridgeForm.sender=t),placeholder:e.$t("crosschain.bridge_modal.senderPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(c,{label:e.$t("crosschain.bridge_modal.recipient")},{default:n(()=>[o(S,{value:a.bridgeForm.recipient,"onUpdate:value":s[7]||(s[7]=t=>a.bridgeForm.recipient=t),placeholder:e.$t("crosschain.bridge_modal.recipientPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),h(" ── Swap modal ────────────────────────────────────────────── "),o(I,{open:a.showSwapModal,"onUpdate:open":s[16]||(s[16]=t=>a.showSwapModal=t),title:e.$t("crosschain.swap_modal.title"),"confirm-loading":a.swapping,width:540,"ok-text":e.$t("crosschain.swap_modal.ok"),"cancel-text":e.$t("crosschain.swap_modal.cancel"),onOk:a.initiateSwap,onCancel:a.resetSwapForm},{default:n(()=>[o(P,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:n(()=>[o(c,{label:e.$t("crosschain.swap_modal.fromChain"),required:""},{default:n(()=>[o(u,{value:a.swapForm.fromChain,"onUpdate:value":s[9]||(s[9]=t=>a.swapForm.fromChain=t),placeholder:e.$t("crosschain.swap_modal.fromChainPlaceholder")},{default:n(()=>[(d(!0),p(w,null,T(a.chains,t=>(d(),k(f,{key:t.id,value:t.id},{default:n(()=>[b(i(t.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value","placeholder"])]),_:1},8,["label"]),o(c,{label:e.$t("crosschain.swap_modal.toChain"),required:""},{default:n(()=>[o(u,{value:a.swapForm.toChain,"onUpdate:value":s[10]||(s[10]=t=>a.swapForm.toChain=t),placeholder:e.$t("crosschain.swap_modal.toChainPlaceholder")},{default:n(()=>[(d(!0),p(w,null,T(a.chains,t=>(d(),k(f,{key:t.id,value:t.id,disabled:t.id===a.swapForm.fromChain},{default:n(()=>[b(i(t.name),1)]),_:2},1032,["value","disabled"]))),128))]),_:1},8,["value","placeholder"])]),_:1},8,["label"]),o(c,{label:e.$t("crosschain.swap_modal.amount"),required:""},{default:n(()=>[o(F,{value:a.swapForm.amount,"onUpdate:value":s[11]||(s[11]=t=>a.swapForm.amount=t),min:0,precision:6,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"]),o(c,{label:e.$t("crosschain.swap_modal.fromAsset")},{default:n(()=>[o(S,{value:a.swapForm.fromAsset,"onUpdate:value":s[12]||(s[12]=t=>a.swapForm.fromAsset=t),placeholder:e.$t("crosschain.swap_modal.assetPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(c,{label:e.$t("crosschain.swap_modal.toAsset")},{default:n(()=>[o(S,{value:a.swapForm.toAsset,"onUpdate:value":s[13]||(s[13]=t=>a.swapForm.toAsset=t),placeholder:e.$t("crosschain.swap_modal.assetPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(c,{label:e.$t("crosschain.swap_modal.counterparty")},{default:n(()=>[o(S,{value:a.swapForm.counterparty,"onUpdate:value":s[14]||(s[14]=t=>a.swapForm.counterparty=t),placeholder:e.$t("crosschain.swap_modal.counterpartyPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(c,{label:e.$t("crosschain.swap_modal.timeoutMs")},{default:n(()=>[o(F,{value:a.swapForm.timeoutMs,"onUpdate:value":s[15]||(s[15]=t=>a.swapForm.timeoutMs=t),min:0,placeholder:e.$t("crosschain.swap_modal.timeoutPlaceholder"),style:{width:"100%"}},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),h(" ── Message modal ─────────────────────────────────────────── "),o(I,{open:a.showMessageModal,"onUpdate:open":s[21]||(s[21]=t=>a.showMessageModal=t),title:e.$t("crosschain.message_modal.title"),"confirm-loading":a.sending,width:520,"ok-text":e.$t("crosschain.message_modal.ok"),"cancel-text":e.$t("crosschain.message_modal.cancel"),onOk:a.sendMessage,onCancel:a.resetMessageForm},{default:n(()=>[o(P,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:n(()=>[o(c,{label:e.$t("crosschain.message_modal.fromChain"),required:""},{default:n(()=>[o(u,{value:a.messageForm.fromChain,"onUpdate:value":s[17]||(s[17]=t=>a.messageForm.fromChain=t),placeholder:e.$t("crosschain.message_modal.fromChainPlaceholder")},{default:n(()=>[(d(!0),p(w,null,T(a.chains,t=>(d(),k(f,{key:t.id,value:t.id},{default:n(()=>[b(i(t.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value","placeholder"])]),_:1},8,["label"]),o(c,{label:e.$t("crosschain.message_modal.toChain"),required:""},{default:n(()=>[o(u,{value:a.messageForm.toChain,"onUpdate:value":s[18]||(s[18]=t=>a.messageForm.toChain=t),placeholder:e.$t("crosschain.message_modal.toChainPlaceholder")},{default:n(()=>[(d(!0),p(w,null,T(a.chains,t=>(d(),k(f,{key:t.id,value:t.id,disabled:t.id===a.messageForm.fromChain},{default:n(()=>[b(i(t.name),1)]),_:2},1032,["value","disabled"]))),128))]),_:1},8,["value","placeholder"])]),_:1},8,["label"]),o(c,{label:e.$t("crosschain.message_modal.payload")},{default:n(()=>[o(Z,{value:a.messageForm.payload,"onUpdate:value":s[19]||(s[19]=t=>a.messageForm.payload=t),"auto-size":{minRows:3,maxRows:8}},null,8,["value"])]),_:1},8,["label"]),o(c,{label:e.$t("crosschain.message_modal.contract")},{default:n(()=>[o(S,{value:a.messageForm.contract,"onUpdate:value":s[20]||(s[20]=t=>a.messageForm.contract=t),placeholder:e.$t("crosschain.message_modal.contractPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),h(" ── Fee estimate modal ────────────────────────────────────── "),o(I,{open:a.showFeeModal,"onUpdate:open":s[25]||(s[25]=t=>a.showFeeModal=t),title:e.$t("crosschain.fee_modal.title"),"confirm-loading":a.estimating,width:480,"ok-text":e.$t("crosschain.fee_modal.ok"),"cancel-text":e.$t("crosschain.fee_modal.cancel"),onOk:a.estimateFee},{default:n(()=>[o(P,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:n(()=>[o(c,{label:e.$t("crosschain.fee_modal.fromChain"),required:""},{default:n(()=>[o(u,{value:a.feeForm.fromChain,"onUpdate:value":s[22]||(s[22]=t=>a.feeForm.fromChain=t)},{default:n(()=>[(d(!0),p(w,null,T(a.chains,t=>(d(),k(f,{key:t.id,value:t.id},{default:n(()=>[b(i(t.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),o(c,{label:e.$t("crosschain.fee_modal.toChain"),required:""},{default:n(()=>[o(u,{value:a.feeForm.toChain,"onUpdate:value":s[23]||(s[23]=t=>a.feeForm.toChain=t)},{default:n(()=>[(d(!0),p(w,null,T(a.chains,t=>(d(),k(f,{key:t.id,value:t.id,disabled:t.id===a.feeForm.fromChain},{default:n(()=>[b(i(t.name),1)]),_:2},1032,["value","disabled"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),o(c,{label:e.$t("crosschain.fee_modal.amount"),required:""},{default:n(()=>[o(F,{value:a.feeForm.amount,"onUpdate:value":s[24]||(s[24]=t=>a.feeForm.amount=t),min:0,precision:6,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"])]),_:1}),a.feeResult?(d(),k(A,{key:0,size:"small",style:{background:"var(--bg-base)","margin-top":"8px"}},{default:n(()=>[o(O,{title:e.$t("crosschain.fee_modal.resultTitle"),value:a.feeResult.fee,precision:4,suffix:a.feeResult.currency,"value-style":{color:"#1677ff"}},null,8,["title","value","suffix"]),y("div",pa,[y("div",null,i(e.$t("crosschain.fee_modal.sourceFee",{fee:a.feeResult.breakdown.sourceFee,currency:a.feeResult.currency})),1),y("div",null,i(e.$t("crosschain.fee_modal.destFee",{fee:a.feeResult.breakdown.destFee,currency:a.feeResult.currency})),1),y("div",null,i(e.$t("crosschain.fee_modal.bridgeFee",{fee:a.feeResult.breakdown.bridgeFee,currency:a.feeResult.currency})),1)])]),_:1})):h("v-if",!0)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])])}const Ca=xe(qe,[["render",ga],["__scopeId","data-v-00c68d45"],["__file","/tmp/cc-web-panel-qWJQO5/repo/packages/web-panel/src/views/Crosschain.vue"]]);export{Ca as default};
1
+ import{I as v,J as p,U as y,R as i,c as o,K as n,V as h,S as k,o as te,a as X,b as G,r as C,P as d,Q as b,F as w,Z as T}from"./vendor-BvqAck49.js";import{_ as xe,u as se,b as oe,d as _}from"./index-B9DUiQ24.js";import{s as Fe}from"./community-parser-CO25nZFt.js";import{aU as Se,aC as Ae,aB as Oe,b0 as Me,aG as ze,b1 as Te,t as Ue,as as Re,R as je}from"./icons-DP3uiYxy.js";function H(e){const s=Fe(e);if(!s)return null;try{return JSON.parse(s)}catch{}const l=s.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!l)return null;try{return JSON.parse(l[0])}catch{return null}}function x(e,s=0){return typeof e=="number"&&Number.isFinite(e)?e:s}function Ne(e,s=0){if(!e||typeof e!="object")return null;const l=e.id||"";return l?{key:l,id:l,name:String(e.name||l),symbol:String(e.symbol||""),chainId:x(e.chainId??e.chain_id,0),_idx:s}:null}function ne(e){const s=H(e);return Array.isArray(s)?s.map(Ne).filter(Boolean):[]}function Be(e,s=0){if(!e||typeof e!="object")return null;const l=e.id||"";return l?{key:l,id:l,fromChain:e.fromChain??e.from_chain??"",toChain:e.toChain??e.to_chain??"",asset:String(e.asset||"native"),amount:x(e.amount,0),senderAddress:e.senderAddress??e.sender_address??"",recipientAddress:e.recipientAddress??e.recipient_address??"",lockTxHash:e.lockTxHash??e.lock_tx_hash??"",mintTxHash:e.mintTxHash??e.mint_tx_hash??"",status:String(e.status||"pending").toLowerCase(),feeAmount:x(e.feeAmount??e.fee_amount,0),feeChain:e.feeChain??e.fee_chain??"",errorMessage:e.errorMessage??e.error_message??"",createdAt:e.createdAt??e.created_at??null,completedAt:e.completedAt??e.completed_at??null,_idx:s}:null}function re(e){const s=H(e);return Array.isArray(s)?s.map(Be).filter(Boolean):[]}function Le(e,s=0){if(!e||typeof e!="object")return null;const l=e.id||"";return l?{key:l,id:l,fromChain:e.fromChain??e.from_chain??"",toChain:e.toChain??e.to_chain??"",fromAsset:e.fromAsset??e.from_asset??"native",toAsset:e.toAsset??e.to_asset??"native",amount:x(e.amount,0),counterpartyAddress:e.counterpartyAddress??e.counterparty_address??"",hashLock:e.hashLock??e.hash_lock??"",expiresAt:e.expiresAt??e.expires_at??null,status:String(e.status||"initiated").toLowerCase(),claimTxHash:e.claimTxHash??e.claim_tx_hash??"",refundTxHash:e.refundTxHash??e.refund_tx_hash??"",createdAt:e.createdAt??e.created_at??null,_idx:s}:null}function le(e){const s=H(e);return Array.isArray(s)?s.map(Le).filter(Boolean):[]}function Pe(e,s=0){if(!e||typeof e!="object")return null;const l=e.id||"";return l?{key:l,id:l,fromChain:e.fromChain??e.from_chain??"",toChain:e.toChain??e.to_chain??"",payload:String(e.payload||""),targetContract:e.targetContract??e.target_contract??"",sourceTxHash:e.sourceTxHash??e.source_tx_hash??"",destinationTxHash:e.destinationTxHash??e.destination_tx_hash??"",status:String(e.status||"pending").toLowerCase(),retries:x(e.retries,0),createdAt:e.createdAt??e.created_at??null,deliveredAt:e.deliveredAt??e.delivered_at??null,_idx:s}:null}function ie(e){const s=H(e);return Array.isArray(s)?s.map(Pe).filter(Boolean):[]}const Ie={bridges:{total:0,byStatus:{},totalVolume:0,totalFees:0},swaps:{total:0,byStatus:{}},messages:{total:0,byStatus:{}}};function de(e){const s=JSON.parse(JSON.stringify(Ie)),l=H(e);return!l||typeof l!="object"||Array.isArray(l)||(l.bridges&&typeof l.bridges=="object"&&(s.bridges.total=x(l.bridges.total,0),s.bridges.totalVolume=x(l.bridges.totalVolume??l.bridges.total_volume,0),s.bridges.totalFees=x(l.bridges.totalFees??l.bridges.total_fees,0),l.bridges.byStatus&&typeof l.bridges.byStatus=="object"&&(s.bridges.byStatus={...l.bridges.byStatus})),l.swaps&&typeof l.swaps=="object"&&(s.swaps.total=x(l.swaps.total,0),l.swaps.byStatus&&typeof l.swaps.byStatus=="object"&&(s.swaps.byStatus={...l.swaps.byStatus})),l.messages&&typeof l.messages=="object"&&(s.messages.total=x(l.messages.total,0),l.messages.byStatus&&typeof l.messages.byStatus=="object"&&(s.messages.byStatus={...l.messages.byStatus}))),s}function ce(e){const s=H(e);return!s||typeof s!="object"||Array.isArray(s)?null:{fee:x(s.fee,0),breakdown:{sourceFee:x(s?.breakdown?.sourceFee??s?.breakdown?.source_fee,0),destFee:x(s?.breakdown?.destFee??s?.breakdown?.dest_fee,0),bridgeFee:x(s?.breakdown?.bridgeFee??s?.breakdown?.bridge_fee,0)},currency:String(s.currency||"USD")}}function He(e){if(e==null||e==="")return"—";const s=typeof e=="number"?new Date(e):new Date(String(e));return isNaN(s.getTime())?String(e):s.toLocaleString("zh-CN",{hour12:!1})}const qe={__name:"Crosschain",setup(e,{expose:s}){s();const l=se(),{t:a}=oe(),K=C(!1),W=C(!1),R=C(!1),j=C(!1),q=C(!1),V=C([]),D=C([]),O=C([]),A=C([]),U=C({bridges:{total:0,byStatus:{},totalVolume:0,totalFees:0},swaps:{total:0,byStatus:{}},messages:{total:0,byStatus:{}}}),L=C("bridges"),M=C(!1),N=C(!1),B=C(!1),Q=C(!1),f=X({fromChain:"",toChain:"",amount:null,asset:"",sender:"",recipient:""}),u=X({fromChain:"",toChain:"",amount:null,fromAsset:"",toAsset:"",counterparty:"",timeoutMs:null}),c=X({fromChain:"",toChain:"",payload:"",contract:""}),F=X({fromChain:"",toChain:"",amount:null}),S=C(null),P=G(()=>[{title:a("crosschain.bridgeCols.route"),key:"route"},{title:a("crosschain.bridgeCols.amount"),key:"amount",width:"160px"},{title:a("crosschain.bridgeCols.fee"),key:"fee",width:"100px"},{title:a("crosschain.bridgeCols.status"),key:"status",width:"110px"},{title:a("crosschain.bridgeCols.createdAt"),key:"createdAt",width:"160px"}]),I=G(()=>[{title:a("crosschain.swapCols.route"),key:"route"},{title:a("crosschain.swapCols.amount"),key:"amount",width:"110px"},{title:a("crosschain.swapCols.hashLock"),key:"hashLock",width:"160px"},{title:a("crosschain.swapCols.status"),key:"status",width:"120px"},{title:a("crosschain.swapCols.expiresAt"),key:"expiresAt",width:"160px"}]),Z=G(()=>[{title:a("crosschain.messageCols.route"),key:"route",width:"220px"},{title:a("crosschain.messageCols.payload"),key:"payload"},{title:a("crosschain.messageCols.retries"),key:"retries",width:"80px"},{title:a("crosschain.messageCols.status"),key:"status",width:"110px"},{title:a("crosschain.messageCols.createdAt"),key:"createdAt",width:"160px"}]),t={ethereum:"blue",polygon:"purple",bsc:"gold",arbitrum:"cyan",solana:"magenta"};function m(r){return t[r]||"default"}function ue(r){const g=V.value.find(z=>z.id===r);return g?g.name:r||"—"}function me(r){const g=`crosschain.statusLabels.${r}`,z=a(g);return z===g?r:z}function fe(r){return{pending:"default",locked:"processing",minted:"cyan",completed:"green",refunded:"orange",failed:"red"}[r]||"default"}function he(r){return{initiated:"default",hash_locked:"processing",claimed:"green",refunded:"orange",expired:"red"}[r]||"default"}function pe(r){return{pending:"default",sent:"processing",delivered:"green",failed:"red"}[r]||"default"}function ge(r,g){return r?r.length>g?r.slice(0,g)+"...":r:""}function ye({key:r}){r==="bridge"?M.value=!0:r==="swap"?N.value=!0:r==="message"&&(B.value=!0)}async function E(){K.value=!0;try{const[r,g,z,ke,we]=await Promise.all([l.execute("crosschain chains --json",8e3).catch(()=>({output:""})),l.execute("crosschain bridges --limit 200 --json",1e4).catch(()=>({output:""})),l.execute("crosschain swaps --limit 200 --json",1e4).catch(()=>({output:""})),l.execute("crosschain messages --limit 200 --json",1e4).catch(()=>({output:""})),l.execute("crosschain stats --json",8e3).catch(()=>({output:""}))]);V.value=ne(r.output),D.value=re(g.output),O.value=le(z.output),A.value=ie(ke.output),U.value=de(we.output)}catch(r){_.error(a("crosschain.msg.loadFailed")+": "+(r?.message||r))}finally{K.value=!1}}function J(r){return!r.fromChain||!r.toChain?(_.warning(a("crosschain.msg.pairEmpty")),!1):r.fromChain===r.toChain?(_.warning(a("crosschain.msg.pairSame")),!1):!0}async function be(){if(J(f)){if(!f.amount||f.amount<=0){_.warning(a("crosschain.msg.amountInvalid"));return}W.value=!0;try{const r=[`crosschain bridge ${f.fromChain} ${f.toChain} ${f.amount}`];f.asset.trim()&&r.push(`--asset "${f.asset.trim().replace(/"/g,'\\"')}"`),f.sender.trim()&&r.push(`--sender "${f.sender.trim().replace(/"/g,'\\"')}"`),f.recipient.trim()&&r.push(`--recipient "${f.recipient.trim().replace(/"/g,'\\"')}"`),r.push("--json");const{output:g}=await l.execute(r.join(" "),15e3);if(/error|failed|失败|unsupported/i.test(g)&&!/"bridgeId"/.test(g)){_.error(a("crosschain.msg.bridgeFailed")+": "+g.slice(0,120));return}_.success(a("crosschain.msg.bridgeSuccess")),M.value=!1,Y(),L.value="bridges",await E()}catch(r){_.error(a("crosschain.msg.bridgeFailed")+": "+(r?.message||r))}finally{W.value=!1}}}async function ve(){if(J(u)){if(!u.amount||u.amount<=0){_.warning(a("crosschain.msg.amountInvalid"));return}R.value=!0;try{const r=[`crosschain swap ${u.fromChain} ${u.toChain} ${u.amount}`];u.fromAsset.trim()&&r.push(`--from-asset "${u.fromAsset.trim().replace(/"/g,'\\"')}"`),u.toAsset.trim()&&r.push(`--to-asset "${u.toAsset.trim().replace(/"/g,'\\"')}"`),u.counterparty.trim()&&r.push(`--counterparty "${u.counterparty.trim().replace(/"/g,'\\"')}"`),u.timeoutMs!=null&&r.push(`--timeout ${u.timeoutMs}`),r.push("--json");const{output:g}=await l.execute(r.join(" "),15e3);if(/error|failed|失败|unsupported/i.test(g)&&!/"swapId"/.test(g)){_.error(a("crosschain.msg.swapFailed")+": "+g.slice(0,120));return}_.success(a("crosschain.msg.swapSuccess")),N.value=!1,$(),L.value="swaps",await E()}catch(r){_.error(a("crosschain.msg.swapFailed")+": "+(r?.message||r))}finally{R.value=!1}}}async function _e(){if(J(c)){j.value=!0;try{const r=[`crosschain send ${c.fromChain} ${c.toChain}`];c.payload.trim()&&r.push(`--payload "${c.payload.trim().replace(/"/g,'\\"')}"`),c.contract.trim()&&r.push(`--contract "${c.contract.trim().replace(/"/g,'\\"')}"`),r.push("--json");const{output:g}=await l.execute(r.join(" "),12e3);if(/error|failed|失败|unsupported/i.test(g)&&!/"messageId"/.test(g)){_.error(a("crosschain.msg.sendFailed")+": "+g.slice(0,120));return}_.success(a("crosschain.msg.sendSuccess")),B.value=!1,ee(),L.value="messages",await E()}catch(r){_.error(a("crosschain.msg.sendFailed")+": "+(r?.message||r))}finally{j.value=!1}}}async function Ce(){if(J(F)){if(!F.amount||F.amount<=0){_.warning(a("crosschain.msg.amountInvalid"));return}q.value=!0,S.value=null;try{const r=`crosschain estimate-fee ${F.fromChain} ${F.toChain} ${F.amount} --json`,{output:g}=await l.execute(r,8e3),z=ce(g);if(!z){_.error(a("crosschain.msg.feeFailed")+": "+g.slice(0,120));return}S.value=z}catch(r){_.error(a("crosschain.msg.feeFailed")+": "+(r?.message||r))}finally{q.value=!1}}}function Y(){f.fromChain="",f.toChain="",f.amount=null,f.asset="",f.sender="",f.recipient=""}function $(){u.fromChain="",u.toChain="",u.amount=null,u.fromAsset="",u.toAsset="",u.counterparty="",u.timeoutMs=null}function ee(){c.fromChain="",c.toChain="",c.payload="",c.contract=""}te(E);const ae={ws:l,t:a,loading:K,bridging:W,swapping:R,sending:j,estimating:q,chains:V,bridges:D,swaps:O,messages:A,stats:U,activeTab:L,showBridgeModal:M,showSwapModal:N,showMessageModal:B,showFeeModal:Q,bridgeForm:f,swapForm:u,messageForm:c,feeForm:F,feeResult:S,bridgeColumns:P,swapColumns:I,messageColumns:Z,CHAIN_COLORS:t,chainColor:m,chainName:ue,statusLabel:me,bridgeStatusColor:fe,swapStatusColor:he,messageStatusColor:pe,truncate:ge,handleNewClick:ye,loadAll:E,validatePair:J,initiateBridge:be,initiateSwap:ve,sendMessage:_e,estimateFee:Ce,resetBridgeForm:Y,resetSwapForm:$,resetMessageForm:ee,ref:C,computed:G,onMounted:te,reactive:X,get ReloadOutlined(){return je},get PlusOutlined(){return Re},get SwapOutlined(){return Ue},get InteractionOutlined(){return Te},get MailOutlined(){return ze},get CalculatorOutlined(){return Me},get LinkOutlined(){return Oe},get DollarOutlined(){return Ae},get ArrowRightOutlined(){return Se},get message(){return _},get useI18n(){return oe},get useWsStore(){return se},get parseChains(){return ne},get parseBridges(){return re},get parseSwaps(){return le},get parseMessages(){return ie},get parseStats(){return de},get parseFeeEstimate(){return ce},get formatXChainTime(){return He}};return Object.defineProperty(ae,"__isScriptSetup",{enumerable:!1,value:!0}),ae}},Ve={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},De={class:"page-title"},Ee={class:"page-sub"},Je={style:{opacity:"0.7"}},Xe={key:0,style:{opacity:"0.55","font-size":"10px","margin-left":"4px"}},Ke={style:{color:"var(--text-primary)"}},We={style:{color:"var(--text-primary)"}},Ge={style:{color:"#722ed1","font-weight":"500"}},Qe={style:{color:"var(--text-secondary)","margin-left":"4px","font-size":"11px"}},Ze={key:2,style:{color:"var(--text-secondary)","font-size":"12px"}},Ye={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},$e={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},ea={style:{color:"var(--text-primary)"}},aa={style:{color:"var(--text-secondary)","font-size":"11px",margin:"0 4px"}},ta={style:{color:"var(--text-primary)"}},sa={style:{color:"var(--text-secondary)","font-size":"11px","margin-left":"4px"}},oa={key:1,style:{color:"#722ed1","font-weight":"500"}},na={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"11px"}},ra={key:1,style:{color:"var(--text-muted)"}},la={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},ia={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},da={style:{color:"var(--text-primary)"}},ca={style:{color:"var(--text-primary)"}},ua={key:1,style:{color:"var(--text-secondary)","font-size":"12px"}},ma={key:1,style:{color:"var(--text-muted)"}},fa={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},ha={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},pa={style:{"margin-top":"12px","font-size":"12px",color:"var(--text-secondary)"}};function ga(e,s,l,a,K,W){const R=v("a-button"),j=v("a-menu-item"),q=v("a-menu"),V=v("a-dropdown"),D=v("a-space"),O=v("a-statistic"),A=v("a-card"),U=v("a-col"),L=v("a-row"),M=v("a-tag"),N=v("a-table"),B=v("a-tab-pane"),Q=v("a-tabs"),f=v("a-select-option"),u=v("a-select"),c=v("a-form-item"),F=v("a-input-number"),S=v("a-input"),P=v("a-form"),I=v("a-modal"),Z=v("a-textarea");return d(),p("div",null,[y("div",Ve,[y("div",null,[y("h2",De,i(e.$t("crosschain.title")),1),y("p",Ee,i(e.$t("crosschain.subtitle")),1)]),o(D,null,{default:n(()=>[o(R,{loading:a.loading,onClick:a.loadAll},{icon:n(()=>[o(a.ReloadOutlined)]),default:n(()=>[b(" "+i(e.$t("crosschain.refresh")),1)]),_:1},8,["loading"]),o(V,{trigger:["click"]},{overlay:n(()=>[o(q,{onClick:a.handleNewClick},{default:n(()=>[o(j,{key:"bridge"},{default:n(()=>[o(a.SwapOutlined),b(" "+i(e.$t("crosschain.actions.bridge")),1)]),_:1}),o(j,{key:"swap"},{default:n(()=>[o(a.InteractionOutlined),b(" "+i(e.$t("crosschain.actions.swap")),1)]),_:1}),o(j,{key:"message"},{default:n(()=>[o(a.MailOutlined),b(" "+i(e.$t("crosschain.actions.message")),1)]),_:1})]),_:1})]),default:n(()=>[o(R,{type:"primary"},{icon:n(()=>[o(a.PlusOutlined)]),default:n(()=>[b(" "+i(e.$t("crosschain.newDropdown")),1)]),_:1})]),_:1}),o(R,{onClick:s[0]||(s[0]=t=>a.showFeeModal=!0)},{icon:n(()=>[o(a.CalculatorOutlined)]),default:n(()=>[b(" "+i(e.$t("crosschain.feeEstimate")),1)]),_:1})]),_:1})]),h(" Stats overview "),o(L,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:n(()=>[o(U,{xs:12,sm:8,lg:5},{default:n(()=>[o(A,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(O,{title:e.$t("crosschain.stats.chains"),value:a.chains.length,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:n(()=>[o(a.LinkOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(U,{xs:12,sm:8,lg:5},{default:n(()=>[o(A,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(O,{title:e.$t("crosschain.stats.bridges"),value:a.stats.bridges.total,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:n(()=>[o(a.SwapOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(U,{xs:12,sm:8,lg:5},{default:n(()=>[o(A,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(O,{title:e.$t("crosschain.stats.swaps"),value:a.stats.swaps.total,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:n(()=>[o(a.InteractionOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(U,{xs:12,sm:8,lg:5},{default:n(()=>[o(A,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(O,{title:e.$t("crosschain.stats.messages"),value:a.stats.messages.total,"value-style":{color:"#faad14",fontSize:"20px"}},{prefix:n(()=>[o(a.MailOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(U,{xs:24,sm:8,lg:4},{default:n(()=>[o(A,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(O,{title:e.$t("crosschain.stats.volume"),value:a.stats.bridges.totalVolume,precision:2,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:n(()=>[o(a.DollarOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),h(" Chain catalogue "),a.chains.length?(d(),k(A,{key:0,title:e.$t("crosschain.chainsCard"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:n(()=>[o(D,{size:[12,8],wrap:""},{default:n(()=>[(d(!0),p(w,null,T(a.chains,t=>(d(),k(M,{key:t.id,color:a.chainColor(t.id)},{default:n(()=>[b(i(t.name)+" ",1),y("span",Je,"("+i(t.symbol)+")",1),t.chainId>0?(d(),p("span",Xe,"#"+i(t.chainId),1)):h("v-if",!0)]),_:2},1032,["color"]))),128))]),_:1})]),_:1},8,["title"])):h("v-if",!0),h(" Tabs "),o(Q,{activeKey:a.activeTab,"onUpdate:activeKey":s[1]||(s[1]=t=>a.activeTab=t),class:"xchain-tabs"},{default:n(()=>[h(" ── Bridges tab ───────────────────────────────────────────── "),o(B,{key:"bridges",tab:e.$t("crosschain.tabs.bridges")},{default:n(()=>[o(N,{columns:a.bridgeColumns,"data-source":a.bridges,pagination:{pageSize:20,showTotal:t=>e.$t("crosschain.table.totalSuffix",{n:t})},size:"small",loading:a.loading,style:{background:"var(--bg-card)"}},{bodyCell:n(({column:t,record:m})=>[t.key==="route"?(d(),p(w,{key:0},[y("span",Ke,i(a.chainName(m.fromChain)),1),o(a.ArrowRightOutlined,{style:{margin:"0 6px",color:"var(--text-secondary)","font-size":"11px"}}),y("span",We,i(a.chainName(m.toChain)),1)],64)):h("v-if",!0),t.key==="amount"?(d(),p(w,{key:1},[y("span",Ge,i(m.amount),1),y("span",Qe,i(m.asset),1)],64)):h("v-if",!0),t.key==="fee"?(d(),p("span",Ze,i(m.feeAmount),1)):h("v-if",!0),t.key==="status"?(d(),k(M,{key:3,color:a.bridgeStatusColor(m.status)},{default:n(()=>[b(i(a.statusLabel(m.status)),1)]),_:2},1032,["color"])):h("v-if",!0),t.key==="createdAt"?(d(),p("span",Ye,i(a.formatXChainTime(m.createdAt)),1)):h("v-if",!0)]),emptyText:n(()=>[y("div",$e,[o(a.SwapOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),b(" "+i(e.$t("crosschain.table.emptyBridges")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),h(" ── Swaps tab ─────────────────────────────────────────────── "),o(B,{key:"swaps",tab:e.$t("crosschain.tabs.swaps")},{default:n(()=>[o(N,{columns:a.swapColumns,"data-source":a.swaps,pagination:{pageSize:20,showTotal:t=>e.$t("crosschain.table.totalSuffix",{n:t})},size:"small",loading:a.loading,style:{background:"var(--bg-card)"}},{bodyCell:n(({column:t,record:m})=>[t.key==="route"?(d(),p(w,{key:0},[y("span",ea,i(a.chainName(m.fromChain)),1),y("span",aa,"("+i(m.fromAsset)+")",1),o(a.ArrowRightOutlined,{style:{margin:"0 4px",color:"var(--text-secondary)","font-size":"11px"}}),y("span",ta,i(a.chainName(m.toChain)),1),y("span",sa,"("+i(m.toAsset)+")",1)],64)):h("v-if",!0),t.key==="amount"?(d(),p("span",oa,i(m.amount),1)):h("v-if",!0),t.key==="hashLock"?(d(),p(w,{key:2},[m.hashLock?(d(),p("span",na,i(m.hashLock.slice(0,14))+"... ",1)):(d(),p("span",ra,"—"))],64)):h("v-if",!0),t.key==="status"?(d(),k(M,{key:3,color:a.swapStatusColor(m.status)},{default:n(()=>[b(i(a.statusLabel(m.status)),1)]),_:2},1032,["color"])):h("v-if",!0),t.key==="expiresAt"?(d(),p("span",la,i(a.formatXChainTime(m.expiresAt)),1)):h("v-if",!0)]),emptyText:n(()=>[y("div",ia,[o(a.InteractionOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),b(" "+i(e.$t("crosschain.table.emptySwaps")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),h(" ── Messages tab ──────────────────────────────────────────── "),o(B,{key:"messages",tab:e.$t("crosschain.tabs.messages")},{default:n(()=>[o(N,{columns:a.messageColumns,"data-source":a.messages,pagination:{pageSize:20,showTotal:t=>e.$t("crosschain.table.totalSuffix",{n:t})},size:"small",loading:a.loading,style:{background:"var(--bg-card)"}},{bodyCell:n(({column:t,record:m})=>[t.key==="route"?(d(),p(w,{key:0},[y("span",da,i(a.chainName(m.fromChain)),1),o(a.ArrowRightOutlined,{style:{margin:"0 6px",color:"var(--text-secondary)","font-size":"11px"}}),y("span",ca,i(a.chainName(m.toChain)),1)],64)):h("v-if",!0),t.key==="payload"?(d(),p("span",ua,i(a.truncate(m.payload,60)||"—"),1)):h("v-if",!0),t.key==="retries"?(d(),p(w,{key:2},[m.retries>0?(d(),k(M,{key:0,color:"orange",style:{"font-size":"11px"}},{default:n(()=>[b(i(e.$t("crosschain.table.retrySuffix",{n:m.retries})),1)]),_:2},1024)):(d(),p("span",ma,"—"))],64)):h("v-if",!0),t.key==="status"?(d(),k(M,{key:3,color:a.messageStatusColor(m.status)},{default:n(()=>[b(i(a.statusLabel(m.status)),1)]),_:2},1032,["color"])):h("v-if",!0),t.key==="createdAt"?(d(),p("span",fa,i(a.formatXChainTime(m.createdAt)),1)):h("v-if",!0)]),emptyText:n(()=>[y("div",ha,[o(a.MailOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),b(" "+i(e.$t("crosschain.table.emptyMessages")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"])]),_:1},8,["activeKey"]),h(" ── Bridge modal ──────────────────────────────────────────── "),o(I,{open:a.showBridgeModal,"onUpdate:open":s[8]||(s[8]=t=>a.showBridgeModal=t),title:e.$t("crosschain.bridge_modal.title"),"confirm-loading":a.bridging,width:540,"ok-text":e.$t("crosschain.bridge_modal.ok"),"cancel-text":e.$t("crosschain.bridge_modal.cancel"),onOk:a.initiateBridge,onCancel:a.resetBridgeForm},{default:n(()=>[o(P,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:n(()=>[o(c,{label:e.$t("crosschain.bridge_modal.fromChain"),required:""},{default:n(()=>[o(u,{value:a.bridgeForm.fromChain,"onUpdate:value":s[2]||(s[2]=t=>a.bridgeForm.fromChain=t),placeholder:e.$t("crosschain.bridge_modal.fromChainPlaceholder")},{default:n(()=>[(d(!0),p(w,null,T(a.chains,t=>(d(),k(f,{key:t.id,value:t.id},{default:n(()=>[b(i(t.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value","placeholder"])]),_:1},8,["label"]),o(c,{label:e.$t("crosschain.bridge_modal.toChain"),required:""},{default:n(()=>[o(u,{value:a.bridgeForm.toChain,"onUpdate:value":s[3]||(s[3]=t=>a.bridgeForm.toChain=t),placeholder:e.$t("crosschain.bridge_modal.toChainPlaceholder")},{default:n(()=>[(d(!0),p(w,null,T(a.chains,t=>(d(),k(f,{key:t.id,value:t.id,disabled:t.id===a.bridgeForm.fromChain},{default:n(()=>[b(i(t.name),1)]),_:2},1032,["value","disabled"]))),128))]),_:1},8,["value","placeholder"])]),_:1},8,["label"]),o(c,{label:e.$t("crosschain.bridge_modal.amount"),required:""},{default:n(()=>[o(F,{value:a.bridgeForm.amount,"onUpdate:value":s[4]||(s[4]=t=>a.bridgeForm.amount=t),min:0,precision:6,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"]),o(c,{label:e.$t("crosschain.bridge_modal.asset")},{default:n(()=>[o(S,{value:a.bridgeForm.asset,"onUpdate:value":s[5]||(s[5]=t=>a.bridgeForm.asset=t),placeholder:e.$t("crosschain.bridge_modal.assetPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(c,{label:e.$t("crosschain.bridge_modal.sender")},{default:n(()=>[o(S,{value:a.bridgeForm.sender,"onUpdate:value":s[6]||(s[6]=t=>a.bridgeForm.sender=t),placeholder:e.$t("crosschain.bridge_modal.senderPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(c,{label:e.$t("crosschain.bridge_modal.recipient")},{default:n(()=>[o(S,{value:a.bridgeForm.recipient,"onUpdate:value":s[7]||(s[7]=t=>a.bridgeForm.recipient=t),placeholder:e.$t("crosschain.bridge_modal.recipientPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),h(" ── Swap modal ────────────────────────────────────────────── "),o(I,{open:a.showSwapModal,"onUpdate:open":s[16]||(s[16]=t=>a.showSwapModal=t),title:e.$t("crosschain.swap_modal.title"),"confirm-loading":a.swapping,width:540,"ok-text":e.$t("crosschain.swap_modal.ok"),"cancel-text":e.$t("crosschain.swap_modal.cancel"),onOk:a.initiateSwap,onCancel:a.resetSwapForm},{default:n(()=>[o(P,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:n(()=>[o(c,{label:e.$t("crosschain.swap_modal.fromChain"),required:""},{default:n(()=>[o(u,{value:a.swapForm.fromChain,"onUpdate:value":s[9]||(s[9]=t=>a.swapForm.fromChain=t),placeholder:e.$t("crosschain.swap_modal.fromChainPlaceholder")},{default:n(()=>[(d(!0),p(w,null,T(a.chains,t=>(d(),k(f,{key:t.id,value:t.id},{default:n(()=>[b(i(t.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value","placeholder"])]),_:1},8,["label"]),o(c,{label:e.$t("crosschain.swap_modal.toChain"),required:""},{default:n(()=>[o(u,{value:a.swapForm.toChain,"onUpdate:value":s[10]||(s[10]=t=>a.swapForm.toChain=t),placeholder:e.$t("crosschain.swap_modal.toChainPlaceholder")},{default:n(()=>[(d(!0),p(w,null,T(a.chains,t=>(d(),k(f,{key:t.id,value:t.id,disabled:t.id===a.swapForm.fromChain},{default:n(()=>[b(i(t.name),1)]),_:2},1032,["value","disabled"]))),128))]),_:1},8,["value","placeholder"])]),_:1},8,["label"]),o(c,{label:e.$t("crosschain.swap_modal.amount"),required:""},{default:n(()=>[o(F,{value:a.swapForm.amount,"onUpdate:value":s[11]||(s[11]=t=>a.swapForm.amount=t),min:0,precision:6,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"]),o(c,{label:e.$t("crosschain.swap_modal.fromAsset")},{default:n(()=>[o(S,{value:a.swapForm.fromAsset,"onUpdate:value":s[12]||(s[12]=t=>a.swapForm.fromAsset=t),placeholder:e.$t("crosschain.swap_modal.assetPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(c,{label:e.$t("crosschain.swap_modal.toAsset")},{default:n(()=>[o(S,{value:a.swapForm.toAsset,"onUpdate:value":s[13]||(s[13]=t=>a.swapForm.toAsset=t),placeholder:e.$t("crosschain.swap_modal.assetPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(c,{label:e.$t("crosschain.swap_modal.counterparty")},{default:n(()=>[o(S,{value:a.swapForm.counterparty,"onUpdate:value":s[14]||(s[14]=t=>a.swapForm.counterparty=t),placeholder:e.$t("crosschain.swap_modal.counterpartyPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(c,{label:e.$t("crosschain.swap_modal.timeoutMs")},{default:n(()=>[o(F,{value:a.swapForm.timeoutMs,"onUpdate:value":s[15]||(s[15]=t=>a.swapForm.timeoutMs=t),min:0,placeholder:e.$t("crosschain.swap_modal.timeoutPlaceholder"),style:{width:"100%"}},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),h(" ── Message modal ─────────────────────────────────────────── "),o(I,{open:a.showMessageModal,"onUpdate:open":s[21]||(s[21]=t=>a.showMessageModal=t),title:e.$t("crosschain.message_modal.title"),"confirm-loading":a.sending,width:520,"ok-text":e.$t("crosschain.message_modal.ok"),"cancel-text":e.$t("crosschain.message_modal.cancel"),onOk:a.sendMessage,onCancel:a.resetMessageForm},{default:n(()=>[o(P,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:n(()=>[o(c,{label:e.$t("crosschain.message_modal.fromChain"),required:""},{default:n(()=>[o(u,{value:a.messageForm.fromChain,"onUpdate:value":s[17]||(s[17]=t=>a.messageForm.fromChain=t),placeholder:e.$t("crosschain.message_modal.fromChainPlaceholder")},{default:n(()=>[(d(!0),p(w,null,T(a.chains,t=>(d(),k(f,{key:t.id,value:t.id},{default:n(()=>[b(i(t.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value","placeholder"])]),_:1},8,["label"]),o(c,{label:e.$t("crosschain.message_modal.toChain"),required:""},{default:n(()=>[o(u,{value:a.messageForm.toChain,"onUpdate:value":s[18]||(s[18]=t=>a.messageForm.toChain=t),placeholder:e.$t("crosschain.message_modal.toChainPlaceholder")},{default:n(()=>[(d(!0),p(w,null,T(a.chains,t=>(d(),k(f,{key:t.id,value:t.id,disabled:t.id===a.messageForm.fromChain},{default:n(()=>[b(i(t.name),1)]),_:2},1032,["value","disabled"]))),128))]),_:1},8,["value","placeholder"])]),_:1},8,["label"]),o(c,{label:e.$t("crosschain.message_modal.payload")},{default:n(()=>[o(Z,{value:a.messageForm.payload,"onUpdate:value":s[19]||(s[19]=t=>a.messageForm.payload=t),"auto-size":{minRows:3,maxRows:8}},null,8,["value"])]),_:1},8,["label"]),o(c,{label:e.$t("crosschain.message_modal.contract")},{default:n(()=>[o(S,{value:a.messageForm.contract,"onUpdate:value":s[20]||(s[20]=t=>a.messageForm.contract=t),placeholder:e.$t("crosschain.message_modal.contractPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),h(" ── Fee estimate modal ────────────────────────────────────── "),o(I,{open:a.showFeeModal,"onUpdate:open":s[25]||(s[25]=t=>a.showFeeModal=t),title:e.$t("crosschain.fee_modal.title"),"confirm-loading":a.estimating,width:480,"ok-text":e.$t("crosschain.fee_modal.ok"),"cancel-text":e.$t("crosschain.fee_modal.cancel"),onOk:a.estimateFee},{default:n(()=>[o(P,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:n(()=>[o(c,{label:e.$t("crosschain.fee_modal.fromChain"),required:""},{default:n(()=>[o(u,{value:a.feeForm.fromChain,"onUpdate:value":s[22]||(s[22]=t=>a.feeForm.fromChain=t)},{default:n(()=>[(d(!0),p(w,null,T(a.chains,t=>(d(),k(f,{key:t.id,value:t.id},{default:n(()=>[b(i(t.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),o(c,{label:e.$t("crosschain.fee_modal.toChain"),required:""},{default:n(()=>[o(u,{value:a.feeForm.toChain,"onUpdate:value":s[23]||(s[23]=t=>a.feeForm.toChain=t)},{default:n(()=>[(d(!0),p(w,null,T(a.chains,t=>(d(),k(f,{key:t.id,value:t.id,disabled:t.id===a.feeForm.fromChain},{default:n(()=>[b(i(t.name),1)]),_:2},1032,["value","disabled"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),o(c,{label:e.$t("crosschain.fee_modal.amount"),required:""},{default:n(()=>[o(F,{value:a.feeForm.amount,"onUpdate:value":s[24]||(s[24]=t=>a.feeForm.amount=t),min:0,precision:6,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"])]),_:1}),a.feeResult?(d(),k(A,{key:0,size:"small",style:{background:"var(--bg-base)","margin-top":"8px"}},{default:n(()=>[o(O,{title:e.$t("crosschain.fee_modal.resultTitle"),value:a.feeResult.fee,precision:4,suffix:a.feeResult.currency,"value-style":{color:"#1677ff"}},null,8,["title","value","suffix"]),y("div",pa,[y("div",null,i(e.$t("crosschain.fee_modal.sourceFee",{fee:a.feeResult.breakdown.sourceFee,currency:a.feeResult.currency})),1),y("div",null,i(e.$t("crosschain.fee_modal.destFee",{fee:a.feeResult.breakdown.destFee,currency:a.feeResult.currency})),1),y("div",null,i(e.$t("crosschain.fee_modal.bridgeFee",{fee:a.feeResult.breakdown.bridgeFee,currency:a.feeResult.currency})),1)])]),_:1})):h("v-if",!0)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])])}const Ca=xe(qe,[["render",ga],["__scopeId","data-v-00c68d45"],["__file","/tmp/cc-web-panel-k4fdqo/repo/packages/web-panel/src/views/Crosschain.vue"]]);export{Ca as default};
@@ -1,2 +1,2 @@
1
- import{I as d,P as u,S as b,K as a,c as l,Q as v,_ as pe,R as s,U as w,V as p,a0 as ye,r as c,w as ee,b as J,J as F,o as te}from"./vendor-BvqAck49.js";import{_ as de,u as B,b as ae,d as k}from"./index-C2N_-y_W.js";import{p as le}from"./mtc-parser-BbAbUB-9.js";import{d as ge,f as _e,r as se,a4 as ve,K as be,w as he,as as ke,R as we}from"./icons-DP3uiYxy.js";import"./community-parser-CO25nZFt.js";function Q(t){if(!t)return null;const n=t.trim();try{return JSON.parse(n)}catch{const o=n.match(/(\[[\s\S]*\]|\{[\s\S]*\})/);if(!o)return null;try{return JSON.parse(o[1])}catch{return null}}}function q(t,n=0){if(!t||typeof t!="object")return null;const o=t.did||t.id||"";if(!o)return null;const e=t.displayName??t.display_name??t.name??"",O=t.isDefault===!0||t.is_default===1||t.is_default===!0||t.default===!0,g=t.publicKey??t.public_key??"",f=t.createdAt??t.created_at??t.created??"",y=(o.split(":")[1]||"chainless").trim();return{key:o,did:o,displayName:e||"",publicKey:g||"",isDefault:!!O,createdAt:f||"",method:y,raw:t.document?t:null,_idx:n}}function ne(t){const n=Q(t);return Array.isArray(n)?n.map(q).filter(Boolean):n&&Array.isArray(n.identities)?n.identities.map(q).filter(Boolean):De(t||"")}function De(t){const n=(t||"").split(`
2
- `),o=[];let e=null;for(const O of n){const g=O.trim();if(!g||g.startsWith("─")||g.startsWith("="))continue;const f=g.match(/(did:[a-z0-9]+:[A-Za-z0-9_-]+)/);if(f&&/^did:/.test(g)){e&&o.push(e);const y=f[1],_=g.match(/\(([^)]+)\)/),x=/\[default\]|默认|\*/.test(g);e={key:y,did:y,displayName:_?_[1]:"",publicKey:"",isDefault:x,createdAt:"",method:(y.split(":")[1]||"chainless").trim(),raw:null,_idx:o.length};continue}if(e){const y=g.match(/created\s*[::]\s*(.+)$/i);y&&(e.createdAt=y[1].trim())}}return e&&o.push(e),o}function ie(t){const n=Q(t);if(!n||typeof n!="object"||Array.isArray(n))return null;const o=q(n);return o?(o.document=n.document||null,o):null}function oe(t){const n=Q(t);if(n&&typeof n=="object"&&n.signature)return{did:n.did||"",message:n.message||"",signature:String(n.signature)};const e=(t||"").match(/Signature[::]\s*([a-f0-9]+)/i);return e?{did:"",message:"",signature:e[1]}:null}const Se={__name:"MtcVerifyDrawer",props:{open:{type:Boolean,default:!1},title:{type:String,default:"MTC 包含证明"},defaultEnvelopePath:{type:String,default:""},defaultLandmarkPath:{type:String,default:""},hint:{type:String,default:""}},emits:["update:open"],setup(t,{expose:n}){n();const o=t,e=B(),O=c(o.defaultEnvelopePath),g=c(o.defaultLandmarkPath),f=c(!1),y=c(null),_=c(""),x=J(()=>o.hint||"通过 cc serve 运行 cc mtc verify(多算法 dispatcher 同时支持 Ed25519 和 SLH-DSA-128F)。文件路径应指向本机磁盘上的 envelope 和 landmark JSON — 浏览器只把路径转给 cc serve,不上传文件内容。");ee(()=>o.open,D=>{D&&(O.value=o.defaultEnvelopePath||O.value,g.value=o.defaultLandmarkPath||g.value,y.value=null,_.value="")});async function I(){f.value=!0,y.value=null,_.value="";try{const D=O.value.trim().replace(/"/g,'\\"'),C=g.value.trim().replace(/"/g,'\\"'),{output:N}=await e.execute(`mtc verify "${D}" --landmark "${C}" --json`,12e3),P=le(N);if(!P.raw){_.value="验证命令未返回 JSON。请检查路径是否正确。";return}y.value=P}catch(D){_.value=`验证失败: ${D?.message||D}`}finally{f.value=!1}}const M={props:o,ws:e,envelopePath:O,landmarkPath:g,verifying:f,result:y,error:_,hintMessage:x,runVerify:I,ref:c,computed:J,watch:ee,get SafetyOutlined(){return se},get CheckCircleOutlined(){return _e},get CloseCircleOutlined(){return ge},get useWsStore(){return B},get parseVerifyResult(){return le}};return Object.defineProperty(M,"__isScriptSetup",{enumerable:!1,value:!0}),M}},xe={style:{"margin-left":"8px"}},Ce={class:"mono"},Oe={class:"mono"},Ie={class:"mono"},Me={class:"raw-pre"};function ze(t,n,o,e,O,g){const f=d("a-alert"),y=d("a-input"),_=d("a-form-item"),x=d("a-button"),I=d("a-form"),M=d("a-divider"),D=d("a-tag"),C=d("a-descriptions-item"),N=d("a-descriptions"),P=d("a-collapse-panel"),A=d("a-collapse"),T=d("a-card"),V=d("a-drawer");return u(),b(V,{open:o.open,title:o.title,width:560,placement:"right","onUpdate:open":n[2]||(n[2]=z=>t.$emit("update:open",z))},{default:a(()=>[l(f,{type:"info","show-icon":"",message:e.hintMessage,style:{"margin-bottom":"16px"}},null,8,["message"]),l(I,{layout:"vertical"},{default:a(()=>[l(_,{label:"Envelope 文件路径"},{default:a(()=>[l(y,{value:e.envelopePath,"onUpdate:value":n[0]||(n[0]=z=>e.envelopePath=z),placeholder:"e.g. ./mtc-out/envelope-000000.json","allow-clear":""},null,8,["value"])]),_:1}),l(_,{label:"Landmark 文件路径"},{default:a(()=>[l(y,{value:e.landmarkPath,"onUpdate:value":n[1]||(n[1]=z=>e.landmarkPath=z),placeholder:"e.g. ./mtc-out/landmark.json","allow-clear":""},null,8,["value"])]),_:1}),l(_,null,{default:a(()=>[l(x,{type:"primary",loading:e.verifying,disabled:!e.envelopePath||!e.landmarkPath,onClick:e.runVerify},{icon:a(()=>[l(e.SafetyOutlined)]),default:a(()=>[n[3]||(n[3]=v(" 运行 cc mtc verify ",-1))]),_:1},8,["loading","disabled"])]),_:1})]),_:1}),l(M),e.result?(u(),b(T,{key:0,class:pe(["result-card",e.result.ok?"pass":"fail"]),size:"small"},{title:a(()=>[(u(),b(ye(e.result.ok?e.CheckCircleOutlined:e.CloseCircleOutlined))),w("span",xe,s(e.result.ok?"验证通过":"验证失败"),1)]),default:a(()=>[l(N,{column:1,size:"small",bordered:""},{default:a(()=>[l(C,{label:"结果"},{default:a(()=>[l(D,{color:e.result.ok?"green":"red"},{default:a(()=>[v(s(e.result.ok?"PASS":"FAIL"),1)]),_:1},8,["color"])]),_:1}),!e.result.ok&&e.result.code?(u(),b(C,{key:0,label:"错误码"},{default:a(()=>[w("span",Ce,s(e.result.code),1),e.result.recoverable?(u(),b(D,{key:0,color:"orange",style:{"margin-left":"8px"}},{default:a(()=>[...n[4]||(n[4]=[v("可恢复",-1)])]),_:1})):p("v-if",!0)]),_:1})):p("v-if",!0),e.result.leaf?.subject?(u(),b(C,{key:1,label:"Subject"},{default:a(()=>[w("span",Oe,s(e.result.leaf.subject),1)]),_:1})):p("v-if",!0),e.result.leaf?.kind?(u(),b(C,{key:2,label:"Kind"},{default:a(()=>[l(D,null,{default:a(()=>[v(s(e.result.leaf.kind),1)]),_:1})]),_:1})):p("v-if",!0),e.result.treeHead?.tree_size?(u(),b(C,{key:3,label:"Tree size"},{default:a(()=>[v(s(e.result.treeHead.tree_size),1)]),_:1})):p("v-if",!0),e.result.treeHead?.issuer?(u(),b(C,{key:4,label:"Issuer"},{default:a(()=>[w("span",Ie,s(e.result.treeHead.issuer),1)]),_:1})):p("v-if",!0)]),_:1}),e.result.raw?(u(),b(A,{key:0,ghost:"",style:{"margin-top":"12px"}},{default:a(()=>[l(P,{key:"raw",header:"原始 JSON 输出"},{default:a(()=>[w("pre",Me,s(JSON.stringify(e.result.raw,null,2)),1)]),_:1})]),_:1})):p("v-if",!0)]),_:1},8,["class"])):p("v-if",!0),e.error?(u(),b(f,{key:1,type:"error",message:e.error,style:{"margin-top":"12px"}},null,8,["message"])):p("v-if",!0)]),_:1},8,["open","title"])}const Ne=de(Se,[["render",ze],["__scopeId","data-v-6952fe8b"],["__file","/tmp/cc-web-panel-qWJQO5/repo/packages/web-panel/src/components/MtcVerifyDrawer.vue"]]),Pe={__name:"DID",setup(t,{expose:n}){n();const o=B(),{t:e}=ae(),O=c(!1),g=c(!1),f=c(!1),y=c(!1),_=c(""),x=c(""),I=c(!1),M=c([]),D=c(!1),C=c(!1),N=c(!1),P=c(""),A=c(null),T=c(""),V=c(""),z=c(""),K=c(null),H=J(()=>[{title:e("did.cols.did"),key:"did",dataIndex:"did",ellipsis:!0},{title:e("did.cols.name"),key:"displayName",dataIndex:"displayName",width:"160px"},{title:e("did.cols.method"),key:"method",dataIndex:"method",width:"110px"},{title:e("did.cols.createdAt"),key:"createdAt",dataIndex:"createdAt",width:"180px"},{title:e("did.cols.default"),key:"isDefault",width:"90px"},{title:e("did.cols.action"),key:"action",width:"280px"}]),U=J(()=>{const i=M.value.find(S=>S.isDefault);if(!i)return e("did.stats.unsetDefault");const r=i.did;return r.length>24?r.slice(0,12)+"..."+r.slice(-8):r}),j=J(()=>{const i=new Set(M.value.map(r=>r.method).filter(Boolean));return i.size===0?e("did.stats.noMethod"):i.size===1?[...i][0]:[...i].join(", ")});async function L(){g.value=!0;try{const{output:i}=await o.execute("did list --json",15e3);M.value=ne(i)}catch(i){k.error(e("did.msg.loadFailed")+": "+i.message),M.value=[]}finally{g.value=!1}}async function E(){f.value=!0;try{const i=P.value.trim(),r=i?`did create --name "${i.replace(/"/g,'\\"')}" --json`:"did create --json",{output:S}=await o.execute(r,2e4);/error|失败/i.test(S)&&!S.includes('"did"')?k.error(e("did.msg.createFailed")+": "+S.slice(0,120)):(k.success(e("did.msg.createSuccess")),D.value=!1,P.value="",await L())}catch(i){k.error(e("did.msg.createFailed")+": "+i.message)}finally{f.value=!1}}async function m(i){_.value=i.did;try{const{output:r,exitCode:S}=await o.execute(`did set-default ${i.did}`,15e3);S!==0||/error|not found|失败/i.test(r)?k.error(e("did.msg.setDefaultFailed")+": "+r.slice(0,120)):(k.success(e("did.msg.setDefaultSuccess")),await L())}catch(r){k.error(e("did.msg.setDefaultFailed")+": "+r.message)}finally{_.value=""}}async function h(i){x.value=i.did;try{const{output:r,exitCode:S}=await o.execute(`did delete ${i.did} --force`,15e3);S!==0||/error|not found|失败/i.test(r)?k.error(e("did.msg.deleteFailed")+": "+r.slice(0,120)):(k.success(e("did.msg.deleteSuccess")),await L())}catch(r){k.error(e("did.msg.deleteFailed")+": "+r.message)}finally{x.value=""}}async function R(i){if(A.value={...i},T.value="",C.value=!0,!i.publicKey)try{const{output:r}=await o.execute(`did show ${i.did} --json`,1e4),S=ie(r);S&&(A.value={...A.value,...S})}catch{}}async function re(i){I.value=!0;try{const{output:r}=await o.execute(`did resolve ${i.did}`,1e4);try{T.value=JSON.stringify(JSON.parse(r.trim()),null,2)}catch{T.value=r.trim()}}catch(r){k.error(e("did.msg.loadDocFailed")+": "+r.message)}finally{I.value=!1}}function ce(i){V.value=i.did,z.value="",K.value=null,N.value=!0}const Z=c(!1),G=c("MTC 包含证明"),X=c("");function Y(i){return i?i.length<=24?i:`${i.slice(0,16)}…${i.slice(-6)}`:""}function ue(i){G.value=`MTC 包含证明 · ${Y(i.did)}`,X.value="验证此 DID 是否在某个 MTC 批次中。请提供该批次的 envelope(其 leaf.subject 应等于此 DID)和 landmark 文件路径。 通常由 cc mtc batch-dids --out <dir> 生成。",Z.value=!0}async function fe(){if(!z.value.trim()){k.warning(e("did.msg.signEmpty"));return}y.value=!0,K.value=null;try{const r=`did sign "${z.value.replace(/"/g,'\\"')}" --did ${V.value} --json`,{output:S,exitCode:me}=await o.execute(r,15e3),W=oe(S);W&&W.signature?(K.value=W,k.success(e("did.msg.signSuccess"))):k.error(e("did.msg.signFailed")+": "+(S||`exit ${me}`).slice(0,120))}catch(i){k.error(e("did.msg.signFailed")+": "+i.message)}finally{y.value=!1}}te(()=>{L()});const $={ws:o,t:e,hasDesktopFeatures:O,loading:g,creating:f,signing:y,settingDefault:_,deleting:x,loadingDocument:I,identities:M,showCreateModal:D,showDetailsModal:C,showSignModal:N,newIdentityName:P,currentIdentity:A,currentDocument:T,signTargetDid:V,signText:z,signResult:K,columns:H,defaultIdentityDisplay:U,methodDisplay:j,loadList:L,createIdentity:E,setDefault:m,deleteIdentity:h,openShow:R,loadDocument:re,openSign:ce,mtcDrawerOpen:Z,mtcDrawerTitle:G,mtcDrawerHint:X,shortDid:Y,openMtcVerify:ue,signMessage:fe,ref:c,computed:J,onMounted:te,get ReloadOutlined(){return we},get PlusOutlined(){return ke},get IdcardOutlined(){return he},get KeyOutlined(){return be},get FileTextOutlined(){return ve},get SafetyOutlined(){return se},get message(){return k},get useI18n(){return ae},get useWsStore(){return B},get parseDidList(){return ne},get parseDidShow(){return ie},get parseSignResult(){return oe},MtcVerifyDrawer:Ne};return Object.defineProperty($,"__isScriptSetup",{enumerable:!1,value:!0}),$}},Ae={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Te={class:"page-title"},je={class:"page-sub"},Fe={key:1,style:{"text-align":"center",padding:"60px"}},Ve={key:0,style:{color:"#e0e0e0","font-family":"monospace","font-size":"12px"}},Ke={key:1,style:{color:"var(--text-primary)"}},Le={key:3,style:{color:"var(--text-secondary)","font-size":"12px"}},Re={key:0,style:{"margin-top":"12px"}},Je={style:{"font-family":"monospace",color:"#ccc","word-break":"break-all"}},Ue={style:{"font-family":"monospace",color:"#888","font-size":"11px","word-break":"break-all"}},He={style:{"margin-top":"16px",display:"flex",gap:"8px","flex-wrap":"wrap"}},Be={key:0,style:{"margin-top":"16px"}},Ee={style:{color:"var(--text-secondary)","margin-bottom":"6px"}},We={style:{"white-space":"pre-wrap","word-break":"break-all",color:"#52c41a","font-size":"11px",background:"var(--bg-base)",padding:"12px","border-radius":"6px",border:"1px solid var(--border-color)","max-height":"320px",overflow:"auto"}},qe={key:0,style:{"margin-top":"12px"}},Qe={style:{color:"var(--text-secondary)","margin-bottom":"6px"}},Ze={style:{"white-space":"pre-wrap","word-break":"break-all",color:"#52c41a","font-size":"11px",background:"var(--bg-base)",padding:"12px","border-radius":"6px",border:"1px solid var(--border-color)"}};function Ge(t,n,o,e,O,g){const f=d("a-button"),y=d("a-space"),_=d("a-statistic"),x=d("a-card"),I=d("a-col"),M=d("a-row"),D=d("a-alert"),C=d("a-spin"),N=d("a-tag"),P=d("a-tooltip"),A=d("a-popconfirm"),T=d("a-empty"),V=d("a-table"),z=d("a-input"),K=d("a-form-item"),H=d("a-form"),U=d("a-modal"),j=d("a-descriptions-item"),L=d("a-descriptions"),E=d("a-textarea");return u(),F("div",null,[w("div",Ae,[w("div",null,[w("h2",Te,s(t.$t("did.title")),1),w("p",je,s(t.$t("did.subtitle")),1)]),l(y,null,{default:a(()=>[l(f,{loading:e.loading,onClick:e.loadList},{icon:a(()=>[l(e.ReloadOutlined)]),default:a(()=>[v(" "+s(t.$t("did.refresh")),1)]),_:1},8,["loading"]),l(f,{type:"primary",onClick:n[0]||(n[0]=m=>e.showCreateModal=!0)},{icon:a(()=>[l(e.PlusOutlined)]),default:a(()=>[v(" "+s(t.$t("did.create")),1)]),_:1})]),_:1})]),l(M,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:a(()=>[l(I,{xs:24,sm:12,lg:6},{default:a(()=>[l(x,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[l(_,{title:t.$t("did.stats.count"),value:e.identities.length,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:a(()=>[l(e.IdcardOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),l(I,{xs:24,sm:12,lg:6},{default:a(()=>[l(x,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[l(_,{title:t.$t("did.stats.default"),value:e.defaultIdentityDisplay,"value-style":{color:e.defaultIdentityDisplay!==t.$t("did.stats.unsetDefault")?"#52c41a":"#888",fontSize:"13px",fontFamily:"monospace"}},null,8,["title","value","value-style"])]),_:1})]),_:1}),l(I,{xs:24,sm:12,lg:6},{default:a(()=>[l(x,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[l(_,{title:t.$t("did.stats.method"),value:e.methodDisplay,"value-style":{color:"#722ed1",fontSize:"14px"}},null,8,["title","value"])]),_:1})]),_:1}),l(I,{xs:24,sm:12,lg:6},{default:a(()=>[l(x,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[l(_,{title:t.$t("did.stats.signable"),value:e.identities.length>0?t.$t("did.stats.yes"):t.$t("did.stats.no"),"value-style":{color:e.identities.length>0?"#52c41a":"#ff4d4f",fontSize:"20px"}},{prefix:a(()=>[l(e.KeyOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1})]),_:1}),e.hasDesktopFeatures?p("v-if",!0):(u(),b(D,{key:0,message:t.$t("did.webOnly.message"),description:t.$t("did.webOnly.description"),type:"info","show-icon":"",closable:"",style:{"margin-bottom":"16px"}},null,8,["message","description"])),e.loading?(u(),F("div",Fe,[l(C,{size:"large"})])):(u(),b(V,{key:2,columns:e.columns,"data-source":e.identities,pagination:{pageSize:20,showTotal:m=>t.$t("did.table.totalSuffix",{n:m})},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"did-row"},{bodyCell:a(({column:m,record:h})=>[m.key==="did"?(u(),F("span",Ve,s(h.did),1)):p("v-if",!0),m.key==="displayName"?(u(),F("span",Ke,s(h.displayName||"-"),1)):p("v-if",!0),m.key==="method"?(u(),b(N,{key:2,color:"blue"},{default:a(()=>[v(s(h.method),1)]),_:2},1024)):p("v-if",!0),m.key==="createdAt"?(u(),F("span",Le,s(h.createdAt||"-"),1)):p("v-if",!0),m.key==="isDefault"?(u(),b(N,{key:4,color:h.isDefault?"green":"default"},{default:a(()=>[v(s(h.isDefault?t.$t("did.table.defaultTag"):"-"),1)]),_:2},1032,["color"])):p("v-if",!0),m.key==="action"?(u(),b(y,{key:5,size:"small"},{default:a(()=>[l(f,{size:"small",type:"link",onClick:R=>e.openShow(h)},{default:a(()=>[v(s(t.$t("did.actions.details")),1)]),_:1},8,["onClick"]),l(f,{size:"small",type:"link",onClick:R=>e.openSign(h)},{default:a(()=>[v(s(t.$t("did.actions.sign")),1)]),_:1},8,["onClick"]),l(P,{title:"MTC 包含证明"},{default:a(()=>[l(f,{size:"small",type:"link",onClick:R=>e.openMtcVerify(h)},{default:a(()=>[l(e.SafetyOutlined)]),_:1},8,["onClick"])]),_:2},1024),h.isDefault?p("v-if",!0):(u(),b(f,{key:0,size:"small",type:"link",loading:e.settingDefault===h.did,onClick:R=>e.setDefault(h)},{default:a(()=>[v(s(t.$t("did.actions.setDefault")),1)]),_:1},8,["loading","onClick"])),l(A,{title:t.$t("did.deleteConfirm.title"),"ok-text":t.$t("did.deleteConfirm.ok"),"ok-type":"danger","cancel-text":t.$t("did.deleteConfirm.cancel"),onConfirm:R=>e.deleteIdentity(h)},{default:a(()=>[l(f,{size:"small",type:"link",danger:"",loading:e.deleting===h.did},{default:a(()=>[v(s(t.$t("did.actions.delete")),1)]),_:1},8,["loading"])]),_:2},1032,["title","ok-text","cancel-text","onConfirm"])]),_:2},1024)):p("v-if",!0)]),emptyText:a(()=>[l(T,{description:t.$t("did.table.empty")},null,8,["description"])]),_:1},8,["columns","data-source","pagination"])),p(" Create Modal "),l(U,{open:e.showCreateModal,"onUpdate:open":n[2]||(n[2]=m=>e.showCreateModal=m),title:t.$t("did.create_modal.title"),"confirm-loading":e.creating,onOk:e.createIdentity,"ok-text":t.$t("did.create_modal.ok"),"cancel-text":t.$t("did.create_modal.cancel")},{default:a(()=>[l(H,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:a(()=>[l(K,{label:t.$t("did.create_modal.nameLabel")},{default:a(()=>[l(z,{value:e.newIdentityName,"onUpdate:value":n[1]||(n[1]=m=>e.newIdentityName=m),placeholder:t.$t("did.create_modal.namePlaceholder"),"allow-clear":""},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),p(" Show Details Modal "),l(U,{open:e.showDetailsModal,"onUpdate:open":n[4]||(n[4]=m=>e.showDetailsModal=m),title:t.$t("did.details.title",{label:e.currentIdentity?.displayName||e.currentIdentity?.did?.slice(0,24)||""}),width:720,footer:null},{default:a(()=>[e.currentIdentity?(u(),F("div",Re,[l(L,{column:1,bordered:"",size:"small"},{default:a(()=>[l(j,{label:t.$t("did.details.did")},{default:a(()=>[w("span",Je,s(e.currentIdentity.did),1)]),_:1},8,["label"]),l(j,{label:t.$t("did.details.name")},{default:a(()=>[v(s(e.currentIdentity.displayName||"-"),1)]),_:1},8,["label"]),l(j,{label:t.$t("did.details.method")},{default:a(()=>[l(N,{color:"blue"},{default:a(()=>[v(s(e.currentIdentity.method),1)]),_:1})]),_:1},8,["label"]),l(j,{label:t.$t("did.details.default")},{default:a(()=>[l(N,{color:e.currentIdentity.isDefault?"green":"default"},{default:a(()=>[v(s(e.currentIdentity.isDefault?t.$t("did.details.yes"):t.$t("did.details.no")),1)]),_:1},8,["color"])]),_:1},8,["label"]),l(j,{label:t.$t("did.details.createdAt")},{default:a(()=>[v(s(e.currentIdentity.createdAt||"-"),1)]),_:1},8,["label"]),l(j,{label:t.$t("did.details.publicKey")},{default:a(()=>[w("span",Ue,s(e.currentIdentity.publicKey||t.$t("did.details.publicKeyLoading")),1)]),_:1},8,["label"])]),_:1}),w("div",He,[l(f,{loading:e.loadingDocument,onClick:n[3]||(n[3]=m=>e.loadDocument(e.currentIdentity))},{icon:a(()=>[l(e.FileTextOutlined)]),default:a(()=>[v(" "+s(t.$t("did.details.viewDoc")),1)]),_:1},8,["loading"])]),e.currentDocument?(u(),F("div",Be,[w("p",Ee,s(t.$t("did.details.docHeader")),1),w("pre",We,s(e.currentDocument),1)])):p("v-if",!0)])):p("v-if",!0)]),_:1},8,["open","title"]),p(" Sign Modal "),l(U,{open:e.showSignModal,"onUpdate:open":n[6]||(n[6]=m=>e.showSignModal=m),title:t.$t("did.sign_modal.title",{label:e.signTargetDid?.slice(0,28)||t.$t("did.sign_modal.defaultIdentityFallback")}),"confirm-loading":e.signing,onOk:e.signMessage,"ok-text":t.$t("did.sign_modal.ok"),"cancel-text":t.$t("did.sign_modal.cancel")},{default:a(()=>[l(H,{"label-col":{span:4},"wrapper-col":{span:20},style:{"margin-top":"16px"}},{default:a(()=>[l(K,{label:t.$t("did.sign_modal.messageLabel"),required:""},{default:a(()=>[l(E,{value:e.signText,"onUpdate:value":n[5]||(n[5]=m=>e.signText=m),placeholder:t.$t("did.sign_modal.messagePlaceholder"),"auto-size":{minRows:3,maxRows:8}},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1}),e.signResult?(u(),F("div",qe,[w("p",Qe,s(t.$t("did.sign_modal.resultHeader")),1),w("pre",Ze,s(e.signResult.signature),1)])):p("v-if",!0)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),p(" MTC inclusion proof drawer "),l(e.MtcVerifyDrawer,{open:e.mtcDrawerOpen,"onUpdate:open":n[7]||(n[7]=m=>e.mtcDrawerOpen=m),title:e.mtcDrawerTitle,hint:e.mtcDrawerHint},null,8,["open","title","hint"])])}const at=de(Pe,[["render",Ge],["__scopeId","data-v-553c4536"],["__file","/tmp/cc-web-panel-qWJQO5/repo/packages/web-panel/src/views/DID.vue"]]);export{at as default};
1
+ import{I as d,P as u,S as b,K as a,c as l,Q as v,_ as pe,R as s,U as w,V as p,a0 as ye,r as c,w as ee,b as J,J as F,o as te}from"./vendor-BvqAck49.js";import{_ as de,u as B,b as ae,d as k}from"./index-B9DUiQ24.js";import{p as le}from"./mtc-parser-BbAbUB-9.js";import{d as ge,f as _e,r as se,a4 as ve,K as be,w as he,as as ke,R as we}from"./icons-DP3uiYxy.js";import"./community-parser-CO25nZFt.js";function Q(t){if(!t)return null;const n=t.trim();try{return JSON.parse(n)}catch{const o=n.match(/(\[[\s\S]*\]|\{[\s\S]*\})/);if(!o)return null;try{return JSON.parse(o[1])}catch{return null}}}function q(t,n=0){if(!t||typeof t!="object")return null;const o=t.did||t.id||"";if(!o)return null;const e=t.displayName??t.display_name??t.name??"",I=t.isDefault===!0||t.is_default===1||t.is_default===!0||t.default===!0,g=t.publicKey??t.public_key??"",f=t.createdAt??t.created_at??t.created??"",y=(o.split(":")[1]||"chainless").trim();return{key:o,did:o,displayName:e||"",publicKey:g||"",isDefault:!!I,createdAt:f||"",method:y,raw:t.document?t:null,_idx:n}}function ne(t){const n=Q(t);return Array.isArray(n)?n.map(q).filter(Boolean):n&&Array.isArray(n.identities)?n.identities.map(q).filter(Boolean):De(t||"")}function De(t){const n=(t||"").split(`
2
+ `),o=[];let e=null;for(const I of n){const g=I.trim();if(!g||g.startsWith("─")||g.startsWith("="))continue;const f=g.match(/(did:[a-z0-9]+:[A-Za-z0-9_-]+)/);if(f&&/^did:/.test(g)){e&&o.push(e);const y=f[1],_=g.match(/\(([^)]+)\)/),x=/\[default\]|默认|\*/.test(g);e={key:y,did:y,displayName:_?_[1]:"",publicKey:"",isDefault:x,createdAt:"",method:(y.split(":")[1]||"chainless").trim(),raw:null,_idx:o.length};continue}if(e){const y=g.match(/created\s*[::]\s*(.+)$/i);y&&(e.createdAt=y[1].trim())}}return e&&o.push(e),o}function ie(t){const n=Q(t);if(!n||typeof n!="object"||Array.isArray(n))return null;const o=q(n);return o?(o.document=n.document||null,o):null}function oe(t){const n=Q(t);if(n&&typeof n=="object"&&n.signature)return{did:n.did||"",message:n.message||"",signature:String(n.signature)};const e=(t||"").match(/Signature[::]\s*([a-f0-9]+)/i);return e?{did:"",message:"",signature:e[1]}:null}const Se={__name:"MtcVerifyDrawer",props:{open:{type:Boolean,default:!1},title:{type:String,default:"MTC 包含证明"},defaultEnvelopePath:{type:String,default:""},defaultLandmarkPath:{type:String,default:""},hint:{type:String,default:""}},emits:["update:open"],setup(t,{expose:n}){n();const o=t,e=B(),I=c(o.defaultEnvelopePath),g=c(o.defaultLandmarkPath),f=c(!1),y=c(null),_=c(""),x=J(()=>o.hint||"通过 cc serve 运行 cc mtc verify(多算法 dispatcher 同时支持 Ed25519 和 SLH-DSA-128F)。文件路径应指向本机磁盘上的 envelope 和 landmark JSON — 浏览器只把路径转给 cc serve,不上传文件内容。");ee(()=>o.open,D=>{D&&(I.value=o.defaultEnvelopePath||I.value,g.value=o.defaultLandmarkPath||g.value,y.value=null,_.value="")});async function O(){f.value=!0,y.value=null,_.value="";try{const D=I.value.trim().replace(/"/g,'\\"'),C=g.value.trim().replace(/"/g,'\\"'),{output:N}=await e.execute(`mtc verify "${D}" --landmark "${C}" --json`,12e3),P=le(N);if(!P.raw){_.value="验证命令未返回 JSON。请检查路径是否正确。";return}y.value=P}catch(D){_.value=`验证失败: ${D?.message||D}`}finally{f.value=!1}}const M={props:o,ws:e,envelopePath:I,landmarkPath:g,verifying:f,result:y,error:_,hintMessage:x,runVerify:O,ref:c,computed:J,watch:ee,get SafetyOutlined(){return se},get CheckCircleOutlined(){return _e},get CloseCircleOutlined(){return ge},get useWsStore(){return B},get parseVerifyResult(){return le}};return Object.defineProperty(M,"__isScriptSetup",{enumerable:!1,value:!0}),M}},xe={style:{"margin-left":"8px"}},Ce={class:"mono"},Ie={class:"mono"},Oe={class:"mono"},Me={class:"raw-pre"};function ze(t,n,o,e,I,g){const f=d("a-alert"),y=d("a-input"),_=d("a-form-item"),x=d("a-button"),O=d("a-form"),M=d("a-divider"),D=d("a-tag"),C=d("a-descriptions-item"),N=d("a-descriptions"),P=d("a-collapse-panel"),A=d("a-collapse"),T=d("a-card"),V=d("a-drawer");return u(),b(V,{open:o.open,title:o.title,width:560,placement:"right","onUpdate:open":n[2]||(n[2]=z=>t.$emit("update:open",z))},{default:a(()=>[l(f,{type:"info","show-icon":"",message:e.hintMessage,style:{"margin-bottom":"16px"}},null,8,["message"]),l(O,{layout:"vertical"},{default:a(()=>[l(_,{label:"Envelope 文件路径"},{default:a(()=>[l(y,{value:e.envelopePath,"onUpdate:value":n[0]||(n[0]=z=>e.envelopePath=z),placeholder:"e.g. ./mtc-out/envelope-000000.json","allow-clear":""},null,8,["value"])]),_:1}),l(_,{label:"Landmark 文件路径"},{default:a(()=>[l(y,{value:e.landmarkPath,"onUpdate:value":n[1]||(n[1]=z=>e.landmarkPath=z),placeholder:"e.g. ./mtc-out/landmark.json","allow-clear":""},null,8,["value"])]),_:1}),l(_,null,{default:a(()=>[l(x,{type:"primary",loading:e.verifying,disabled:!e.envelopePath||!e.landmarkPath,onClick:e.runVerify},{icon:a(()=>[l(e.SafetyOutlined)]),default:a(()=>[n[3]||(n[3]=v(" 运行 cc mtc verify ",-1))]),_:1},8,["loading","disabled"])]),_:1})]),_:1}),l(M),e.result?(u(),b(T,{key:0,class:pe(["result-card",e.result.ok?"pass":"fail"]),size:"small"},{title:a(()=>[(u(),b(ye(e.result.ok?e.CheckCircleOutlined:e.CloseCircleOutlined))),w("span",xe,s(e.result.ok?"验证通过":"验证失败"),1)]),default:a(()=>[l(N,{column:1,size:"small",bordered:""},{default:a(()=>[l(C,{label:"结果"},{default:a(()=>[l(D,{color:e.result.ok?"green":"red"},{default:a(()=>[v(s(e.result.ok?"PASS":"FAIL"),1)]),_:1},8,["color"])]),_:1}),!e.result.ok&&e.result.code?(u(),b(C,{key:0,label:"错误码"},{default:a(()=>[w("span",Ce,s(e.result.code),1),e.result.recoverable?(u(),b(D,{key:0,color:"orange",style:{"margin-left":"8px"}},{default:a(()=>[...n[4]||(n[4]=[v("可恢复",-1)])]),_:1})):p("v-if",!0)]),_:1})):p("v-if",!0),e.result.leaf?.subject?(u(),b(C,{key:1,label:"Subject"},{default:a(()=>[w("span",Ie,s(e.result.leaf.subject),1)]),_:1})):p("v-if",!0),e.result.leaf?.kind?(u(),b(C,{key:2,label:"Kind"},{default:a(()=>[l(D,null,{default:a(()=>[v(s(e.result.leaf.kind),1)]),_:1})]),_:1})):p("v-if",!0),e.result.treeHead?.tree_size?(u(),b(C,{key:3,label:"Tree size"},{default:a(()=>[v(s(e.result.treeHead.tree_size),1)]),_:1})):p("v-if",!0),e.result.treeHead?.issuer?(u(),b(C,{key:4,label:"Issuer"},{default:a(()=>[w("span",Oe,s(e.result.treeHead.issuer),1)]),_:1})):p("v-if",!0)]),_:1}),e.result.raw?(u(),b(A,{key:0,ghost:"",style:{"margin-top":"12px"}},{default:a(()=>[l(P,{key:"raw",header:"原始 JSON 输出"},{default:a(()=>[w("pre",Me,s(JSON.stringify(e.result.raw,null,2)),1)]),_:1})]),_:1})):p("v-if",!0)]),_:1},8,["class"])):p("v-if",!0),e.error?(u(),b(f,{key:1,type:"error",message:e.error,style:{"margin-top":"12px"}},null,8,["message"])):p("v-if",!0)]),_:1},8,["open","title"])}const Ne=de(Se,[["render",ze],["__scopeId","data-v-6952fe8b"],["__file","/tmp/cc-web-panel-k4fdqo/repo/packages/web-panel/src/components/MtcVerifyDrawer.vue"]]),Pe={__name:"DID",setup(t,{expose:n}){n();const o=B(),{t:e}=ae(),I=c(!1),g=c(!1),f=c(!1),y=c(!1),_=c(""),x=c(""),O=c(!1),M=c([]),D=c(!1),C=c(!1),N=c(!1),P=c(""),A=c(null),T=c(""),V=c(""),z=c(""),K=c(null),H=J(()=>[{title:e("did.cols.did"),key:"did",dataIndex:"did",ellipsis:!0},{title:e("did.cols.name"),key:"displayName",dataIndex:"displayName",width:"160px"},{title:e("did.cols.method"),key:"method",dataIndex:"method",width:"110px"},{title:e("did.cols.createdAt"),key:"createdAt",dataIndex:"createdAt",width:"180px"},{title:e("did.cols.default"),key:"isDefault",width:"90px"},{title:e("did.cols.action"),key:"action",width:"280px"}]),U=J(()=>{const i=M.value.find(S=>S.isDefault);if(!i)return e("did.stats.unsetDefault");const r=i.did;return r.length>24?r.slice(0,12)+"..."+r.slice(-8):r}),j=J(()=>{const i=new Set(M.value.map(r=>r.method).filter(Boolean));return i.size===0?e("did.stats.noMethod"):i.size===1?[...i][0]:[...i].join(", ")});async function L(){g.value=!0;try{const{output:i}=await o.execute("did list --json",15e3);M.value=ne(i)}catch(i){k.error(e("did.msg.loadFailed")+": "+i.message),M.value=[]}finally{g.value=!1}}async function E(){f.value=!0;try{const i=P.value.trim(),r=i?`did create --name "${i.replace(/"/g,'\\"')}" --json`:"did create --json",{output:S}=await o.execute(r,2e4);/error|失败/i.test(S)&&!S.includes('"did"')?k.error(e("did.msg.createFailed")+": "+S.slice(0,120)):(k.success(e("did.msg.createSuccess")),D.value=!1,P.value="",await L())}catch(i){k.error(e("did.msg.createFailed")+": "+i.message)}finally{f.value=!1}}async function m(i){_.value=i.did;try{const{output:r,exitCode:S}=await o.execute(`did set-default ${i.did}`,15e3);S!==0||/error|not found|失败/i.test(r)?k.error(e("did.msg.setDefaultFailed")+": "+r.slice(0,120)):(k.success(e("did.msg.setDefaultSuccess")),await L())}catch(r){k.error(e("did.msg.setDefaultFailed")+": "+r.message)}finally{_.value=""}}async function h(i){x.value=i.did;try{const{output:r,exitCode:S}=await o.execute(`did delete ${i.did} --force`,15e3);S!==0||/error|not found|失败/i.test(r)?k.error(e("did.msg.deleteFailed")+": "+r.slice(0,120)):(k.success(e("did.msg.deleteSuccess")),await L())}catch(r){k.error(e("did.msg.deleteFailed")+": "+r.message)}finally{x.value=""}}async function R(i){if(A.value={...i},T.value="",C.value=!0,!i.publicKey)try{const{output:r}=await o.execute(`did show ${i.did} --json`,1e4),S=ie(r);S&&(A.value={...A.value,...S})}catch{}}async function re(i){O.value=!0;try{const{output:r}=await o.execute(`did resolve ${i.did}`,1e4);try{T.value=JSON.stringify(JSON.parse(r.trim()),null,2)}catch{T.value=r.trim()}}catch(r){k.error(e("did.msg.loadDocFailed")+": "+r.message)}finally{O.value=!1}}function ce(i){V.value=i.did,z.value="",K.value=null,N.value=!0}const Z=c(!1),G=c("MTC 包含证明"),X=c("");function Y(i){return i?i.length<=24?i:`${i.slice(0,16)}…${i.slice(-6)}`:""}function ue(i){G.value=`MTC 包含证明 · ${Y(i.did)}`,X.value="验证此 DID 是否在某个 MTC 批次中。请提供该批次的 envelope(其 leaf.subject 应等于此 DID)和 landmark 文件路径。 通常由 cc mtc batch-dids --out <dir> 生成。",Z.value=!0}async function fe(){if(!z.value.trim()){k.warning(e("did.msg.signEmpty"));return}y.value=!0,K.value=null;try{const r=`did sign "${z.value.replace(/"/g,'\\"')}" --did ${V.value} --json`,{output:S,exitCode:me}=await o.execute(r,15e3),W=oe(S);W&&W.signature?(K.value=W,k.success(e("did.msg.signSuccess"))):k.error(e("did.msg.signFailed")+": "+(S||`exit ${me}`).slice(0,120))}catch(i){k.error(e("did.msg.signFailed")+": "+i.message)}finally{y.value=!1}}te(()=>{L()});const $={ws:o,t:e,hasDesktopFeatures:I,loading:g,creating:f,signing:y,settingDefault:_,deleting:x,loadingDocument:O,identities:M,showCreateModal:D,showDetailsModal:C,showSignModal:N,newIdentityName:P,currentIdentity:A,currentDocument:T,signTargetDid:V,signText:z,signResult:K,columns:H,defaultIdentityDisplay:U,methodDisplay:j,loadList:L,createIdentity:E,setDefault:m,deleteIdentity:h,openShow:R,loadDocument:re,openSign:ce,mtcDrawerOpen:Z,mtcDrawerTitle:G,mtcDrawerHint:X,shortDid:Y,openMtcVerify:ue,signMessage:fe,ref:c,computed:J,onMounted:te,get ReloadOutlined(){return we},get PlusOutlined(){return ke},get IdcardOutlined(){return he},get KeyOutlined(){return be},get FileTextOutlined(){return ve},get SafetyOutlined(){return se},get message(){return k},get useI18n(){return ae},get useWsStore(){return B},get parseDidList(){return ne},get parseDidShow(){return ie},get parseSignResult(){return oe},MtcVerifyDrawer:Ne};return Object.defineProperty($,"__isScriptSetup",{enumerable:!1,value:!0}),$}},Ae={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Te={class:"page-title"},je={class:"page-sub"},Fe={key:1,style:{"text-align":"center",padding:"60px"}},Ve={key:0,style:{color:"#e0e0e0","font-family":"monospace","font-size":"12px"}},Ke={key:1,style:{color:"var(--text-primary)"}},Le={key:3,style:{color:"var(--text-secondary)","font-size":"12px"}},Re={key:0,style:{"margin-top":"12px"}},Je={style:{"font-family":"monospace",color:"#ccc","word-break":"break-all"}},Ue={style:{"font-family":"monospace",color:"#888","font-size":"11px","word-break":"break-all"}},He={style:{"margin-top":"16px",display:"flex",gap:"8px","flex-wrap":"wrap"}},Be={key:0,style:{"margin-top":"16px"}},Ee={style:{color:"var(--text-secondary)","margin-bottom":"6px"}},We={style:{"white-space":"pre-wrap","word-break":"break-all",color:"#52c41a","font-size":"11px",background:"var(--bg-base)",padding:"12px","border-radius":"6px",border:"1px solid var(--border-color)","max-height":"320px",overflow:"auto"}},qe={key:0,style:{"margin-top":"12px"}},Qe={style:{color:"var(--text-secondary)","margin-bottom":"6px"}},Ze={style:{"white-space":"pre-wrap","word-break":"break-all",color:"#52c41a","font-size":"11px",background:"var(--bg-base)",padding:"12px","border-radius":"6px",border:"1px solid var(--border-color)"}};function Ge(t,n,o,e,I,g){const f=d("a-button"),y=d("a-space"),_=d("a-statistic"),x=d("a-card"),O=d("a-col"),M=d("a-row"),D=d("a-alert"),C=d("a-spin"),N=d("a-tag"),P=d("a-tooltip"),A=d("a-popconfirm"),T=d("a-empty"),V=d("a-table"),z=d("a-input"),K=d("a-form-item"),H=d("a-form"),U=d("a-modal"),j=d("a-descriptions-item"),L=d("a-descriptions"),E=d("a-textarea");return u(),F("div",null,[w("div",Ae,[w("div",null,[w("h2",Te,s(t.$t("did.title")),1),w("p",je,s(t.$t("did.subtitle")),1)]),l(y,null,{default:a(()=>[l(f,{loading:e.loading,onClick:e.loadList},{icon:a(()=>[l(e.ReloadOutlined)]),default:a(()=>[v(" "+s(t.$t("did.refresh")),1)]),_:1},8,["loading"]),l(f,{type:"primary",onClick:n[0]||(n[0]=m=>e.showCreateModal=!0)},{icon:a(()=>[l(e.PlusOutlined)]),default:a(()=>[v(" "+s(t.$t("did.create")),1)]),_:1})]),_:1})]),l(M,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:a(()=>[l(O,{xs:24,sm:12,lg:6},{default:a(()=>[l(x,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[l(_,{title:t.$t("did.stats.count"),value:e.identities.length,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:a(()=>[l(e.IdcardOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),l(O,{xs:24,sm:12,lg:6},{default:a(()=>[l(x,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[l(_,{title:t.$t("did.stats.default"),value:e.defaultIdentityDisplay,"value-style":{color:e.defaultIdentityDisplay!==t.$t("did.stats.unsetDefault")?"#52c41a":"#888",fontSize:"13px",fontFamily:"monospace"}},null,8,["title","value","value-style"])]),_:1})]),_:1}),l(O,{xs:24,sm:12,lg:6},{default:a(()=>[l(x,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[l(_,{title:t.$t("did.stats.method"),value:e.methodDisplay,"value-style":{color:"#722ed1",fontSize:"14px"}},null,8,["title","value"])]),_:1})]),_:1}),l(O,{xs:24,sm:12,lg:6},{default:a(()=>[l(x,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[l(_,{title:t.$t("did.stats.signable"),value:e.identities.length>0?t.$t("did.stats.yes"):t.$t("did.stats.no"),"value-style":{color:e.identities.length>0?"#52c41a":"#ff4d4f",fontSize:"20px"}},{prefix:a(()=>[l(e.KeyOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1})]),_:1}),e.hasDesktopFeatures?p("v-if",!0):(u(),b(D,{key:0,message:t.$t("did.webOnly.message"),description:t.$t("did.webOnly.description"),type:"info","show-icon":"",closable:"",style:{"margin-bottom":"16px"}},null,8,["message","description"])),e.loading?(u(),F("div",Fe,[l(C,{size:"large"})])):(u(),b(V,{key:2,columns:e.columns,"data-source":e.identities,pagination:{pageSize:20,showTotal:m=>t.$t("did.table.totalSuffix",{n:m})},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"did-row"},{bodyCell:a(({column:m,record:h})=>[m.key==="did"?(u(),F("span",Ve,s(h.did),1)):p("v-if",!0),m.key==="displayName"?(u(),F("span",Ke,s(h.displayName||"-"),1)):p("v-if",!0),m.key==="method"?(u(),b(N,{key:2,color:"blue"},{default:a(()=>[v(s(h.method),1)]),_:2},1024)):p("v-if",!0),m.key==="createdAt"?(u(),F("span",Le,s(h.createdAt||"-"),1)):p("v-if",!0),m.key==="isDefault"?(u(),b(N,{key:4,color:h.isDefault?"green":"default"},{default:a(()=>[v(s(h.isDefault?t.$t("did.table.defaultTag"):"-"),1)]),_:2},1032,["color"])):p("v-if",!0),m.key==="action"?(u(),b(y,{key:5,size:"small"},{default:a(()=>[l(f,{size:"small",type:"link",onClick:R=>e.openShow(h)},{default:a(()=>[v(s(t.$t("did.actions.details")),1)]),_:1},8,["onClick"]),l(f,{size:"small",type:"link",onClick:R=>e.openSign(h)},{default:a(()=>[v(s(t.$t("did.actions.sign")),1)]),_:1},8,["onClick"]),l(P,{title:"MTC 包含证明"},{default:a(()=>[l(f,{size:"small",type:"link",onClick:R=>e.openMtcVerify(h)},{default:a(()=>[l(e.SafetyOutlined)]),_:1},8,["onClick"])]),_:2},1024),h.isDefault?p("v-if",!0):(u(),b(f,{key:0,size:"small",type:"link",loading:e.settingDefault===h.did,onClick:R=>e.setDefault(h)},{default:a(()=>[v(s(t.$t("did.actions.setDefault")),1)]),_:1},8,["loading","onClick"])),l(A,{title:t.$t("did.deleteConfirm.title"),"ok-text":t.$t("did.deleteConfirm.ok"),"ok-type":"danger","cancel-text":t.$t("did.deleteConfirm.cancel"),onConfirm:R=>e.deleteIdentity(h)},{default:a(()=>[l(f,{size:"small",type:"link",danger:"",loading:e.deleting===h.did},{default:a(()=>[v(s(t.$t("did.actions.delete")),1)]),_:1},8,["loading"])]),_:2},1032,["title","ok-text","cancel-text","onConfirm"])]),_:2},1024)):p("v-if",!0)]),emptyText:a(()=>[l(T,{description:t.$t("did.table.empty")},null,8,["description"])]),_:1},8,["columns","data-source","pagination"])),p(" Create Modal "),l(U,{open:e.showCreateModal,"onUpdate:open":n[2]||(n[2]=m=>e.showCreateModal=m),title:t.$t("did.create_modal.title"),"confirm-loading":e.creating,onOk:e.createIdentity,"ok-text":t.$t("did.create_modal.ok"),"cancel-text":t.$t("did.create_modal.cancel")},{default:a(()=>[l(H,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:a(()=>[l(K,{label:t.$t("did.create_modal.nameLabel")},{default:a(()=>[l(z,{value:e.newIdentityName,"onUpdate:value":n[1]||(n[1]=m=>e.newIdentityName=m),placeholder:t.$t("did.create_modal.namePlaceholder"),"allow-clear":""},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),p(" Show Details Modal "),l(U,{open:e.showDetailsModal,"onUpdate:open":n[4]||(n[4]=m=>e.showDetailsModal=m),title:t.$t("did.details.title",{label:e.currentIdentity?.displayName||e.currentIdentity?.did?.slice(0,24)||""}),width:720,footer:null},{default:a(()=>[e.currentIdentity?(u(),F("div",Re,[l(L,{column:1,bordered:"",size:"small"},{default:a(()=>[l(j,{label:t.$t("did.details.did")},{default:a(()=>[w("span",Je,s(e.currentIdentity.did),1)]),_:1},8,["label"]),l(j,{label:t.$t("did.details.name")},{default:a(()=>[v(s(e.currentIdentity.displayName||"-"),1)]),_:1},8,["label"]),l(j,{label:t.$t("did.details.method")},{default:a(()=>[l(N,{color:"blue"},{default:a(()=>[v(s(e.currentIdentity.method),1)]),_:1})]),_:1},8,["label"]),l(j,{label:t.$t("did.details.default")},{default:a(()=>[l(N,{color:e.currentIdentity.isDefault?"green":"default"},{default:a(()=>[v(s(e.currentIdentity.isDefault?t.$t("did.details.yes"):t.$t("did.details.no")),1)]),_:1},8,["color"])]),_:1},8,["label"]),l(j,{label:t.$t("did.details.createdAt")},{default:a(()=>[v(s(e.currentIdentity.createdAt||"-"),1)]),_:1},8,["label"]),l(j,{label:t.$t("did.details.publicKey")},{default:a(()=>[w("span",Ue,s(e.currentIdentity.publicKey||t.$t("did.details.publicKeyLoading")),1)]),_:1},8,["label"])]),_:1}),w("div",He,[l(f,{loading:e.loadingDocument,onClick:n[3]||(n[3]=m=>e.loadDocument(e.currentIdentity))},{icon:a(()=>[l(e.FileTextOutlined)]),default:a(()=>[v(" "+s(t.$t("did.details.viewDoc")),1)]),_:1},8,["loading"])]),e.currentDocument?(u(),F("div",Be,[w("p",Ee,s(t.$t("did.details.docHeader")),1),w("pre",We,s(e.currentDocument),1)])):p("v-if",!0)])):p("v-if",!0)]),_:1},8,["open","title"]),p(" Sign Modal "),l(U,{open:e.showSignModal,"onUpdate:open":n[6]||(n[6]=m=>e.showSignModal=m),title:t.$t("did.sign_modal.title",{label:e.signTargetDid?.slice(0,28)||t.$t("did.sign_modal.defaultIdentityFallback")}),"confirm-loading":e.signing,onOk:e.signMessage,"ok-text":t.$t("did.sign_modal.ok"),"cancel-text":t.$t("did.sign_modal.cancel")},{default:a(()=>[l(H,{"label-col":{span:4},"wrapper-col":{span:20},style:{"margin-top":"16px"}},{default:a(()=>[l(K,{label:t.$t("did.sign_modal.messageLabel"),required:""},{default:a(()=>[l(E,{value:e.signText,"onUpdate:value":n[5]||(n[5]=m=>e.signText=m),placeholder:t.$t("did.sign_modal.messagePlaceholder"),"auto-size":{minRows:3,maxRows:8}},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1}),e.signResult?(u(),F("div",qe,[w("p",Qe,s(t.$t("did.sign_modal.resultHeader")),1),w("pre",Ze,s(e.signResult.signature),1)])):p("v-if",!0)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),p(" MTC inclusion proof drawer "),l(e.MtcVerifyDrawer,{open:e.mtcDrawerOpen,"onUpdate:open":n[7]||(n[7]=m=>e.mtcDrawerOpen=m),title:e.mtcDrawerTitle,hint:e.mtcDrawerHint},null,8,["open","title","hint"])])}const at=de(Pe,[["render",Ge],["__scopeId","data-v-553c4536"],["__file","/tmp/cc-web-panel-k4fdqo/repo/packages/web-panel/src/views/DID.vue"]]);export{at as default};
@@ -1,3 +1,3 @@
1
- import{E as J,r as E,I as k,J as f,U as l,R as a,c as s,K as o,S as z,V as $,N as q,o as U,x as V,b as w,P as m,Q as v,$ as N,F as T,Z as F}from"./vendor-BvqAck49.js";import{u as A,_ as W}from"./index-C2N_-y_W.js";import{u as B}from"./chat-MMwBSP3l.js";import{s as G}from"./community-parser-CO25nZFt.js";import{ad as Q,ae as K,a4 as Z,h as X,a7 as Y,ab as x,a9 as ee,af as te,a8 as se,R as oe}from"./icons-DP3uiYxy.js";function ae(e){const n=G(e);if(!n)return null;try{return JSON.parse(n)}catch{}const c=n.match(/\[[\s\S]*\]|\{[\s\S]*\}/);if(!c)return null;try{return JSON.parse(c[0])}catch{return null}}function le(){return{samples:0,compressedSamples:0,hitRate:0,totalSavedTokens:0,averageSavedTokens:0,totalOriginalTokens:0,totalCompressedTokens:0,netSavingsRate:0,variantDistribution:{},strategyDistribution:[],providerDistribution:[],modelDistribution:[]}}const H=J("dashboard",()=>{const e=E(!1),n=E(!1),c=E({wsStatus:"disconnected",activeLlm:null,activeModel:null,skillCount:0,sessionCount:0,providerCount:0,appRunning:!1,setupDone:!1,edition:"",mcpCount:null,noteCount:null}),t=E(""),R=E(le()),h=E({windowPreset:"all",provider:"",model:""});let b=null;function S(i=A()){b||(b=i.onRuntimeEvent(u=>{u.type==="compression:summary"?P(u.payload?.summary||{}):u.type==="session:start"?c.value.sessionCount=(c.value.sessionCount||0)+1:u.type==="session:end"&&(c.value.sessionCount=Math.max(0,(c.value.sessionCount||0)-1))}))}function y(){b&&(b(),b=null)}function P(i){R.value={...R.value,...i||{}}}function d(i){return i==="1h"?3600*1e3:i==="24h"?1440*60*1e3:i==="7d"?10080*60*1e3:null}function _(i){c.value.appRunning=i.includes("Desktop app running"),c.value.setupDone=i.includes("Setup completed");const u=i.match(/Edition:\s+(\S+)/i);u&&(c.value.edition=u[1]);const g=i.match(/LLM:\s+(\S+)\s+\(([^)]+)\)/i);if(g)c.value.activeLlm=g[1],c.value.activeModel=g[2];else{const r=i.match(/LLM:\s+(\S+)/i);r&&(c.value.activeLlm=r[1])}}async function D(){const i=A();S(i),n.value=!0;const u={type:"compression-stats",windowMs:d(h.value.windowPreset)};h.value.provider&&(u.provider=h.value.provider),h.value.model&&(u.model=h.value.model);try{const g=await i.sendRaw(u,1e4);P(g.summary||{})}catch{}finally{n.value=!1}}async function p(){const i=A();S(i),e.value=!0,c.value.wsStatus=i.status,t.value="";try{const[u,g]=await Promise.allSettled([i.execute("status",15e3),i.listSessions()]);if(u.status==="fulfilled"){const r=u.value.output;t.value=r.split(`
1
+ import{E as G,r as E,I as k,J as f,U as l,R as a,c as s,K as o,S as z,V as $,N as q,o as U,x as V,b as w,P as m,Q as v,$ as N,F as T,Z as F}from"./vendor-BvqAck49.js";import{u as A,_ as J}from"./index-B9DUiQ24.js";import{u as B}from"./chat-DZ6sHPit.js";import{s as W}from"./community-parser-CO25nZFt.js";import{ad as K,ae as Q,a4 as Z,h as X,a7 as Y,ab as x,a9 as ee,af as te,a8 as se,R as oe}from"./icons-DP3uiYxy.js";function ae(e){const n=W(e);if(!n)return null;try{return JSON.parse(n)}catch{}const c=n.match(/\[[\s\S]*\]|\{[\s\S]*\}/);if(!c)return null;try{return JSON.parse(c[0])}catch{return null}}function le(){return{samples:0,compressedSamples:0,hitRate:0,totalSavedTokens:0,averageSavedTokens:0,totalOriginalTokens:0,totalCompressedTokens:0,netSavingsRate:0,variantDistribution:{},strategyDistribution:[],providerDistribution:[],modelDistribution:[]}}const H=G("dashboard",()=>{const e=E(!1),n=E(!1),c=E({wsStatus:"disconnected",activeLlm:null,activeModel:null,skillCount:0,sessionCount:0,providerCount:0,appRunning:!1,setupDone:!1,edition:"",mcpCount:null,noteCount:null}),t=E(""),O=E(le()),h=E({windowPreset:"all",provider:"",model:""});let b=null;function S(i=A()){b||(b=i.onRuntimeEvent(u=>{u.type==="compression:summary"?P(u.payload?.summary||{}):u.type==="session:start"?c.value.sessionCount=(c.value.sessionCount||0)+1:u.type==="session:end"&&(c.value.sessionCount=Math.max(0,(c.value.sessionCount||0)-1))}))}function y(){b&&(b(),b=null)}function P(i){O.value={...O.value,...i||{}}}function d(i){return i==="1h"?3600*1e3:i==="24h"?1440*60*1e3:i==="7d"?10080*60*1e3:null}function _(i){c.value.appRunning=i.includes("Desktop app running"),c.value.setupDone=i.includes("Setup completed");const u=i.match(/Edition:\s+(\S+)/i);u&&(c.value.edition=u[1]);const g=i.match(/LLM:\s+(\S+)\s+\(([^)]+)\)/i);if(g)c.value.activeLlm=g[1],c.value.activeModel=g[2];else{const r=i.match(/LLM:\s+(\S+)/i);r&&(c.value.activeLlm=r[1])}}async function D(){const i=A();S(i),n.value=!0;const u={type:"compression-stats",windowMs:d(h.value.windowPreset)};h.value.provider&&(u.provider=h.value.provider),h.value.model&&(u.model=h.value.model);try{const g=await i.sendRaw(u,1e4);P(g.summary||{})}catch{}finally{n.value=!1}}async function p(){const i=A();S(i),e.value=!0,c.value.wsStatus=i.status,t.value="";try{const[u,g]=await Promise.allSettled([i.execute("status",15e3),i.listSessions()]);if(u.status==="fulfilled"){const r=u.value.output;t.value=r.split(`
2
2
  `).slice(0,20).join(`
3
- `),_(r)}g.status==="fulfilled"&&(c.value.sessionCount=g.value.length),Promise.allSettled([i.execute("skill sources --json",15e3),i.execute("llm providers",15e3)]).then(([r,C])=>{if(r.status==="fulfilled"){const O=ae(r.value.output);Array.isArray(O)&&(c.value.skillCount=O.reduce((j,L)=>j+(typeof L?.count=="number"?L.count:0),0))}if(C.status==="fulfilled"){const j=C.value.output.match(/active[:\s]+(\S+)/i);j&&!c.value.activeLlm&&(c.value.activeLlm=j[1])}}),i.sendRaw({type:"mcp.list_tools"},5e3).then(r=>{const O=(r?.result??r)?.servers;c.value.mcpCount=Array.isArray(O)?O.length:0}).catch(()=>{c.value.mcpCount=0}),await D()}catch{}finally{e.value=!1}}return{loading:e,compressionLoading:n,stats:c,statusLog:t,compression:R,telemetryFilters:h,ensureRuntimeSubscription:S,stopRuntimeSubscription:y,refresh:p,refreshCompression:D,applyCompressionSummary:P,toWindowMs:d}}),re={__name:"Dashboard",setup(e,{expose:n}){n();const c=q(),t=A(),R=B(),h=H(),b=window.__CC_CONFIG__||{},S=w(()=>b.mode==="project"),y="v5.0.3.115",P=w(()=>t.status),d=w(()=>h.loading),_=w(()=>h.statusLog),D=w(()=>h.telemetryFilters),p=w(()=>h.compression),i=w(()=>h.stats),u=w(()=>Object.entries(p.value.variantDistribution||{})),g=w(()=>p.value.providerDistribution||[]),r=w(()=>p.value.modelDistribution||[]);async function C(){await h.refresh()}async function O(){await h.refreshCompression()}function j(I){return`${((I||0)*100).toFixed(1)}%`}async function L(){await R.createSession("agent"),c.push("/chat")}U(()=>{h.ensureRuntimeSubscription(t),setTimeout(C,300)}),V(()=>{h.stopRuntimeSubscription()});const M={router:c,ws:t,chatStore:R,dashboardStore:h,cfg:b,isProject:S,PRODUCT_VERSION:y,wsStatus:P,loading:d,statusLog:_,telemetryFilters:D,compression:p,stats:i,variantEntries:u,providerEntries:g,modelEntries:r,refresh:C,refreshCompression:O,formatPercent:j,newAgentSession:L,computed:w,onMounted:U,onUnmounted:V,get useRouter(){return q},get ReloadOutlined(){return oe},get ApiOutlined(){return se},get RobotOutlined(){return te},get AppstoreOutlined(){return ee},get MessageOutlined(){return x},get FolderOutlined(){return Y},get DesktopOutlined(){return X},get FileTextOutlined(){return Z},get ToolOutlined(){return K},get SettingOutlined(){return Q},get useWsStore(){return A},get useChatStore(){return B},get useDashboardStore(){return H}};return Object.defineProperty(M,"__isScriptSetup",{enumerable:!1,value:!0}),M}},ne={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"20px"}},ie={class:"page-title"},de={class:"page-sub"},ce={style:{display:"flex","align-items":"center",gap:"12px","flex-wrap":"wrap"}},ue={style:{color:"#91caff","font-weight":"600"}},me={style:{color:"#4a6fa5","font-size":"11px","font-family":"monospace"}},fe={class:"stat-header"},ve={class:"stat-label"},he={class:"stat-sub"},be={class:"stat-header"},ye={class:"stat-label"},pe={class:"stat-value",style:{color:"#91caff","font-size":"15px",overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"}},_e={class:"stat-sub",style:{overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"}},ge={class:"stat-header"},ke={class:"stat-label"},we={class:"stat-value",style:{color:"#1677ff"}},Se={class:"stat-sub"},Ce={class:"stat-header"},Oe={class:"stat-label"},Re={class:"stat-value",style:{color:"#c084fc"}},Pe={class:"stat-sub"},De={class:"stat-header"},je={class:"stat-label"},Ee={class:"stat-sub"},Te={class:"stat-header"},Fe={class:"stat-label"},ze={class:"stat-value",style:{color:"#13c2c2"}},Ae={class:"stat-sub"},Le={class:"stat-header"},$e={class:"stat-label"},Ne={class:"stat-value",style:{color:"#faad14"}},Me={class:"stat-sub"},qe={class:"status-log"},Ue={class:"telemetry-filter"},Ve={class:"telemetry-filter-label"},Be={class:"telemetry-filter"},He={class:"telemetry-filter-label"},Ie={class:"telemetry-filter"},Je={class:"telemetry-filter-label"},We={class:"telemetry-card"},Ge={class:"telemetry-label"},Qe={class:"telemetry-value"},Ke={class:"telemetry-sub"},Ze={class:"telemetry-card"},Xe={class:"telemetry-label"},Ye={class:"telemetry-value"},xe={class:"telemetry-sub"},et={class:"telemetry-card"},tt={class:"telemetry-label"},st={class:"telemetry-value"},ot={class:"telemetry-sub"},at={class:"telemetry-section"},lt={class:"telemetry-section-title"},rt={key:0,class:"telemetry-empty"},nt={key:1,class:"telemetry-list"},it={class:"telemetry-section"},dt={class:"telemetry-section-title"},ct={key:0,class:"telemetry-empty"},ut={key:1,class:"telemetry-list"},mt={class:"telemetry-section"},ft={class:"telemetry-section-title"},vt={key:0,class:"telemetry-empty"},ht={key:1,class:"telemetry-list"},bt={class:"telemetry-section"},yt={class:"telemetry-section-title"},pt={key:0,class:"telemetry-empty"},_t={key:1,class:"telemetry-list"},gt={style:{color:"#91caff"}},kt={style:{color:"var(--text-muted)","font-family":"monospace","font-size":"11px"}},wt={style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},St={style:{color:"var(--text-muted)"}};function Ct(e,n,c,t,R,h){const b=k("a-button"),S=k("a-tag"),y=k("a-card"),P=k("a-badge"),d=k("a-col"),_=k("a-row"),D=k("a-space"),p=k("a-select-option"),i=k("a-select"),u=k("a-descriptions-item"),g=k("a-descriptions");return m(),f("div",null,[l("div",ne,[l("div",null,[l("h2",ie,a(e.$t("dashboard.title")),1),l("p",de,a(t.isProject?e.$t("dashboard.subProject",{name:t.cfg.projectName||e.$t("dashboard.unnamedProject")}):e.$t("dashboard.subGlobal")),1)]),s(b,{type:"primary",ghost:"",loading:t.loading,onClick:t.refresh},{icon:o(()=>[s(t.ReloadOutlined)]),default:o(()=>[v(" "+a(e.$t("dashboard.refresh")),1)]),_:1},8,["loading"])]),t.isProject?(m(),z(y,{key:0,style:{background:"rgba(22,119,255,.08)","border-color":"rgba(22,119,255,.25)","margin-bottom":"16px"},size:"small"},{default:o(()=>[l("div",ce,[s(t.FolderOutlined,{style:{color:"#1677ff","font-size":"18px"}}),l("div",null,[l("div",ue,a(t.cfg.projectName||e.$t("dashboard.projectBanner.fallbackName")),1),l("div",me,a(t.cfg.projectRoot),1)]),s(S,{color:"blue",style:{"margin-left":"auto"}},{default:o(()=>[v(a(e.$t("dashboard.projectBanner.tag")),1)]),_:1})])]),_:1})):$("v-if",!0),s(_,{gutter:[12,12],style:{"margin-bottom":"16px"}},{default:o(()=>[s(d,{xs:24,sm:12,lg:6},{default:o(()=>[s(y,{class:"stat-card gateway-card",size:"small"},{default:o(()=>[l("div",fe,[l("span",ve,a(e.$t("dashboard.stats.wsGateway")),1),s(P,{status:t.wsStatus==="connected"?"success":"error"},null,8,["status"])]),l("div",{class:"stat-value",style:N({color:t.wsStatus==="connected"?"#52c41a":"#888"})},a(t.wsStatus==="connected"?e.$t("dashboard.stats.wsRunning"):e.$t("dashboard.stats.wsDisconnected")),5),l("div",he,a(e.$t("dashboard.stats.wsPortLine",{port:t.cfg.wsPort||18800,host:t.cfg.wsHost||"127.0.0.1"})),1)]),_:1})]),_:1}),s(d,{xs:24,sm:12,lg:6},{default:o(()=>[s(y,{class:"stat-card",size:"small"},{default:o(()=>[l("div",be,[l("span",ye,a(e.$t("dashboard.stats.currentLlm")),1),s(t.RobotOutlined,{style:{color:"#1677ff"}})]),l("div",pe,a(t.stats.activeLlm||e.$t("dashboard.stats.llmUnconfigured")),1),l("div",_e,a(t.stats.activeModel||"—"),1)]),_:1})]),_:1}),s(d,{xs:24,sm:12,lg:6},{default:o(()=>[s(y,{class:"stat-card",size:"small",style:{cursor:"pointer"},onClick:n[0]||(n[0]=r=>e.$router.push("/skills"))},{default:o(()=>[l("div",ge,[l("span",ke,a(e.$t("dashboard.stats.skills")),1),s(t.AppstoreOutlined,{style:{color:"#1677ff"}})]),l("div",we,a(t.stats.skillCount||"—"),1),l("div",Se,a(e.$t("dashboard.stats.skillsHint")),1)]),_:1})]),_:1}),s(d,{xs:24,sm:12,lg:6},{default:o(()=>[s(y,{class:"stat-card",size:"small",style:{cursor:"pointer"},onClick:n[1]||(n[1]=r=>e.$router.push("/chat"))},{default:o(()=>[l("div",Ce,[l("span",Oe,a(e.$t("dashboard.stats.sessions")),1),s(t.MessageOutlined,{style:{color:"#722ed1"}})]),l("div",Re,a(t.stats.sessionCount),1),l("div",Pe,a(e.$t("dashboard.stats.sessionsHint")),1)]),_:1})]),_:1})]),_:1}),s(_,{gutter:[12,12],style:{"margin-bottom":"16px"}},{default:o(()=>[s(d,{xs:24,sm:8},{default:o(()=>[s(y,{class:"stat-card",size:"small"},{default:o(()=>[l("div",De,[l("span",je,a(e.$t("dashboard.stats.appStatus")),1),s(t.DesktopOutlined,{style:N({color:t.stats.appRunning?"#52c41a":"#888"})},null,8,["style"])]),l("div",{class:"stat-value",style:N({color:t.stats.appRunning?"#52c41a":"#888",fontSize:"15px"})},a(t.stats.appRunning?e.$t("dashboard.stats.appRunning"):t.stats.setupDone?e.$t("dashboard.stats.appReady"):e.$t("dashboard.stats.appNotStarted")),5),l("div",Ee,a(e.$t("dashboard.stats.edition",{name:t.stats.edition||"Community"})),1)]),_:1})]),_:1}),s(d,{xs:24,sm:8},{default:o(()=>[s(y,{class:"stat-card",size:"small",style:{cursor:"pointer"},onClick:n[2]||(n[2]=r=>e.$router.push("/mcp"))},{default:o(()=>[l("div",Te,[l("span",Fe,a(e.$t("dashboard.stats.mcp")),1),s(t.ToolOutlined,{style:{color:"#13c2c2"}})]),l("div",ze,a(t.stats.mcpCount??"—"),1),l("div",Ae,a(e.$t("dashboard.stats.mcpHint")),1)]),_:1})]),_:1}),s(d,{xs:24,sm:8},{default:o(()=>[s(y,{class:"stat-card",size:"small",style:{cursor:"pointer"},onClick:n[3]||(n[3]=r=>e.$router.push("/notes"))},{default:o(()=>[l("div",Le,[l("span",$e,a(e.$t("dashboard.stats.notes")),1),s(t.FileTextOutlined,{style:{color:"#faad14"}})]),l("div",Ne,a(t.stats.noteCount??"—"),1),l("div",Me,a(e.$t("dashboard.stats.notesHint")),1)]),_:1})]),_:1})]),_:1}),s(_,{gutter:[16,16]},{default:o(()=>[s(d,{xs:24,lg:10},{default:o(()=>[s(y,{title:e.$t("dashboard.quick.title"),style:{background:"var(--bg-card)","border-color":"var(--border-color)",height:"100%"}},{default:o(()=>[s(D,{direction:"vertical",style:{width:"100%"},size:"middle"},{default:o(()=>[s(b,{type:"primary",block:"",onClick:n[4]||(n[4]=r=>e.$router.push("/chat"))},{icon:o(()=>[s(t.MessageOutlined)]),default:o(()=>[v(" "+a(t.isProject?e.$t("dashboard.quick.enterProjectChat"):e.$t("dashboard.quick.newAiChat")),1)]),_:1}),s(b,{block:"",onClick:t.newAgentSession,style:{background:"rgba(114,46,209,.12)","border-color":"#722ed1",color:"#722ed1"}},{icon:o(()=>[s(t.RobotOutlined)]),default:o(()=>[v(" "+a(e.$t("dashboard.quick.startAgent")),1)]),_:1}),s(_,{gutter:8},{default:o(()=>[s(d,{span:12},{default:o(()=>[s(b,{block:"",onClick:n[5]||(n[5]=r=>e.$router.push("/services")),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:o(()=>[s(t.SettingOutlined)]),default:o(()=>[v(" "+a(e.$t("dashboard.quick.services")),1)]),_:1})]),_:1}),s(d,{span:12},{default:o(()=>[s(b,{block:"",onClick:n[6]||(n[6]=r=>e.$router.push("/logs")),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:o(()=>[s(t.FileTextOutlined)]),default:o(()=>[v(" "+a(e.$t("dashboard.quick.logs")),1)]),_:1})]),_:1})]),_:1}),s(_,{gutter:8},{default:o(()=>[s(d,{span:12},{default:o(()=>[s(b,{block:"",onClick:n[7]||(n[7]=r=>e.$router.push("/skills")),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:o(()=>[s(t.AppstoreOutlined)]),default:o(()=>[v(" "+a(e.$t("dashboard.quick.skills")),1)]),_:1})]),_:1}),s(d,{span:12},{default:o(()=>[s(b,{block:"",onClick:n[8]||(n[8]=r=>e.$router.push("/providers")),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:o(()=>[s(t.ApiOutlined)]),default:o(()=>[v(" "+a(e.$t("dashboard.quick.providers")),1)]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,["title"])]),_:1}),s(d,{xs:24,lg:14},{default:o(()=>[s(y,{title:e.$t("dashboard.status.title"),style:{background:"var(--bg-card)","border-color":"var(--border-color)"},loading:t.loading},{extra:o(()=>[s(b,{type:"link",size:"small",onClick:n[9]||(n[9]=r=>e.$router.push("/logs"))},{default:o(()=>[v(a(e.$t("dashboard.status.more")),1)]),_:1})]),default:o(()=>[l("pre",qe,a(t.statusLog||e.$t("dashboard.status.placeholder")),1)]),_:1},8,["title","loading"])]),_:1})]),_:1}),s(y,{title:e.$t("dashboard.telemetry.title"),style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-top":"16px"},loading:t.loading},{default:o(()=>[s(_,{gutter:[12,12],style:{"margin-bottom":"12px"}},{default:o(()=>[s(d,{xs:24,md:8},{default:o(()=>[l("div",Ue,[l("div",Ve,a(e.$t("dashboard.telemetry.filterWindow")),1),s(i,{value:t.telemetryFilters.windowPreset,"onUpdate:value":n[10]||(n[10]=r=>t.telemetryFilters.windowPreset=r),style:{width:"100%"},onChange:t.refreshCompression},{default:o(()=>[s(p,{value:"all"},{default:o(()=>[v(a(e.$t("dashboard.telemetry.windowAll")),1)]),_:1}),s(p,{value:"1h"},{default:o(()=>[v(a(e.$t("dashboard.telemetry.window1h")),1)]),_:1}),s(p,{value:"24h"},{default:o(()=>[v(a(e.$t("dashboard.telemetry.window24h")),1)]),_:1}),s(p,{value:"7d"},{default:o(()=>[v(a(e.$t("dashboard.telemetry.window7d")),1)]),_:1})]),_:1},8,["value"])])]),_:1}),s(d,{xs:24,md:8},{default:o(()=>[l("div",Be,[l("div",He,a(e.$t("dashboard.telemetry.filterProvider")),1),s(i,{value:t.telemetryFilters.provider,"onUpdate:value":n[11]||(n[11]=r=>t.telemetryFilters.provider=r),style:{width:"100%"},onChange:t.refreshCompression},{default:o(()=>[s(p,{value:""},{default:o(()=>[v(a(e.$t("dashboard.telemetry.providerAll")),1)]),_:1}),(m(!0),f(T,null,F(t.providerEntries,r=>(m(),z(p,{key:r.key,value:r.key},{default:o(()=>[v(a(r.key),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])])]),_:1}),s(d,{xs:24,md:8},{default:o(()=>[l("div",Ie,[l("div",Je,a(e.$t("dashboard.telemetry.filterModel")),1),s(i,{value:t.telemetryFilters.model,"onUpdate:value":n[12]||(n[12]=r=>t.telemetryFilters.model=r),style:{width:"100%"},onChange:t.refreshCompression},{default:o(()=>[s(p,{value:""},{default:o(()=>[v(a(e.$t("dashboard.telemetry.modelAll")),1)]),_:1}),(m(!0),f(T,null,F(t.modelEntries,r=>(m(),z(p,{key:r.key,value:r.key},{default:o(()=>[v(a(r.key),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])])]),_:1})]),_:1}),s(_,{gutter:[12,12]},{default:o(()=>[s(d,{xs:24,sm:8},{default:o(()=>[l("div",We,[l("div",Ge,a(e.$t("dashboard.telemetry.hitRate")),1),l("div",Qe,a(t.formatPercent(t.compression.hitRate)),1),l("div",Ke,a(e.$t("dashboard.telemetry.hitRateSub",{compressed:t.compression.compressedSamples,total:t.compression.samples})),1)])]),_:1}),s(d,{xs:24,sm:8},{default:o(()=>[l("div",Ze,[l("div",Xe,a(e.$t("dashboard.telemetry.savedTokens")),1),l("div",Ye,a(t.compression.totalSavedTokens),1),l("div",xe,a(e.$t("dashboard.telemetry.savedTokensSub",{avg:t.compression.averageSavedTokens})),1)])]),_:1}),s(d,{xs:24,sm:8},{default:o(()=>[l("div",et,[l("div",tt,a(e.$t("dashboard.telemetry.netSavingsRate")),1),l("div",st,a(t.formatPercent(t.compression.netSavingsRate)),1),l("div",ot,a(e.$t("dashboard.telemetry.netSavingsRateSub",{original:t.compression.totalOriginalTokens,compressed:t.compression.totalCompressedTokens})),1)])]),_:1})]),_:1}),s(_,{gutter:[16,16],style:{"margin-top":"12px"}},{default:o(()=>[s(d,{xs:24,lg:12},{default:o(()=>[l("div",at,[l("div",lt,a(e.$t("dashboard.telemetry.strategyDistribution")),1),t.compression.strategyDistribution.length===0?(m(),f("div",rt,a(e.$t("dashboard.telemetry.strategyEmpty")),1)):(m(),f("div",nt,[(m(!0),f(T,null,F(t.compression.strategyDistribution.slice(0,6),r=>(m(),f("div",{key:r.strategy,class:"telemetry-row"},[l("span",null,a(r.strategy),1),l("span",null,a(e.$t("dashboard.telemetry.strategyRow",{hits:r.hits,rate:t.formatPercent(r.hitRate)})),1)]))),128))]))])]),_:1}),s(d,{xs:24,lg:12},{default:o(()=>[l("div",it,[l("div",dt,a(e.$t("dashboard.telemetry.variantDistribution")),1),t.variantEntries.length===0?(m(),f("div",ct,a(e.$t("dashboard.telemetry.variantEmpty")),1)):(m(),f("div",ut,[(m(!0),f(T,null,F(t.variantEntries,([r,C])=>(m(),f("div",{key:r,class:"telemetry-row"},[l("span",null,a(r),1),l("span",null,a(e.$t("dashboard.telemetry.variantRow",{count:C})),1)]))),128))]))])]),_:1})]),_:1}),s(_,{gutter:[16,16],style:{"margin-top":"12px"}},{default:o(()=>[s(d,{xs:24,lg:12},{default:o(()=>[l("div",mt,[l("div",ft,a(e.$t("dashboard.telemetry.providerSlice")),1),t.providerEntries.length===0?(m(),f("div",vt,a(e.$t("dashboard.telemetry.providerEmpty")),1)):(m(),f("div",ht,[(m(!0),f(T,null,F(t.providerEntries.slice(0,6),r=>(m(),f("div",{key:r.key,class:"telemetry-row"},[l("span",null,a(r.key),1),l("span",null,a(e.$t("dashboard.telemetry.providerRow",{samples:r.samples,rate:t.formatPercent(r.hitRate)})),1)]))),128))]))])]),_:1}),s(d,{xs:24,lg:12},{default:o(()=>[l("div",bt,[l("div",yt,a(e.$t("dashboard.telemetry.modelSlice")),1),t.modelEntries.length===0?(m(),f("div",pt,a(e.$t("dashboard.telemetry.modelEmpty")),1)):(m(),f("div",_t,[(m(!0),f(T,null,F(t.modelEntries.slice(0,6),r=>(m(),f("div",{key:r.key,class:"telemetry-row"},[l("span",null,a(r.key),1),l("span",null,a(e.$t("dashboard.telemetry.modelRow",{samples:r.samples,saved:r.savedTokens})),1)]))),128))]))])]),_:1})]),_:1})]),_:1},8,["title","loading"]),s(y,{title:e.$t("dashboard.info.title"),style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-top":"16px"}},{default:o(()=>[s(g,{column:{xs:1,sm:2,lg:3},size:"small"},{default:o(()=>[s(u,{label:e.$t("dashboard.info.panelMode")},{default:o(()=>[s(S,{color:t.isProject?"blue":"purple"},{default:o(()=>[v(a(t.isProject?e.$t("dashboard.info.modeProject"):e.$t("dashboard.info.modeGlobal")),1)]),_:1},8,["color"])]),_:1},8,["label"]),t.isProject?(m(),z(u,{key:0,label:e.$t("dashboard.info.projectName")},{default:o(()=>[l("span",gt,a(t.cfg.projectName||"—"),1)]),_:1},8,["label"])):$("v-if",!0),t.isProject?(m(),z(u,{key:1,label:e.$t("dashboard.info.projectPath")},{default:o(()=>[l("span",kt,a(t.cfg.projectRoot),1)]),_:1},8,["label"])):$("v-if",!0),s(u,{label:e.$t("dashboard.info.websocket")},{default:o(()=>[l("span",wt," ws://"+a(t.cfg.wsHost||"127.0.0.1")+":"+a(t.cfg.wsPort||18800),1)]),_:1},8,["label"]),s(u,{label:e.$t("dashboard.info.auth")},{default:o(()=>[s(S,{color:t.cfg.wsToken?"green":"default",style:{"font-size":"11px"}},{default:o(()=>[v(a(t.cfg.wsToken?e.$t("dashboard.info.authEnabled"):e.$t("dashboard.info.authDisabled")),1)]),_:1},8,["color"])]),_:1},8,["label"]),s(u,{label:e.$t("dashboard.info.version")},{default:o(()=>[l("span",St,a(t.PRODUCT_VERSION),1)]),_:1},8,["label"])]),_:1})]),_:1},8,["title"])])}const Et=W(re,[["render",Ct],["__scopeId","data-v-7f773d42"],["__file","/tmp/cc-web-panel-qWJQO5/repo/packages/web-panel/src/views/Dashboard.vue"]]);export{Et as default};
3
+ `),_(r)}g.status==="fulfilled"&&(c.value.sessionCount=g.value.length),Promise.allSettled([i.execute("skill sources --json",15e3),i.execute("llm providers",15e3)]).then(([r,C])=>{if(r.status==="fulfilled"){const R=ae(r.value.output);Array.isArray(R)&&(c.value.skillCount=R.reduce((j,L)=>j+(typeof L?.count=="number"?L.count:0),0))}if(C.status==="fulfilled"){const j=C.value.output.match(/active[:\s]+(\S+)/i);j&&!c.value.activeLlm&&(c.value.activeLlm=j[1])}}),i.sendRaw({type:"mcp.list_tools"},5e3).then(r=>{const R=(r?.result??r)?.servers;c.value.mcpCount=Array.isArray(R)?R.length:0}).catch(()=>{c.value.mcpCount=0}),await D()}catch{}finally{e.value=!1}}return{loading:e,compressionLoading:n,stats:c,statusLog:t,compression:O,telemetryFilters:h,ensureRuntimeSubscription:S,stopRuntimeSubscription:y,refresh:p,refreshCompression:D,applyCompressionSummary:P,toWindowMs:d}}),re={__name:"Dashboard",setup(e,{expose:n}){n();const c=q(),t=A(),O=B(),h=H(),b=window.__CC_CONFIG__||{},S=w(()=>b.mode==="project"),y="v5.0.3.119",P=w(()=>t.status),d=w(()=>h.loading),_=w(()=>h.statusLog),D=w(()=>h.telemetryFilters),p=w(()=>h.compression),i=w(()=>h.stats),u=w(()=>Object.entries(p.value.variantDistribution||{})),g=w(()=>p.value.providerDistribution||[]),r=w(()=>p.value.modelDistribution||[]);async function C(){await h.refresh()}async function R(){await h.refreshCompression()}function j(I){return`${((I||0)*100).toFixed(1)}%`}async function L(){await O.createSession("agent"),c.push("/chat")}U(()=>{h.ensureRuntimeSubscription(t),setTimeout(C,300)}),V(()=>{h.stopRuntimeSubscription()});const M={router:c,ws:t,chatStore:O,dashboardStore:h,cfg:b,isProject:S,PRODUCT_VERSION:y,wsStatus:P,loading:d,statusLog:_,telemetryFilters:D,compression:p,stats:i,variantEntries:u,providerEntries:g,modelEntries:r,refresh:C,refreshCompression:R,formatPercent:j,newAgentSession:L,computed:w,onMounted:U,onUnmounted:V,get useRouter(){return q},get ReloadOutlined(){return oe},get ApiOutlined(){return se},get RobotOutlined(){return te},get AppstoreOutlined(){return ee},get MessageOutlined(){return x},get FolderOutlined(){return Y},get DesktopOutlined(){return X},get FileTextOutlined(){return Z},get ToolOutlined(){return Q},get SettingOutlined(){return K},get useWsStore(){return A},get useChatStore(){return B},get useDashboardStore(){return H}};return Object.defineProperty(M,"__isScriptSetup",{enumerable:!1,value:!0}),M}},ne={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"20px"}},ie={class:"page-title"},de={class:"page-sub"},ce={style:{display:"flex","align-items":"center",gap:"12px","flex-wrap":"wrap"}},ue={style:{color:"#91caff","font-weight":"600"}},me={style:{color:"#4a6fa5","font-size":"11px","font-family":"monospace"}},fe={class:"stat-header"},ve={class:"stat-label"},he={class:"stat-sub"},be={class:"stat-header"},ye={class:"stat-label"},pe={class:"stat-value",style:{color:"#91caff","font-size":"15px",overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"}},_e={class:"stat-sub",style:{overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"}},ge={class:"stat-header"},ke={class:"stat-label"},we={class:"stat-value",style:{color:"#1677ff"}},Se={class:"stat-sub"},Ce={class:"stat-header"},Re={class:"stat-label"},Oe={class:"stat-value",style:{color:"#c084fc"}},Pe={class:"stat-sub"},De={class:"stat-header"},je={class:"stat-label"},Ee={class:"stat-sub"},Te={class:"stat-header"},Fe={class:"stat-label"},ze={class:"stat-value",style:{color:"#13c2c2"}},Ae={class:"stat-sub"},Le={class:"stat-header"},$e={class:"stat-label"},Ne={class:"stat-value",style:{color:"#faad14"}},Me={class:"stat-sub"},qe={class:"status-log"},Ue={class:"telemetry-filter"},Ve={class:"telemetry-filter-label"},Be={class:"telemetry-filter"},He={class:"telemetry-filter-label"},Ie={class:"telemetry-filter"},Ge={class:"telemetry-filter-label"},Je={class:"telemetry-card"},We={class:"telemetry-label"},Ke={class:"telemetry-value"},Qe={class:"telemetry-sub"},Ze={class:"telemetry-card"},Xe={class:"telemetry-label"},Ye={class:"telemetry-value"},xe={class:"telemetry-sub"},et={class:"telemetry-card"},tt={class:"telemetry-label"},st={class:"telemetry-value"},ot={class:"telemetry-sub"},at={class:"telemetry-section"},lt={class:"telemetry-section-title"},rt={key:0,class:"telemetry-empty"},nt={key:1,class:"telemetry-list"},it={class:"telemetry-section"},dt={class:"telemetry-section-title"},ct={key:0,class:"telemetry-empty"},ut={key:1,class:"telemetry-list"},mt={class:"telemetry-section"},ft={class:"telemetry-section-title"},vt={key:0,class:"telemetry-empty"},ht={key:1,class:"telemetry-list"},bt={class:"telemetry-section"},yt={class:"telemetry-section-title"},pt={key:0,class:"telemetry-empty"},_t={key:1,class:"telemetry-list"},gt={style:{color:"#91caff"}},kt={style:{color:"var(--text-muted)","font-family":"monospace","font-size":"11px"}},wt={style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},St={style:{color:"var(--text-muted)"}};function Ct(e,n,c,t,O,h){const b=k("a-button"),S=k("a-tag"),y=k("a-card"),P=k("a-badge"),d=k("a-col"),_=k("a-row"),D=k("a-space"),p=k("a-select-option"),i=k("a-select"),u=k("a-descriptions-item"),g=k("a-descriptions");return m(),f("div",null,[l("div",ne,[l("div",null,[l("h2",ie,a(e.$t("dashboard.title")),1),l("p",de,a(t.isProject?e.$t("dashboard.subProject",{name:t.cfg.projectName||e.$t("dashboard.unnamedProject")}):e.$t("dashboard.subGlobal")),1)]),s(b,{type:"primary",ghost:"",loading:t.loading,onClick:t.refresh},{icon:o(()=>[s(t.ReloadOutlined)]),default:o(()=>[v(" "+a(e.$t("dashboard.refresh")),1)]),_:1},8,["loading"])]),t.isProject?(m(),z(y,{key:0,style:{background:"rgba(22,119,255,.08)","border-color":"rgba(22,119,255,.25)","margin-bottom":"16px"},size:"small"},{default:o(()=>[l("div",ce,[s(t.FolderOutlined,{style:{color:"#1677ff","font-size":"18px"}}),l("div",null,[l("div",ue,a(t.cfg.projectName||e.$t("dashboard.projectBanner.fallbackName")),1),l("div",me,a(t.cfg.projectRoot),1)]),s(S,{color:"blue",style:{"margin-left":"auto"}},{default:o(()=>[v(a(e.$t("dashboard.projectBanner.tag")),1)]),_:1})])]),_:1})):$("v-if",!0),s(_,{gutter:[12,12],style:{"margin-bottom":"16px"}},{default:o(()=>[s(d,{xs:24,sm:12,lg:6},{default:o(()=>[s(y,{class:"stat-card gateway-card",size:"small"},{default:o(()=>[l("div",fe,[l("span",ve,a(e.$t("dashboard.stats.wsGateway")),1),s(P,{status:t.wsStatus==="connected"?"success":"error"},null,8,["status"])]),l("div",{class:"stat-value",style:N({color:t.wsStatus==="connected"?"#52c41a":"#888"})},a(t.wsStatus==="connected"?e.$t("dashboard.stats.wsRunning"):e.$t("dashboard.stats.wsDisconnected")),5),l("div",he,a(e.$t("dashboard.stats.wsPortLine",{port:t.cfg.wsPort||18800,host:t.cfg.wsHost||"127.0.0.1"})),1)]),_:1})]),_:1}),s(d,{xs:24,sm:12,lg:6},{default:o(()=>[s(y,{class:"stat-card",size:"small"},{default:o(()=>[l("div",be,[l("span",ye,a(e.$t("dashboard.stats.currentLlm")),1),s(t.RobotOutlined,{style:{color:"#1677ff"}})]),l("div",pe,a(t.stats.activeLlm||e.$t("dashboard.stats.llmUnconfigured")),1),l("div",_e,a(t.stats.activeModel||"—"),1)]),_:1})]),_:1}),s(d,{xs:24,sm:12,lg:6},{default:o(()=>[s(y,{class:"stat-card",size:"small",style:{cursor:"pointer"},onClick:n[0]||(n[0]=r=>e.$router.push("/skills"))},{default:o(()=>[l("div",ge,[l("span",ke,a(e.$t("dashboard.stats.skills")),1),s(t.AppstoreOutlined,{style:{color:"#1677ff"}})]),l("div",we,a(t.stats.skillCount||"—"),1),l("div",Se,a(e.$t("dashboard.stats.skillsHint")),1)]),_:1})]),_:1}),s(d,{xs:24,sm:12,lg:6},{default:o(()=>[s(y,{class:"stat-card",size:"small",style:{cursor:"pointer"},onClick:n[1]||(n[1]=r=>e.$router.push("/chat"))},{default:o(()=>[l("div",Ce,[l("span",Re,a(e.$t("dashboard.stats.sessions")),1),s(t.MessageOutlined,{style:{color:"#722ed1"}})]),l("div",Oe,a(t.stats.sessionCount),1),l("div",Pe,a(e.$t("dashboard.stats.sessionsHint")),1)]),_:1})]),_:1})]),_:1}),s(_,{gutter:[12,12],style:{"margin-bottom":"16px"}},{default:o(()=>[s(d,{xs:24,sm:8},{default:o(()=>[s(y,{class:"stat-card",size:"small"},{default:o(()=>[l("div",De,[l("span",je,a(e.$t("dashboard.stats.appStatus")),1),s(t.DesktopOutlined,{style:N({color:t.stats.appRunning?"#52c41a":"#888"})},null,8,["style"])]),l("div",{class:"stat-value",style:N({color:t.stats.appRunning?"#52c41a":"#888",fontSize:"15px"})},a(t.stats.appRunning?e.$t("dashboard.stats.appRunning"):t.stats.setupDone?e.$t("dashboard.stats.appReady"):e.$t("dashboard.stats.appNotStarted")),5),l("div",Ee,a(e.$t("dashboard.stats.edition",{name:t.stats.edition||"Community"})),1)]),_:1})]),_:1}),s(d,{xs:24,sm:8},{default:o(()=>[s(y,{class:"stat-card",size:"small",style:{cursor:"pointer"},onClick:n[2]||(n[2]=r=>e.$router.push("/mcp"))},{default:o(()=>[l("div",Te,[l("span",Fe,a(e.$t("dashboard.stats.mcp")),1),s(t.ToolOutlined,{style:{color:"#13c2c2"}})]),l("div",ze,a(t.stats.mcpCount??"—"),1),l("div",Ae,a(e.$t("dashboard.stats.mcpHint")),1)]),_:1})]),_:1}),s(d,{xs:24,sm:8},{default:o(()=>[s(y,{class:"stat-card",size:"small",style:{cursor:"pointer"},onClick:n[3]||(n[3]=r=>e.$router.push("/notes"))},{default:o(()=>[l("div",Le,[l("span",$e,a(e.$t("dashboard.stats.notes")),1),s(t.FileTextOutlined,{style:{color:"#faad14"}})]),l("div",Ne,a(t.stats.noteCount??"—"),1),l("div",Me,a(e.$t("dashboard.stats.notesHint")),1)]),_:1})]),_:1})]),_:1}),s(_,{gutter:[16,16]},{default:o(()=>[s(d,{xs:24,lg:10},{default:o(()=>[s(y,{title:e.$t("dashboard.quick.title"),style:{background:"var(--bg-card)","border-color":"var(--border-color)",height:"100%"}},{default:o(()=>[s(D,{direction:"vertical",style:{width:"100%"},size:"middle"},{default:o(()=>[s(b,{type:"primary",block:"",onClick:n[4]||(n[4]=r=>e.$router.push("/chat"))},{icon:o(()=>[s(t.MessageOutlined)]),default:o(()=>[v(" "+a(t.isProject?e.$t("dashboard.quick.enterProjectChat"):e.$t("dashboard.quick.newAiChat")),1)]),_:1}),s(b,{block:"",onClick:t.newAgentSession,style:{background:"rgba(114,46,209,.12)","border-color":"#722ed1",color:"#722ed1"}},{icon:o(()=>[s(t.RobotOutlined)]),default:o(()=>[v(" "+a(e.$t("dashboard.quick.startAgent")),1)]),_:1}),s(_,{gutter:8},{default:o(()=>[s(d,{span:12},{default:o(()=>[s(b,{block:"",onClick:n[5]||(n[5]=r=>e.$router.push("/services")),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:o(()=>[s(t.SettingOutlined)]),default:o(()=>[v(" "+a(e.$t("dashboard.quick.services")),1)]),_:1})]),_:1}),s(d,{span:12},{default:o(()=>[s(b,{block:"",onClick:n[6]||(n[6]=r=>e.$router.push("/logs")),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:o(()=>[s(t.FileTextOutlined)]),default:o(()=>[v(" "+a(e.$t("dashboard.quick.logs")),1)]),_:1})]),_:1})]),_:1}),s(_,{gutter:8},{default:o(()=>[s(d,{span:12},{default:o(()=>[s(b,{block:"",onClick:n[7]||(n[7]=r=>e.$router.push("/skills")),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:o(()=>[s(t.AppstoreOutlined)]),default:o(()=>[v(" "+a(e.$t("dashboard.quick.skills")),1)]),_:1})]),_:1}),s(d,{span:12},{default:o(()=>[s(b,{block:"",onClick:n[8]||(n[8]=r=>e.$router.push("/providers")),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:o(()=>[s(t.ApiOutlined)]),default:o(()=>[v(" "+a(e.$t("dashboard.quick.providers")),1)]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,["title"])]),_:1}),s(d,{xs:24,lg:14},{default:o(()=>[s(y,{title:e.$t("dashboard.status.title"),style:{background:"var(--bg-card)","border-color":"var(--border-color)"},loading:t.loading},{extra:o(()=>[s(b,{type:"link",size:"small",onClick:n[9]||(n[9]=r=>e.$router.push("/logs"))},{default:o(()=>[v(a(e.$t("dashboard.status.more")),1)]),_:1})]),default:o(()=>[l("pre",qe,a(t.statusLog||e.$t("dashboard.status.placeholder")),1)]),_:1},8,["title","loading"])]),_:1})]),_:1}),s(y,{title:e.$t("dashboard.telemetry.title"),style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-top":"16px"},loading:t.loading},{default:o(()=>[s(_,{gutter:[12,12],style:{"margin-bottom":"12px"}},{default:o(()=>[s(d,{xs:24,md:8},{default:o(()=>[l("div",Ue,[l("div",Ve,a(e.$t("dashboard.telemetry.filterWindow")),1),s(i,{value:t.telemetryFilters.windowPreset,"onUpdate:value":n[10]||(n[10]=r=>t.telemetryFilters.windowPreset=r),style:{width:"100%"},onChange:t.refreshCompression},{default:o(()=>[s(p,{value:"all"},{default:o(()=>[v(a(e.$t("dashboard.telemetry.windowAll")),1)]),_:1}),s(p,{value:"1h"},{default:o(()=>[v(a(e.$t("dashboard.telemetry.window1h")),1)]),_:1}),s(p,{value:"24h"},{default:o(()=>[v(a(e.$t("dashboard.telemetry.window24h")),1)]),_:1}),s(p,{value:"7d"},{default:o(()=>[v(a(e.$t("dashboard.telemetry.window7d")),1)]),_:1})]),_:1},8,["value"])])]),_:1}),s(d,{xs:24,md:8},{default:o(()=>[l("div",Be,[l("div",He,a(e.$t("dashboard.telemetry.filterProvider")),1),s(i,{value:t.telemetryFilters.provider,"onUpdate:value":n[11]||(n[11]=r=>t.telemetryFilters.provider=r),style:{width:"100%"},onChange:t.refreshCompression},{default:o(()=>[s(p,{value:""},{default:o(()=>[v(a(e.$t("dashboard.telemetry.providerAll")),1)]),_:1}),(m(!0),f(T,null,F(t.providerEntries,r=>(m(),z(p,{key:r.key,value:r.key},{default:o(()=>[v(a(r.key),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])])]),_:1}),s(d,{xs:24,md:8},{default:o(()=>[l("div",Ie,[l("div",Ge,a(e.$t("dashboard.telemetry.filterModel")),1),s(i,{value:t.telemetryFilters.model,"onUpdate:value":n[12]||(n[12]=r=>t.telemetryFilters.model=r),style:{width:"100%"},onChange:t.refreshCompression},{default:o(()=>[s(p,{value:""},{default:o(()=>[v(a(e.$t("dashboard.telemetry.modelAll")),1)]),_:1}),(m(!0),f(T,null,F(t.modelEntries,r=>(m(),z(p,{key:r.key,value:r.key},{default:o(()=>[v(a(r.key),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])])]),_:1})]),_:1}),s(_,{gutter:[12,12]},{default:o(()=>[s(d,{xs:24,sm:8},{default:o(()=>[l("div",Je,[l("div",We,a(e.$t("dashboard.telemetry.hitRate")),1),l("div",Ke,a(t.formatPercent(t.compression.hitRate)),1),l("div",Qe,a(e.$t("dashboard.telemetry.hitRateSub",{compressed:t.compression.compressedSamples,total:t.compression.samples})),1)])]),_:1}),s(d,{xs:24,sm:8},{default:o(()=>[l("div",Ze,[l("div",Xe,a(e.$t("dashboard.telemetry.savedTokens")),1),l("div",Ye,a(t.compression.totalSavedTokens),1),l("div",xe,a(e.$t("dashboard.telemetry.savedTokensSub",{avg:t.compression.averageSavedTokens})),1)])]),_:1}),s(d,{xs:24,sm:8},{default:o(()=>[l("div",et,[l("div",tt,a(e.$t("dashboard.telemetry.netSavingsRate")),1),l("div",st,a(t.formatPercent(t.compression.netSavingsRate)),1),l("div",ot,a(e.$t("dashboard.telemetry.netSavingsRateSub",{original:t.compression.totalOriginalTokens,compressed:t.compression.totalCompressedTokens})),1)])]),_:1})]),_:1}),s(_,{gutter:[16,16],style:{"margin-top":"12px"}},{default:o(()=>[s(d,{xs:24,lg:12},{default:o(()=>[l("div",at,[l("div",lt,a(e.$t("dashboard.telemetry.strategyDistribution")),1),t.compression.strategyDistribution.length===0?(m(),f("div",rt,a(e.$t("dashboard.telemetry.strategyEmpty")),1)):(m(),f("div",nt,[(m(!0),f(T,null,F(t.compression.strategyDistribution.slice(0,6),r=>(m(),f("div",{key:r.strategy,class:"telemetry-row"},[l("span",null,a(r.strategy),1),l("span",null,a(e.$t("dashboard.telemetry.strategyRow",{hits:r.hits,rate:t.formatPercent(r.hitRate)})),1)]))),128))]))])]),_:1}),s(d,{xs:24,lg:12},{default:o(()=>[l("div",it,[l("div",dt,a(e.$t("dashboard.telemetry.variantDistribution")),1),t.variantEntries.length===0?(m(),f("div",ct,a(e.$t("dashboard.telemetry.variantEmpty")),1)):(m(),f("div",ut,[(m(!0),f(T,null,F(t.variantEntries,([r,C])=>(m(),f("div",{key:r,class:"telemetry-row"},[l("span",null,a(r),1),l("span",null,a(e.$t("dashboard.telemetry.variantRow",{count:C})),1)]))),128))]))])]),_:1})]),_:1}),s(_,{gutter:[16,16],style:{"margin-top":"12px"}},{default:o(()=>[s(d,{xs:24,lg:12},{default:o(()=>[l("div",mt,[l("div",ft,a(e.$t("dashboard.telemetry.providerSlice")),1),t.providerEntries.length===0?(m(),f("div",vt,a(e.$t("dashboard.telemetry.providerEmpty")),1)):(m(),f("div",ht,[(m(!0),f(T,null,F(t.providerEntries.slice(0,6),r=>(m(),f("div",{key:r.key,class:"telemetry-row"},[l("span",null,a(r.key),1),l("span",null,a(e.$t("dashboard.telemetry.providerRow",{samples:r.samples,rate:t.formatPercent(r.hitRate)})),1)]))),128))]))])]),_:1}),s(d,{xs:24,lg:12},{default:o(()=>[l("div",bt,[l("div",yt,a(e.$t("dashboard.telemetry.modelSlice")),1),t.modelEntries.length===0?(m(),f("div",pt,a(e.$t("dashboard.telemetry.modelEmpty")),1)):(m(),f("div",_t,[(m(!0),f(T,null,F(t.modelEntries.slice(0,6),r=>(m(),f("div",{key:r.key,class:"telemetry-row"},[l("span",null,a(r.key),1),l("span",null,a(e.$t("dashboard.telemetry.modelRow",{samples:r.samples,saved:r.savedTokens})),1)]))),128))]))])]),_:1})]),_:1})]),_:1},8,["title","loading"]),s(y,{title:e.$t("dashboard.info.title"),style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-top":"16px"}},{default:o(()=>[s(g,{column:{xs:1,sm:2,lg:3},size:"small"},{default:o(()=>[s(u,{label:e.$t("dashboard.info.panelMode")},{default:o(()=>[s(S,{color:t.isProject?"blue":"purple"},{default:o(()=>[v(a(t.isProject?e.$t("dashboard.info.modeProject"):e.$t("dashboard.info.modeGlobal")),1)]),_:1},8,["color"])]),_:1},8,["label"]),t.isProject?(m(),z(u,{key:0,label:e.$t("dashboard.info.projectName")},{default:o(()=>[l("span",gt,a(t.cfg.projectName||"—"),1)]),_:1},8,["label"])):$("v-if",!0),t.isProject?(m(),z(u,{key:1,label:e.$t("dashboard.info.projectPath")},{default:o(()=>[l("span",kt,a(t.cfg.projectRoot),1)]),_:1},8,["label"])):$("v-if",!0),s(u,{label:e.$t("dashboard.info.websocket")},{default:o(()=>[l("span",wt," ws://"+a(t.cfg.wsHost||"127.0.0.1")+":"+a(t.cfg.wsPort||18800),1)]),_:1},8,["label"]),s(u,{label:e.$t("dashboard.info.auth")},{default:o(()=>[s(S,{color:t.cfg.wsToken?"green":"default",style:{"font-size":"11px"}},{default:o(()=>[v(a(t.cfg.wsToken?e.$t("dashboard.info.authEnabled"):e.$t("dashboard.info.authDisabled")),1)]),_:1},8,["color"])]),_:1},8,["label"]),s(u,{label:e.$t("dashboard.info.version")},{default:o(()=>[l("span",St,a(t.PRODUCT_VERSION),1)]),_:1},8,["label"])]),_:1})]),_:1},8,["title"])])}const Et=J(re,[["render",Ct],["__scopeId","data-v-7f773d42"],["__file","/tmp/cc-web-panel-k4fdqo/repo/packages/web-panel/src/views/Dashboard.vue"]]);export{Et as default};
@@ -1 +1 @@
1
- import{P as n,f as m,i as V,at as B}from"./index-C2N_-y_W.js";import{d as D,r as g,w as M,b as v,c as d,F}from"./vendor-BvqAck49.js";import{T as L}from"./Trigger-DbRaTJsm.js";import{c as y}from"./vnode-ErTJLgr4.js";const l={adjustX:1,adjustY:1},s=[0,0],W={topLeft:{points:["bl","tl"],overflow:l,offset:[0,-4],targetOffset:s},topCenter:{points:["bc","tc"],overflow:l,offset:[0,-4],targetOffset:s},topRight:{points:["br","tr"],overflow:l,offset:[0,-4],targetOffset:s},bottomLeft:{points:["tl","bl"],overflow:l,offset:[0,4],targetOffset:s},bottomCenter:{points:["tc","bc"],overflow:l,offset:[0,4],targetOffset:s},bottomRight:{points:["tr","br"],overflow:l,offset:[0,4],targetOffset:s}};var $=function(e,c){var a={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&c.indexOf(o)<0&&(a[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,o=Object.getOwnPropertySymbols(e);i<o.length;i++)c.indexOf(o[i])<0&&Object.prototype.propertyIsEnumerable.call(e,o[i])&&(a[o[i]]=e[o[i]]);return a};const X=D({compatConfig:{MODE:3},props:{minOverlayWidthMatchTrigger:{type:Boolean,default:void 0},arrow:{type:Boolean,default:!1},prefixCls:n.string.def("rc-dropdown"),transitionName:String,overlayClassName:n.string.def(""),openClassName:String,animation:n.any,align:n.object,overlayStyle:{type:Object,default:void 0},placement:n.string.def("bottomLeft"),overlay:n.any,trigger:n.oneOfType([n.string,n.arrayOf(n.string)]).def("hover"),alignPoint:{type:Boolean,default:void 0},showAction:n.array,hideAction:n.array,getPopupContainer:Function,visible:{type:Boolean,default:void 0},defaultVisible:{type:Boolean,default:!1},mouseEnterDelay:n.number.def(.15),mouseLeaveDelay:n.number.def(.1)},emits:["visibleChange","overlayClick"],setup(e,c){let{slots:a,emit:o,expose:i}=c;const f=g(!!e.visible);M(()=>e.visible,t=>{t!==void 0&&(f.value=t)});const p=g();i({triggerRef:p});const b=t=>{e.visible===void 0&&(f.value=!1),o("overlayClick",t)},h=t=>{e.visible===void 0&&(f.value=t),o("visibleChange",t)},C=()=>{var t;const r=(t=a.overlay)===null||t===void 0?void 0:t.call(a),u={prefixCls:`${e.prefixCls}-menu`,onClick:b};return d(F,{key:B},[e.arrow&&d("div",{class:`${e.prefixCls}-arrow`},null),y(r,u,!1)])},w=v(()=>{const{minOverlayWidthMatchTrigger:t=!e.alignPoint}=e;return t}),O=()=>{var t;const r=(t=a.default)===null||t===void 0?void 0:t.call(a);return f.value&&r?y(r[0],{class:e.openClassName||`${e.prefixCls}-open`},!1):r},P=v(()=>!e.hideAction&&e.trigger.indexOf("contextmenu")!==-1?["click"]:e.hideAction);return()=>{const{prefixCls:t,arrow:r,showAction:u,overlayStyle:x,trigger:A,placement:N,align:j,getPopupContainer:S,transitionName:T,animation:_,overlayClassName:k}=e,E=$(e,["prefixCls","arrow","showAction","overlayStyle","trigger","placement","align","getPopupContainer","transitionName","animation","overlayClassName"]);return d(L,m(m({},E),{},{prefixCls:t,ref:p,popupClassName:V(k,{[`${t}-show-arrow`]:r}),popupStyle:x,builtinPlacements:W,action:A,showAction:u,hideAction:P.value||[],popupPlacement:N,popupAlign:j,popupTransitionName:T,popupAnimation:_,popupVisible:f.value,stretch:w.value?"minWidth":"",onPopupVisibleChange:h,getPopupContainer:S}),{popup:C,default:O})}}});export{X as D};
1
+ import{P as n,f as m,i as V,at as B}from"./index-B9DUiQ24.js";import{d as D,r as g,w as M,b as v,c as d,F}from"./vendor-BvqAck49.js";import{T as L}from"./Trigger-DV5MPXC1.js";import{c as y}from"./vnode-BBGIyeYD.js";const l={adjustX:1,adjustY:1},s=[0,0],W={topLeft:{points:["bl","tl"],overflow:l,offset:[0,-4],targetOffset:s},topCenter:{points:["bc","tc"],overflow:l,offset:[0,-4],targetOffset:s},topRight:{points:["br","tr"],overflow:l,offset:[0,-4],targetOffset:s},bottomLeft:{points:["tl","bl"],overflow:l,offset:[0,4],targetOffset:s},bottomCenter:{points:["tc","bc"],overflow:l,offset:[0,4],targetOffset:s},bottomRight:{points:["tr","br"],overflow:l,offset:[0,4],targetOffset:s}};var $=function(e,c){var a={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&c.indexOf(o)<0&&(a[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,o=Object.getOwnPropertySymbols(e);i<o.length;i++)c.indexOf(o[i])<0&&Object.prototype.propertyIsEnumerable.call(e,o[i])&&(a[o[i]]=e[o[i]]);return a};const X=D({compatConfig:{MODE:3},props:{minOverlayWidthMatchTrigger:{type:Boolean,default:void 0},arrow:{type:Boolean,default:!1},prefixCls:n.string.def("rc-dropdown"),transitionName:String,overlayClassName:n.string.def(""),openClassName:String,animation:n.any,align:n.object,overlayStyle:{type:Object,default:void 0},placement:n.string.def("bottomLeft"),overlay:n.any,trigger:n.oneOfType([n.string,n.arrayOf(n.string)]).def("hover"),alignPoint:{type:Boolean,default:void 0},showAction:n.array,hideAction:n.array,getPopupContainer:Function,visible:{type:Boolean,default:void 0},defaultVisible:{type:Boolean,default:!1},mouseEnterDelay:n.number.def(.15),mouseLeaveDelay:n.number.def(.1)},emits:["visibleChange","overlayClick"],setup(e,c){let{slots:a,emit:o,expose:i}=c;const f=g(!!e.visible);M(()=>e.visible,t=>{t!==void 0&&(f.value=t)});const p=g();i({triggerRef:p});const b=t=>{e.visible===void 0&&(f.value=!1),o("overlayClick",t)},h=t=>{e.visible===void 0&&(f.value=t),o("visibleChange",t)},C=()=>{var t;const r=(t=a.overlay)===null||t===void 0?void 0:t.call(a),u={prefixCls:`${e.prefixCls}-menu`,onClick:b};return d(F,{key:B},[e.arrow&&d("div",{class:`${e.prefixCls}-arrow`},null),y(r,u,!1)])},w=v(()=>{const{minOverlayWidthMatchTrigger:t=!e.alignPoint}=e;return t}),O=()=>{var t;const r=(t=a.default)===null||t===void 0?void 0:t.call(a);return f.value&&r?y(r[0],{class:e.openClassName||`${e.prefixCls}-open`},!1):r},P=v(()=>!e.hideAction&&e.trigger.indexOf("contextmenu")!==-1?["click"]:e.hideAction);return()=>{const{prefixCls:t,arrow:r,showAction:u,overlayStyle:x,trigger:A,placement:N,align:j,getPopupContainer:S,transitionName:T,animation:_,overlayClassName:k}=e,E=$(e,["prefixCls","arrow","showAction","overlayStyle","trigger","placement","align","getPopupContainer","transitionName","animation","overlayClassName"]);return d(L,m(m({},E),{},{prefixCls:t,ref:p,popupClassName:V(k,{[`${t}-show-arrow`]:r}),popupStyle:x,builtinPlacements:W,action:A,showAction:u,hideAction:P.value||[],popupPlacement:N,popupAlign:j,popupTransitionName:T,popupAnimation:_,popupVisible:f.value,stretch:w.value?"minWidth":"",onPopupVisibleChange:h,getPopupContainer:S}),{popup:C,default:O})}}});export{X as D};
@@ -1 +1 @@
1
- import{I as C,P as c,J as f,U as r,c as h,_ as k,R as n,V as l,K as d,Q as u,S as g,b as t}from"./vendor-BvqAck49.js";import{_ as j}from"./index-C2N_-y_W.js";import{aG as w}from"./icons-DP3uiYxy.js";const O={__name:"EmailListRenderer",props:{event:{type:Object,required:!0}},setup(_,{expose:m}){m();const a=_,e=t(()=>a.event.content||{}),i=t(()=>a.event.extra||{}),p=t(()=>e.value.from||e.value.sender||e.value.fromName||a.event.actor||"(未知发件人)"),s=t(()=>e.value.subject||e.value.title||"(无主题)"),y=t(()=>e.value.snippet||e.value.preview||e.value.body?.slice(0,100)||null),b=t(()=>Array.isArray(e.value.attachments)?e.value.attachments.length:typeof e.value.attachmentCount=="number"?e.value.attachmentCount:0),x=t(()=>i.value.category||e.value.category),S=t(()=>e.value.unread===!0),T=t(()=>{if(!a.event.occurredAt)return"";const o=new Date(a.event.occurredAt);return`${o.getFullYear()}-${String(o.getMonth()+1).padStart(2,"0")}-${String(o.getDate()).padStart(2,"0")} ${String(o.getHours()).padStart(2,"0")}:${String(o.getMinutes()).padStart(2,"0")}`}),v={props:a,c:e,e:i,fromText:p,subjectText:s,snippetText:y,attachmentCount:b,category:x,isUnread:S,formattedTime:T,computed:t,get MailOutlined(){return w}};return Object.defineProperty(v,"__isScriptSetup",{enumerable:!1,value:!0}),v}},M={class:"email-row"},N={class:"left"},V={class:"body"},A={class:"head"},B={class:"from"},E={class:"time"},R={class:"subject"},D={key:0,class:"snippet"},L={class:"meta"};function U(_,m,a,e,i,p){const s=C("a-tag");return c(),f("div",M,[r("div",N,[h(e.MailOutlined,{class:k(["icon",{unread:e.isUnread}])},null,8,["class"])]),r("div",V,[r("div",A,[r("span",B,n(e.fromText),1),r("span",E,n(e.formattedTime),1)]),r("div",R,n(e.subjectText),1),e.snippetText?(c(),f("div",D,n(e.snippetText),1)):l("v-if",!0),r("div",L,[h(s,{color:"blue",class:"src"},{default:d(()=>[u(n(a.event.source.adapter),1)]),_:1}),e.attachmentCount>0?(c(),g(s,{key:0,color:"orange"},{default:d(()=>[u(" 📎 "+n(e.attachmentCount),1)]),_:1})):l("v-if",!0),e.category?(c(),g(s,{key:1},{default:d(()=>[u(n(e.category),1)]),_:1})):l("v-if",!0)])])])}const P=j(O,[["render",U],["__scopeId","data-v-e4ddf632"],["__file","/tmp/cc-web-panel-qWJQO5/repo/packages/web-panel/src/components/pdh/renderers/EmailListRenderer.vue"]]);export{P as default};
1
+ import{I as C,P as c,J as f,U as r,c as h,_ as k,R as n,V as l,K as d,Q as u,S as g,b as t}from"./vendor-BvqAck49.js";import{_ as j}from"./index-B9DUiQ24.js";import{aG as w}from"./icons-DP3uiYxy.js";const M={__name:"EmailListRenderer",props:{event:{type:Object,required:!0}},setup(_,{expose:m}){m();const a=_,e=t(()=>a.event.content||{}),i=t(()=>a.event.extra||{}),p=t(()=>e.value.from||e.value.sender||e.value.fromName||a.event.actor||"(未知发件人)"),s=t(()=>e.value.subject||e.value.title||"(无主题)"),y=t(()=>e.value.snippet||e.value.preview||e.value.body?.slice(0,100)||null),b=t(()=>Array.isArray(e.value.attachments)?e.value.attachments.length:typeof e.value.attachmentCount=="number"?e.value.attachmentCount:0),x=t(()=>i.value.category||e.value.category),S=t(()=>e.value.unread===!0),T=t(()=>{if(!a.event.occurredAt)return"";const o=new Date(a.event.occurredAt);return`${o.getFullYear()}-${String(o.getMonth()+1).padStart(2,"0")}-${String(o.getDate()).padStart(2,"0")} ${String(o.getHours()).padStart(2,"0")}:${String(o.getMinutes()).padStart(2,"0")}`}),v={props:a,c:e,e:i,fromText:p,subjectText:s,snippetText:y,attachmentCount:b,category:x,isUnread:S,formattedTime:T,computed:t,get MailOutlined(){return w}};return Object.defineProperty(v,"__isScriptSetup",{enumerable:!1,value:!0}),v}},N={class:"email-row"},O={class:"left"},V={class:"body"},A={class:"head"},B={class:"from"},E={class:"time"},R={class:"subject"},D={key:0,class:"snippet"},L={class:"meta"};function U(_,m,a,e,i,p){const s=C("a-tag");return c(),f("div",N,[r("div",O,[h(e.MailOutlined,{class:k(["icon",{unread:e.isUnread}])},null,8,["class"])]),r("div",V,[r("div",A,[r("span",B,n(e.fromText),1),r("span",E,n(e.formattedTime),1)]),r("div",R,n(e.subjectText),1),e.snippetText?(c(),f("div",D,n(e.snippetText),1)):l("v-if",!0),r("div",L,[h(s,{color:"blue",class:"src"},{default:d(()=>[u(n(a.event.source.adapter),1)]),_:1}),e.attachmentCount>0?(c(),g(s,{key:0,color:"orange"},{default:d(()=>[u(" 📎 "+n(e.attachmentCount),1)]),_:1})):l("v-if",!0),e.category?(c(),g(s,{key:1},{default:d(()=>[u(n(e.category),1)]),_:1})):l("v-if",!0)])])])}const z=j(M,[["render",U],["__scopeId","data-v-e4ddf632"],["__file","/tmp/cc-web-panel-k4fdqo/repo/packages/web-panel/src/components/pdh/renderers/EmailListRenderer.vue"]]);export{z as default};
@@ -1 +1 @@
1
- import{E as z,b as M,r as f,I as c,J as v,U as E,c as s,K as r,S as K,V as G,F as k,o as N,P as p,Q as x,R as S}from"./vendor-BvqAck49.js";import{u as L,_ as R}from"./index-C2N_-y_W.js";import"./icons-DP3uiYxy.js";function T(a){if(!a)return a;if(a.error)throw new Error(a.error);return a.result!==void 0?a.result:a}function O(a,t){if(a&&a.success===!1)throw new Error(a.error||"请求失败");return a&&a.data!==void 0?a.data:t}function U(){const a=L(),t=(n,e={},u=15e3)=>a.sendRaw({type:n,...e},u).then(T);return{async listChildren(){return O(await t("family-guard.list-children",{},1e4),[])},async listChildEvents(n={}){return O(await t("family-guard.list-child-events",n),[])},async appUsageSummary(n={}){return O(await t("family-guard.app-usage-summary",n),{totalMs:0,apps:[]})}}}const P=z("familyGuard",()=>{const a=f([]),t=f(null),n=f([]),e=f({totalMs:0,apps:[]}),u=f(!1),_=f(null),g=M(()=>a.value.length>0),w=M(()=>Math.round((e.value.totalMs||0)/6e4));async function C(){u.value=!0,_.value=null;try{const o=U();a.value=await o.listChildren(),!t.value&&a.value.length>0&&await y(a.value[0].childDid)}catch(o){_.value=o?.message||String(o)}finally{u.value=!1}}async function y(o,i=0){t.value=o,await Promise.all([h(i),m(i)])}async function h(o=0,i=200){if(!t.value)return;const b=U();n.value=await b.listChildEvents({childDid:t.value,sinceMs:o,limit:i})}async function m(o=0){if(!t.value)return;const i=U();e.value=await i.appUsageSummary({childDid:t.value,sinceMs:o})}return{children:a,selectedChildDid:t,events:n,summary:e,loading:u,error:_,hasChildren:g,totalMinutes:w,fetchChildren:C,selectChild:y,fetchEvents:h,fetchSummary:m}}),J={__name:"FamilyGuardDashboard",setup(a,{expose:t}){t();const n=P(),e=f(null),u=f("all"),_=[{label:"全部",value:"all"},{label:"近 24 小时",value:"24h"},{label:"近 7 天",value:"7d"}],g=M(()=>n.children.map(l=>({label:`${l.childDid}(${l.eventCount} 条)`,value:l.childDid}))),w=M(()=>m(n.summary.totalMs)),C=[{title:"应用 / 包名",dataIndex:"package",key:"package",ellipsis:!0},{title:"时长",dataIndex:"totalMs",key:"totalMs",width:140},{title:"次数",dataIndex:"count",key:"count",width:100}],y=[{title:"时间",dataIndex:"timestampMs",key:"timestampMs",width:180},{title:"来源",dataIndex:"source",key:"source",width:140},{title:"应用",dataIndex:"package",key:"app",ellipsis:!0},{title:"时长",dataIndex:"durationMs",key:"durationMs",width:120},{title:"级别",dataIndex:"level",key:"level",width:80}];function h(){return u.value==="24h"?Date.now()-1440*60*1e3:u.value==="7d"?Date.now()-10080*60*1e3:0}function m(l){const I=Math.round((l||0)/1e3),V=Math.floor(I/3600),F=Math.floor(I%3600/60),B=I%60;return V>0?`${V}h ${F}m`:F>0?`${F}m ${B}s`:`${B}s`}function o(l){return l?new Date(l).toLocaleString():"—"}async function i(l){await n.selectChild(l,h())}async function b(){if(!n.selectedChildDid)return;const l=h();await Promise.all([n.fetchEvents(l),n.fetchSummary(l)])}async function D(){await n.fetchChildren(),e.value=n.selectedChildDid}N(async()=>{await n.fetchChildren(),e.value=n.selectedChildDid});const d={store:n,selectedChild:e,rangeKey:u,rangeOptions:_,childOptions:g,totalLabel:w,appColumns:C,eventColumns:y,sinceMsForRange:h,formatDuration:m,formatTime:o,onSelectChild:i,refreshDetail:b,refresh:D,computed:M,onMounted:N,ref:f,get useFamilyGuardStore(){return P}};return Object.defineProperty(d,"__isScriptSetup",{enumerable:!1,value:!0}),d}},Q={class:"family-guard-dashboard"},W={class:"page-header"};function j(a,t,n,e,u,_){const g=c("a-button"),w=c("a-alert"),C=c("a-empty"),y=c("a-select"),h=c("a-space"),m=c("a-statistic"),o=c("a-card"),i=c("a-col"),b=c("a-row"),D=c("a-table");return p(),v("div",Q,[E("div",W,[t[3]||(t[3]=E("h2",null,"家庭守护 · 孩子使用情况",-1)),s(g,{loading:e.store.loading,onClick:e.refresh},{default:r(()=>[...t[2]||(t[2]=[x("刷新",-1)])]),_:1},8,["loading"])]),e.store.error?(p(),K(w,{key:0,type:"error",message:e.store.error,banner:"",closable:"",style:{"margin-bottom":"12px"}},null,8,["message"])):G("v-if",!0),!e.store.loading&&!e.store.hasChildren?(p(),K(C,{key:1,description:"还没有收到任何孩子端的使用数据(需在桌面端运行,孩子端已配对并上行)"})):(p(),v(k,{key:2},[s(h,{style:{"margin-bottom":"16px"},align:"center",wrap:""},{default:r(()=>[t[4]||(t[4]=E("span",null,"孩子:",-1)),s(y,{value:e.selectedChild,"onUpdate:value":t[0]||(t[0]=d=>e.selectedChild=d),style:{"min-width":"280px"},options:e.childOptions,placeholder:"选择孩子",onChange:e.onSelectChild},null,8,["value","options"]),s(y,{value:e.rangeKey,"onUpdate:value":t[1]||(t[1]=d=>e.rangeKey=d),style:{"min-width":"140px"},options:e.rangeOptions,onChange:e.refreshDetail},null,8,["value"])]),_:1}),s(b,{gutter:16,style:{"margin-bottom":"16px"}},{default:r(()=>[s(i,{xs:24,md:8},{default:r(()=>[s(o,null,{default:r(()=>[s(m,{title:"总使用时长",value:e.totalLabel},null,8,["value"])]),_:1})]),_:1}),s(i,{xs:24,md:8},{default:r(()=>[s(o,null,{default:r(()=>[s(m,{title:"应用数",value:e.store.summary.apps.length},null,8,["value"])]),_:1})]),_:1}),s(i,{xs:24,md:8},{default:r(()=>[s(o,null,{default:r(()=>[s(m,{title:"事件数",value:e.store.events.length},null,8,["value"])]),_:1})]),_:1})]),_:1}),s(o,{title:"应用使用排行",style:{"margin-bottom":"16px"}},{default:r(()=>[s(D,{"data-source":e.store.summary.apps,columns:e.appColumns,pagination:!1,"row-key":"package",size:"small"},{bodyCell:r(({column:d,record:l})=>[d.key==="totalMs"?(p(),v(k,{key:0},[x(S(e.formatDuration(l.totalMs)),1)],64)):G("v-if",!0)]),_:1},8,["data-source"])]),_:1}),s(o,{title:"最近事件"},{default:r(()=>[s(D,{"data-source":e.store.events,columns:e.eventColumns,pagination:{pageSize:20},"row-key":"resourceId",size:"small"},{bodyCell:r(({column:d,record:l})=>[d.key==="timestampMs"?(p(),v(k,{key:0},[x(S(e.formatTime(l.timestampMs)),1)],64)):d.key==="durationMs"?(p(),v(k,{key:1},[x(S(e.formatDuration(l.durationMs)),1)],64)):d.key==="app"?(p(),v(k,{key:2},[x(S(l.package||"—"),1)],64)):G("v-if",!0)]),_:1},8,["data-source"])]),_:1})],64))])}const X=R(J,[["render",j],["__scopeId","data-v-f49db8d0"],["__file","/tmp/cc-web-panel-qWJQO5/repo/packages/web-panel/src/views/FamilyGuardDashboard.vue"]]);export{X as default};
1
+ import{E as z,b as M,r as f,I as c,J as v,U as E,c as s,K as r,S as K,V as G,F as b,o as N,P as p,Q as x,R as S}from"./vendor-BvqAck49.js";import{u as L,_ as R}from"./index-B9DUiQ24.js";import"./icons-DP3uiYxy.js";function T(a){if(!a)return a;if(a.error)throw new Error(a.error);return a.result!==void 0?a.result:a}function O(a,t){if(a&&a.success===!1)throw new Error(a.error||"请求失败");return a&&a.data!==void 0?a.data:t}function U(){const a=L(),t=(n,e={},u=15e3)=>a.sendRaw({type:n,...e},u).then(T);return{async listChildren(){return O(await t("family-guard.list-children",{},1e4),[])},async listChildEvents(n={}){return O(await t("family-guard.list-child-events",n),[])},async appUsageSummary(n={}){return O(await t("family-guard.app-usage-summary",n),{totalMs:0,apps:[]})}}}const P=z("familyGuard",()=>{const a=f([]),t=f(null),n=f([]),e=f({totalMs:0,apps:[]}),u=f(!1),_=f(null),g=M(()=>a.value.length>0),w=M(()=>Math.round((e.value.totalMs||0)/6e4));async function C(){u.value=!0,_.value=null;try{const o=U();a.value=await o.listChildren(),!t.value&&a.value.length>0&&await y(a.value[0].childDid)}catch(o){_.value=o?.message||String(o)}finally{u.value=!1}}async function y(o,i=0){t.value=o,await Promise.all([h(i),m(i)])}async function h(o=0,i=200){if(!t.value)return;const k=U();n.value=await k.listChildEvents({childDid:t.value,sinceMs:o,limit:i})}async function m(o=0){if(!t.value)return;const i=U();e.value=await i.appUsageSummary({childDid:t.value,sinceMs:o})}return{children:a,selectedChildDid:t,events:n,summary:e,loading:u,error:_,hasChildren:g,totalMinutes:w,fetchChildren:C,selectChild:y,fetchEvents:h,fetchSummary:m}}),j={__name:"FamilyGuardDashboard",setup(a,{expose:t}){t();const n=P(),e=f(null),u=f("all"),_=[{label:"全部",value:"all"},{label:"近 24 小时",value:"24h"},{label:"近 7 天",value:"7d"}],g=M(()=>n.children.map(l=>({label:`${l.childDid}(${l.eventCount} 条)`,value:l.childDid}))),w=M(()=>m(n.summary.totalMs)),C=[{title:"应用 / 包名",dataIndex:"package",key:"package",ellipsis:!0},{title:"时长",dataIndex:"totalMs",key:"totalMs",width:140},{title:"次数",dataIndex:"count",key:"count",width:100}],y=[{title:"时间",dataIndex:"timestampMs",key:"timestampMs",width:180},{title:"来源",dataIndex:"source",key:"source",width:140},{title:"应用",dataIndex:"package",key:"app",ellipsis:!0},{title:"时长",dataIndex:"durationMs",key:"durationMs",width:120},{title:"级别",dataIndex:"level",key:"level",width:80}];function h(){return u.value==="24h"?Date.now()-1440*60*1e3:u.value==="7d"?Date.now()-10080*60*1e3:0}function m(l){const I=Math.round((l||0)/1e3),V=Math.floor(I/3600),F=Math.floor(I%3600/60),B=I%60;return V>0?`${V}h ${F}m`:F>0?`${F}m ${B}s`:`${B}s`}function o(l){return l?new Date(l).toLocaleString():"—"}async function i(l){await n.selectChild(l,h())}async function k(){if(!n.selectedChildDid)return;const l=h();await Promise.all([n.fetchEvents(l),n.fetchSummary(l)])}async function D(){await n.fetchChildren(),e.value=n.selectedChildDid}N(async()=>{await n.fetchChildren(),e.value=n.selectedChildDid});const d={store:n,selectedChild:e,rangeKey:u,rangeOptions:_,childOptions:g,totalLabel:w,appColumns:C,eventColumns:y,sinceMsForRange:h,formatDuration:m,formatTime:o,onSelectChild:i,refreshDetail:k,refresh:D,computed:M,onMounted:N,ref:f,get useFamilyGuardStore(){return P}};return Object.defineProperty(d,"__isScriptSetup",{enumerable:!1,value:!0}),d}},q={class:"family-guard-dashboard"},J={class:"page-header"};function Q(a,t,n,e,u,_){const g=c("a-button"),w=c("a-alert"),C=c("a-empty"),y=c("a-select"),h=c("a-space"),m=c("a-statistic"),o=c("a-card"),i=c("a-col"),k=c("a-row"),D=c("a-table");return p(),v("div",q,[E("div",J,[t[3]||(t[3]=E("h2",null,"家庭守护 · 孩子使用情况",-1)),s(g,{loading:e.store.loading,onClick:e.refresh},{default:r(()=>[...t[2]||(t[2]=[x("刷新",-1)])]),_:1},8,["loading"])]),e.store.error?(p(),K(w,{key:0,type:"error",message:e.store.error,banner:"",closable:"",style:{"margin-bottom":"12px"}},null,8,["message"])):G("v-if",!0),!e.store.loading&&!e.store.hasChildren?(p(),K(C,{key:1,description:"还没有收到任何孩子端的使用数据(需在桌面端运行,孩子端已配对并上行)"})):(p(),v(b,{key:2},[s(h,{style:{"margin-bottom":"16px"},align:"center",wrap:""},{default:r(()=>[t[4]||(t[4]=E("span",null,"孩子:",-1)),s(y,{value:e.selectedChild,"onUpdate:value":t[0]||(t[0]=d=>e.selectedChild=d),style:{"min-width":"280px"},options:e.childOptions,placeholder:"选择孩子",onChange:e.onSelectChild},null,8,["value","options"]),s(y,{value:e.rangeKey,"onUpdate:value":t[1]||(t[1]=d=>e.rangeKey=d),style:{"min-width":"140px"},options:e.rangeOptions,onChange:e.refreshDetail},null,8,["value"])]),_:1}),s(k,{gutter:16,style:{"margin-bottom":"16px"}},{default:r(()=>[s(i,{xs:24,md:8},{default:r(()=>[s(o,null,{default:r(()=>[s(m,{title:"总使用时长",value:e.totalLabel},null,8,["value"])]),_:1})]),_:1}),s(i,{xs:24,md:8},{default:r(()=>[s(o,null,{default:r(()=>[s(m,{title:"应用数",value:e.store.summary.apps.length},null,8,["value"])]),_:1})]),_:1}),s(i,{xs:24,md:8},{default:r(()=>[s(o,null,{default:r(()=>[s(m,{title:"事件数",value:e.store.events.length},null,8,["value"])]),_:1})]),_:1})]),_:1}),s(o,{title:"应用使用排行",style:{"margin-bottom":"16px"}},{default:r(()=>[s(D,{"data-source":e.store.summary.apps,columns:e.appColumns,pagination:!1,"row-key":"package",size:"small"},{bodyCell:r(({column:d,record:l})=>[d.key==="totalMs"?(p(),v(b,{key:0},[x(S(e.formatDuration(l.totalMs)),1)],64)):G("v-if",!0)]),_:1},8,["data-source"])]),_:1}),s(o,{title:"最近事件"},{default:r(()=>[s(D,{"data-source":e.store.events,columns:e.eventColumns,pagination:{pageSize:20},"row-key":"resourceId",size:"small"},{bodyCell:r(({column:d,record:l})=>[d.key==="timestampMs"?(p(),v(b,{key:0},[x(S(e.formatTime(l.timestampMs)),1)],64)):d.key==="durationMs"?(p(),v(b,{key:1},[x(S(e.formatDuration(l.durationMs)),1)],64)):d.key==="app"?(p(),v(b,{key:2},[x(S(l.package||"—"),1)],64)):G("v-if",!0)]),_:1},8,["data-source"])]),_:1})],64))])}const X=R(j,[["render",Q],["__scopeId","data-v-f49db8d0"],["__file","/tmp/cc-web-panel-k4fdqo/repo/packages/web-panel/src/views/FamilyGuardDashboard.vue"]]);export{X as default};