chainlesschain 0.161.2 → 0.161.4

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 (224) hide show
  1. package/package.json +6 -6
  2. package/src/assets/web-panel/.build-hash +1 -1
  3. package/src/assets/web-panel/assets/AIOps-K85peDCg.js +1 -0
  4. package/src/assets/web-panel/assets/{ActionButton-BvMi4awy.js → ActionButton-DoRABhmk.js} +1 -1
  5. package/src/assets/web-panel/assets/{Analytics-hRk2ziup.js → Analytics-B7p7X_lS.js} +2 -2
  6. package/src/assets/web-panel/assets/AppLayout-BQb9-BUE.js +1 -0
  7. package/src/assets/web-panel/assets/AppLayout-P7jhSfLy.css +1 -0
  8. package/src/assets/web-panel/assets/Audit-CHj8w38X.js +1 -0
  9. package/src/assets/web-panel/assets/Backup-BsgPajcJ.js +1 -0
  10. package/src/assets/web-panel/assets/BaseInput-kGeksnCj.js +1 -0
  11. package/src/assets/web-panel/assets/Chat-2e3EGiwk.js +7 -0
  12. package/src/assets/web-panel/assets/Chat-D4oAhi11.css +1 -0
  13. package/src/assets/web-panel/assets/{Checkbox-C9dkWb-7.js → Checkbox-DirndeMM.js} +1 -1
  14. package/src/assets/web-panel/assets/Codegen-UQuEF6rH.js +1 -0
  15. package/src/assets/web-panel/assets/{Col-JyQOivHb.js → Col-myVf7h0M.js} +1 -1
  16. package/src/assets/web-panel/assets/Community-C3Gt4JNP.js +1 -0
  17. package/src/assets/web-panel/assets/Compact-B4TJcIuz.js +1 -0
  18. package/src/assets/web-panel/assets/Compliance-DKye9lMe.js +1 -0
  19. package/src/assets/web-panel/assets/{Cowork-V-tDxtrt.js → Cowork-bD9Z8K9J.js} +3 -3
  20. package/src/assets/web-panel/assets/{Cron-YgEeQvdV.js → Cron-BrQZ3zwQ.js} +2 -2
  21. package/src/assets/web-panel/assets/Crosschain-C7m4dIrR.js +1 -0
  22. package/src/assets/web-panel/assets/{DID-swdBCdMZ.js → DID-CGniRypj.js} +2 -2
  23. package/src/assets/web-panel/assets/Dashboard-BqQfrJLe.js +3 -0
  24. package/src/assets/web-panel/assets/{Dropdown-mlITwb7d.js → Dropdown-Csici42Z.js} +1 -1
  25. package/src/assets/web-panel/assets/Federation-D2boc2WU.js +1 -0
  26. package/src/assets/web-panel/assets/{FormItemContext-BYmWDwAT.js → FormItemContext-BpXHcM06.js} +1 -1
  27. package/src/assets/web-panel/assets/{Git-Du1k1iHz.js → Git-C7QHt3Hy.js} +2 -2
  28. package/src/assets/web-panel/assets/Governance-DPBJNo9u.js +1 -0
  29. package/src/assets/web-panel/assets/Inference-Ca8VokDu.js +1 -0
  30. package/src/assets/web-panel/assets/KnowledgeGraph-CrFGz4u2.js +1 -0
  31. package/src/assets/web-panel/assets/{Logs-CElvIBBJ.js → Logs-DMhNTvH6.js} +2 -2
  32. package/src/assets/web-panel/assets/Marketplace-DB0lVRRk.js +1 -0
  33. package/src/assets/web-panel/assets/{McpTools-BpHkrlka.js → McpTools-BmFQp5wQ.js} +3 -3
  34. package/src/assets/web-panel/assets/{Memory-DeU9ys_m.js → Memory-DDooyF2l.js} +2 -2
  35. package/src/assets/web-panel/assets/Mtc-Ci6BDiRi.js +6 -0
  36. package/src/assets/web-panel/assets/Mtc-DHwbdUqA.css +1 -0
  37. package/src/assets/web-panel/assets/MtcAudit-B0x8gahq.css +1 -0
  38. package/src/assets/web-panel/assets/MtcAudit-J-DgVOwR.js +19 -0
  39. package/src/assets/web-panel/assets/NLProgramming-Uv0jicWQ.js +1 -0
  40. package/src/assets/web-panel/assets/Notes-BHauapxR.css +1 -0
  41. package/src/assets/web-panel/assets/Notes-SGtdMwfH.js +7 -0
  42. package/src/assets/web-panel/assets/NotificationSettings-Cg4yXikq.js +1 -0
  43. package/src/assets/web-panel/assets/NotificationSettings-Co0e0uEO.css +1 -0
  44. package/src/assets/web-panel/assets/{Organization-B_SHESSc.js → Organization-Bij8W2mU.js} +4 -4
  45. package/src/assets/web-panel/assets/{Overflow-R2SOGT0l.js → Overflow-DNGM4vCD.js} +1 -1
  46. package/src/assets/web-panel/assets/{OverrideContext-Nubhv68k.js → OverrideContext-DSwW21YS.js} +1 -1
  47. package/src/assets/web-panel/assets/{P2P-IYYy3cEd.js → P2P-9DlPC_rr.js} +2 -2
  48. package/src/assets/web-panel/assets/{Permissions-CR1N42yW.js → Permissions-BVJwnBDW.js} +3 -3
  49. package/src/assets/web-panel/assets/Pipeline-lWCcdQ9k.js +1 -0
  50. package/src/assets/web-panel/assets/Privacy-BN60IEMG.js +1 -0
  51. package/src/assets/web-panel/assets/{ProjectSettings-CEDhpgbs.js → ProjectSettings-GJoyBlLy.js} +2 -2
  52. package/src/assets/web-panel/assets/{Projects-DABi6ylb.js → Projects-Dvs_UqGv.js} +2 -2
  53. package/src/assets/web-panel/assets/{Providers-HzrcE8ma.js → Providers-A5KukRrJ.js} +2 -2
  54. package/src/assets/web-panel/assets/QuickAsk-D4K2pIHJ.js +1 -0
  55. package/src/assets/web-panel/assets/Recommend-DQKR520B.js +1 -0
  56. package/src/assets/web-panel/assets/Reputation-BVntfhQV.js +1 -0
  57. package/src/assets/web-panel/assets/Row-Do4ULXpm.js +1 -0
  58. package/src/assets/web-panel/assets/RssFeed-FAHzJo-E.js +3 -0
  59. package/src/assets/web-panel/assets/Search-DsOTkKd1.js +1 -0
  60. package/src/assets/web-panel/assets/{Security-DdW4hu_4.js → Security-hglxmoVZ.js} +3 -3
  61. package/src/assets/web-panel/assets/{Services-CnzEzGFN.js → Services-C6Rv4i8z.js} +2 -2
  62. package/src/assets/web-panel/assets/{Skeleton-D6RevdW2.js → Skeleton-D-dXFspp.js} +2 -2
  63. package/src/assets/web-panel/assets/Skills-D6sVDuOT.js +1 -0
  64. package/src/assets/web-panel/assets/Sla-8O-JYjQq.js +1 -0
  65. package/src/assets/web-panel/assets/SpeechSettings-DSOYsk6R.js +1 -0
  66. package/src/assets/web-panel/assets/SyncSettings-C5nhT_6b.js +1 -0
  67. package/src/assets/web-panel/assets/SyncSettings-C6cDrwDR.css +1 -0
  68. package/src/assets/web-panel/assets/Tasks-NrpJCUFD.js +1 -0
  69. package/src/assets/web-panel/assets/Templates-Ca2HO-Ff.js +1 -0
  70. package/src/assets/web-panel/assets/Tenant-BWXC1pLX.js +1 -0
  71. package/src/assets/web-panel/assets/Tokens-DUtMwWxZ.js +1 -0
  72. package/src/assets/web-panel/assets/{Trigger-DkSZjOlY.js → Trigger-TyynxipZ.js} +1 -1
  73. package/src/assets/web-panel/assets/Trust-b4KDouFb.js +1 -0
  74. package/src/assets/web-panel/assets/UkeySign-CJpVhu8c.js +1 -0
  75. package/src/assets/web-panel/assets/VideoEditing-Bpn0V8T2.js +1 -0
  76. package/src/assets/web-panel/assets/{Wallet-DHbi5dHt.js → Wallet-CzBLjCnl.js} +4 -4
  77. package/src/assets/web-panel/assets/{WebAuthn-BkGDI33-.js → WebAuthn-HnRCEu5Q.js} +5 -5
  78. package/src/assets/web-panel/assets/WorkflowEditor-CMWDod4n.js +1 -0
  79. package/src/assets/web-panel/assets/{_getTag-CWA3v-Ds.js → _getTag-BVc6NQ_K.js} +1 -1
  80. package/src/assets/web-panel/assets/chat-D7QE42qx.js +1 -0
  81. package/src/assets/web-panel/assets/{collapseMotion-BIjDVXtT.js → collapseMotion-6-_FbiKl.js} +1 -1
  82. package/src/assets/web-panel/assets/{colors-D2tTvuDI.js → colors-BO5nQJrH.js} +1 -1
  83. package/src/assets/web-panel/assets/{compact-item-CqCEUZiy.js → compact-item-By0t_ZDX.js} +1 -1
  84. package/src/assets/web-panel/assets/{createContext-C6HFlAQP.js → createContext-CHZw2WQy.js} +1 -1
  85. package/src/assets/web-panel/assets/{debounce-Q0BOJsYd.js → debounce-D9xTw4Sx.js} +1 -1
  86. package/src/assets/web-panel/assets/{echarts-DmBLM6YO.js → echarts-BrEnqXDv.js} +1 -1
  87. package/src/assets/web-panel/assets/{hasIn-yp2CbhYc.js → hasIn-CHScXGSD.js} +1 -1
  88. package/src/assets/web-panel/assets/icons-B2G69bhT.js +57 -0
  89. package/src/assets/web-panel/assets/index-B-VML4Pz.js +1 -0
  90. package/src/assets/web-panel/assets/index-B6FaCH6K.js +55 -0
  91. package/src/assets/web-panel/assets/index-BCoEssNV.js +1 -0
  92. package/src/assets/web-panel/assets/index-BFMpMM1y.js +21 -0
  93. package/src/assets/web-panel/assets/index-BIoymtmG.js +1 -0
  94. package/src/assets/web-panel/assets/{index-B2qFUwGb.js → index-BVL4FbJ3.js} +2 -2
  95. package/src/assets/web-panel/assets/{index-B0jkl2Zb.js → index-BXXqtwrw.js} +1 -1
  96. package/src/assets/web-panel/assets/{index-Cpfx7-LN.js → index-BY-BnqWj.js} +2 -2
  97. package/src/assets/web-panel/assets/{index-DnehXcB-.js → index-Bbf4Smm-.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-w1xShUDf.js → index-BdOG1g8i.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-DlgMVieO.js → index-BgAPyeU5.js} +1 -1
  100. package/src/assets/web-panel/assets/index-Bn_0bupT.js +69 -0
  101. package/src/assets/web-panel/assets/index-BnaKc6VJ.js +1 -0
  102. package/src/assets/web-panel/assets/index-BqMhh2pY.js +1 -0
  103. package/src/assets/web-panel/assets/{index-CucxAdwN.js → index-BuzilAPw.js} +2 -2
  104. package/src/assets/web-panel/assets/{index-BTL2yIvT.js → index-By3TOq5w.js} +1 -1
  105. package/src/assets/web-panel/assets/index-C1ssAFdz.js +1 -0
  106. package/src/assets/web-panel/assets/{index-DEKuiAPQ.js → index-CAPiTJT4.js} +2 -2
  107. package/src/assets/web-panel/assets/{index-BlVnFOFL.js → index-CCOGrBpN.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-JszcDpsT.js → index-COVlQxSz.js} +2 -2
  109. package/src/assets/web-panel/assets/{index-Dj4P0iWm.js → index-CYCwDDoS.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-D34iabcS.js → index-C_EIwaP7.js} +8 -8
  111. package/src/assets/web-panel/assets/{index-CXf0zL5i.js → index-CfZqQ0JR.js} +3 -3
  112. package/src/assets/web-panel/assets/{index-CcwZodUl.js → index-CpHzrw8g.js} +1 -1
  113. package/src/assets/web-panel/assets/index-CszhN_r3.js +1 -0
  114. package/src/assets/web-panel/assets/index-Czk89HQF.js +1 -0
  115. package/src/assets/web-panel/assets/{index-BxSsO6Sm.js → index-D3WrGn-J.js} +2 -2
  116. package/src/assets/web-panel/assets/index-DS0o68gc.js +3 -0
  117. package/src/assets/web-panel/assets/{index-NNymVAza.js → index-DZ4t_1f-.js} +2 -2
  118. package/src/assets/web-panel/assets/{index-B8Qxu0q2.js → index-D_QlAaj5.js} +1 -1
  119. package/src/assets/web-panel/assets/index-DgWJBqLh.js +13 -0
  120. package/src/assets/web-panel/assets/{index-CFoFkVUt.js → index-DiHryOr_.js} +4 -4
  121. package/src/assets/web-panel/assets/index-DqPwMq7i.js +1 -0
  122. package/src/assets/web-panel/assets/{index-Blq49aTW.js → index-Qm6Kn3iq.js} +1 -1
  123. package/src/assets/web-panel/assets/index-U1O0AXXH.js +1 -0
  124. package/src/assets/web-panel/assets/index-jRQNL6Yj.js +12 -0
  125. package/src/assets/web-panel/assets/index-sgVQrC2c.js +1 -0
  126. package/src/assets/web-panel/assets/{index-CrEEL63u.js → index-yLdzB8i-.js} +1 -1
  127. package/src/assets/web-panel/assets/{initDefaultProps-DfdVxwz6.js → initDefaultProps-CMFUJGsa.js} +1 -1
  128. package/src/assets/web-panel/assets/{isPlainObject-DSTnI585.js → isPlainObject-_gz-soRW.js} +1 -1
  129. package/src/assets/web-panel/assets/isSymbol-DAy2hlR5.js +1 -0
  130. package/src/assets/web-panel/assets/{motion-CL0bdvJg.js → motion-CTtMugIF.js} +2 -2
  131. package/src/assets/web-panel/assets/{move-Bo9Fgzv7.js → move-DHjaLqhq.js} +1 -1
  132. package/src/assets/web-panel/assets/mtc-parser-Cc3pB9Xm.js +1 -0
  133. package/src/assets/web-panel/assets/{omit-C-cc6wHr.js → omit-COm0v71g.js} +1 -1
  134. package/src/assets/web-panel/assets/operationUnit-vCu2co3e.js +1 -0
  135. package/src/assets/web-panel/assets/{pickAttrs-CjLp5RN-.js → pickAttrs-C3Ftf-sl.js} +1 -1
  136. package/src/assets/web-panel/assets/{placementArrow-CJa8gsqa.js → placementArrow-IJhTwCmF.js} +1 -1
  137. package/src/assets/web-panel/assets/{responsiveObserve-CcDj3P-p.js → responsiveObserve-Cmu2mrKT.js} +1 -1
  138. package/src/assets/web-panel/assets/{slide-CpvbHO26.js → slide-CnWCDeu_.js} +1 -1
  139. package/src/assets/web-panel/assets/{statusUtils-BK69kP1U.js → statusUtils-CSOJeZ-L.js} +1 -1
  140. package/src/assets/web-panel/assets/{styleChecker-CDvBRzsG.js → styleChecker-94VBD7Xs.js} +1 -1
  141. package/src/assets/web-panel/assets/useFlexGapSupport-CBjbWuc9.js +1 -0
  142. package/src/assets/web-panel/assets/useFs-DfXp51Mk.js +1 -0
  143. package/src/assets/web-panel/assets/{useMergedState-TP9VIF2K.js → useMergedState-n0f81Aew.js} +1 -1
  144. package/src/assets/web-panel/assets/{useRefs-BhIz_lC3.js → useRefs-CTh0C9xI.js} +1 -1
  145. package/src/assets/web-panel/assets/{useState-CpKsyozn.js → useState-4T1Ntfpx.js} +1 -1
  146. package/src/assets/web-panel/assets/{vendor-B6ToihkA.js → vendor-Ci2pTZ_t.js} +1 -1
  147. package/src/assets/web-panel/assets/{vnode-Bzp-FsbB.js → vnode-CGY3YRLi.js} +1 -1
  148. package/src/assets/web-panel/assets/{zoom-BHqpWXJV.js → zoom-CZllDiMO.js} +1 -1
  149. package/src/assets/web-panel/index.html +3 -3
  150. package/src/commands/mtc.js +2 -0
  151. package/src/gateways/ws/chat-intent-protocol.js +192 -0
  152. package/src/gateways/ws/message-dispatcher.js +6 -0
  153. package/src/gateways/ws/ws-server.js +20 -0
  154. package/src/lib/chat-intent-service.js +530 -0
  155. package/src/lib/config-manager.js +3 -1
  156. package/src/lib/governance-v2-helpers.js +1 -1
  157. package/src/lib/sync-manager.js +119 -25
  158. package/src/assets/web-panel/assets/AIOps-CoZ9bIqF.js +0 -1
  159. package/src/assets/web-panel/assets/AppLayout-CtGprHSx.css +0 -1
  160. package/src/assets/web-panel/assets/AppLayout-_JR3Gko8.js +0 -1
  161. package/src/assets/web-panel/assets/Audit-D8WmaHdX.js +0 -1
  162. package/src/assets/web-panel/assets/Backup-CogYVeiE.js +0 -1
  163. package/src/assets/web-panel/assets/BaseInput-NAp5_OPY.js +0 -1
  164. package/src/assets/web-panel/assets/Chat-ByiYUboW.css +0 -1
  165. package/src/assets/web-panel/assets/Chat-DkQnhjfk.js +0 -2
  166. package/src/assets/web-panel/assets/Codegen-BHyJ3j-p.js +0 -1
  167. package/src/assets/web-panel/assets/Community-UMq5QuBA.js +0 -1
  168. package/src/assets/web-panel/assets/Compact-DGlwooBJ.js +0 -1
  169. package/src/assets/web-panel/assets/Compliance-2rWGO55k.js +0 -1
  170. package/src/assets/web-panel/assets/Crosschain-Cgd5cRKn.js +0 -1
  171. package/src/assets/web-panel/assets/Dashboard-ClnWtxsT.js +0 -3
  172. package/src/assets/web-panel/assets/Federation-DtUN3wQa.js +0 -1
  173. package/src/assets/web-panel/assets/Governance-B2TFaWsf.js +0 -1
  174. package/src/assets/web-panel/assets/Inference-Cm_hmXla.js +0 -1
  175. package/src/assets/web-panel/assets/KnowledgeGraph-DLaLMo4r.js +0 -1
  176. package/src/assets/web-panel/assets/Marketplace-BlR3RCDV.js +0 -1
  177. package/src/assets/web-panel/assets/Mtc-CCJZpnJo.js +0 -6
  178. package/src/assets/web-panel/assets/Mtc-Cc8OJxe_.css +0 -1
  179. package/src/assets/web-panel/assets/NLProgramming-B_Tie6j1.js +0 -1
  180. package/src/assets/web-panel/assets/Notes-BcpuirPj.js +0 -7
  181. package/src/assets/web-panel/assets/Notes-DKkPfXlY.css +0 -1
  182. package/src/assets/web-panel/assets/Pipeline-nwFpKsU_.js +0 -1
  183. package/src/assets/web-panel/assets/Privacy-BGpz72PX.js +0 -1
  184. package/src/assets/web-panel/assets/QuickAsk-6FgX9DC6.js +0 -1
  185. package/src/assets/web-panel/assets/Recommend-BPhQwye7.js +0 -1
  186. package/src/assets/web-panel/assets/Reputation-BL6hTN1s.js +0 -1
  187. package/src/assets/web-panel/assets/Row-2akLU3YS.js +0 -1
  188. package/src/assets/web-panel/assets/RssFeed-D6qNq6Ht.js +0 -3
  189. package/src/assets/web-panel/assets/Search-R_b-u9oL.js +0 -1
  190. package/src/assets/web-panel/assets/Skills-DD5ReHH7.js +0 -1
  191. package/src/assets/web-panel/assets/Sla-CaQOOsjD.js +0 -1
  192. package/src/assets/web-panel/assets/SpeechSettings-D-pGIn9Z.js +0 -1
  193. package/src/assets/web-panel/assets/Tasks-BbdO_i4Q.js +0 -1
  194. package/src/assets/web-panel/assets/Templates-CupAugDn.js +0 -1
  195. package/src/assets/web-panel/assets/Tenant-rseAzHcY.js +0 -1
  196. package/src/assets/web-panel/assets/Tokens-DXMokNbR.js +0 -1
  197. package/src/assets/web-panel/assets/Trust-CKb7QDH1.js +0 -1
  198. package/src/assets/web-panel/assets/UkeySign-Cux8_Ib_.js +0 -1
  199. package/src/assets/web-panel/assets/VideoEditing-CSOjdBZg.js +0 -1
  200. package/src/assets/web-panel/assets/WorkflowEditor-BFZ3RYva.js +0 -1
  201. package/src/assets/web-panel/assets/chat-BQ-Nk2XY.js +0 -1
  202. package/src/assets/web-panel/assets/icons-DvZE-RKs.js +0 -57
  203. package/src/assets/web-panel/assets/index-4cn1LmJ9.js +0 -1
  204. package/src/assets/web-panel/assets/index-B74gWYqD.js +0 -1
  205. package/src/assets/web-panel/assets/index-B9b_mz4I.js +0 -55
  206. package/src/assets/web-panel/assets/index-BAA1SFp1.js +0 -1
  207. package/src/assets/web-panel/assets/index-BJeE7n_I.js +0 -12
  208. package/src/assets/web-panel/assets/index-BJoK7MkB.js +0 -13
  209. package/src/assets/web-panel/assets/index-CA3g3EpL.js +0 -1
  210. package/src/assets/web-panel/assets/index-CWhXxdyo.js +0 -1
  211. package/src/assets/web-panel/assets/index-Cd6m6ynF.js +0 -1
  212. package/src/assets/web-panel/assets/index-Cfy9l115.js +0 -1
  213. package/src/assets/web-panel/assets/index-CijiVpfO.js +0 -1
  214. package/src/assets/web-panel/assets/index-CvuBD5TK.js +0 -3
  215. package/src/assets/web-panel/assets/index-Cw4v7ezB.js +0 -65
  216. package/src/assets/web-panel/assets/index-DjeNNVwu.js +0 -1
  217. package/src/assets/web-panel/assets/index-KdFFI-p3.js +0 -1
  218. package/src/assets/web-panel/assets/index-aw2DwKj-.js +0 -21
  219. package/src/assets/web-panel/assets/index-nzDx0JAR.js +0 -1
  220. package/src/assets/web-panel/assets/isSymbol-CsP9Ob42.js +0 -1
  221. package/src/assets/web-panel/assets/mtc-parser-pGMSt10g.js +0 -1
  222. package/src/assets/web-panel/assets/useFlexGapSupport-CRN_hzJt.js +0 -1
  223. package/src/assets/web-panel/assets/useFs-BD-YRwbU.js +0 -1
  224. package/src/assets/web-panel/assets/ws-D_5-FRIb.js +0 -1
@@ -0,0 +1 @@
1
+ import{_ as Be,u as Pe,b as Me,d as h}from"./index-Bn_0bupT.js";import{u as Ne,i as Ke,a as qe,b as Ve,c as Je,d as Ye,E as Qe}from"./echarts-BrEnqXDv.js";import{R as We,ap as Ze,ay as le,Y as ke,u as He,a1 as Xe}from"./icons-B2G69bhT.js";import{o as et,M as m,R as $,P as s,c as t,N as a,Q as R,S as G,K as p,r as v,L as d,O as c,u as S,F as A,Y as L,f as U,a as re}from"./vendor-Ci2pTZ_t.js";function N(l){if(!l)return null;const i=l.trim();try{return JSON.parse(i)}catch{const n=i.match(/(\[[\s\S]*\]|\{[\s\S]*\})/);if(!n)return null;try{return JSON.parse(n[1])}catch{return null}}}function ie(l,i=0){if(!l||typeof l!="object")return null;const n=l.id||l.entity_id||"";if(!n)return null;const k=Array.isArray(l.tags)?l.tags:typeof l.tags=="string"&&l.tags.length>0?l.tags.split(",").map(_=>_.trim()).filter(Boolean):[];return{key:n,id:n,name:l.name||"",type:l.type||"",tags:k,properties:l.properties&&typeof l.properties=="object"?l.properties:null,createdAt:l.created_at||l.createdAt||"",updatedAt:l.updated_at||l.updatedAt||"",_idx:i}}function _e(l,i=0){if(!l||typeof l!="object")return null;const n=l.id||l.relation_id||"";if(!n)return null;const k=l.sourceId||l.source_id||"",_=l.targetId||l.target_id||"";if(!k||!_)return null;const T=typeof l.weight=="number"?l.weight:typeof l.weight=="string"?parseFloat(l.weight):1;return{key:n,id:n,sourceId:k,targetId:_,relationType:l.relationType||l.relation_type||"",weight:Number.isFinite(T)?T:1,properties:l.properties&&typeof l.properties=="object"?l.properties:null,createdAt:l.created_at||l.createdAt||"",_idx:i}}function tt(l){const i=N(l);return Array.isArray(i)?i.map(ie).filter(Boolean):i&&Array.isArray(i.entities)?i.entities.map(ie).filter(Boolean):[]}function at(l){const i=N(l);return Array.isArray(i)?i.map(_e).filter(Boolean):i&&Array.isArray(i.relations)?i.relations.map(_e).filter(Boolean):[]}function ot(l){const i=N(l);if(!i||typeof i!="object"||Array.isArray(i))return{entityCount:0,relationCount:0,avgDegree:0,density:0,typeDistribution:{},relationTypeDistribution:{}};const n=k=>{const _=typeof k=="number"?k:parseFloat(k);return Number.isFinite(_)?_:0};return{entityCount:n(i.entityCount??i.entity_count),relationCount:n(i.relationCount??i.relation_count),avgDegree:n(i.avgDegree??i.avg_degree),density:n(i.density),typeDistribution:i.typeDistribution||i.type_distribution||{},relationTypeDistribution:i.relationTypeDistribution||i.relation_type_distribution||{}}}function nt(l){const i=N(l);return Array.isArray(i)?i.map((n,k)=>{if(!n||typeof n!="object"||!n.entity)return null;const _=ie(n.entity,k);return _?{key:`${_.id}-${k}`,depth:typeof n.depth=="number"?n.depth:0,entity:_}:null}).filter(Boolean):[]}function lt(l){const i=N(l);return Array.isArray(i)?i.map(n=>!n||typeof n!="object"||!n.name?null:{name:String(n.name),description:String(n.description||"")}).filter(Boolean):[]}function rt(l,i){const n=new Map,k=[];for(const f of l)n.has(f.type)||(n.set(f.type,k.length),k.push({name:f.type||"unknown"}));const _=l.map(f=>({id:f.id,name:f.name||f.id.slice(0,8),category:n.get(f.type)??0,value:1,symbolSize:24})),T=new Set(l.map(f=>f.id)),O=[];for(const f of i)!T.has(f.sourceId)||!T.has(f.targetId)||O.push({source:f.sourceId,target:f.targetId,value:f.relationType,lineStyle:{width:Math.max(1,Math.min(6,f.weight*2))}});return{nodes:_,links:O,categories:k}}const it={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},st={class:"page-title"},dt={class:"page-sub"},ut={key:0,style:{padding:"60px","text-align":"center"}},pt={key:1,style:{height:"540px"}},ct={key:0,style:{color:"#888","font-family":"monospace","font-size":"11px"}},yt={key:1,style:{color:"var(--text-primary)"}},gt={key:0,style:{color:"var(--text-muted)"}},mt={key:0,style:{color:"#888","font-family":"monospace","font-size":"11px"}},ft={key:1,style:{color:"var(--text-muted)"}},ht={key:2,style:{color:"#888","font-family":"monospace","font-size":"11px"}},vt={key:4,style:{color:"var(--text-secondary)","font-family":"monospace"}},kt={key:0,style:{padding:"40px","text-align":"center",color:"var(--text-muted)"}},_t={style:{display:"flex","justify-content":"space-between","margin-bottom":"4px"}},bt={style:{color:"var(--text-secondary)","font-family":"monospace"}},wt={key:0,style:{padding:"40px","text-align":"center",color:"var(--text-muted)"}},Gt={style:{display:"flex","justify-content":"space-between","margin-bottom":"4px"}},$t={style:{color:"var(--text-secondary)","font-family":"monospace"}},xt={style:{color:"var(--text-muted)","font-size":"11px"}},Ct={key:0,style:{padding:"30px","text-align":"center",color:"var(--text-muted)"}},St={style:{"margin-left":"12px",color:"var(--text-primary)"}},Tt={style:{"margin-left":"8px",color:"#888","font-family":"monospace","font-size":"11px"}},Rt={__name:"KnowledgeGraph",setup(l){Ne([Ke,qe,Ve,Je,Ye]);const i=Pe(),{t:n}=Me(),k=v(!1),_=v(!1),T=v(!1),O=v(!1),f=v(!1),Z=v(""),K=v(!1),se=v("graph"),x=v([]),B=v([]),H=v([]),E=v({entityCount:0,relationCount:0,avgDegree:0,density:0,typeDistribution:{},relationTypeDistribution:{}}),q=v(!1),V=v(!1),X=v(!1),b=re({name:"",type:"",tags:""}),y=re({sourceId:"",targetId:"",relationType:"",weight:1}),j=re({maxDepth:3,direction:"out"}),de=v(""),ue=v(""),P=v([]),be=U(()=>[{title:n("knowledgeGraph.entityCols.id"),key:"id",width:"120px"},{title:n("knowledgeGraph.entityCols.name"),key:"name",dataIndex:"name",ellipsis:!0},{title:n("knowledgeGraph.entityCols.type"),key:"type",dataIndex:"type",width:"140px"},{title:n("knowledgeGraph.entityCols.tags"),key:"tags",width:"200px"},{title:n("knowledgeGraph.entityCols.action"),key:"action",width:"160px"}]),we=U(()=>[{title:n("knowledgeGraph.relationCols.source"),key:"source",width:"120px"},{title:"",key:"arrow",width:"40px"},{title:n("knowledgeGraph.relationCols.target"),key:"target",width:"120px"},{title:n("knowledgeGraph.relationCols.relationType"),key:"relationType",width:"160px"},{title:n("knowledgeGraph.relationCols.weight"),key:"weight",width:"100px"}]),Ge={Person:"magenta",Organization:"blue",Project:"cyan",Technology:"geekblue",Document:"gold",Concept:"purple",Event:"volcano"};function ee(e){return Ge[e]||"default"}const $e=U(()=>{const e=new Map;for(const r of x.value)e.set(r.id,r.name||r.id.slice(0,8));return e});function pe(e){return $e.value.get(e)||e.slice(0,12)}function ce(e,r){return String(r?.children?.[0]?.children||"").toLowerCase().includes(String(e).toLowerCase())}const ye=U(()=>{const e=E.value.typeDistribution||{},r=Object.values(e).reduce((u,g)=>u+g,0)||1;return Object.entries(e).map(([u,g])=>({type:u,count:g,percent:Math.round(g/r*100)})).sort((u,g)=>g.count-u.count)}),ge=U(()=>{const e=E.value.relationTypeDistribution||{},r=Object.values(e).reduce((u,g)=>u+g,0)||1;return Object.entries(e).map(([u,g])=>({type:u,count:g,percent:Math.round(g/r*100)})).sort((u,g)=>g.count-u.count)}),xe=U(()=>{const{nodes:e,links:r,categories:u}=rt(x.value,B.value);return{tooltip:{show:!0},legend:[{data:u.map(g=>g.name),textStyle:{color:"#aaa"},bottom:0}],series:[{type:"graph",layout:"force",data:e,links:r,categories:u,roam:!0,label:{show:!0,position:"right",color:"#ddd",fontSize:11},lineStyle:{color:"source",curveness:.1,opacity:.6},emphasis:{focus:"adjacency",lineStyle:{width:4}},force:{repulsion:180,edgeLength:[60,140],gravity:.05}}]}});async function M(){_.value=!0;try{await Promise.all([Ce(),Se(),Te()])}finally{_.value=!1}}async function Ce(){try{const{output:e}=await i.execute("kg list --limit 500 --json",15e3);x.value=tt(e)}catch(e){h.error(n("knowledgeGraph.msg.loadEntitiesFailed")+": "+e.message),x.value=[]}}async function Se(){try{const{output:e}=await i.execute("kg relations --limit 1000 --json",15e3);B.value=at(e)}catch(e){h.error(n("knowledgeGraph.msg.loadRelationsFailed")+": "+e.message),B.value=[]}}async function Te(){try{const{output:e}=await i.execute("kg stats --json",1e4);E.value=ot(e)}catch(e){h.error(n("knowledgeGraph.msg.loadStatsFailed")+": "+e.message)}}async function Re(){if(!(H.value.length>0)){T.value=!0;try{const{output:e}=await i.execute("kg entity-types --json",1e4);H.value=lt(e)}catch(e){h.error(n("knowledgeGraph.msg.loadEntityTypesFailed")+": "+e.message)}finally{T.value=!1}}}async function Ee(){if(!b.name.trim()||!b.type){h.warning(n("knowledgeGraph.msg.addEntityEmpty"));return}O.value=!0;try{let r=`kg add "${b.name.trim().replace(/"/g,'\\"')}" ${b.type} --json`;b.tags.trim()&&(r+=` --tags "${b.tags.trim().replace(/"/g,'\\"')}"`);const{output:u,exitCode:g}=await i.execute(r,15e3);g!==0||/error|失败/i.test(u)?h.error(n("knowledgeGraph.msg.addEntityFailed")+": "+u.slice(0,120)):(h.success(n("knowledgeGraph.msg.addEntitySuccess")),q.value=!1,b.name="",b.type="",b.tags="",await M())}catch(e){h.error(n("knowledgeGraph.msg.addEntityFailed")+": "+e.message)}finally{O.value=!1}}async function Ie(){if(!y.sourceId||!y.targetId||!y.relationType.trim()){h.warning(n("knowledgeGraph.msg.addRelationEmpty"));return}if(y.sourceId===y.targetId){h.warning(n("knowledgeGraph.msg.addRelationSelfLoop"));return}f.value=!0;try{const e=y.relationType.trim().replace(/"/g,'\\"'),r=`kg add-relation ${y.sourceId} ${y.targetId} "${e}" --weight ${y.weight} --json`,{output:u,exitCode:g}=await i.execute(r,15e3);g!==0||/error|失败/i.test(u)?h.error(n("knowledgeGraph.msg.addRelationFailed")+": "+u.slice(0,120)):(h.success(n("knowledgeGraph.msg.addRelationSuccess")),V.value=!1,y.sourceId="",y.targetId="",y.relationType="",y.weight=1,await M())}catch(e){h.error(n("knowledgeGraph.msg.addRelationFailed")+": "+e.message)}finally{f.value=!1}}async function De(e){Z.value=e.id;try{const{output:r,exitCode:u}=await i.execute(`kg remove ${e.id}`,15e3);u!==0||/error|失败/i.test(r)?h.error(n("knowledgeGraph.msg.deleteFailed")+": "+r.slice(0,120)):(h.success(n("knowledgeGraph.msg.deleteSuccess")),await M())}catch(r){h.error(n("knowledgeGraph.msg.deleteFailed")+": "+r.message)}finally{Z.value=""}}function Ae(e){de.value=e.id,ue.value=e.name,P.value=[],X.value=!0}async function Oe(){K.value=!0;try{const e=`kg reason ${de.value} --max-depth ${j.maxDepth} --direction ${j.direction} --json`,{output:r}=await i.execute(e,15e3);P.value=nt(r),P.value.length===0&&h.info(n("knowledgeGraph.msg.reasonEmpty"))}catch(e){h.error(n("knowledgeGraph.msg.reasonFailed")+": "+e.message)}finally{K.value=!1}}return et(()=>{M(),Re()}),(e,r)=>{const u=p("a-button"),g=p("a-space"),J=p("a-statistic"),I=p("a-card"),z=p("a-col"),me=p("a-row"),je=p("a-alert"),te=p("a-empty"),Y=p("a-tab-pane"),D=p("a-tag"),ze=p("a-popconfirm"),fe=p("a-table"),he=p("a-progress"),Fe=p("a-tabs"),ae=p("a-input"),C=p("a-form-item"),F=p("a-select-option"),Q=p("a-select"),oe=p("a-form"),ne=p("a-modal"),ve=p("a-input-number"),Le=p("a-list-item"),Ue=p("a-list");return d(),m("div",null,[$("div",it,[$("div",null,[$("h2",st,s(e.$t("knowledgeGraph.title")),1),$("p",dt,s(e.$t("knowledgeGraph.subtitle")),1)]),t(g,null,{default:a(()=>[t(u,{loading:_.value,onClick:M},{icon:a(()=>[t(S(We))]),default:a(()=>[c(" "+s(e.$t("knowledgeGraph.refresh")),1)]),_:1},8,["loading"]),t(u,{type:"primary",onClick:r[0]||(r[0]=o=>q.value=!0)},{icon:a(()=>[t(S(Ze))]),default:a(()=>[c(" "+s(e.$t("knowledgeGraph.addEntity")),1)]),_:1}),t(u,{onClick:r[1]||(r[1]=o=>V.value=!0),disabled:x.value.length<2},{icon:a(()=>[t(S(le))]),default:a(()=>[c(" "+s(e.$t("knowledgeGraph.addRelation")),1)]),_:1},8,["disabled"])]),_:1})]),t(me,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:a(()=>[t(z,{xs:24,sm:12,lg:6},{default:a(()=>[t(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(J,{title:e.$t("knowledgeGraph.stats.entityCount"),value:E.value.entityCount,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:a(()=>[t(S(ke))]),_:1},8,["title","value"])]),_:1})]),_:1}),t(z,{xs:24,sm:12,lg:6},{default:a(()=>[t(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(J,{title:e.$t("knowledgeGraph.stats.relationCount"),value:E.value.relationCount,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:a(()=>[t(S(le))]),_:1},8,["title","value"])]),_:1})]),_:1}),t(z,{xs:24,sm:12,lg:6},{default:a(()=>[t(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(J,{title:e.$t("knowledgeGraph.stats.avgDegree"),value:E.value.avgDegree,precision:2,"value-style":{color:"#faad14",fontSize:"20px"}},null,8,["title","value"])]),_:1})]),_:1}),t(z,{xs:24,sm:12,lg:6},{default:a(()=>[t(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(J,{title:e.$t("knowledgeGraph.stats.density"),value:E.value.density,precision:4,"value-style":{color:"#722ed1",fontSize:"20px"}},null,8,["title","value"])]),_:1})]),_:1})]),_:1}),k.value?G("",!0):(d(),R(je,{key:0,message:e.$t("knowledgeGraph.webOnly.message"),description:e.$t("knowledgeGraph.webOnly.description"),type:"info","show-icon":"",closable:"",style:{"margin-bottom":"16px"}},null,8,["message","description"])),t(Fe,{activeKey:se.value,"onUpdate:activeKey":r[2]||(r[2]=o=>se.value=o),type:"card"},{default:a(()=>[t(Y,{key:"graph"},{tab:a(()=>[t(S(He)),c(" "+s(e.$t("knowledgeGraph.tabs.graph")),1)]),default:a(()=>[t(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[x.value.length===0?(d(),m("div",ut,[t(te,{description:e.$t("knowledgeGraph.table.emptyGraph")},null,8,["description"])])):(d(),m("div",pt,[t(S(Qe),{option:xe.value,autoresize:""},null,8,["option"])]))]),_:1})]),_:1}),t(Y,{key:"entities"},{tab:a(()=>[t(S(ke)),c(" "+s(e.$t("knowledgeGraph.tabs.entities",{n:x.value.length})),1)]),default:a(()=>[t(fe,{columns:be.value,"data-source":x.value,pagination:{pageSize:20,showTotal:o=>e.$t("knowledgeGraph.table.totalSuffix",{n:o})},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"kg-row"},{bodyCell:a(({column:o,record:w})=>[o.key==="id"?(d(),m("span",ct,s(w.id.slice(0,12)),1)):G("",!0),o.key==="name"?(d(),m("span",yt,s(w.name),1)):G("",!0),o.key==="type"?(d(),R(D,{key:2,color:ee(w.type)},{default:a(()=>[c(s(w.type),1)]),_:2},1032,["color"])):G("",!0),o.key==="tags"?(d(),m(A,{key:3},[(d(!0),m(A,null,L(w.tags,W=>(d(),R(D,{key:W,color:"default"},{default:a(()=>[c(s(W),1)]),_:2},1024))),128)),w.tags.length===0?(d(),m("span",gt,"-")):G("",!0)],64)):G("",!0),o.key==="action"?(d(),R(g,{key:4,size:"small"},{default:a(()=>[t(u,{size:"small",type:"link",onClick:W=>Ae(w)},{default:a(()=>[c(s(e.$t("knowledgeGraph.actions.reason")),1)]),_:1},8,["onClick"]),t(ze,{title:e.$t("knowledgeGraph.deleteConfirm.title"),"ok-text":e.$t("knowledgeGraph.deleteConfirm.ok"),"ok-type":"danger","cancel-text":e.$t("knowledgeGraph.deleteConfirm.cancel"),onConfirm:W=>De(w)},{default:a(()=>[t(u,{size:"small",type:"link",danger:"",loading:Z.value===w.id},{default:a(()=>[c(s(e.$t("knowledgeGraph.actions.delete")),1)]),_:1},8,["loading"])]),_:2},1032,["title","ok-text","cancel-text","onConfirm"])]),_:2},1024)):G("",!0)]),emptyText:a(()=>[t(te,{description:e.$t("knowledgeGraph.table.emptyEntities")},null,8,["description"])]),_:1},8,["columns","data-source","pagination"])]),_:1}),t(Y,{key:"relations"},{tab:a(()=>[t(S(le)),c(" "+s(e.$t("knowledgeGraph.tabs.relations",{n:B.value.length})),1)]),default:a(()=>[t(fe,{columns:we.value,"data-source":B.value,pagination:{pageSize:20,showTotal:o=>e.$t("knowledgeGraph.table.totalSuffix",{n:o})},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"kg-row"},{bodyCell:a(({column:o,record:w})=>[o.key==="source"?(d(),m("span",mt,s(pe(w.sourceId)),1)):G("",!0),o.key==="arrow"?(d(),m("span",ft,"→")):G("",!0),o.key==="target"?(d(),m("span",ht,s(pe(w.targetId)),1)):G("",!0),o.key==="relationType"?(d(),R(D,{key:3,color:"cyan"},{default:a(()=>[c(s(w.relationType),1)]),_:2},1024)):G("",!0),o.key==="weight"?(d(),m("span",vt,s(w.weight.toFixed(2)),1)):G("",!0)]),emptyText:a(()=>[t(te,{description:e.$t("knowledgeGraph.table.emptyRelations")},null,8,["description"])]),_:1},8,["columns","data-source","pagination"])]),_:1}),t(Y,{key:"distribution"},{tab:a(()=>[t(S(Xe)),c(" "+s(e.$t("knowledgeGraph.tabs.distribution")),1)]),default:a(()=>[t(me,{gutter:[24,24]},{default:a(()=>[t(z,{xs:24,md:12},{default:a(()=>[t(I,{title:e.$t("knowledgeGraph.distribution.entityTypes"),style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[ye.value.length===0?(d(),m("div",kt,s(e.$t("knowledgeGraph.table.emptyData")),1)):G("",!0),(d(!0),m(A,null,L(ye.value,o=>(d(),m("div",{key:o.type,style:{"margin-bottom":"8px"}},[$("div",_t,[t(D,{color:ee(o.type)},{default:a(()=>[c(s(o.type),1)]),_:2},1032,["color"]),$("span",bt,s(o.count),1)]),t(he,{percent:o.percent,"show-info":!1,"stroke-color":"#1677ff"},null,8,["percent"])]))),128))]),_:1},8,["title"])]),_:1}),t(z,{xs:24,md:12},{default:a(()=>[t(I,{title:e.$t("knowledgeGraph.distribution.relationTypes"),style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[ge.value.length===0?(d(),m("div",wt,s(e.$t("knowledgeGraph.table.emptyData")),1)):G("",!0),(d(!0),m(A,null,L(ge.value,o=>(d(),m("div",{key:o.type,style:{"margin-bottom":"8px"}},[$("div",Gt,[t(D,{color:"cyan"},{default:a(()=>[c(s(o.type),1)]),_:2},1024),$("span",$t,s(o.count),1)]),t(he,{percent:o.percent,"show-info":!1,"stroke-color":"#52c41a"},null,8,["percent"])]))),128))]),_:1},8,["title"])]),_:1})]),_:1})]),_:1})]),_:1},8,["activeKey"]),t(ne,{open:q.value,"onUpdate:open":r[6]||(r[6]=o=>q.value=o),title:e.$t("knowledgeGraph.addEntity_modal.title"),"confirm-loading":O.value,onOk:Ee,"ok-text":e.$t("knowledgeGraph.addEntity_modal.ok"),"cancel-text":e.$t("knowledgeGraph.addEntity_modal.cancel")},{default:a(()=>[t(oe,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:a(()=>[t(C,{label:e.$t("knowledgeGraph.addEntity_modal.nameLabel"),required:""},{default:a(()=>[t(ae,{value:b.name,"onUpdate:value":r[3]||(r[3]=o=>b.name=o),placeholder:e.$t("knowledgeGraph.addEntity_modal.namePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),t(C,{label:e.$t("knowledgeGraph.addEntity_modal.typeLabel"),required:""},{default:a(()=>[t(Q,{value:b.type,"onUpdate:value":r[4]||(r[4]=o=>b.type=o),placeholder:e.$t("knowledgeGraph.addEntity_modal.typePlaceholder"),loading:T.value},{default:a(()=>[(d(!0),m(A,null,L(H.value,o=>(d(),R(F,{key:o.name,value:o.name},{default:a(()=>[c(s(o.name)+" ",1),$("span",xt,"— "+s(o.description),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value","placeholder","loading"])]),_:1},8,["label"]),t(C,{label:e.$t("knowledgeGraph.addEntity_modal.tagsLabel")},{default:a(()=>[t(ae,{value:b.tags,"onUpdate:value":r[5]||(r[5]=o=>b.tags=o),placeholder:e.$t("knowledgeGraph.addEntity_modal.tagsPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),t(ne,{open:V.value,"onUpdate:open":r[11]||(r[11]=o=>V.value=o),title:e.$t("knowledgeGraph.addRelation_modal.title"),"confirm-loading":f.value,onOk:Ie,"ok-text":e.$t("knowledgeGraph.addRelation_modal.ok"),"cancel-text":e.$t("knowledgeGraph.addRelation_modal.cancel")},{default:a(()=>[t(oe,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:a(()=>[t(C,{label:e.$t("knowledgeGraph.addRelation_modal.sourceLabel"),required:""},{default:a(()=>[t(Q,{value:y.sourceId,"onUpdate:value":r[7]||(r[7]=o=>y.sourceId=o),placeholder:e.$t("knowledgeGraph.addRelation_modal.sourcePlaceholder"),"show-search":"","filter-option":ce},{default:a(()=>[(d(!0),m(A,null,L(x.value,o=>(d(),R(F,{key:o.id,value:o.id},{default:a(()=>[c(s(o.name)+" ("+s(o.type)+") ",1)]),_:2},1032,["value"]))),128))]),_:1},8,["value","placeholder"])]),_:1},8,["label"]),t(C,{label:e.$t("knowledgeGraph.addRelation_modal.targetLabel"),required:""},{default:a(()=>[t(Q,{value:y.targetId,"onUpdate:value":r[8]||(r[8]=o=>y.targetId=o),placeholder:e.$t("knowledgeGraph.addRelation_modal.targetPlaceholder"),"show-search":"","filter-option":ce},{default:a(()=>[(d(!0),m(A,null,L(x.value,o=>(d(),R(F,{key:o.id,value:o.id,disabled:o.id===y.sourceId},{default:a(()=>[c(s(o.name)+" ("+s(o.type)+") ",1)]),_:2},1032,["value","disabled"]))),128))]),_:1},8,["value","placeholder"])]),_:1},8,["label"]),t(C,{label:e.$t("knowledgeGraph.addRelation_modal.relationTypeLabel"),required:""},{default:a(()=>[t(ae,{value:y.relationType,"onUpdate:value":r[9]||(r[9]=o=>y.relationType=o),placeholder:e.$t("knowledgeGraph.addRelation_modal.relationTypePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),t(C,{label:e.$t("knowledgeGraph.addRelation_modal.weightLabel")},{default:a(()=>[t(ve,{value:y.weight,"onUpdate:value":r[10]||(r[10]=o=>y.weight=o),min:.1,max:10,step:.1,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),t(ne,{open:X.value,"onUpdate:open":r[14]||(r[14]=o=>X.value=o),title:e.$t("knowledgeGraph.reason_modal.title",{name:ue.value}),width:640,footer:null},{default:a(()=>[t(oe,{layout:"inline",style:{"margin-bottom":"16px"}},{default:a(()=>[t(C,{label:e.$t("knowledgeGraph.reason_modal.maxDepth")},{default:a(()=>[t(ve,{value:j.maxDepth,"onUpdate:value":r[12]||(r[12]=o=>j.maxDepth=o),min:1,max:10},null,8,["value"])]),_:1},8,["label"]),t(C,{label:e.$t("knowledgeGraph.reason_modal.direction")},{default:a(()=>[t(Q,{value:j.direction,"onUpdate:value":r[13]||(r[13]=o=>j.direction=o),style:{width:"100px"}},{default:a(()=>[t(F,{value:"out"},{default:a(()=>[c(s(e.$t("knowledgeGraph.reason_modal.directionOut")),1)]),_:1}),t(F,{value:"in"},{default:a(()=>[c(s(e.$t("knowledgeGraph.reason_modal.directionIn")),1)]),_:1}),t(F,{value:"both"},{default:a(()=>[c(s(e.$t("knowledgeGraph.reason_modal.directionBoth")),1)]),_:1})]),_:1},8,["value"])]),_:1},8,["label"]),t(C,null,{default:a(()=>[t(u,{type:"primary",loading:K.value,onClick:Oe},{default:a(()=>[c(s(e.$t("knowledgeGraph.reason_modal.run")),1)]),_:1},8,["loading"])]),_:1})]),_:1}),P.value.length===0&&!K.value?(d(),m("div",Ct,s(e.$t("knowledgeGraph.reason_modal.hint")),1)):(d(),R(Ue,{key:1,"data-source":P.value,size:"small"},{renderItem:a(({item:o})=>[t(Le,null,{default:a(()=>[t(D,{color:"purple"},{default:a(()=>[c("depth="+s(o.depth),1)]),_:2},1024),t(D,{color:ee(o.entity.type),style:{"margin-left":"8px"}},{default:a(()=>[c(s(o.entity.type),1)]),_:2},1032,["color"]),$("span",St,s(o.entity.name),1),$("span",Tt,s(o.entity.id.slice(0,12)),1)]),_:2},1024)]),_:1},8,["data-source"]))]),_:1},8,["open","title"])])}}},Ot=Be(Rt,[["__scopeId","data-v-d675e73f"]]);export{Ot as default};
@@ -1,2 +1,2 @@
1
- import{u as E}from"./ws-D_5-FRIb.js";import{_ as U}from"./index-Cw4v7ezB.js";import{R as q}from"./icons-DvZE-RKs.js";import{w as z,o as A,M as i,R as o,c as a,N as d,Q as D,S as F,P as h,F as Q,_ as j,n as w,K as l,r,f as L,L as u,O as b,u as I,Y as P}from"./vendor-B6ToihkA.js";const Y={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},G={style:{display:"flex",gap:"10px",margin:"12px 0"}},J={key:0,style:{"text-align":"center",padding:"40px",color:"var(--text-muted)"}},X={key:1,style:{"text-align":"center",padding:"40px",color:"var(--text-muted)"}},Z={key:2},ee=["innerHTML"],te={__name:"Logs",setup(ae){const C=E(),k=r("status"),v=r(!1),g=r(""),_=r(""),c=r(""),m=r(!0),n=r(null),T={status:"status",doctor:"doctor","skill-sources":"skill sources","llm-providers":"llm providers"},f=L(()=>_.value.split(`
2
- `)),p=L(()=>{if(!c.value)return f.value;const e=c.value.toLowerCase();return f.value.filter(t=>t.toLowerCase().includes(e))});function M(e){return e.includes("✖")||e.includes("error")||e.includes("Error")||e.includes("failed")?"line-error":e.includes("✔")||e.includes("✓")||e.includes("success")||e.includes("running")?"line-success":e.includes("warn")||e.includes("Warn")||e.includes("○")?"line-warn":e.startsWith(" ")||e.startsWith(" ")?"line-indent":""}function N(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function S(e){if(!c.value)return e;const t=c.value.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return e.replace(new RegExp(`(${t})`,"gi"),"<mark>$1</mark>")}async function x(){v.value=!0,g.value="",_.value="";const e=T[k.value]||"status";try{const{output:t}=await C.execute(e,3e4);_.value=t,m.value&&(await w(),n.value&&(n.value.scrollTop=n.value.scrollHeight))}catch(t){g.value=`执行失败: ${t.message}`,_.value=g.value}finally{v.value=!1}}return z(p,async()=>{m.value&&(await w(),n.value&&(n.value.scrollTop=n.value.scrollHeight))}),A(x),(e,t)=>{const B=l("a-checkbox"),H=l("a-button"),$=l("a-space"),y=l("a-tab-pane"),K=l("a-tabs"),O=l("a-input-search"),R=l("a-tag"),V=l("a-spin");return u(),i("div",null,[o("div",Y,[t[5]||(t[5]=o("div",null,[o("h2",{class:"page-title"},"日志查看"),o("p",{class:"page-sub"},"系统运行日志与诊断输出")],-1)),a($,null,{default:d(()=>[a(B,{checked:m.value,"onUpdate:checked":t[0]||(t[0]=s=>m.value=s)},{default:d(()=>[...t[3]||(t[3]=[b("自动滚动",-1)])]),_:1},8,["checked"]),a(H,{type:"primary",ghost:"",loading:v.value,onClick:x},{icon:d(()=>[a(I(q))]),default:d(()=>[t[4]||(t[4]=b(" 刷新 ",-1))]),_:1},8,["loading"])]),_:1})]),a(K,{activeKey:k.value,"onUpdate:activeKey":t[1]||(t[1]=s=>k.value=s),onChange:x,style:{"margin-bottom":"0"}},{default:d(()=>[a(y,{key:"status",tab:"系统状态"}),a(y,{key:"doctor",tab:"环境诊断"}),a(y,{key:"skill-sources",tab:"技能来源"}),a(y,{key:"llm-providers",tab:"LLM 提供商"})]),_:1},8,["activeKey"]),o("div",G,[a(O,{value:c.value,"onUpdate:value":t[2]||(t[2]=s=>c.value=s),placeholder:"搜索日志内容...","allow-clear":"",style:{flex:"1"}},null,8,["value"]),p.value.length!==f.value.length?(u(),D(R,{key:0,color:"blue"},{default:d(()=>[b(h(p.value.length)+" / "+h(f.value.length)+" 行 ",1)]),_:1})):F("",!0)]),o("div",{ref_key:"logContainer",ref:n,class:"log-box"},[v.value?(u(),i("div",J,[a(V,{size:"large"}),t[6]||(t[6]=o("div",{style:{"margin-top":"10px"}},"加载中...",-1))])):p.value.length?(u(),i("div",Z,[(u(!0),i(Q,null,j(p.value,(s,W)=>(u(),i("div",{key:W,class:P(["log-line",M(s)]),innerHTML:S(N(s))},null,10,ee))),128))])):(u(),i("div",X,h(g.value||"暂无日志内容,点击刷新加载"),1))],512)])}}},re=U(te,[["__scopeId","data-v-b316ead3"]]);export{re as default};
1
+ import{_ as E,u as U}from"./index-Bn_0bupT.js";import{R as q}from"./icons-B2G69bhT.js";import{w as z,o as A,M as i,R as o,c as a,N as d,Q as D,S as F,P as h,F as Q,Y as j,n as w,K as l,r,f as L,L as u,O as b,u as I,Z as P}from"./vendor-Ci2pTZ_t.js";const Y={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Z={style:{display:"flex",gap:"10px",margin:"12px 0"}},G={key:0,style:{"text-align":"center",padding:"40px",color:"var(--text-muted)"}},J={key:1,style:{"text-align":"center",padding:"40px",color:"var(--text-muted)"}},X={key:2},ee=["innerHTML"],te={__name:"Logs",setup(ae){const C=U(),k=r("status"),v=r(!1),g=r(""),_=r(""),c=r(""),m=r(!0),n=r(null),T={status:"status",doctor:"doctor","skill-sources":"skill sources","llm-providers":"llm providers"},f=L(()=>_.value.split(`
2
+ `)),p=L(()=>{if(!c.value)return f.value;const e=c.value.toLowerCase();return f.value.filter(t=>t.toLowerCase().includes(e))});function M(e){return e.includes("✖")||e.includes("error")||e.includes("Error")||e.includes("failed")?"line-error":e.includes("✔")||e.includes("✓")||e.includes("success")||e.includes("running")?"line-success":e.includes("warn")||e.includes("Warn")||e.includes("○")?"line-warn":e.startsWith(" ")||e.startsWith(" ")?"line-indent":""}function N(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function S(e){if(!c.value)return e;const t=c.value.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return e.replace(new RegExp(`(${t})`,"gi"),"<mark>$1</mark>")}async function x(){v.value=!0,g.value="",_.value="";const e=T[k.value]||"status";try{const{output:t}=await C.execute(e,3e4);_.value=t,m.value&&(await w(),n.value&&(n.value.scrollTop=n.value.scrollHeight))}catch(t){g.value=`执行失败: ${t.message}`,_.value=g.value}finally{v.value=!1}}return z(p,async()=>{m.value&&(await w(),n.value&&(n.value.scrollTop=n.value.scrollHeight))}),A(x),(e,t)=>{const B=l("a-checkbox"),H=l("a-button"),$=l("a-space"),y=l("a-tab-pane"),K=l("a-tabs"),O=l("a-input-search"),R=l("a-tag"),V=l("a-spin");return u(),i("div",null,[o("div",Y,[t[5]||(t[5]=o("div",null,[o("h2",{class:"page-title"},"日志查看"),o("p",{class:"page-sub"},"系统运行日志与诊断输出")],-1)),a($,null,{default:d(()=>[a(B,{checked:m.value,"onUpdate:checked":t[0]||(t[0]=s=>m.value=s)},{default:d(()=>[...t[3]||(t[3]=[b("自动滚动",-1)])]),_:1},8,["checked"]),a(H,{type:"primary",ghost:"",loading:v.value,onClick:x},{icon:d(()=>[a(I(q))]),default:d(()=>[t[4]||(t[4]=b(" 刷新 ",-1))]),_:1},8,["loading"])]),_:1})]),a(K,{activeKey:k.value,"onUpdate:activeKey":t[1]||(t[1]=s=>k.value=s),onChange:x,style:{"margin-bottom":"0"}},{default:d(()=>[a(y,{key:"status",tab:"系统状态"}),a(y,{key:"doctor",tab:"环境诊断"}),a(y,{key:"skill-sources",tab:"技能来源"}),a(y,{key:"llm-providers",tab:"LLM 提供商"})]),_:1},8,["activeKey"]),o("div",Z,[a(O,{value:c.value,"onUpdate:value":t[2]||(t[2]=s=>c.value=s),placeholder:"搜索日志内容...","allow-clear":"",style:{flex:"1"}},null,8,["value"]),p.value.length!==f.value.length?(u(),D(R,{key:0,color:"blue"},{default:d(()=>[b(h(p.value.length)+" / "+h(f.value.length)+" 行 ",1)]),_:1})):F("",!0)]),o("div",{ref_key:"logContainer",ref:n,class:"log-box"},[v.value?(u(),i("div",G,[a(V,{size:"large"}),t[6]||(t[6]=o("div",{style:{"margin-top":"10px"}},"加载中...",-1))])):p.value.length?(u(),i("div",X,[(u(!0),i(Q,null,j(p.value,(s,W)=>(u(),i("div",{key:W,class:P(["log-line",M(s)]),innerHTML:S(N(s))},null,10,ee))),128))])):(u(),i("div",J,h(g.value||"暂无日志内容,点击刷新加载"),1))],512)])}}},oe=E(te,[["__scopeId","data-v-b316ead3"]]);export{oe as default};
@@ -0,0 +1 @@
1
+ import{_ as Oe,u as je,b as Ne,d as g}from"./index-Bn_0bupT.js";import{s as Pe}from"./community-parser-CO25nZFt.js";import{R as De,Q as Be,l as ie,f as Ee,h as ue,aR as Ve,w as Ke}from"./icons-B2G69bhT.js";import{o as Je,M as f,R as h,P as d,c as l,N as o,K as v,r as _,L as i,O as k,u as y,F as $,Y as P,Q as S,S as b,f as R,a as ce}from"./vendor-Ci2pTZ_t.js";function X(n){const r=Pe(n);if(!r)return null;try{return JSON.parse(r)}catch{}const s=r.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!s)return null;try{return JSON.parse(s[0])}catch{return null}}const H=Object.freeze(["draft","published","deprecated","suspended"]),Qe=Object.freeze(["pending","running","success","failed","timeout"]);function D(n,r=0){return typeof n=="number"&&Number.isFinite(n)?n:r}function qe(n,r=0){if(!n||typeof n!="object")return null;const s=n.id||"";return s?{key:s,id:s,name:String(n.name||""),version:String(n.version||""),description:String(n.description||""),endpoint:n.endpoint||"",pricing:n.pricing??null,status:String(n.status||"draft").toLowerCase(),owner:n.owner||"",invocationCount:D(n.invocationCount??n.invocation_count,0),createdAt:n.createdAt??n.created_at??null,updatedAt:n.updatedAt??n.updated_at??null,_idx:r}:null}function We(n){const r=X(n);return Array.isArray(r)?r.map(qe).filter(Boolean):[]}function Ye(n,r=0){if(!n||typeof n!="object")return null;const s=n.id||"";return s?{key:s,id:s,serviceId:n.serviceId||n.service_id||"",callerId:n.callerId||n.caller_id||"",input:n.input??null,output:n.output??null,status:String(n.status||"success").toLowerCase(),durationMs:n.durationMs??n.duration_ms??null,error:n.error||"",createdAt:n.createdAt??n.created_at??null,_idx:r}:null}function Ge(n){const r=X(n);return Array.isArray(r)?r.map(Ye).filter(Boolean):[]}function He(n){const r={total:0,counts:{success:0,failed:0,timeout:0,pending:0,running:0},successRate:0,avgDurationMs:0,scopedToService:null},s=X(n);if(!s||typeof s!="object"||Array.isArray(s))return r;r.total=D(s.total,0),r.successRate=D(s.successRate??s.success_rate,0),r.avgDurationMs=D(s.avgDurationMs??s.avg_duration_ms,0),r.scopedToService=s.scopedToService??s.scoped_to_service??null;const C=s.counts&&typeof s.counts=="object"?s.counts:{};for(const w of Object.keys(r.counts))r.counts[w]=D(C[w],0);return r}function de(n){if(n==null||n==="")return"—";const r=typeof n=="number"?new Date(n):new Date(String(n));return isNaN(r.getTime())?String(n):r.toLocaleString("zh-CN",{hour12:!1})}const Xe={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Ze={class:"page-title"},et={class:"page-sub"},tt={class:"filter-bar"},at={style:{color:"var(--text-primary)","font-weight":"500"}},lt={key:1,style:{color:"var(--text-secondary)","font-size":"11px","margin-top":"2px"}},ot={key:2,style:{color:"#722ed1","font-weight":"500"}},nt={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"11px"}},st={key:1,style:{color:"var(--text-muted)"}},rt={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},it={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},ut={class:"filter-bar"},ct={style:{color:"var(--text-primary)"}},dt={style:{color:"var(--text-muted)","font-size":"11px","font-family":"monospace"}},pt={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"11px"}},mt={key:1,style:{color:"var(--text-muted)"}},vt={key:0,style:{color:"var(--text-secondary)","font-size":"12px"}},ft={key:1,style:{color:"var(--text-muted)"}},kt={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},yt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},bt={__name:"Marketplace",setup(n){const r=je(),{t:s}=Ne(),C=_(!1),w=_(!1),K=_(!1),z=_([]),J=_([]),I=_({total:0,counts:{success:0,failed:0,timeout:0,pending:0,running:0},successRate:0,avgDurationMs:0,scopedToService:null}),Q=_("services"),L=_(""),T=_(""),B=_(null),E=_(!1),V=_(!1),c=ce({name:"",version:"",description:"",endpoint:"",owner:"",status:"published"}),u=ce({serviceId:"",caller:"",status:"success",durationMs:null,error:""}),q=_(""),pe=R(()=>[{title:s("marketplace.serviceCols.name"),key:"name"},{title:s("marketplace.serviceCols.status"),key:"status",width:"120px"},{title:s("marketplace.serviceCols.invocationCount"),key:"invocationCount",width:"110px"},{title:s("marketplace.serviceCols.owner"),key:"owner",width:"180px"},{title:s("marketplace.serviceCols.createdAt"),key:"createdAt",width:"160px"},{title:s("marketplace.serviceCols.action"),key:"action",width:"180px"}]),me=R(()=>[{title:s("marketplace.invocationCols.service"),key:"service"},{title:s("marketplace.invocationCols.caller"),key:"caller",width:"180px"},{title:s("marketplace.invocationCols.status"),key:"status",width:"100px"},{title:s("marketplace.invocationCols.durationMs"),key:"durationMs",width:"110px"},{title:s("marketplace.invocationCols.createdAt"),key:"createdAt",width:"160px"}]),ve=R(()=>z.value.filter(e=>e.status==="published").length),fe=R(()=>I.value.successRate*100),ke=R(()=>{let e=z.value;if(L.value&&(e=e.filter(t=>t.status===L.value)),T.value){const t=T.value.toLowerCase();e=e.filter(p=>p.name.toLowerCase().includes(t))}return e}),ye=R(()=>B.value?J.value.filter(e=>e.serviceId===B.value):J.value);function M(e){const t=`marketplace.serviceStatusLabels.${e}`,p=s(t);return p===t?e:p}function be(e){return{draft:"default",published:"green",deprecated:"orange",suspended:"red"}[e]||"default"}function Z(e){const t=`marketplace.invocationStatusLabels.${e}`,p=s(t);return p===t?e:p}function _e(e){return{pending:"default",running:"processing",success:"green",failed:"red",timeout:"orange"}[e]||"default"}function ee(e){return e?e.length>28?e.slice(0,16)+"..."+e.slice(-8):e:""}function ge(e,t){return e?e.length>t?e.slice(0,t)+"...":e:""}function he(e){const t=z.value.find(p=>p.id===e);return t?t.name:s("marketplace.deletedService")}async function U(){C.value=!0;try{const[e,t,p]=await Promise.all([r.execute("marketplace list --limit 200 --json",1e4).catch(()=>({output:""})),r.execute("marketplace invocations --limit 200 --json",1e4).catch(()=>({output:""})),r.execute("marketplace stats --json",1e4).catch(()=>({output:""}))]);z.value=We(e.output),J.value=Ge(t.output),I.value=He(p.output)}catch(e){g.error(s("marketplace.msg.loadFailed")+": "+(e?.message||e))}finally{C.value=!1}}async function $e(){const e=c.name.trim();if(!e){g.warning(s("marketplace.msg.publishEmpty"));return}w.value=!0;try{const t=[`marketplace publish "${e.replace(/"/g,'\\"')}"`];c.version.trim()&&t.push(`--version "${c.version.trim().replace(/"/g,'\\"')}"`),c.description.trim()&&t.push(`--description "${c.description.trim().replace(/"/g,'\\"')}"`),c.endpoint.trim()&&t.push(`--endpoint "${c.endpoint.trim().replace(/"/g,'\\"')}"`),c.owner.trim()&&t.push(`--owner "${c.owner.trim().replace(/"/g,'\\"')}"`),t.push(`--status ${c.status}`),t.push("--json");const{output:p}=await r.execute(t.join(" "),15e3);if(/error|failed|失败/i.test(p)&&!/"id"/.test(p)){g.error(s("marketplace.msg.publishFailed")+": "+p.slice(0,120));return}g.success(s("marketplace.msg.publishSuccess")),E.value=!1,te(),await U()}catch(t){g.error(s("marketplace.msg.publishFailed")+": "+(t?.message||t))}finally{w.value=!1}}function xe(e){if(e.status!=="published"){g.warning(s("marketplace.msg.recordOnlyPublished"));return}u.serviceId=e.id,u.caller="",u.status="success",u.durationMs=null,u.error="",q.value=e.name,V.value=!0}async function Se(){K.value=!0;try{const e=[`marketplace record ${u.serviceId}`];u.caller.trim()&&e.push(`--caller "${u.caller.trim().replace(/"/g,'\\"')}"`),e.push(`--status ${u.status}`),u.durationMs!=null&&e.push(`--duration-ms ${u.durationMs}`),(u.status==="failed"||u.status==="timeout")&&u.error.trim()&&e.push(`--error "${u.error.trim().replace(/"/g,'\\"')}"`),e.push("--json");const{output:t}=await r.execute(e.join(" "),15e3);if(/error|failed|失败/i.test(t)&&!/"id"/.test(t)){g.error(s("marketplace.msg.recordFailed")+": "+t.slice(0,120));return}g.success(s("marketplace.msg.recordSuccess")),V.value=!1,Q.value="invocations",await U()}catch(e){g.error(s("marketplace.msg.recordFailed")+": "+(e?.message||e))}finally{K.value=!1}}async function Ce(e,t){if(t!==e.status)try{const{output:p}=await r.execute(`marketplace status ${e.id} ${t} --json`,1e4);if(/error|invalid|失败/i.test(p)&&!/"status"/.test(p)){g.error(s("marketplace.msg.transitionFailed")+": "+p.slice(0,120));return}g.success(s("marketplace.msg.transitionSuccess",{label:M(t)})),await U()}catch(p){g.error(s("marketplace.msg.transitionFailed")+": "+(p?.message||p))}}function te(){c.name="",c.version="",c.description="",c.endpoint="",c.owner="",c.status="published"}function we(){u.serviceId="",u.caller="",u.status="success",u.durationMs=null,u.error="",q.value=""}return Je(U),(e,t)=>{const p=v("a-button"),ze=v("a-space"),F=v("a-statistic"),O=v("a-card"),j=v("a-col"),Me=v("a-row"),ae=v("a-radio-button"),Ae=v("a-radio-group"),Re=v("a-input-search"),W=v("a-tag"),Ie=v("a-menu-item"),Le=v("a-menu"),Te=v("a-dropdown"),le=v("a-table"),oe=v("a-tab-pane"),Y=v("a-select-option"),G=v("a-select"),Ue=v("a-tabs"),N=v("a-input"),x=v("a-form-item"),ne=v("a-textarea"),se=v("a-form"),re=v("a-modal"),Fe=v("a-input-number");return i(),f("div",null,[h("div",Xe,[h("div",null,[h("h2",Ze,d(e.$t("marketplace.title")),1),h("p",et,d(e.$t("marketplace.subtitle")),1)]),l(ze,null,{default:o(()=>[l(p,{loading:C.value,onClick:U},{icon:o(()=>[l(y(De))]),default:o(()=>[k(" "+d(e.$t("marketplace.refresh")),1)]),_:1},8,["loading"]),l(p,{type:"primary",onClick:t[0]||(t[0]=a=>E.value=!0)},{icon:o(()=>[l(y(Be))]),default:o(()=>[k(" "+d(e.$t("marketplace.publish")),1)]),_:1})]),_:1})]),l(Me,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:o(()=>[l(j,{xs:12,sm:8,lg:5},{default:o(()=>[l(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[l(F,{title:e.$t("marketplace.stats.total"),value:z.value.length,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:o(()=>[l(y(ie))]),_:1},8,["title","value"])]),_:1})]),_:1}),l(j,{xs:12,sm:8,lg:5},{default:o(()=>[l(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[l(F,{title:e.$t("marketplace.stats.published"),value:ve.value,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:o(()=>[l(y(Ee))]),_:1},8,["title","value"])]),_:1})]),_:1}),l(j,{xs:12,sm:8,lg:5},{default:o(()=>[l(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[l(F,{title:e.$t("marketplace.stats.invocations"),value:I.value.total,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:o(()=>[l(y(ue))]),_:1},8,["title","value"])]),_:1})]),_:1}),l(j,{xs:12,sm:8,lg:5},{default:o(()=>[l(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[l(F,{title:e.$t("marketplace.stats.successRate"),value:fe.value,suffix:"%",precision:1,"value-style":{color:I.value.successRate>=.9?"#52c41a":"#faad14",fontSize:"20px"}},{prefix:o(()=>[l(y(Ve))]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),l(j,{xs:24,sm:8,lg:4},{default:o(()=>[l(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[l(F,{title:e.$t("marketplace.stats.avgDuration"),value:I.value.avgDurationMs,suffix:"ms","value-style":{color:"#faad14",fontSize:"20px"}},{prefix:o(()=>[l(y(Ke))]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),l(Ue,{activeKey:Q.value,"onUpdate:activeKey":t[4]||(t[4]=a=>Q.value=a),class:"market-tabs"},{default:o(()=>[l(oe,{key:"services",tab:e.$t("marketplace.tabs.services")},{default:o(()=>[h("div",tt,[l(Ae,{value:L.value,"onUpdate:value":t[1]||(t[1]=a=>L.value=a),size:"small","button-style":"solid"},{default:o(()=>[l(ae,{value:""},{default:o(()=>[k(d(e.$t("marketplace.filter.all")),1)]),_:1}),(i(!0),f($,null,P(y(H),a=>(i(),S(ae,{key:a,value:a},{default:o(()=>[k(d(M(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),l(Re,{value:T.value,"onUpdate:value":t[2]||(t[2]=a=>T.value=a),placeholder:e.$t("marketplace.filter.namePlaceholder"),"allow-clear":"",style:{"max-width":"280px"}},null,8,["value","placeholder"])]),l(le,{columns:pe.value,"data-source":ke.value,pagination:{pageSize:20,showTotal:a=>e.$t("marketplace.table.totalSuffix",{n:a})},size:"small",loading:C.value,style:{background:"var(--bg-card)"}},{bodyCell:o(({column:a,record:m})=>[a.key==="name"?(i(),f($,{key:0},[h("span",at,d(m.name),1),m.version?(i(),S(W,{key:0,color:"blue",style:{"margin-left":"6px","font-size":"10px"}},{default:o(()=>[k(" v"+d(m.version),1)]),_:2},1024)):b("",!0),m.description?(i(),f("div",lt,d(ge(m.description,80)),1)):b("",!0)],64)):b("",!0),a.key==="status"?(i(),S(W,{key:1,color:be(m.status)},{default:o(()=>[k(d(M(m.status)),1)]),_:2},1032,["color"])):b("",!0),a.key==="invocationCount"?(i(),f("span",ot,d(m.invocationCount),1)):b("",!0),a.key==="owner"?(i(),f($,{key:3},[m.owner?(i(),f("span",nt,d(ee(m.owner)),1)):(i(),f("span",st,"—"))],64)):b("",!0),a.key==="createdAt"?(i(),f("span",rt,d(y(de)(m.createdAt)),1)):b("",!0),a.key==="action"?(i(),f($,{key:5},[l(p,{size:"small",type:"link",onClick:A=>xe(m)},{default:o(()=>[k(d(e.$t("marketplace.table.actionRecord")),1)]),_:1},8,["onClick"]),l(Te,{trigger:["click"]},{overlay:o(()=>[l(Le,{onClick:A=>Ce(m,A.key)},{default:o(()=>[(i(!0),f($,null,P(y(H),A=>(i(),S(Ie,{key:A,disabled:A===m.status},{default:o(()=>[k(d(M(A)),1)]),_:2},1032,["disabled"]))),128))]),_:2},1032,["onClick"])]),default:o(()=>[l(p,{size:"small",type:"link"},{default:o(()=>[k(d(e.$t("marketplace.table.statusDropdown")),1)]),_:1})]),_:2},1024)],64)):b("",!0)]),emptyText:o(()=>[h("div",it,[l(y(ie),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),k(" "+d(L.value||T.value?e.$t("marketplace.table.emptyFiltered"):e.$t("marketplace.table.empty")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),l(oe,{key:"invocations",tab:e.$t("marketplace.tabs.invocations")},{default:o(()=>[h("div",ut,[l(G,{value:B.value,"onUpdate:value":t[3]||(t[3]=a=>B.value=a),placeholder:e.$t("marketplace.filter.byService"),"allow-clear":"",style:{width:"280px"},size:"small"},{default:o(()=>[(i(!0),f($,null,P(z.value,a=>(i(),S(Y,{key:a.id,value:a.id},{default:o(()=>[k(d(a.name)+" ("+d(M(a.status))+") ",1)]),_:2},1032,["value"]))),128))]),_:1},8,["value","placeholder"])]),l(le,{columns:me.value,"data-source":ye.value,pagination:{pageSize:20,showTotal:a=>e.$t("marketplace.table.totalSuffix",{n:a})},size:"small",loading:C.value,style:{background:"var(--bg-card)"}},{bodyCell:o(({column:a,record:m})=>[a.key==="service"?(i(),f($,{key:0},[h("span",ct,d(he(m.serviceId)),1),h("div",dt,d(m.serviceId.slice(0,8)),1)],64)):b("",!0),a.key==="caller"?(i(),f($,{key:1},[m.callerId?(i(),f("span",pt,d(ee(m.callerId)),1)):(i(),f("span",mt,"—"))],64)):b("",!0),a.key==="status"?(i(),S(W,{key:2,color:_e(m.status)},{default:o(()=>[k(d(Z(m.status)),1)]),_:2},1032,["color"])):b("",!0),a.key==="durationMs"?(i(),f($,{key:3},[m.durationMs!=null?(i(),f("span",vt,d(m.durationMs)+" ms ",1)):(i(),f("span",ft,"—"))],64)):b("",!0),a.key==="createdAt"?(i(),f("span",kt,d(y(de)(m.createdAt)),1)):b("",!0)]),emptyText:o(()=>[h("div",yt,[l(y(ue),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),k(" "+d(e.$t("marketplace.table.emptyInvocations")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"])]),_:1},8,["activeKey"]),l(re,{open:E.value,"onUpdate:open":t[11]||(t[11]=a=>E.value=a),title:e.$t("marketplace.publish_modal.title"),"confirm-loading":w.value,width:560,"ok-text":e.$t("marketplace.publish_modal.ok"),"cancel-text":e.$t("marketplace.publish_modal.cancel"),onOk:$e,onCancel:te},{default:o(()=>[l(se,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:o(()=>[l(x,{label:e.$t("marketplace.publish_modal.nameLabel"),required:""},{default:o(()=>[l(N,{value:c.name,"onUpdate:value":t[5]||(t[5]=a=>c.name=a),placeholder:e.$t("marketplace.publish_modal.namePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),l(x,{label:e.$t("marketplace.publish_modal.versionLabel")},{default:o(()=>[l(N,{value:c.version,"onUpdate:value":t[6]||(t[6]=a=>c.version=a),placeholder:e.$t("marketplace.publish_modal.versionPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),l(x,{label:e.$t("marketplace.publish_modal.descLabel")},{default:o(()=>[l(ne,{value:c.description,"onUpdate:value":t[7]||(t[7]=a=>c.description=a),"auto-size":{minRows:2,maxRows:5}},null,8,["value"])]),_:1},8,["label"]),l(x,{label:e.$t("marketplace.publish_modal.endpointLabel")},{default:o(()=>[l(N,{value:c.endpoint,"onUpdate:value":t[8]||(t[8]=a=>c.endpoint=a),placeholder:e.$t("marketplace.publish_modal.endpointPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),l(x,{label:e.$t("marketplace.publish_modal.ownerLabel")},{default:o(()=>[l(N,{value:c.owner,"onUpdate:value":t[9]||(t[9]=a=>c.owner=a),placeholder:e.$t("marketplace.publish_modal.ownerPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),l(x,{label:e.$t("marketplace.publish_modal.statusLabel")},{default:o(()=>[l(G,{value:c.status,"onUpdate:value":t[10]||(t[10]=a=>c.status=a)},{default:o(()=>[(i(!0),f($,null,P(y(H),a=>(i(),S(Y,{key:a,value:a},{default:o(()=>[k(d(M(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),l(re,{open:V.value,"onUpdate:open":t[16]||(t[16]=a=>V.value=a),title:e.$t("marketplace.record_modal.title",{name:q.value}),"confirm-loading":K.value,width:520,"ok-text":e.$t("marketplace.record_modal.ok"),"cancel-text":e.$t("marketplace.record_modal.cancel"),onOk:Se,onCancel:we},{default:o(()=>[l(se,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:o(()=>[l(x,{label:e.$t("marketplace.record_modal.callerLabel")},{default:o(()=>[l(N,{value:u.caller,"onUpdate:value":t[12]||(t[12]=a=>u.caller=a),placeholder:e.$t("marketplace.record_modal.callerPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),l(x,{label:e.$t("marketplace.record_modal.statusLabel")},{default:o(()=>[l(G,{value:u.status,"onUpdate:value":t[13]||(t[13]=a=>u.status=a)},{default:o(()=>[(i(!0),f($,null,P(y(Qe),a=>(i(),S(Y,{key:a,value:a},{default:o(()=>[k(d(Z(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),l(x,{label:e.$t("marketplace.record_modal.durationLabel")},{default:o(()=>[l(Fe,{value:u.durationMs,"onUpdate:value":t[14]||(t[14]=a=>u.durationMs=a),min:0,max:36e5,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"]),u.status==="failed"||u.status==="timeout"?(i(),S(x,{key:0,label:e.$t("marketplace.record_modal.errorLabel")},{default:o(()=>[l(ne,{value:u.error,"onUpdate:value":t[15]||(t[15]=a=>u.error=a),"auto-size":{minRows:2,maxRows:4}},null,8,["value"])]),_:1},8,["label"])):b("",!0)]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])])}}},xt=Oe(bt,[["__scopeId","data-v-72a2b91d"]]);export{xt as default};
@@ -1,5 +1,5 @@
1
- import{_ as Pe,a as Ee}from"./index-Cw4v7ezB.js";import{u as be}from"./ws-D_5-FRIb.js";import{al as Ne,R as qe,n as he,a9 as Fe,f as Ie,aj as Je,am as Be}from"./icons-DvZE-RKs.js";import{K as V,L as o,M as s,F as D,_ as le,$ as We,P as a,S as k,R as y,c as v,N as f,O as M,Q as A,u as i,f as W,o as He,r as $}from"./vendor-B6ToihkA.js";function ue(t){if(t&&typeof t.ok=="boolean"&&!t.ok)throw new Error(t.error||"MCP call failed");return t?.result??t??null}function Ke(){const t=be();async function e(m){const u=await t.sendRaw(m?{type:"mcp.list_tools",serverName:m}:{type:"mcp.list_tools"},15e3);return ue(u)}async function d(m,u,j={}){if(typeof m!="string"||!m)throw new Error("serverName is required");if(typeof u!="string"||!u)throw new Error("toolName is required");const w=await t.sendRaw({type:"mcp.call_tool",serverName:m,toolName:u,params:j},6e4);return ue(w)}async function c(m){const u=await t.sendRaw(m?{type:"mcp.list_resources",serverName:m}:{type:"mcp.list_resources"},15e3);return ue(u)}async function r(m,u){if(typeof m!="string"||!m)throw new Error("serverName is required");if(typeof u!="string"||!u)throw new Error("uri is required");const j=await t.sendRaw({type:"mcp.read_resource",serverName:m,uri:u},3e4);return ue(j)}return{listTools:e,callTool:d,listResources:c,readResource:r}}function ce(t){return!t||typeof t!="object"?[]:t.type!=="object"||!t.properties||typeof t.properties!="object"?[]:pe(t,[])}function pe(t,e){const d=new Set(Array.isArray(t.required)?t.required:[]),c=[],r=t.properties||{};for(const[m,u]of Object.entries(r)){if(!u||typeof u!="object")continue;const j=[...e,m],w=d.has(m);if(de(u.type)==="object"&&u.properties&&typeof u.properties=="object"){const O=pe(u,j);O.length===0?c.push(xe(j,u,w,"raw")):c.push(...O);continue}c.push(xe(j,u,w))}return c}function xe(t,e,d,c){const r=de(e.type),m=typeof e.description=="string"?e.description:"",u=t.join("."),j=e.title||t[t.length-1],w=Array.isArray(e.enum)&&e.enum.length>0;let T="raw",O=null,U;if(c)T=c;else if(w)T="select";else if(r==="string")T=De(e,m)?"textarea":"text";else if(r==="integer"||r==="number")T="number";else if(r==="boolean")T="boolean";else if(r==="array"){const P=e.items&&typeof e.items=="object"?e.items:null,x=P?de(P.type):null;x==="string"?(T="tags",O="string"):x==="object"&&P.properties&&typeof P.properties=="object"&&(T="objectList",U=pe(P,[]),U.length===0&&(T="raw",U=void 0))}return{name:u,path:t,type:r,widget:T,label:j,description:m,required:d,default:e.default,enum:w?e.enum.slice():void 0,itemsType:O,...U?{itemFields:U}:{}}}function de(t){return typeof t=="string"?t:Array.isArray(t)&&t.find(d=>d&&d!=="null")||"any"}function De(t,e){return t.format==="long-text"||t.format==="textarea"||typeof t.maxLength=="number"&&t.maxLength>200||e.length>120}function Qe(t){const e={};for(const d of t){if(d.default!==void 0){e[d.name]=me(d.default);continue}d.widget==="boolean"?e[d.name]=!1:d.widget==="tags"?e[d.name]=[]:d.widget==="number"?e[d.name]=null:d.widget==="raw"?e[d.name]="":d.widget==="objectList"?e[d.name]=[]:e[d.name]=""}return e}function me(t){if(Array.isArray(t))return t.map(me);if(t&&typeof t=="object"){const e={};for(const[d,c]of Object.entries(t))e[d]=me(c);return e}return t}function ke(t,e){const d={},c={};for(const r of t){const m=Array.isArray(r.path)?r.path:String(r.name).split("."),u=e?.[r.name];if(Ye(u,r.widget)){r.required&&(d[r.name]="必填");continue}if(r.widget==="number"){const w=typeof u=="number"?u:Number(u);if(Number.isNaN(w)){d[r.name]="必须是数字";continue}if(r.type==="integer"&&!Number.isInteger(w)){d[r.name]="必须是整数";continue}G(c,m,w);continue}if(r.widget==="boolean"){G(c,m,!!u);continue}if(r.widget==="tags"){const w=Array.isArray(u)?u:String(u).split(/[\n,]/).map(T=>T.trim()).filter(Boolean);G(c,m,w);continue}if(r.widget==="select"){if(Array.isArray(r.enum)&&!r.enum.includes(u)){d[r.name]="值不在允许的选项内";continue}G(c,m,u);continue}if(r.widget==="raw"){try{G(c,m,JSON.parse(u))}catch(w){d[r.name]=`JSON 解析失败:${w.message}`}continue}if(r.widget==="objectList"){if(!Array.isArray(u)){d[r.name]="必须是列表";continue}if(u.length===0)continue;const w=[];let T=!1;for(let O=0;O<u.length;O++){const U=u[O];if(!U||typeof U!="object"){d[`${r.name}[${O}]`]="必须是对象",T=!0;continue}const P=ke(r.itemFields||[],U);if(!P.ok){T=!0;for(const[x,S]of Object.entries(P.errors))d[`${r.name}[${O}].${x}`]=S;continue}w.push(P.params)}T||G(c,m,w);continue}G(c,m,u)}return Object.keys(d).length>0?{ok:!1,errors:d}:{ok:!0,params:c}}function G(t,e,d){if(e.length===1){t[e[0]]=d;return}let c=t;for(let r=0;r<e.length-1;r++){const m=e[r];(c[m]===void 0||typeof c[m]!="object"||Array.isArray(c[m]))&&(c[m]={}),c=c[m]}c[e[e.length-1]]=d}function Ye(t,e){return t==null?!0:e==="boolean"?!1:e==="number"?t===""||t===null:e==="tags"?Array.isArray(t)?t.length===0:String(t).trim()==="":e==="objectList"?t==null:typeof t=="string"?t.trim()==="":!1}const Ge={key:0,style:{color:"var(--text-muted)","font-size":"12px",padding:"8px 0"}},Xe={key:1,style:{display:"flex","flex-direction":"column",gap:"14px"}},Ze={key:0,style:{color:"var(--text-muted)","font-size":"10px","font-family":"monospace","margin-bottom":"4px"}},et={style:{"margin-bottom":"4px"}},tt={style:{"font-family":"monospace","font-size":"12px"}},ot={key:0,style:{color:"#ff4d4f","margin-left":"4px"}},nt={key:1,style:{color:"var(--text-muted)","font-size":"11px","margin-bottom":"4px"}},at={key:8},lt={style:{display:"flex","justify-content":"space-between","align-items":"center","margin-bottom":"8px"}},rt={style:{color:"var(--text-muted)","font-size":"11px"}},st={style:{display:"flex","flex-direction":"column",gap:"10px"}},it={style:{"font-family":"monospace","font-size":"11px"}},ut={key:0,style:{color:"#ff4d4f","margin-left":"4px"}},ct={key:5,style:{color:"#ff4d4f","font-size":"11px"}},dt={key:10,style:{color:"#ff4d4f","font-size":"11px","margin-top":"4px"}},mt={__name:"McpToolForm",props:{schema:{type:Object,default:null},modelValue:{type:Object,default:()=>({})},errors:{type:Object,default:()=>({})}},emits:["update:modelValue"],setup(t,{expose:e,emit:d}){const c=t,r=d,m=W(()=>ce(c.schema));function u(x){const S=Math.max(0,(x.path?.length??1)-1);return S>0?`margin-left: ${S*16}px;`:""}let j=null;function w(x){const S=x.path||[x.name];if(S.length<=1)return j=null,"";const L=S.slice(0,-1).join(".");return L===j?"":(j=L,L)}function T(x,S){r("update:modelValue",{...c.modelValue,[x]:S})}function O(x,S,L,N){const H=Array.isArray(c.modelValue[x])?c.modelValue[x].slice():[];H[S]={...H[S]||{},[L]:N},r("update:modelValue",{...c.modelValue,[x]:H})}function U(x){const S=Array.isArray(c.modelValue[x.name])?c.modelValue[x.name].slice():[],L={};for(const N of x.itemFields||[])N.default!==void 0?L[N.name]=N.default:N.widget==="boolean"?L[N.name]=!1:N.widget==="number"?L[N.name]=null:L[N.name]="";S.push(L),r("update:modelValue",{...c.modelValue,[x.name]:S})}function P(x,S){const L=Array.isArray(c.modelValue[x])?c.modelValue[x].slice():[];L.splice(S,1),r("update:modelValue",{...c.modelValue,[x]:L})}return e({fields:m}),(x,S)=>{const L=V("a-tag"),N=V("a-input"),H=V("a-textarea"),X=V("a-input-number"),F=V("a-switch"),Q=V("a-select"),K=V("a-button");return m.value.length?(o(),s("div",Xe,[(o(!0),s(D,null,le(m.value,n=>(o(),s("div",{key:n.name,style:We(u(n))},[w(n)!==""?(o(),s("div",Ze,a(w(n)),1)):k("",!0),y("div",et,[y("span",tt,a(n.label),1),n.required?(o(),s("span",ot,"*")):k("",!0),v(L,{size:"small",style:{"margin-left":"8px","font-size":"10px"}},{default:f(()=>[M(a(n.type)+a(n.itemsType?`<${n.itemsType}>`:""),1)]),_:2},1024)]),n.description?(o(),s("div",nt,a(n.description),1)):k("",!0),n.widget==="text"?(o(),A(N,{key:2,value:t.modelValue[n.name]??"",placeholder:n.default!==void 0?`默认 ${n.default}`:"",size:"small","onUpdate:value":z=>T(n.name,z)},null,8,["value","placeholder","onUpdate:value"])):n.widget==="textarea"?(o(),A(H,{key:3,value:t.modelValue[n.name]??"",rows:4,placeholder:n.default!==void 0?`默认 ${n.default}`:"","onUpdate:value":z=>T(n.name,z)},null,8,["value","placeholder","onUpdate:value"])):n.widget==="number"?(o(),A(X,{key:4,value:t.modelValue[n.name],size:"small",placeholder:n.default!==void 0?`默认 ${n.default}`:"",style:{width:"100%"},"onUpdate:value":z=>T(n.name,z)},null,8,["value","placeholder","onUpdate:value"])):n.widget==="boolean"?(o(),A(F,{key:5,checked:!!t.modelValue[n.name],"onUpdate:checked":z=>T(n.name,z)},null,8,["checked","onUpdate:checked"])):n.widget==="select"?(o(),A(Q,{key:6,value:t.modelValue[n.name]??void 0,options:(n.enum||[]).map(z=>({label:String(z),value:z})),size:"small",style:{width:"100%"},placeholder:n.default!==void 0?`默认 ${n.default}`:"请选择","onUpdate:value":z=>T(n.name,z)},null,8,["value","options","placeholder","onUpdate:value"])):n.widget==="tags"?(o(),A(Q,{key:7,value:Array.isArray(t.modelValue[n.name])?t.modelValue[n.name]:[],mode:"tags",size:"small",style:{width:"100%"},placeholder:"输入后回车添加","token-separators":[",",`
2
- `],"onUpdate:value":z=>T(n.name,z)},null,8,["value","onUpdate:value"])):n.widget==="objectList"?(o(),s("div",at,[(o(!0),s(D,null,le(Array.isArray(t.modelValue[n.name])?t.modelValue[n.name]:[],(z,I)=>(o(),s("div",{key:I,style:{border:"1px dashed var(--border-color)",padding:"10px","border-radius":"4px","margin-bottom":"8px",background:"var(--bg-card-hover)"}},[y("div",lt,[y("span",rt,"#"+a(I+1),1),v(K,{size:"small",type:"link",danger:"",onClick:C=>P(n.name,I)},{default:f(()=>[...S[0]||(S[0]=[M(" 删除 ",-1)])]),_:1},8,["onClick"])]),y("div",st,[(o(!0),s(D,null,le(n.itemFields||[],C=>(o(),s("div",{key:C.name,style:{display:"flex","flex-direction":"column",gap:"4px"}},[y("div",null,[y("span",it,a(C.label),1),C.required?(o(),s("span",ut,"*")):k("",!0),v(L,{size:"small",style:{"margin-left":"6px","font-size":"10px"}},{default:f(()=>[M(a(C.type),1)]),_:2},1024)]),C.widget==="text"?(o(),A(N,{key:0,value:z[C.name]??"",size:"small","onUpdate:value":E=>O(n.name,I,C.name,E)},null,8,["value","onUpdate:value"])):C.widget==="number"?(o(),A(X,{key:1,value:z[C.name],size:"small",style:{width:"100%"},"onUpdate:value":E=>O(n.name,I,C.name,E)},null,8,["value","onUpdate:value"])):C.widget==="boolean"?(o(),A(F,{key:2,checked:!!z[C.name],"onUpdate:checked":E=>O(n.name,I,C.name,E)},null,8,["checked","onUpdate:checked"])):C.widget==="select"?(o(),A(Q,{key:3,value:z[C.name]??void 0,options:(C.enum||[]).map(E=>({label:String(E),value:E})),size:"small",style:{width:"100%"},"onUpdate:value":E=>O(n.name,I,C.name,E)},null,8,["value","options","onUpdate:value"])):(o(),A(H,{key:4,value:typeof z[C.name]=="string"?z[C.name]:"",rows:2,placeholder:"复杂子字段 — 请用 JSON 模式",style:{"font-family":"monospace","font-size":"11px"},"onUpdate:value":E=>O(n.name,I,C.name,E)},null,8,["value","onUpdate:value"])),t.errors[`${n.name}[${I}].${C.name}`]?(o(),s("div",ct,a(t.errors[`${n.name}[${I}].${C.name}`]),1)):k("",!0)]))),128))])]))),128)),v(K,{size:"small",type:"dashed",block:"",onClick:z=>U(n)},{icon:f(()=>[v(i(Ne))]),default:f(()=>[S[1]||(S[1]=M(" 添加项 ",-1))]),_:1},8,["onClick"])])):(o(),A(H,{key:9,value:t.modelValue[n.name]??"",rows:3,placeholder:'复杂类型 — 请输入 JSON,如 {"key":"value"}',style:{"font-family":"monospace","font-size":"12px"},"onUpdate:value":z=>T(n.name,z)},null,8,["value","onUpdate:value"])),t.errors[n.name]?(o(),s("div",dt,a(t.errors[n.name]),1)):k("",!0)],4))),128))])):(o(),s("div",Ge," 此工具的 inputSchema 不是 type:object — 请用 JSON 模式编辑。 "))}}},pt={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},ft={class:"page-title"},yt={class:"page-sub"},vt={key:0,style:{"text-align":"center",padding:"30px"}},_t={key:1,style:{"text-align":"center",padding:"30px",color:"var(--text-muted)"}},gt={style:{background:"var(--bg-card-hover)",padding:"2px 6px","border-radius":"3px"}},ht={key:2,class:"servers-grid"},xt={style:{display:"flex","align-items":"center",gap:"10px","margin-bottom":"6px"}},bt={style:{color:"#e0e0e0","font-weight":"500","font-family":"monospace"}},kt={key:0,style:{color:"var(--text-secondary)","font-size":"11px","font-family":"monospace"}},wt={key:1,style:{color:"var(--text-secondary)","font-size":"11px","margin-top":"4px"}},Tt={key:0,style:{"text-align":"center",padding:"30px"}},zt={key:0,style:{color:"#91caff","font-family":"monospace","font-size":"12px"}},St={key:1,style:{color:"var(--text-muted)","font-size":"11px"}},Ct={style:{padding:"30px",color:"var(--text-muted)"}},$t={key:0,style:{"text-align":"center",padding:"30px"}},At={key:1,style:{"text-align":"center",padding:"30px",color:"var(--text-muted)"}},Vt={key:0,style:{color:"#87d068","font-family":"monospace","font-size":"11px","word-break":"break-all"}},jt={key:1,style:{color:"var(--text-muted)","font-size":"10px"}},Ot={style:{padding:"30px",color:"var(--text-muted)"}},Ut={key:0,style:{display:"flex","flex-direction":"column",gap:"12px"}},Lt={style:{color:"var(--text-muted)","font-size":"11px","margin-bottom":"4px"}},Rt={style:{"font-family":"monospace","font-size":"13px"}},Mt={style:{color:"#91caff"}},Pt={key:0},Et={style:{color:"var(--text-muted)","font-size":"11px","margin-bottom":"4px"}},Nt={style:{"font-size":"12px"}},qt={key:1},Ft={style:{color:"var(--text-muted)","font-size":"11px","margin-bottom":"4px"}},It={style:{background:"var(--bg-card-hover)",padding:"8px","border-radius":"4px","font-size":"11px","max-height":"140px",overflow:"auto",margin:"0"}},Jt={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"4px"}},Bt={style:{color:"var(--text-muted)","font-size":"11px"}},Wt={key:0,style:{color:"#ff4d4f","font-size":"11px","margin-top":"4px"}},Ht={key:2,style:{background:"#2a1517",border:"1px solid #5c2426",padding:"8px","border-radius":"4px"}},Kt={style:{color:"#ff4d4f","font-size":"11px","font-weight":"500","margin-bottom":"4px"}},Dt={style:{color:"#ff7875","font-size":"11px",margin:"0","white-space":"pre-wrap"}},Qt={key:3},Yt={style:{color:"var(--text-muted)","font-size":"11px","margin-bottom":"4px"}},Gt={style:{background:"var(--bg-card-hover)",padding:"8px","border-radius":"4px","font-size":"11px","max-height":"240px",overflow:"auto",margin:"0","white-space":"pre-wrap"}},Xt={key:0,style:{display:"flex","flex-direction":"column",gap:"12px"}},Zt={style:{color:"var(--text-muted)","font-size":"11px","margin-bottom":"4px"}},eo={style:{"font-family":"monospace","font-size":"12px","word-break":"break-all"}},to={style:{color:"#87d068"}},oo={key:0},no={style:{color:"var(--text-muted)","font-size":"11px","margin-bottom":"4px"}},ao={style:{"font-size":"12px"}},lo={key:1,style:{"text-align":"center",padding:"20px"}},ro={key:2,style:{background:"#2a1517",border:"1px solid #5c2426",padding:"8px","border-radius":"4px"}},so={style:{color:"#ff4d4f","font-size":"11px","font-weight":"500","margin-bottom":"4px"}},io={style:{color:"#ff7875","font-size":"11px",margin:"0","white-space":"pre-wrap"}},uo={key:3},co={style:{color:"var(--text-muted)","font-size":"11px","margin-bottom":"4px"}},mo={style:{display:"flex",gap:"8px","align-items":"center","margin-bottom":"4px"}},po={key:1,style:{color:"var(--text-muted)","font-size":"10px","font-family":"monospace"}},fo={key:0,style:{background:"var(--bg-card-hover)",padding:"8px","border-radius":"4px","font-size":"11px","max-height":"360px",overflow:"auto",margin:"0","white-space":"pre-wrap","word-break":"break-all"}},yo={key:1,style:{"font-size":"11px",color:"var(--text-muted)","font-style":"italic"}},vo={key:2,style:{"font-size":"11px",color:"var(--text-muted)","font-style":"italic"}},_o={__name:"McpTools",setup(t){const{t:e}=Ee(),d=be(),c=Ke(),r=$(!1),m=$([]),u=$([]),j=$(""),w=$(""),T=W(()=>{if(!j.value)return u.value;const p=j.value.toLowerCase();return u.value.filter(l=>l.name?.toLowerCase().includes(p)||l.description?.toLowerCase().includes(p))}),O=W(()=>[{title:e("mcpTools.toolColumns.name"),key:"name",dataIndex:"name",width:"28%"},{title:e("mcpTools.toolColumns.server"),key:"server",dataIndex:"server",width:"18%"},{title:e("mcpTools.toolColumns.description"),dataIndex:"description",ellipsis:!0},{title:e("mcpTools.toolColumns.action"),key:"action",width:110}]),U=$([]),P=$(""),x=$(!1),S=$(!1),L=W(()=>[{title:e("mcpTools.resourceColumns.uri"),key:"uri",dataIndex:"uri"},{title:e("mcpTools.resourceColumns.server"),key:"server",dataIndex:"server",width:"15%"},{title:e("mcpTools.resourceColumns.mime"),key:"mimeType",dataIndex:"mimeType",width:"15%"},{title:e("mcpTools.resourceColumns.action"),key:"action",width:90}]),N=W(()=>{if(!P.value)return U.value;const p=P.value.toLowerCase();return U.value.filter(l=>l.uri?.toLowerCase().includes(p)||l.name?.toLowerCase().includes(p)||l.description?.toLowerCase().includes(p))});async function H(){if(!x.value){x.value=!0;try{const p=await c.listResources();if(!p||!Array.isArray(p.servers)){U.value=[];return}const l=[];for(const g of p.servers)if(Array.isArray(g.resources))for(const h of g.resources)l.push({key:`${g.name}.${h.uri}`,uri:h.uri,name:h.name||"",description:h.description||"",mimeType:h.mimeType||null,server:g.name});U.value=l,S.value=!0}catch(p){console.error("listResources failed:",p),U.value=[]}finally{x.value=!1}}}const X=$(!1),F=$(null),Q=$(!1),K=$([]),n=$(""),z=W(()=>F.value?e("mcpTools.read.modalTitle",{server:F.value.server}):e("mcpTools.read.fallbackTitle"));async function I(p){F.value=p,K.value=[],n.value="",X.value=!0,Q.value=!0;try{const l=await c.readResource(p.server,p.uri);l&&Array.isArray(l.contents)?K.value=l.contents:K.value=l?[l]:[]}catch(l){n.value=l?.message||String(l)}finally{Q.value=!1}}function C(){X.value=!1}const E=$(!1),R=$(null),oe=$("form"),re=$({}),se=$({}),ie=$("{}"),ne=$(!1),Y=$(null),ae=$(""),we=W(()=>ce(R.value?.inputSchema||null).length>0),Te=W(()=>R.value?e("mcpTools.run.modalTitle",{server:R.value.server,tool:R.value.name}):e("mcpTools.run.fallbackTitle")),ze=W(()=>{if(!R.value?.inputSchema)return"";try{return JSON.stringify(R.value.inputSchema,null,2)}catch{return String(R.value.inputSchema)}}),Se=W(()=>{if(Y.value===null)return"";try{return JSON.stringify(Y.value,null,2)}catch{return String(Y.value)}}),Z=$("");function Ce(p){R.value=p,ie.value="{}",Y.value=null,ae.value="",Z.value="",se.value={};const l=ce(p?.inputSchema||null);oe.value=l.length>0?"form":"json",re.value=Qe(l),E.value=!0}function $e(){E.value=!1}async function Ae(){if(!R.value||ne.value)return;Z.value="",se.value={};let p={};if(oe.value==="form"){const l=ce(R.value.inputSchema||null),g=ke(l,re.value);if(!g.ok){se.value=g.errors;return}p=g.params}else{const l=(ie.value||"").trim();if(l){try{p=JSON.parse(l)}catch(g){Z.value=g.message||"invalid JSON";return}if(p===null||typeof p!="object"||Array.isArray(p)){Z.value=e("mcpTools.run.paramsMustBeObject");return}}}ne.value=!0,ae.value="",Y.value=null;try{const l=await c.callTool(R.value.server,R.value.name,p);Y.value=l}catch(l){ae.value=l?.message||String(l)}finally{ne.value=!1}}async function Ve(){const p=await c.listTools();if(!p||!Array.isArray(p.servers))return!1;m.value=p.servers.map(g=>({key:g.name,name:g.name,command:"",args:[],description:g.state?`state: ${g.state}`:"",error:g.error||null}));const l=[];for(const g of p.servers)if(Array.isArray(g.tools))for(const h of g.tools)l.push({key:`${g.name}.${h.name}`,name:h.name,description:h.description||"",server:g.name,inputSchema:h.inputSchema||null});return u.value=l,!0}async function fe(){r.value=!0;try{try{if(await Ve()){w.value="topic";return}}catch(g){const h=g?.message||"";h.includes("mcp_unavailable")||h.includes("no_handler")||h.includes("UNKNOWN_TYPE")||console.error("MCP topic load failed:",g)}const[p,l]=await Promise.all([d.execute("mcp servers",15e3).catch(()=>({output:""})),d.execute("mcp tools",15e3).catch(()=>({output:""}))]);m.value=je(p.output),u.value=Oe(l.output),w.value="cli"}catch(p){console.error("MCP load failed:",p)}finally{r.value=!1,w.value==="topic"?H():(U.value=[],S.value=!1)}}function je(p){const l=[],g=p.split(`
1
+ import{u as be,_ as Pe,b as Ee}from"./index-Bn_0bupT.js";import{ap as Ne,R as qe,n as he,ab as Fe,f as Ie,an as Je,aq as Be}from"./icons-B2G69bhT.js";import{K as V,L as o,M as s,F as Y,Y as le,$ as We,P as a,S as k,R as y,c as v,N as f,O as M,Q as A,u as i,f as W,o as He,r as $}from"./vendor-Ci2pTZ_t.js";function ue(t){if(t&&typeof t.ok=="boolean"&&!t.ok)throw new Error(t.error||"MCP call failed");return t?.result??t??null}function Ke(){const t=be();async function e(m){const u=await t.sendRaw(m?{type:"mcp.list_tools",serverName:m}:{type:"mcp.list_tools"},15e3);return ue(u)}async function d(m,u,j={}){if(typeof m!="string"||!m)throw new Error("serverName is required");if(typeof u!="string"||!u)throw new Error("toolName is required");const w=await t.sendRaw({type:"mcp.call_tool",serverName:m,toolName:u,params:j},6e4);return ue(w)}async function c(m){const u=await t.sendRaw(m?{type:"mcp.list_resources",serverName:m}:{type:"mcp.list_resources"},15e3);return ue(u)}async function r(m,u){if(typeof m!="string"||!m)throw new Error("serverName is required");if(typeof u!="string"||!u)throw new Error("uri is required");const j=await t.sendRaw({type:"mcp.read_resource",serverName:m,uri:u},3e4);return ue(j)}return{listTools:e,callTool:d,listResources:c,readResource:r}}function ce(t){return!t||typeof t!="object"?[]:t.type!=="object"||!t.properties||typeof t.properties!="object"?[]:pe(t,[])}function pe(t,e){const d=new Set(Array.isArray(t.required)?t.required:[]),c=[],r=t.properties||{};for(const[m,u]of Object.entries(r)){if(!u||typeof u!="object")continue;const j=[...e,m],w=d.has(m);if(de(u.type)==="object"&&u.properties&&typeof u.properties=="object"){const O=pe(u,j);O.length===0?c.push(xe(j,u,w,"raw")):c.push(...O);continue}c.push(xe(j,u,w))}return c}function xe(t,e,d,c){const r=de(e.type),m=typeof e.description=="string"?e.description:"",u=t.join("."),j=e.title||t[t.length-1],w=Array.isArray(e.enum)&&e.enum.length>0;let T="raw",O=null,U;if(c)T=c;else if(w)T="select";else if(r==="string")T=Ye(e,m)?"textarea":"text";else if(r==="integer"||r==="number")T="number";else if(r==="boolean")T="boolean";else if(r==="array"){const P=e.items&&typeof e.items=="object"?e.items:null,x=P?de(P.type):null;x==="string"?(T="tags",O="string"):x==="object"&&P.properties&&typeof P.properties=="object"&&(T="objectList",U=pe(P,[]),U.length===0&&(T="raw",U=void 0))}return{name:u,path:t,type:r,widget:T,label:j,description:m,required:d,default:e.default,enum:w?e.enum.slice():void 0,itemsType:O,...U?{itemFields:U}:{}}}function de(t){return typeof t=="string"?t:Array.isArray(t)&&t.find(d=>d&&d!=="null")||"any"}function Ye(t,e){return t.format==="long-text"||t.format==="textarea"||typeof t.maxLength=="number"&&t.maxLength>200||e.length>120}function De(t){const e={};for(const d of t){if(d.default!==void 0){e[d.name]=me(d.default);continue}d.widget==="boolean"?e[d.name]=!1:d.widget==="tags"?e[d.name]=[]:d.widget==="number"?e[d.name]=null:d.widget==="raw"?e[d.name]="":d.widget==="objectList"?e[d.name]=[]:e[d.name]=""}return e}function me(t){if(Array.isArray(t))return t.map(me);if(t&&typeof t=="object"){const e={};for(const[d,c]of Object.entries(t))e[d]=me(c);return e}return t}function ke(t,e){const d={},c={};for(const r of t){const m=Array.isArray(r.path)?r.path:String(r.name).split("."),u=e?.[r.name];if(Qe(u,r.widget)){r.required&&(d[r.name]="必填");continue}if(r.widget==="number"){const w=typeof u=="number"?u:Number(u);if(Number.isNaN(w)){d[r.name]="必须是数字";continue}if(r.type==="integer"&&!Number.isInteger(w)){d[r.name]="必须是整数";continue}G(c,m,w);continue}if(r.widget==="boolean"){G(c,m,!!u);continue}if(r.widget==="tags"){const w=Array.isArray(u)?u:String(u).split(/[\n,]/).map(T=>T.trim()).filter(Boolean);G(c,m,w);continue}if(r.widget==="select"){if(Array.isArray(r.enum)&&!r.enum.includes(u)){d[r.name]="值不在允许的选项内";continue}G(c,m,u);continue}if(r.widget==="raw"){try{G(c,m,JSON.parse(u))}catch(w){d[r.name]=`JSON 解析失败:${w.message}`}continue}if(r.widget==="objectList"){if(!Array.isArray(u)){d[r.name]="必须是列表";continue}if(u.length===0)continue;const w=[];let T=!1;for(let O=0;O<u.length;O++){const U=u[O];if(!U||typeof U!="object"){d[`${r.name}[${O}]`]="必须是对象",T=!0;continue}const P=ke(r.itemFields||[],U);if(!P.ok){T=!0;for(const[x,S]of Object.entries(P.errors))d[`${r.name}[${O}].${x}`]=S;continue}w.push(P.params)}T||G(c,m,w);continue}G(c,m,u)}return Object.keys(d).length>0?{ok:!1,errors:d}:{ok:!0,params:c}}function G(t,e,d){if(e.length===1){t[e[0]]=d;return}let c=t;for(let r=0;r<e.length-1;r++){const m=e[r];(c[m]===void 0||typeof c[m]!="object"||Array.isArray(c[m]))&&(c[m]={}),c=c[m]}c[e[e.length-1]]=d}function Qe(t,e){return t==null?!0:e==="boolean"?!1:e==="number"?t===""||t===null:e==="tags"?Array.isArray(t)?t.length===0:String(t).trim()==="":e==="objectList"?t==null:typeof t=="string"?t.trim()==="":!1}const Ge={key:0,style:{color:"var(--text-muted)","font-size":"12px",padding:"8px 0"}},Xe={key:1,style:{display:"flex","flex-direction":"column",gap:"14px"}},Ze={key:0,style:{color:"var(--text-muted)","font-size":"10px","font-family":"monospace","margin-bottom":"4px"}},et={style:{"margin-bottom":"4px"}},tt={style:{"font-family":"monospace","font-size":"12px"}},ot={key:0,style:{color:"#ff4d4f","margin-left":"4px"}},nt={key:1,style:{color:"var(--text-muted)","font-size":"11px","margin-bottom":"4px"}},at={key:8},lt={style:{display:"flex","justify-content":"space-between","align-items":"center","margin-bottom":"8px"}},rt={style:{color:"var(--text-muted)","font-size":"11px"}},st={style:{display:"flex","flex-direction":"column",gap:"10px"}},it={style:{"font-family":"monospace","font-size":"11px"}},ut={key:0,style:{color:"#ff4d4f","margin-left":"4px"}},ct={key:5,style:{color:"#ff4d4f","font-size":"11px"}},dt={key:10,style:{color:"#ff4d4f","font-size":"11px","margin-top":"4px"}},mt={__name:"McpToolForm",props:{schema:{type:Object,default:null},modelValue:{type:Object,default:()=>({})},errors:{type:Object,default:()=>({})}},emits:["update:modelValue"],setup(t,{expose:e,emit:d}){const c=t,r=d,m=W(()=>ce(c.schema));function u(x){const S=Math.max(0,(x.path?.length??1)-1);return S>0?`margin-left: ${S*16}px;`:""}let j=null;function w(x){const S=x.path||[x.name];if(S.length<=1)return j=null,"";const L=S.slice(0,-1).join(".");return L===j?"":(j=L,L)}function T(x,S){r("update:modelValue",{...c.modelValue,[x]:S})}function O(x,S,L,N){const H=Array.isArray(c.modelValue[x])?c.modelValue[x].slice():[];H[S]={...H[S]||{},[L]:N},r("update:modelValue",{...c.modelValue,[x]:H})}function U(x){const S=Array.isArray(c.modelValue[x.name])?c.modelValue[x.name].slice():[],L={};for(const N of x.itemFields||[])N.default!==void 0?L[N.name]=N.default:N.widget==="boolean"?L[N.name]=!1:N.widget==="number"?L[N.name]=null:L[N.name]="";S.push(L),r("update:modelValue",{...c.modelValue,[x.name]:S})}function P(x,S){const L=Array.isArray(c.modelValue[x])?c.modelValue[x].slice():[];L.splice(S,1),r("update:modelValue",{...c.modelValue,[x]:L})}return e({fields:m}),(x,S)=>{const L=V("a-tag"),N=V("a-input"),H=V("a-textarea"),X=V("a-input-number"),F=V("a-switch"),D=V("a-select"),K=V("a-button");return m.value.length?(o(),s("div",Xe,[(o(!0),s(Y,null,le(m.value,n=>(o(),s("div",{key:n.name,style:We(u(n))},[w(n)!==""?(o(),s("div",Ze,a(w(n)),1)):k("",!0),y("div",et,[y("span",tt,a(n.label),1),n.required?(o(),s("span",ot,"*")):k("",!0),v(L,{size:"small",style:{"margin-left":"8px","font-size":"10px"}},{default:f(()=>[M(a(n.type)+a(n.itemsType?`<${n.itemsType}>`:""),1)]),_:2},1024)]),n.description?(o(),s("div",nt,a(n.description),1)):k("",!0),n.widget==="text"?(o(),A(N,{key:2,value:t.modelValue[n.name]??"",placeholder:n.default!==void 0?`默认 ${n.default}`:"",size:"small","onUpdate:value":z=>T(n.name,z)},null,8,["value","placeholder","onUpdate:value"])):n.widget==="textarea"?(o(),A(H,{key:3,value:t.modelValue[n.name]??"",rows:4,placeholder:n.default!==void 0?`默认 ${n.default}`:"","onUpdate:value":z=>T(n.name,z)},null,8,["value","placeholder","onUpdate:value"])):n.widget==="number"?(o(),A(X,{key:4,value:t.modelValue[n.name],size:"small",placeholder:n.default!==void 0?`默认 ${n.default}`:"",style:{width:"100%"},"onUpdate:value":z=>T(n.name,z)},null,8,["value","placeholder","onUpdate:value"])):n.widget==="boolean"?(o(),A(F,{key:5,checked:!!t.modelValue[n.name],"onUpdate:checked":z=>T(n.name,z)},null,8,["checked","onUpdate:checked"])):n.widget==="select"?(o(),A(D,{key:6,value:t.modelValue[n.name]??void 0,options:(n.enum||[]).map(z=>({label:String(z),value:z})),size:"small",style:{width:"100%"},placeholder:n.default!==void 0?`默认 ${n.default}`:"请选择","onUpdate:value":z=>T(n.name,z)},null,8,["value","options","placeholder","onUpdate:value"])):n.widget==="tags"?(o(),A(D,{key:7,value:Array.isArray(t.modelValue[n.name])?t.modelValue[n.name]:[],mode:"tags",size:"small",style:{width:"100%"},placeholder:"输入后回车添加","token-separators":[",",`
2
+ `],"onUpdate:value":z=>T(n.name,z)},null,8,["value","onUpdate:value"])):n.widget==="objectList"?(o(),s("div",at,[(o(!0),s(Y,null,le(Array.isArray(t.modelValue[n.name])?t.modelValue[n.name]:[],(z,I)=>(o(),s("div",{key:I,style:{border:"1px dashed var(--border-color)",padding:"10px","border-radius":"4px","margin-bottom":"8px",background:"var(--bg-card-hover)"}},[y("div",lt,[y("span",rt,"#"+a(I+1),1),v(K,{size:"small",type:"link",danger:"",onClick:C=>P(n.name,I)},{default:f(()=>[...S[0]||(S[0]=[M(" 删除 ",-1)])]),_:1},8,["onClick"])]),y("div",st,[(o(!0),s(Y,null,le(n.itemFields||[],C=>(o(),s("div",{key:C.name,style:{display:"flex","flex-direction":"column",gap:"4px"}},[y("div",null,[y("span",it,a(C.label),1),C.required?(o(),s("span",ut,"*")):k("",!0),v(L,{size:"small",style:{"margin-left":"6px","font-size":"10px"}},{default:f(()=>[M(a(C.type),1)]),_:2},1024)]),C.widget==="text"?(o(),A(N,{key:0,value:z[C.name]??"",size:"small","onUpdate:value":E=>O(n.name,I,C.name,E)},null,8,["value","onUpdate:value"])):C.widget==="number"?(o(),A(X,{key:1,value:z[C.name],size:"small",style:{width:"100%"},"onUpdate:value":E=>O(n.name,I,C.name,E)},null,8,["value","onUpdate:value"])):C.widget==="boolean"?(o(),A(F,{key:2,checked:!!z[C.name],"onUpdate:checked":E=>O(n.name,I,C.name,E)},null,8,["checked","onUpdate:checked"])):C.widget==="select"?(o(),A(D,{key:3,value:z[C.name]??void 0,options:(C.enum||[]).map(E=>({label:String(E),value:E})),size:"small",style:{width:"100%"},"onUpdate:value":E=>O(n.name,I,C.name,E)},null,8,["value","options","onUpdate:value"])):(o(),A(H,{key:4,value:typeof z[C.name]=="string"?z[C.name]:"",rows:2,placeholder:"复杂子字段 — 请用 JSON 模式",style:{"font-family":"monospace","font-size":"11px"},"onUpdate:value":E=>O(n.name,I,C.name,E)},null,8,["value","onUpdate:value"])),t.errors[`${n.name}[${I}].${C.name}`]?(o(),s("div",ct,a(t.errors[`${n.name}[${I}].${C.name}`]),1)):k("",!0)]))),128))])]))),128)),v(K,{size:"small",type:"dashed",block:"",onClick:z=>U(n)},{icon:f(()=>[v(i(Ne))]),default:f(()=>[S[1]||(S[1]=M(" 添加项 ",-1))]),_:1},8,["onClick"])])):(o(),A(H,{key:9,value:t.modelValue[n.name]??"",rows:3,placeholder:'复杂类型 — 请输入 JSON,如 {"key":"value"}',style:{"font-family":"monospace","font-size":"12px"},"onUpdate:value":z=>T(n.name,z)},null,8,["value","onUpdate:value"])),t.errors[n.name]?(o(),s("div",dt,a(t.errors[n.name]),1)):k("",!0)],4))),128))])):(o(),s("div",Ge," 此工具的 inputSchema 不是 type:object — 请用 JSON 模式编辑。 "))}}},pt={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},ft={class:"page-title"},yt={class:"page-sub"},vt={key:0,style:{"text-align":"center",padding:"30px"}},_t={key:1,style:{"text-align":"center",padding:"30px",color:"var(--text-muted)"}},gt={style:{background:"var(--bg-card-hover)",padding:"2px 6px","border-radius":"3px"}},ht={key:2,class:"servers-grid"},xt={style:{display:"flex","align-items":"center",gap:"10px","margin-bottom":"6px"}},bt={style:{color:"#e0e0e0","font-weight":"500","font-family":"monospace"}},kt={key:0,style:{color:"var(--text-secondary)","font-size":"11px","font-family":"monospace"}},wt={key:1,style:{color:"var(--text-secondary)","font-size":"11px","margin-top":"4px"}},Tt={key:0,style:{"text-align":"center",padding:"30px"}},zt={key:0,style:{color:"#91caff","font-family":"monospace","font-size":"12px"}},St={key:1,style:{color:"var(--text-muted)","font-size":"11px"}},Ct={style:{padding:"30px",color:"var(--text-muted)"}},$t={key:0,style:{"text-align":"center",padding:"30px"}},At={key:1,style:{"text-align":"center",padding:"30px",color:"var(--text-muted)"}},Vt={key:0,style:{color:"#87d068","font-family":"monospace","font-size":"11px","word-break":"break-all"}},jt={key:1,style:{color:"var(--text-muted)","font-size":"10px"}},Ot={style:{padding:"30px",color:"var(--text-muted)"}},Ut={key:0,style:{display:"flex","flex-direction":"column",gap:"12px"}},Lt={style:{color:"var(--text-muted)","font-size":"11px","margin-bottom":"4px"}},Rt={style:{"font-family":"monospace","font-size":"13px"}},Mt={style:{color:"#91caff"}},Pt={key:0},Et={style:{color:"var(--text-muted)","font-size":"11px","margin-bottom":"4px"}},Nt={style:{"font-size":"12px"}},qt={key:1},Ft={style:{color:"var(--text-muted)","font-size":"11px","margin-bottom":"4px"}},It={style:{background:"var(--bg-card-hover)",padding:"8px","border-radius":"4px","font-size":"11px","max-height":"140px",overflow:"auto",margin:"0"}},Jt={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"4px"}},Bt={style:{color:"var(--text-muted)","font-size":"11px"}},Wt={key:0,style:{color:"#ff4d4f","font-size":"11px","margin-top":"4px"}},Ht={key:2,style:{background:"#2a1517",border:"1px solid #5c2426",padding:"8px","border-radius":"4px"}},Kt={style:{color:"#ff4d4f","font-size":"11px","font-weight":"500","margin-bottom":"4px"}},Yt={style:{color:"#ff7875","font-size":"11px",margin:"0","white-space":"pre-wrap"}},Dt={key:3},Qt={style:{color:"var(--text-muted)","font-size":"11px","margin-bottom":"4px"}},Gt={style:{background:"var(--bg-card-hover)",padding:"8px","border-radius":"4px","font-size":"11px","max-height":"240px",overflow:"auto",margin:"0","white-space":"pre-wrap"}},Xt={key:0,style:{display:"flex","flex-direction":"column",gap:"12px"}},Zt={style:{color:"var(--text-muted)","font-size":"11px","margin-bottom":"4px"}},eo={style:{"font-family":"monospace","font-size":"12px","word-break":"break-all"}},to={style:{color:"#87d068"}},oo={key:0},no={style:{color:"var(--text-muted)","font-size":"11px","margin-bottom":"4px"}},ao={style:{"font-size":"12px"}},lo={key:1,style:{"text-align":"center",padding:"20px"}},ro={key:2,style:{background:"#2a1517",border:"1px solid #5c2426",padding:"8px","border-radius":"4px"}},so={style:{color:"#ff4d4f","font-size":"11px","font-weight":"500","margin-bottom":"4px"}},io={style:{color:"#ff7875","font-size":"11px",margin:"0","white-space":"pre-wrap"}},uo={key:3},co={style:{color:"var(--text-muted)","font-size":"11px","margin-bottom":"4px"}},mo={style:{display:"flex",gap:"8px","align-items":"center","margin-bottom":"4px"}},po={key:1,style:{color:"var(--text-muted)","font-size":"10px","font-family":"monospace"}},fo={key:0,style:{background:"var(--bg-card-hover)",padding:"8px","border-radius":"4px","font-size":"11px","max-height":"360px",overflow:"auto",margin:"0","white-space":"pre-wrap","word-break":"break-all"}},yo={key:1,style:{"font-size":"11px",color:"var(--text-muted)","font-style":"italic"}},vo={key:2,style:{"font-size":"11px",color:"var(--text-muted)","font-style":"italic"}},_o={__name:"McpTools",setup(t){const{t:e}=Ee(),d=be(),c=Ke(),r=$(!1),m=$([]),u=$([]),j=$(""),w=$(""),T=W(()=>{if(!j.value)return u.value;const p=j.value.toLowerCase();return u.value.filter(l=>l.name?.toLowerCase().includes(p)||l.description?.toLowerCase().includes(p))}),O=W(()=>[{title:e("mcpTools.toolColumns.name"),key:"name",dataIndex:"name",width:"28%"},{title:e("mcpTools.toolColumns.server"),key:"server",dataIndex:"server",width:"18%"},{title:e("mcpTools.toolColumns.description"),dataIndex:"description",ellipsis:!0},{title:e("mcpTools.toolColumns.action"),key:"action",width:110}]),U=$([]),P=$(""),x=$(!1),S=$(!1),L=W(()=>[{title:e("mcpTools.resourceColumns.uri"),key:"uri",dataIndex:"uri"},{title:e("mcpTools.resourceColumns.server"),key:"server",dataIndex:"server",width:"15%"},{title:e("mcpTools.resourceColumns.mime"),key:"mimeType",dataIndex:"mimeType",width:"15%"},{title:e("mcpTools.resourceColumns.action"),key:"action",width:90}]),N=W(()=>{if(!P.value)return U.value;const p=P.value.toLowerCase();return U.value.filter(l=>l.uri?.toLowerCase().includes(p)||l.name?.toLowerCase().includes(p)||l.description?.toLowerCase().includes(p))});async function H(){if(!x.value){x.value=!0;try{const p=await c.listResources();if(!p||!Array.isArray(p.servers)){U.value=[];return}const l=[];for(const g of p.servers)if(Array.isArray(g.resources))for(const h of g.resources)l.push({key:`${g.name}.${h.uri}`,uri:h.uri,name:h.name||"",description:h.description||"",mimeType:h.mimeType||null,server:g.name});U.value=l,S.value=!0}catch(p){console.error("listResources failed:",p),U.value=[]}finally{x.value=!1}}}const X=$(!1),F=$(null),D=$(!1),K=$([]),n=$(""),z=W(()=>F.value?e("mcpTools.read.modalTitle",{server:F.value.server}):e("mcpTools.read.fallbackTitle"));async function I(p){F.value=p,K.value=[],n.value="",X.value=!0,D.value=!0;try{const l=await c.readResource(p.server,p.uri);l&&Array.isArray(l.contents)?K.value=l.contents:K.value=l?[l]:[]}catch(l){n.value=l?.message||String(l)}finally{D.value=!1}}function C(){X.value=!1}const E=$(!1),R=$(null),oe=$("form"),re=$({}),se=$({}),ie=$("{}"),ne=$(!1),Q=$(null),ae=$(""),we=W(()=>ce(R.value?.inputSchema||null).length>0),Te=W(()=>R.value?e("mcpTools.run.modalTitle",{server:R.value.server,tool:R.value.name}):e("mcpTools.run.fallbackTitle")),ze=W(()=>{if(!R.value?.inputSchema)return"";try{return JSON.stringify(R.value.inputSchema,null,2)}catch{return String(R.value.inputSchema)}}),Se=W(()=>{if(Q.value===null)return"";try{return JSON.stringify(Q.value,null,2)}catch{return String(Q.value)}}),Z=$("");function Ce(p){R.value=p,ie.value="{}",Q.value=null,ae.value="",Z.value="",se.value={};const l=ce(p?.inputSchema||null);oe.value=l.length>0?"form":"json",re.value=De(l),E.value=!0}function $e(){E.value=!1}async function Ae(){if(!R.value||ne.value)return;Z.value="",se.value={};let p={};if(oe.value==="form"){const l=ce(R.value.inputSchema||null),g=ke(l,re.value);if(!g.ok){se.value=g.errors;return}p=g.params}else{const l=(ie.value||"").trim();if(l){try{p=JSON.parse(l)}catch(g){Z.value=g.message||"invalid JSON";return}if(p===null||typeof p!="object"||Array.isArray(p)){Z.value=e("mcpTools.run.paramsMustBeObject");return}}}ne.value=!0,ae.value="",Q.value=null;try{const l=await c.callTool(R.value.server,R.value.name,p);Q.value=l}catch(l){ae.value=l?.message||String(l)}finally{ne.value=!1}}async function Ve(){const p=await c.listTools();if(!p||!Array.isArray(p.servers))return!1;m.value=p.servers.map(g=>({key:g.name,name:g.name,command:"",args:[],description:g.state?`state: ${g.state}`:"",error:g.error||null}));const l=[];for(const g of p.servers)if(Array.isArray(g.tools))for(const h of g.tools)l.push({key:`${g.name}.${h.name}`,name:h.name,description:h.description||"",server:g.name,inputSchema:h.inputSchema||null});return u.value=l,!0}async function fe(){r.value=!0;try{try{if(await Ve()){w.value="topic";return}}catch(g){const h=g?.message||"";h.includes("mcp_unavailable")||h.includes("no_handler")||h.includes("UNKNOWN_TYPE")||console.error("MCP topic load failed:",g)}const[p,l]=await Promise.all([d.execute("mcp servers",15e3).catch(()=>({output:""})),d.execute("mcp tools",15e3).catch(()=>({output:""}))]);m.value=je(p.output),u.value=Oe(l.output),w.value="cli"}catch(p){console.error("MCP load failed:",p)}finally{r.value=!1,w.value==="topic"?H():(U.value=[],S.value=!1)}}function je(p){const l=[],g=p.split(`
3
3
  `);let h=null;for(const q of g){const b=q.trim();if(!b||b.startsWith("─")||b.startsWith("MCP"))continue;const J=b.match(/^[●•]?\s*([a-z][a-z0-9-_]+)\s*$/i)||b.match(/^([a-z][a-z0-9-_]+)\s*[::]/);J?(h&&l.push(h),h={key:J[1],name:J[1],command:"",args:[],description:""}):h&&(b.startsWith("command:")||b.startsWith("Command:")?h.command=b.replace(/^command:\s*/i,"").trim():b.startsWith("args:")||b.startsWith("Args:")?h.args=b.replace(/^args:\s*/i,"").split(",").map(ee=>ee.trim()):h.description||(h.description=b.slice(0,80)))}return h&&l.push(h),!l.length&&p.trim()&&!p.includes("No MCP")&&p.split(`
4
4
  `).filter(b=>b.trim()&&!b.includes("─")).slice(0,10).forEach((b,J)=>{l.push({key:J,name:b.trim(),command:"",args:[],description:""})}),l}function Oe(p){const l=[],g=p.split(`
5
- `);let h="unknown";for(const q of g){const b=q.trim();if(!b||b.startsWith("─"))continue;if(b.match(/^\[/)||b.match(/^Server:/i)){h=b.replace(/[\[\]]/g,"").replace(/^Server:\s*/i,"").trim();continue}const J=b.match(/^[●•]?\s*([a-z][a-z0-9_-]+)\s*[-–]\s*(.+)/i)||b.match(/^[●•]?\s*([a-z][a-z0-9_-]+)$/);J&&l.push({key:l.length,name:J[1],description:J[2]||"",server:h})}return l}return He(fe),(p,l)=>{const g=V("a-button"),h=V("a-statistic"),q=V("a-card"),b=V("a-col"),J=V("a-row"),ee=V("a-spin"),Ue=V("a-badge"),ye=V("a-input-search"),te=V("a-tag"),ve=V("a-table"),_e=V("a-radio-button"),Le=V("a-radio-group"),Re=V("a-textarea"),ge=V("a-modal");return o(),s("div",null,[y("div",pt,[y("div",null,[y("h2",ft,a(i(e)("mcpTools.title")),1),y("p",yt,a(i(e)("mcpTools.subtitle")),1)]),v(g,{type:"primary",ghost:"",loading:r.value,onClick:fe},{icon:f(()=>[v(i(qe))]),default:f(()=>[M(" "+a(i(e)("mcpTools.refresh")),1)]),_:1},8,["loading"])]),v(J,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:f(()=>[v(b,{xs:24,sm:8},{default:f(()=>[v(q,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"},size:"small"},{default:f(()=>[v(h,{title:i(e)("mcpTools.stats.servers"),value:m.value.length,"value-style":"color: #1677ff; font-size: 20px;"},{prefix:f(()=>[v(i(he))]),_:1},8,["title","value"])]),_:1})]),_:1}),v(b,{xs:24,sm:8},{default:f(()=>[v(q,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"},size:"small"},{default:f(()=>[v(h,{title:i(e)("mcpTools.stats.tools"),value:u.value.length,"value-style":"color: #52c41a; font-size: 20px;"},{prefix:f(()=>[v(i(Fe))]),_:1},8,["title","value"])]),_:1})]),_:1}),v(b,{xs:24,sm:8},{default:f(()=>[v(q,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"},size:"small"},{default:f(()=>[v(h,{title:i(e)("mcpTools.stats.running"),value:i(e)("mcpTools.stats.ready"),"value-style":"color: #52c41a; font-size: 20px;"},{prefix:f(()=>[v(i(Ie))]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),v(q,{title:i(e)("mcpTools.servers.title"),style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:f(()=>[r.value?(o(),s("div",vt,[v(ee)])):m.value.length?(o(),s("div",ht,[(o(!0),s(D,null,le(m.value,_=>(o(),A(q,{key:_.name,size:"small",style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{default:f(()=>[y("div",xt,[v(i(he),{style:{color:"#1677ff"}}),y("span",bt,a(_.name),1),v(Ue,{status:"success"})]),_.command?(o(),s("div",kt,a(_.command)+" "+a(_.args?.join(" ")),1)):k("",!0),_.description?(o(),s("div",wt,a(_.description),1)):k("",!0)]),_:2},1024))),128))])):(o(),s("div",_t,[M(a(i(e)("mcpTools.servers.emptyHintPrefix"))+" ",1),y("code",gt,a(i(e)("mcpTools.servers.emptyHintCommand")),1),M(" "+a(i(e)("mcpTools.servers.emptyHintSuffix")),1)]))]),_:1},8,["title"]),v(q,{title:i(e)("mcpTools.tools.title"),style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{extra:f(()=>[v(ye,{value:j.value,"onUpdate:value":l[0]||(l[0]=_=>j.value=_),placeholder:i(e)("mcpTools.tools.searchPlaceholder"),"allow-clear":"",size:"small",style:{width:"200px"}},null,8,["value","placeholder"])]),default:f(()=>[r.value?(o(),s("div",Tt,[v(ee)])):(o(),A(ve,{key:1,columns:O.value,"data-source":T.value,pagination:{pageSize:15},size:"small"},{bodyCell:f(({column:_,record:B})=>[_.key==="name"?(o(),s("span",zt,a(B.name),1)):k("",!0),_.key==="server"?(o(),A(te,{key:1,color:"blue",style:{"font-size":"10px"}},{default:f(()=>[M(a(B.server),1)]),_:2},1024)):k("",!0),_.key==="action"?(o(),s(D,{key:2},[w.value==="topic"?(o(),A(g,{key:0,size:"small",type:"link",onClick:Me=>Ce(B)},{icon:f(()=>[v(i(Je))]),default:f(()=>[M(" "+a(i(e)("mcpTools.tools.runAction")),1)]),_:1},8,["onClick"])):(o(),s("span",St,a(i(e)("mcpTools.tools.desktopOnly")),1))],64)):k("",!0)]),emptyText:f(()=>[y("div",Ct,a(i(e)("mcpTools.tools.emptyText")),1)]),_:1},8,["columns","data-source"]))]),_:1},8,["title"]),w.value==="topic"?(o(),A(q,{key:0,title:i(e)("mcpTools.resources.title"),style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-top":"16px"}},{extra:f(()=>[v(ye,{value:P.value,"onUpdate:value":l[1]||(l[1]=_=>P.value=_),placeholder:i(e)("mcpTools.resources.searchPlaceholder"),"allow-clear":"",size:"small",style:{width:"200px"}},null,8,["value","placeholder"])]),default:f(()=>[x.value?(o(),s("div",$t,[v(ee)])):U.value.length?(o(),A(ve,{key:2,columns:L.value,"data-source":N.value,pagination:{pageSize:15},size:"small"},{bodyCell:f(({column:_,record:B})=>[_.key==="uri"?(o(),s("span",Vt,a(B.uri),1)):k("",!0),_.key==="server"?(o(),A(te,{key:1,color:"blue",style:{"font-size":"10px"}},{default:f(()=>[M(a(B.server),1)]),_:2},1024)):k("",!0),_.key==="mimeType"?(o(),s(D,{key:2},[B.mimeType?(o(),A(te,{key:0,style:{"font-size":"10px"}},{default:f(()=>[M(a(B.mimeType),1)]),_:2},1024)):(o(),s("span",jt,"—"))],64)):k("",!0),_.key==="action"?(o(),A(g,{key:3,size:"small",type:"link",onClick:Me=>I(B)},{icon:f(()=>[v(i(Be))]),default:f(()=>[M(" "+a(i(e)("mcpTools.resources.readAction")),1)]),_:1},8,["onClick"])):k("",!0)]),emptyText:f(()=>[y("div",Ot,a(i(e)("mcpTools.resources.emptyTable")),1)]),_:1},8,["columns","data-source"])):(o(),s("div",At,a(i(e)("mcpTools.resources.emptyHint")),1))]),_:1},8,["title"])):k("",!0),v(ge,{open:E.value,title:Te.value,width:640,"confirm-loading":ne.value,"ok-text":ne.value?i(e)("mcpTools.run.okRunning"):i(e)("mcpTools.run.okIdle"),"cancel-text":i(e)("mcpTools.run.cancel"),onOk:Ae,onCancel:$e},{default:f(()=>[R.value?(o(),s("div",Ut,[y("div",null,[y("div",Lt,a(i(e)("mcpTools.run.serverLabel")),1),y("div",Rt,[v(te,{color:"blue"},{default:f(()=>[M(a(R.value.server),1)]),_:1}),y("span",Mt,a(R.value.name),1)])]),R.value.description?(o(),s("div",Pt,[y("div",Et,a(i(e)("mcpTools.run.descriptionLabel")),1),y("div",Nt,a(R.value.description),1)])):k("",!0),R.value.inputSchema?(o(),s("div",qt,[y("div",Ft,a(i(e)("mcpTools.run.schemaLabel")),1),y("pre",It,a(ze.value),1)])):k("",!0),y("div",null,[y("div",Jt,[y("span",Bt,a(i(e)("mcpTools.run.paramsLabel")),1),v(Le,{value:oe.value,"onUpdate:value":l[2]||(l[2]=_=>oe.value=_),size:"small","button-style":"solid"},{default:f(()=>[v(_e,{value:"form",disabled:!we.value},{default:f(()=>[M(a(i(e)("mcpTools.run.modeForm")),1)]),_:1},8,["disabled"]),v(_e,{value:"json"},{default:f(()=>[M(a(i(e)("mcpTools.run.modeJson")),1)]),_:1})]),_:1},8,["value"])]),oe.value==="form"?(o(),A(mt,{key:0,modelValue:re.value,"onUpdate:modelValue":l[3]||(l[3]=_=>re.value=_),schema:R.value.inputSchema,errors:se.value},null,8,["modelValue","schema","errors"])):(o(),s(D,{key:1},[v(Re,{value:ie.value,"onUpdate:value":l[4]||(l[4]=_=>ie.value=_),rows:6,placeholder:"{}",style:{"font-family":"monospace","font-size":"12px"}},null,8,["value"]),Z.value?(o(),s("div",Wt,a(i(e)("mcpTools.run.jsonParseFailed",{err:Z.value})),1)):k("",!0)],64))]),ae.value?(o(),s("div",Ht,[y("div",Kt,a(i(e)("mcpTools.run.errorTitle")),1),y("pre",Dt,a(ae.value),1)])):k("",!0),Y.value!==null?(o(),s("div",Qt,[y("div",Yt,a(i(e)("mcpTools.run.resultLabel")),1),y("pre",Gt,a(Se.value),1)])):k("",!0)])):k("",!0)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),v(ge,{open:X.value,title:z.value,width:720,footer:null,onCancel:C},{default:f(()=>[F.value?(o(),s("div",Xt,[y("div",null,[y("div",Zt,a(i(e)("mcpTools.read.serverLabel")),1),y("div",eo,[v(te,{color:"blue"},{default:f(()=>[M(a(F.value.server),1)]),_:1}),y("span",to,a(F.value.uri),1)])]),F.value.description?(o(),s("div",oo,[y("div",no,a(i(e)("mcpTools.read.descriptionLabel")),1),y("div",ao,a(F.value.description),1)])):k("",!0),Q.value?(o(),s("div",lo,[v(ee,{tip:i(e)("mcpTools.read.spinnerTip")},null,8,["tip"])])):k("",!0),n.value?(o(),s("div",ro,[y("div",so,a(i(e)("mcpTools.read.errorTitle")),1),y("pre",io,a(n.value),1)])):k("",!0),K.value.length?(o(),s("div",uo,[y("div",co,a(i(e)("mcpTools.read.contentsLabel",{count:K.value.length})),1),(o(!0),s(D,null,le(K.value,(_,B)=>(o(),s("div",{key:B,style:{"margin-bottom":"12px"}},[y("div",mo,[_.mimeType?(o(),A(te,{key:0,size:"small",style:{"font-size":"10px"}},{default:f(()=>[M(a(_.mimeType),1)]),_:2},1024)):k("",!0),_.uri&&_.uri!==F.value.uri?(o(),s("span",po,a(_.uri),1)):k("",!0)]),_.text?(o(),s("pre",fo,a(_.text),1)):_.blob?(o(),s("div",yo,a(i(e)("mcpTools.read.binaryNote",{count:_.blob.length})),1)):(o(),s("div",vo,a(i(e)("mcpTools.read.emptyContent")),1))]))),128))])):k("",!0)])):k("",!0)]),_:1},8,["open","title"])])}}},ko=Pe(_o,[["__scopeId","data-v-1d115bb9"]]);export{ko as default};
5
+ `);let h="unknown";for(const q of g){const b=q.trim();if(!b||b.startsWith("─"))continue;if(b.match(/^\[/)||b.match(/^Server:/i)){h=b.replace(/[\[\]]/g,"").replace(/^Server:\s*/i,"").trim();continue}const J=b.match(/^[●•]?\s*([a-z][a-z0-9_-]+)\s*[-–]\s*(.+)/i)||b.match(/^[●•]?\s*([a-z][a-z0-9_-]+)$/);J&&l.push({key:l.length,name:J[1],description:J[2]||"",server:h})}return l}return He(fe),(p,l)=>{const g=V("a-button"),h=V("a-statistic"),q=V("a-card"),b=V("a-col"),J=V("a-row"),ee=V("a-spin"),Ue=V("a-badge"),ye=V("a-input-search"),te=V("a-tag"),ve=V("a-table"),_e=V("a-radio-button"),Le=V("a-radio-group"),Re=V("a-textarea"),ge=V("a-modal");return o(),s("div",null,[y("div",pt,[y("div",null,[y("h2",ft,a(i(e)("mcpTools.title")),1),y("p",yt,a(i(e)("mcpTools.subtitle")),1)]),v(g,{type:"primary",ghost:"",loading:r.value,onClick:fe},{icon:f(()=>[v(i(qe))]),default:f(()=>[M(" "+a(i(e)("mcpTools.refresh")),1)]),_:1},8,["loading"])]),v(J,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:f(()=>[v(b,{xs:24,sm:8},{default:f(()=>[v(q,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"},size:"small"},{default:f(()=>[v(h,{title:i(e)("mcpTools.stats.servers"),value:m.value.length,"value-style":"color: #1677ff; font-size: 20px;"},{prefix:f(()=>[v(i(he))]),_:1},8,["title","value"])]),_:1})]),_:1}),v(b,{xs:24,sm:8},{default:f(()=>[v(q,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"},size:"small"},{default:f(()=>[v(h,{title:i(e)("mcpTools.stats.tools"),value:u.value.length,"value-style":"color: #52c41a; font-size: 20px;"},{prefix:f(()=>[v(i(Fe))]),_:1},8,["title","value"])]),_:1})]),_:1}),v(b,{xs:24,sm:8},{default:f(()=>[v(q,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"},size:"small"},{default:f(()=>[v(h,{title:i(e)("mcpTools.stats.running"),value:i(e)("mcpTools.stats.ready"),"value-style":"color: #52c41a; font-size: 20px;"},{prefix:f(()=>[v(i(Ie))]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),v(q,{title:i(e)("mcpTools.servers.title"),style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:f(()=>[r.value?(o(),s("div",vt,[v(ee)])):m.value.length?(o(),s("div",ht,[(o(!0),s(Y,null,le(m.value,_=>(o(),A(q,{key:_.name,size:"small",style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{default:f(()=>[y("div",xt,[v(i(he),{style:{color:"#1677ff"}}),y("span",bt,a(_.name),1),v(Ue,{status:"success"})]),_.command?(o(),s("div",kt,a(_.command)+" "+a(_.args?.join(" ")),1)):k("",!0),_.description?(o(),s("div",wt,a(_.description),1)):k("",!0)]),_:2},1024))),128))])):(o(),s("div",_t,[M(a(i(e)("mcpTools.servers.emptyHintPrefix"))+" ",1),y("code",gt,a(i(e)("mcpTools.servers.emptyHintCommand")),1),M(" "+a(i(e)("mcpTools.servers.emptyHintSuffix")),1)]))]),_:1},8,["title"]),v(q,{title:i(e)("mcpTools.tools.title"),style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{extra:f(()=>[v(ye,{value:j.value,"onUpdate:value":l[0]||(l[0]=_=>j.value=_),placeholder:i(e)("mcpTools.tools.searchPlaceholder"),"allow-clear":"",size:"small",style:{width:"200px"}},null,8,["value","placeholder"])]),default:f(()=>[r.value?(o(),s("div",Tt,[v(ee)])):(o(),A(ve,{key:1,columns:O.value,"data-source":T.value,pagination:{pageSize:15},size:"small"},{bodyCell:f(({column:_,record:B})=>[_.key==="name"?(o(),s("span",zt,a(B.name),1)):k("",!0),_.key==="server"?(o(),A(te,{key:1,color:"blue",style:{"font-size":"10px"}},{default:f(()=>[M(a(B.server),1)]),_:2},1024)):k("",!0),_.key==="action"?(o(),s(Y,{key:2},[w.value==="topic"?(o(),A(g,{key:0,size:"small",type:"link",onClick:Me=>Ce(B)},{icon:f(()=>[v(i(Je))]),default:f(()=>[M(" "+a(i(e)("mcpTools.tools.runAction")),1)]),_:1},8,["onClick"])):(o(),s("span",St,a(i(e)("mcpTools.tools.desktopOnly")),1))],64)):k("",!0)]),emptyText:f(()=>[y("div",Ct,a(i(e)("mcpTools.tools.emptyText")),1)]),_:1},8,["columns","data-source"]))]),_:1},8,["title"]),w.value==="topic"?(o(),A(q,{key:0,title:i(e)("mcpTools.resources.title"),style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-top":"16px"}},{extra:f(()=>[v(ye,{value:P.value,"onUpdate:value":l[1]||(l[1]=_=>P.value=_),placeholder:i(e)("mcpTools.resources.searchPlaceholder"),"allow-clear":"",size:"small",style:{width:"200px"}},null,8,["value","placeholder"])]),default:f(()=>[x.value?(o(),s("div",$t,[v(ee)])):U.value.length?(o(),A(ve,{key:2,columns:L.value,"data-source":N.value,pagination:{pageSize:15},size:"small"},{bodyCell:f(({column:_,record:B})=>[_.key==="uri"?(o(),s("span",Vt,a(B.uri),1)):k("",!0),_.key==="server"?(o(),A(te,{key:1,color:"blue",style:{"font-size":"10px"}},{default:f(()=>[M(a(B.server),1)]),_:2},1024)):k("",!0),_.key==="mimeType"?(o(),s(Y,{key:2},[B.mimeType?(o(),A(te,{key:0,style:{"font-size":"10px"}},{default:f(()=>[M(a(B.mimeType),1)]),_:2},1024)):(o(),s("span",jt,"—"))],64)):k("",!0),_.key==="action"?(o(),A(g,{key:3,size:"small",type:"link",onClick:Me=>I(B)},{icon:f(()=>[v(i(Be))]),default:f(()=>[M(" "+a(i(e)("mcpTools.resources.readAction")),1)]),_:1},8,["onClick"])):k("",!0)]),emptyText:f(()=>[y("div",Ot,a(i(e)("mcpTools.resources.emptyTable")),1)]),_:1},8,["columns","data-source"])):(o(),s("div",At,a(i(e)("mcpTools.resources.emptyHint")),1))]),_:1},8,["title"])):k("",!0),v(ge,{open:E.value,title:Te.value,width:640,"confirm-loading":ne.value,"ok-text":ne.value?i(e)("mcpTools.run.okRunning"):i(e)("mcpTools.run.okIdle"),"cancel-text":i(e)("mcpTools.run.cancel"),onOk:Ae,onCancel:$e},{default:f(()=>[R.value?(o(),s("div",Ut,[y("div",null,[y("div",Lt,a(i(e)("mcpTools.run.serverLabel")),1),y("div",Rt,[v(te,{color:"blue"},{default:f(()=>[M(a(R.value.server),1)]),_:1}),y("span",Mt,a(R.value.name),1)])]),R.value.description?(o(),s("div",Pt,[y("div",Et,a(i(e)("mcpTools.run.descriptionLabel")),1),y("div",Nt,a(R.value.description),1)])):k("",!0),R.value.inputSchema?(o(),s("div",qt,[y("div",Ft,a(i(e)("mcpTools.run.schemaLabel")),1),y("pre",It,a(ze.value),1)])):k("",!0),y("div",null,[y("div",Jt,[y("span",Bt,a(i(e)("mcpTools.run.paramsLabel")),1),v(Le,{value:oe.value,"onUpdate:value":l[2]||(l[2]=_=>oe.value=_),size:"small","button-style":"solid"},{default:f(()=>[v(_e,{value:"form",disabled:!we.value},{default:f(()=>[M(a(i(e)("mcpTools.run.modeForm")),1)]),_:1},8,["disabled"]),v(_e,{value:"json"},{default:f(()=>[M(a(i(e)("mcpTools.run.modeJson")),1)]),_:1})]),_:1},8,["value"])]),oe.value==="form"?(o(),A(mt,{key:0,modelValue:re.value,"onUpdate:modelValue":l[3]||(l[3]=_=>re.value=_),schema:R.value.inputSchema,errors:se.value},null,8,["modelValue","schema","errors"])):(o(),s(Y,{key:1},[v(Re,{value:ie.value,"onUpdate:value":l[4]||(l[4]=_=>ie.value=_),rows:6,placeholder:"{}",style:{"font-family":"monospace","font-size":"12px"}},null,8,["value"]),Z.value?(o(),s("div",Wt,a(i(e)("mcpTools.run.jsonParseFailed",{err:Z.value})),1)):k("",!0)],64))]),ae.value?(o(),s("div",Ht,[y("div",Kt,a(i(e)("mcpTools.run.errorTitle")),1),y("pre",Yt,a(ae.value),1)])):k("",!0),Q.value!==null?(o(),s("div",Dt,[y("div",Qt,a(i(e)("mcpTools.run.resultLabel")),1),y("pre",Gt,a(Se.value),1)])):k("",!0)])):k("",!0)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),v(ge,{open:X.value,title:z.value,width:720,footer:null,onCancel:C},{default:f(()=>[F.value?(o(),s("div",Xt,[y("div",null,[y("div",Zt,a(i(e)("mcpTools.read.serverLabel")),1),y("div",eo,[v(te,{color:"blue"},{default:f(()=>[M(a(F.value.server),1)]),_:1}),y("span",to,a(F.value.uri),1)])]),F.value.description?(o(),s("div",oo,[y("div",no,a(i(e)("mcpTools.read.descriptionLabel")),1),y("div",ao,a(F.value.description),1)])):k("",!0),D.value?(o(),s("div",lo,[v(ee,{tip:i(e)("mcpTools.read.spinnerTip")},null,8,["tip"])])):k("",!0),n.value?(o(),s("div",ro,[y("div",so,a(i(e)("mcpTools.read.errorTitle")),1),y("pre",io,a(n.value),1)])):k("",!0),K.value.length?(o(),s("div",uo,[y("div",co,a(i(e)("mcpTools.read.contentsLabel",{count:K.value.length})),1),(o(!0),s(Y,null,le(K.value,(_,B)=>(o(),s("div",{key:B,style:{"margin-bottom":"12px"}},[y("div",mo,[_.mimeType?(o(),A(te,{key:0,size:"small",style:{"font-size":"10px"}},{default:f(()=>[M(a(_.mimeType),1)]),_:2},1024)):k("",!0),_.uri&&_.uri!==F.value.uri?(o(),s("span",po,a(_.uri),1)):k("",!0)]),_.text?(o(),s("pre",fo,a(_.text),1)):_.blob?(o(),s("div",yo,a(i(e)("mcpTools.read.binaryNote",{count:_.blob.length})),1)):(o(),s("div",vo,a(i(e)("mcpTools.read.emptyContent")),1))]))),128))])):k("",!0)])):k("",!0)]),_:1},8,["open","title"])])}}},bo=Pe(_o,[["__scopeId","data-v-1d115bb9"]]);export{bo as default};
@@ -1,2 +1,2 @@
1
- import{_ as Y,a as Z,c as C}from"./index-Cw4v7ezB.js";import{u as ee}from"./ws-D_5-FRIb.js";import{al as te,R as oe,h as ae,u as le,ao as re,ae as ne}from"./icons-DvZE-RKs.js";import{o as se,M as _,R as i,P as s,u as l,c as t,N as a,K as c,r as p,L as f,O as g,F as ce,_ as ie,S as me,f as ue}from"./vendor-B6ToihkA.js";const de={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},pe={class:"page-title"},ve={class:"page-sub"},ye={style:{"margin-top":"4px",color:"var(--text-secondary)","font-size":"11px"}},_e={style:{"margin-top":"4px",color:"var(--text-secondary)","font-size":"11px"}},fe={style:{"margin-top":"4px",color:"var(--text-secondary)","font-size":"11px"}},ge={style:{display:"flex","align-items":"center",gap:"12px"}},he={key:0,style:{"text-align":"center",padding:"30px"}},xe={key:1,style:{"text-align":"center",padding:"30px",color:"var(--text-muted)"}},be={key:2,class:"memory-list"},ke={style:{display:"flex","justify-content":"space-between","align-items":"flex-start","margin-bottom":"4px"}},we={style:{display:"flex",gap:"8px","align-items":"center"}},Ce={key:0,style:{color:"var(--text-secondary)","font-size":"11px"}},Te={style:{color:"var(--text-muted)","font-size":"11px"}},ze={style:{color:"#ccc","font-size":"13px","line-height":"1.6"}},Oe={__name:"Memory",setup(Le){const{t:o}=Z(),T=ee(),S=p(!1),h=p(!1),$=p(!1),M=p(!1),z=p(!1),x=p({shortTerm:0,longTerm:0,core:0}),b=p([]),m=p("short-term"),O=p(""),v=p({content:"",importance:.5}),U=ue(()=>({0:o("memory.modal.marks.low"),.5:o("memory.modal.marks.mid"),1:o("memory.modal.marks.high")}));function F(r){return{"short-term":"purple","long-term":"blue",core:"green"}[r]||"default"}function P(r){const e=`memory.layer.${r}`,u=o(e);return u===e?r:u}async function L(){S.value=!0;try{const{output:r}=await T.execute("hmemory stats",15e3);V(r)}catch(r){console.error("hmemory stats failed:",r)}finally{S.value=!1,await B()}}function V(r){const e=r.match(/short.?term[^\d]*(\d+)/i),u=r.match(/long.?term[^\d]*(\d+)/i),k=r.match(/core[^\d]*(\d+)/i);e&&(x.value.shortTerm=parseInt(e[1])),u&&(x.value.longTerm=parseInt(u[1])),k&&(x.value.core=parseInt(k[1]))}async function B(){h.value=!0;try{const r=m.value==="short-term"?"recent":m.value==="long-term"?"important":"core",{output:e}=await T.execute(`hmemory recall "${r}" --limit 20`,15e3);b.value=I(e)}catch{b.value=[]}finally{h.value=!1}}async function q(){if(!O.value.trim()){await B();return}h.value=!0;try{const{output:r}=await T.execute(`hmemory recall "${O.value}"`,15e3);b.value=I(r)}catch{b.value=[]}finally{h.value=!1}}function I(r){const e=[],u=r.split(`
2
- `);for(const k of u){const d=k.trim();if(!d||d.startsWith("─")||d.startsWith("Recall"))continue;const y=d.match(/^[-●•\d.]+\s+(.+)/);if(y){const w=y[1].trim();w.length>5&&e.push({id:e.length,content:w,layer:m.value,importance:"",time:""})}else d.length>10&&!d.includes(":")&&e.length<30&&e.push({id:e.length,content:d,layer:m.value,importance:"",time:""})}return e.slice(0,20)}async function H(){if(!v.value.content.trim()){C.warning(o("memory.messages.contentRequired"));return}M.value=!0;try{const r=`hmemory store "${v.value.content.replace(/"/g,'\\"')}" --importance ${v.value.importance}`,{output:e}=await T.execute(r,15e3);e.toLowerCase().includes("stored")||e.includes("✔")?(C.success(o("memory.messages.storeOk")),z.value=!1,v.value={content:"",importance:.5},await L()):(C.warning(e.slice(0,100)||o("memory.messages.storeDefault")),z.value=!1)}catch(r){C.error(o("memory.messages.storeFailed",{err:r.message}))}finally{M.value=!1}}async function W(){$.value=!0;try{await T.execute("hmemory consolidate",2e4),C.success(o("memory.messages.consolidateOk")),await L()}catch(r){C.error(o("memory.messages.consolidateFailed",{err:r.message}))}finally{$.value=!1}}return se(L),(r,e)=>{const u=c("a-button"),k=c("a-space"),d=c("a-statistic"),y=c("a-card"),w=c("a-col"),j=c("a-row"),R=c("a-radio-button"),D=c("a-radio-group"),E=c("a-input-search"),K=c("a-spin"),Q=c("a-tag"),A=c("a-textarea"),N=c("a-form-item"),G=c("a-slider"),J=c("a-form"),X=c("a-modal");return f(),_("div",null,[i("div",de,[i("div",null,[i("h2",pe,s(l(o)("memory.title")),1),i("p",ve,s(l(o)("memory.subtitle")),1)]),t(k,null,{default:a(()=>[t(u,{onClick:e[0]||(e[0]=n=>z.value=!0),type:"primary"},{icon:a(()=>[t(l(te))]),default:a(()=>[g(" "+s(l(o)("memory.storeButton")),1)]),_:1}),t(u,{ghost:"",loading:S.value,onClick:L},{icon:a(()=>[t(l(oe))]),default:a(()=>[g(" "+s(l(o)("memory.refresh")),1)]),_:1},8,["loading"])]),_:1})]),t(j,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:a(()=>[t(w,{xs:24,sm:8},{default:a(()=>[t(y,{style:{background:"rgba(114,46,209,.1)","border-color":"rgba(114,46,209,.35)",cursor:"pointer"},hoverable:"",onClick:e[1]||(e[1]=n=>m.value="short-term")},{default:a(()=>[t(d,{title:l(o)("memory.stats.shortTerm"),value:x.value.shortTerm||0,"value-style":"color: #c084fc; font-size: 20px;"},{prefix:a(()=>[t(l(ae))]),_:1},8,["title","value"]),i("div",ye,s(l(o)("memory.stats.shortTermHint")),1)]),_:1})]),_:1}),t(w,{xs:24,sm:8},{default:a(()=>[t(y,{style:{background:"rgba(22,119,255,.08)","border-color":"rgba(22,119,255,.3)",cursor:"pointer"},hoverable:"",onClick:e[2]||(e[2]=n=>m.value="long-term")},{default:a(()=>[t(d,{title:l(o)("memory.stats.longTerm"),value:x.value.longTerm||0,"value-style":"color: #91caff; font-size: 20px;"},{prefix:a(()=>[t(l(le))]),_:1},8,["title","value"]),i("div",_e,s(l(o)("memory.stats.longTermHint")),1)]),_:1})]),_:1}),t(w,{xs:24,sm:8},{default:a(()=>[t(y,{style:{background:"rgba(41,162,112,.08)","border-color":"rgba(41,162,112,.3)",cursor:"pointer"},hoverable:"",onClick:e[3]||(e[3]=n=>m.value="core")},{default:a(()=>[t(d,{title:l(o)("memory.stats.core"),value:x.value.core||0,"value-style":"color: #69db7c; font-size: 20px;"},{prefix:a(()=>[t(l(re))]),_:1},8,["title","value"]),i("div",fe,s(l(o)("memory.stats.coreHint")),1)]),_:1})]),_:1})]),_:1}),t(y,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{title:a(()=>[i("div",ge,[i("span",null,s(l(o)("memory.card.title")),1),t(D,{value:m.value,"onUpdate:value":e[4]||(e[4]=n=>m.value=n),"button-style":"solid",size:"small",onChange:B},{default:a(()=>[t(R,{value:"short-term"},{default:a(()=>[g(s(l(o)("memory.card.tabs.short")),1)]),_:1}),t(R,{value:"long-term"},{default:a(()=>[g(s(l(o)("memory.card.tabs.long")),1)]),_:1}),t(R,{value:"core"},{default:a(()=>[g(s(l(o)("memory.card.tabs.core")),1)]),_:1})]),_:1},8,["value"])])]),extra:a(()=>[t(E,{value:O.value,"onUpdate:value":e[5]||(e[5]=n=>O.value=n),placeholder:l(o)("memory.card.searchPlaceholder"),"allow-clear":"",size:"small",style:{width:"220px"},loading:h.value,onSearch:q},null,8,["value","placeholder","loading"])]),default:a(()=>[h.value?(f(),_("div",he,[t(K)])):b.value.length?(f(),_("div",be,[(f(!0),_(ce,null,ie(b.value,n=>(f(),_("div",{key:n.id,class:"memory-item"},[i("div",ke,[i("div",we,[t(Q,{color:F(n.layer||m.value),style:{"font-size":"10px"}},{default:a(()=>[g(s(P(n.layer||m.value)),1)]),_:2},1032,["color"]),n.importance?(f(),_("span",Ce,s(l(o)("memory.card.importanceLabel",{value:n.importance})),1)):me("",!0)]),i("span",Te,s(n.time),1)]),i("div",ze,s(n.content),1)]))),128))])):(f(),_("div",xe,s(l(o)("memory.card.emptyText")),1))]),_:1}),t(u,{loading:$.value,onClick:W,style:{background:"var(--bg-card-hover)","border-color":"var(--text-muted)",width:"100%"}},{icon:a(()=>[t(l(ne))]),default:a(()=>[g(" "+s(l(o)("memory.consolidateButton")),1)]),_:1},8,["loading"]),t(X,{open:z.value,"onUpdate:open":e[8]||(e[8]=n=>z.value=n),title:l(o)("memory.modal.title"),"confirm-loading":M.value,onOk:H},{default:a(()=>[t(J,{"label-col":{span:4},"wrapper-col":{span:20},style:{"margin-top":"16px"}},{default:a(()=>[t(N,{label:l(o)("memory.modal.contentLabel"),required:""},{default:a(()=>[t(A,{value:v.value.content,"onUpdate:value":e[6]||(e[6]=n=>v.value.content=n),rows:4,placeholder:l(o)("memory.modal.contentPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),t(N,{label:l(o)("memory.modal.importanceLabel")},{default:a(()=>[t(G,{value:v.value.importance,"onUpdate:value":e[7]||(e[7]=n=>v.value.importance=n),min:0,max:1,step:.1,marks:U.value},null,8,["value","marks"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading"])])}}},Re=Y(Oe,[["__scopeId","data-v-a74b99b3"]]);export{Re as default};
1
+ import{_ as X,b as Z,u as ee,d as C}from"./index-Bn_0bupT.js";import{ap as te,R as oe,h as ae,w as le,ax as re,o as ne}from"./icons-B2G69bhT.js";import{o as se,M as _,R as i,P as s,u as l,c as t,N as a,K as c,r as p,L as f,O as g,F as ce,Y as ie,S as me,f as ue}from"./vendor-Ci2pTZ_t.js";const de={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},pe={class:"page-title"},ve={class:"page-sub"},ye={style:{"margin-top":"4px",color:"var(--text-secondary)","font-size":"11px"}},_e={style:{"margin-top":"4px",color:"var(--text-secondary)","font-size":"11px"}},fe={style:{"margin-top":"4px",color:"var(--text-secondary)","font-size":"11px"}},ge={style:{display:"flex","align-items":"center",gap:"12px"}},he={key:0,style:{"text-align":"center",padding:"30px"}},xe={key:1,style:{"text-align":"center",padding:"30px",color:"var(--text-muted)"}},be={key:2,class:"memory-list"},ke={style:{display:"flex","justify-content":"space-between","align-items":"flex-start","margin-bottom":"4px"}},we={style:{display:"flex",gap:"8px","align-items":"center"}},Ce={key:0,style:{color:"var(--text-secondary)","font-size":"11px"}},Te={style:{color:"var(--text-muted)","font-size":"11px"}},ze={style:{color:"#ccc","font-size":"13px","line-height":"1.6"}},Oe={__name:"Memory",setup(Le){const{t:o}=Z(),T=ee(),S=p(!1),h=p(!1),$=p(!1),M=p(!1),z=p(!1),x=p({shortTerm:0,longTerm:0,core:0}),b=p([]),m=p("short-term"),O=p(""),v=p({content:"",importance:.5}),U=ue(()=>({0:o("memory.modal.marks.low"),.5:o("memory.modal.marks.mid"),1:o("memory.modal.marks.high")}));function F(r){return{"short-term":"purple","long-term":"blue",core:"green"}[r]||"default"}function P(r){const e=`memory.layer.${r}`,u=o(e);return u===e?r:u}async function L(){S.value=!0;try{const{output:r}=await T.execute("hmemory stats",15e3);V(r)}catch(r){console.error("hmemory stats failed:",r)}finally{S.value=!1,await B()}}function V(r){const e=r.match(/short.?term[^\d]*(\d+)/i),u=r.match(/long.?term[^\d]*(\d+)/i),k=r.match(/core[^\d]*(\d+)/i);e&&(x.value.shortTerm=parseInt(e[1])),u&&(x.value.longTerm=parseInt(u[1])),k&&(x.value.core=parseInt(k[1]))}async function B(){h.value=!0;try{const r=m.value==="short-term"?"recent":m.value==="long-term"?"important":"core",{output:e}=await T.execute(`hmemory recall "${r}" --limit 20`,15e3);b.value=I(e)}catch{b.value=[]}finally{h.value=!1}}async function q(){if(!O.value.trim()){await B();return}h.value=!0;try{const{output:r}=await T.execute(`hmemory recall "${O.value}"`,15e3);b.value=I(r)}catch{b.value=[]}finally{h.value=!1}}function I(r){const e=[],u=r.split(`
2
+ `);for(const k of u){const d=k.trim();if(!d||d.startsWith("─")||d.startsWith("Recall"))continue;const y=d.match(/^[-●•\d.]+\s+(.+)/);if(y){const w=y[1].trim();w.length>5&&e.push({id:e.length,content:w,layer:m.value,importance:"",time:""})}else d.length>10&&!d.includes(":")&&e.length<30&&e.push({id:e.length,content:d,layer:m.value,importance:"",time:""})}return e.slice(0,20)}async function H(){if(!v.value.content.trim()){C.warning(o("memory.messages.contentRequired"));return}M.value=!0;try{const r=`hmemory store "${v.value.content.replace(/"/g,'\\"')}" --importance ${v.value.importance}`,{output:e}=await T.execute(r,15e3);e.toLowerCase().includes("stored")||e.includes("✔")?(C.success(o("memory.messages.storeOk")),z.value=!1,v.value={content:"",importance:.5},await L()):(C.warning(e.slice(0,100)||o("memory.messages.storeDefault")),z.value=!1)}catch(r){C.error(o("memory.messages.storeFailed",{err:r.message}))}finally{M.value=!1}}async function W(){$.value=!0;try{await T.execute("hmemory consolidate",2e4),C.success(o("memory.messages.consolidateOk")),await L()}catch(r){C.error(o("memory.messages.consolidateFailed",{err:r.message}))}finally{$.value=!1}}return se(L),(r,e)=>{const u=c("a-button"),k=c("a-space"),d=c("a-statistic"),y=c("a-card"),w=c("a-col"),j=c("a-row"),R=c("a-radio-button"),D=c("a-radio-group"),E=c("a-input-search"),K=c("a-spin"),Q=c("a-tag"),Y=c("a-textarea"),N=c("a-form-item"),A=c("a-slider"),G=c("a-form"),J=c("a-modal");return f(),_("div",null,[i("div",de,[i("div",null,[i("h2",pe,s(l(o)("memory.title")),1),i("p",ve,s(l(o)("memory.subtitle")),1)]),t(k,null,{default:a(()=>[t(u,{onClick:e[0]||(e[0]=n=>z.value=!0),type:"primary"},{icon:a(()=>[t(l(te))]),default:a(()=>[g(" "+s(l(o)("memory.storeButton")),1)]),_:1}),t(u,{ghost:"",loading:S.value,onClick:L},{icon:a(()=>[t(l(oe))]),default:a(()=>[g(" "+s(l(o)("memory.refresh")),1)]),_:1},8,["loading"])]),_:1})]),t(j,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:a(()=>[t(w,{xs:24,sm:8},{default:a(()=>[t(y,{style:{background:"rgba(114,46,209,.1)","border-color":"rgba(114,46,209,.35)",cursor:"pointer"},hoverable:"",onClick:e[1]||(e[1]=n=>m.value="short-term")},{default:a(()=>[t(d,{title:l(o)("memory.stats.shortTerm"),value:x.value.shortTerm||0,"value-style":"color: #c084fc; font-size: 20px;"},{prefix:a(()=>[t(l(ae))]),_:1},8,["title","value"]),i("div",ye,s(l(o)("memory.stats.shortTermHint")),1)]),_:1})]),_:1}),t(w,{xs:24,sm:8},{default:a(()=>[t(y,{style:{background:"rgba(22,119,255,.08)","border-color":"rgba(22,119,255,.3)",cursor:"pointer"},hoverable:"",onClick:e[2]||(e[2]=n=>m.value="long-term")},{default:a(()=>[t(d,{title:l(o)("memory.stats.longTerm"),value:x.value.longTerm||0,"value-style":"color: #91caff; font-size: 20px;"},{prefix:a(()=>[t(l(le))]),_:1},8,["title","value"]),i("div",_e,s(l(o)("memory.stats.longTermHint")),1)]),_:1})]),_:1}),t(w,{xs:24,sm:8},{default:a(()=>[t(y,{style:{background:"rgba(41,162,112,.08)","border-color":"rgba(41,162,112,.3)",cursor:"pointer"},hoverable:"",onClick:e[3]||(e[3]=n=>m.value="core")},{default:a(()=>[t(d,{title:l(o)("memory.stats.core"),value:x.value.core||0,"value-style":"color: #69db7c; font-size: 20px;"},{prefix:a(()=>[t(l(re))]),_:1},8,["title","value"]),i("div",fe,s(l(o)("memory.stats.coreHint")),1)]),_:1})]),_:1})]),_:1}),t(y,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{title:a(()=>[i("div",ge,[i("span",null,s(l(o)("memory.card.title")),1),t(D,{value:m.value,"onUpdate:value":e[4]||(e[4]=n=>m.value=n),"button-style":"solid",size:"small",onChange:B},{default:a(()=>[t(R,{value:"short-term"},{default:a(()=>[g(s(l(o)("memory.card.tabs.short")),1)]),_:1}),t(R,{value:"long-term"},{default:a(()=>[g(s(l(o)("memory.card.tabs.long")),1)]),_:1}),t(R,{value:"core"},{default:a(()=>[g(s(l(o)("memory.card.tabs.core")),1)]),_:1})]),_:1},8,["value"])])]),extra:a(()=>[t(E,{value:O.value,"onUpdate:value":e[5]||(e[5]=n=>O.value=n),placeholder:l(o)("memory.card.searchPlaceholder"),"allow-clear":"",size:"small",style:{width:"220px"},loading:h.value,onSearch:q},null,8,["value","placeholder","loading"])]),default:a(()=>[h.value?(f(),_("div",he,[t(K)])):b.value.length?(f(),_("div",be,[(f(!0),_(ce,null,ie(b.value,n=>(f(),_("div",{key:n.id,class:"memory-item"},[i("div",ke,[i("div",we,[t(Q,{color:F(n.layer||m.value),style:{"font-size":"10px"}},{default:a(()=>[g(s(P(n.layer||m.value)),1)]),_:2},1032,["color"]),n.importance?(f(),_("span",Ce,s(l(o)("memory.card.importanceLabel",{value:n.importance})),1)):me("",!0)]),i("span",Te,s(n.time),1)]),i("div",ze,s(n.content),1)]))),128))])):(f(),_("div",xe,s(l(o)("memory.card.emptyText")),1))]),_:1}),t(u,{loading:$.value,onClick:W,style:{background:"var(--bg-card-hover)","border-color":"var(--text-muted)",width:"100%"}},{icon:a(()=>[t(l(ne))]),default:a(()=>[g(" "+s(l(o)("memory.consolidateButton")),1)]),_:1},8,["loading"]),t(J,{open:z.value,"onUpdate:open":e[8]||(e[8]=n=>z.value=n),title:l(o)("memory.modal.title"),"confirm-loading":M.value,onOk:H},{default:a(()=>[t(G,{"label-col":{span:4},"wrapper-col":{span:20},style:{"margin-top":"16px"}},{default:a(()=>[t(N,{label:l(o)("memory.modal.contentLabel"),required:""},{default:a(()=>[t(Y,{value:v.value.content,"onUpdate:value":e[6]||(e[6]=n=>v.value.content=n),rows:4,placeholder:l(o)("memory.modal.contentPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),t(N,{label:l(o)("memory.modal.importanceLabel")},{default:a(()=>[t(A,{value:v.value.importance,"onUpdate:value":e[7]||(e[7]=n=>v.value.importance=n),min:0,max:1,step:.1,marks:U.value},null,8,["value","marks"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading"])])}}},Be=X(Oe,[["__scopeId","data-v-a74b99b3"]]);export{Be as default};
@@ -0,0 +1,6 @@
1
+ import{r as h,o as lt,x as ot,M,R as k,P as i,u as o,c as e,N as t,K as g,L as d,O as v,Q as m,_ as rt,a6 as nt,F as Ie,S as y,a1 as G,$ as st,Y as ut,f as te}from"./vendor-Ci2pTZ_t.js";import{_ as it,b as dt,u as ct,d as x}from"./index-Bn_0bupT.js";import{u as de}from"./useShellMode-CgR0wCYM.js";import{a as ce,b as $e,f as Fe,c as Le,d as ae,p as vt}from"./mtc-parser-Cc3pB9Xm.js";import{R as pt,f as ft,e as mt,w as je,aY as bt,aE as gt,N as yt,al as _t,z as ht}from"./icons-B2G69bhT.js";import"./community-parser-CO25nZFt.js";const kt={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},xt={class:"page-title"},wt={class:"page-sub"},St={style:{"font-family":"monospace"}},zt={style:{"font-family":"monospace"}},Ct={style:{"margin-left":"8px",color:"var(--text-secondary)","font-size":"12px"}},It={key:1,style:{color:"var(--text-muted)"}},$t={key:0,style:{"font-family":"monospace","font-size":"11px","word-break":"break-all"}},Ft={key:1,style:{color:"var(--text-muted)"}},Lt={key:1,style:{"font-family":"monospace","font-size":"11px"}},jt=["title"],Mt={style:{"font-family":"monospace"}},Dt={style:{"font-family":"monospace","font-size":"12px"}},Et={style:{"font-family":"monospace","font-size":"12px"}},Pt={class:"raw-pre"},Ot={style:{"font-family":"monospace"}},Ut={key:0,style:{"font-family":"monospace","font-size":"11px",color:"var(--text-tertiary)","margin-left":"8px"}},At={key:0},Nt={style:{"font-family":"monospace"}},Rt={style:{"font-family":"monospace",color:"var(--text-secondary)","font-size":"11px"}},Tt={style:{"font-family":"monospace"}},Bt={style:{"font-family":"monospace"}},qt={style:{"font-family":"monospace","font-size":"11px"}},Ht={key:0,style:{color:"#cf1322","margin-left":"8px"}},Zt={key:0,style:{"font-family":"monospace","font-size":"11px",color:"var(--text-secondary)","margin-left":"8px"}},Jt={class:"raw-pre",style:{margin:"0"}},Gt={__name:"Mtc",setup(Vt){const{t:r}=dt(),D=ct(),ve=h("status"),Q=h(!1),w=h(ce("")),X=h(""),le=h(!1),E=h($e("")),V=h(""),W=h(""),oe=h(!1),S=h(null),Me=te(()=>[{title:r("mtc.historyColumns.seq"),key:"seq",dataIndex:"seq",width:"90px"},{title:r("mtc.historyColumns.namespace"),key:"namespace",dataIndex:"namespace"},{title:r("mtc.historyColumns.treeSize"),key:"treeSize",dataIndex:"treeSize",width:"100px"},{title:r("mtc.historyColumns.treeHeadId"),key:"treeHeadId",dataIndex:"treeHeadId",width:"180px"},{title:r("mtc.historyColumns.publishedAt"),key:"publishedAt",dataIndex:"publishedAt",width:"140px"}]);function De(a,l){return a?a.length<=l?a:a.slice(0,l)+"…":""}async function pe(){Q.value=!0;try{if(de().isEmbedded){const a=await D.sendRaw({type:"mtc.audit-status"},3e4),l=a?.result;if(!a?.ok||!l?.success)throw new Error(l?.error||a?.error||"mtc.audit-status failed");w.value=ce(l.status)}else{const{output:a}=await D.execute("audit mtc status --json",3e4);w.value=ce(a)}}catch(a){x.error(r("mtc.messages.loadStatusFailed",{err:a?.message||a}))}finally{Q.value=!1}}async function Ee(){if(!X.value.trim()){x.warning(r("mtc.messages.stateFileRequired"));return}le.value=!0;try{const a=X.value.trim().replace(/"/g,'\\"'),{output:l}=await D.execute(`mtc publish-status "${a}" --json`,8e3);E.value=$e(l)}catch(a){x.error(r("mtc.messages.loadPublishFailed",{err:a?.message||a}))}finally{le.value=!1}}async function fe(){if(!V.value.trim()||!W.value.trim()){x.warning(r("mtc.messages.verifyPathsRequired"));return}oe.value=!0,S.value=null;try{const a=V.value.trim().replace(/"/g,'\\"'),l=W.value.trim().replace(/"/g,'\\"'),{output:u}=await D.execute(`mtc verify "${a}" --landmark "${l}" --json`,12e3);S.value=vt(u),S.value.raw||x.error(r("mtc.messages.verifyNoJson"))}catch(a){x.error(r("mtc.messages.verifyFailed",{err:a?.message||a}))}finally{oe.value=!1}}const $=h({config:{enabled:!1,mode:"independent",alg:"ed25519",batch_interval_seconds:60,issuer:""},trust_anchors:{chain_count:0,total:0,by_chain:{}},staging:{pending:0},batches:{total:0,latest:null}}),Pe=te(()=>{switch($.value.config.mode){case"federated":return"Federated";case"light-client":return"Light Client";default:return"Independent"}}),Oe=[{title:"chain",key:"chain",dataIndex:"chain",width:"120px"},{title:"锚数",key:"count",dataIndex:"count",width:"80px"}],Ue=te(()=>{const a=$.value.trust_anchors.by_chain||{};return Object.entries(a).map(([l,u])=>({key:l,chain:l,count:u}))});function me(a){return{config:{enabled:!1,mode:"independent",alg:"ed25519",batch_interval_seconds:60,issuer:"",...a?.config||{}},trust_anchors:{chain_count:0,total:0,by_chain:{},...a?.trust_anchors||{}},staging:{pending:0,...a?.staging||{}},batches:{total:0,latest:null,...a?.batches||{}}}}const N=h({});let re=null;function Ae(a){return a==="ok"?"#52c41a":a==="degraded"?"#faad14":a==="down"?"#ff4d4f":"#888"}async function be(){try{if(de().isEmbedded){const u=await D.sendRaw({type:"mtc.bridge-sla"},3e4),f=u?.result;u?.ok&&f?.success&&f.metrics&&typeof f.metrics.sla_status=="string"&&(N.value=f.metrics);return}const{output:a}=await D.execute("crosschain mtc-sla --json",3e4),l=a.split(/\r?\n/);for(let u=0;u<l.length;u++)if(l[u].trimStart().startsWith("{"))for(let f=l.length;f>u;f--)try{const s=JSON.parse(l.slice(u,f).join(`
2
+ `));if(s&&typeof s.sla_status=="string"){N.value=s;return}}catch{}}catch{}}async function Ne(){try{if(de().isEmbedded){const u=await D.sendRaw({type:"mtc.bridge-status"},3e4),f=u?.result;if(!u?.ok||!f?.success||!f.status)throw new Error(f?.error||u?.error||"mtc.bridge-status failed");const s=f.status;$.value=me({config:{enabled:s.enabled,mode:s.mode,alg:s.alg,batch_interval_seconds:s.batch_interval_seconds,issuer:s.issuer},trust_anchors:s.trust_anchors,staging:s.staging,batches:s.batches});return}const{output:a}=await D.execute("crosschain mtc-status --json",3e4),l=a.split(/\r?\n/);for(let u=0;u<l.length;u++)if(l[u].trimStart().startsWith("{"))for(let f=l.length;f>u;f--)try{const s=JSON.parse(l.slice(u,f).join(`
3
+ `));if(s&&s.config){$.value=me(s);return}}catch{}}catch(a){x.error("加载桥 MTC 状态失败: "+(a?.message||a))}}const J=h(""),ne=h(!1),P=h(null),_=h(null),ge=h("随 governance-log 加载刷新"),se=te(()=>{const a=P.value?.state;return a?Array.isArray(a.pending_thresholds)&&a.pending_thresholds.length>0?a.pending_thresholds:a.pending_threshold&&Number.isInteger(a.pending_threshold.target)?[a.pending_threshold]:[]:[]}),Re=[{title:"member_id",key:"member_id",dataIndex:"member_id"},{title:"status",key:"status",dataIndex:"status",width:"110px"},{title:"weight",key:"weight",dataIndex:"weight",width:"80px"},{title:"alg",key:"alg",dataIndex:"alg",width:"120px"}];function Te(a){switch(a){case"create":return"cyan";case"invite":case"vote":return"blue";case"leave":case"rotate-key":return"default";case"propose-revoke":case"propose-threshold":return"orange";case"confirm-revoke":case"confirm-threshold":return"gold";case"fork":case"merge":return"purple";case"dispute":case"wind-down":return"red";default:return"default"}}const L=h(!1),K=h(null),q=h({actor:"",candidate:"",pubkeyId:""}),H=h({actor:"",candidate:"",decision:"approve"}),Z=h({actor:"",newM:2}),R=h({actor:"",target:"",reason:"inactive"}),j=h({dropZone:"",verify:!1});function C(a){return String(a||"").replace(/"/g,"").replace(/[`$]/g,"")}async function O(a,l=!0){if(!J.value.trim()){x.warning("请先输入联邦 ID");return}L.value=!0,K.value=null;try{const u=C(J.value.trim()),f=`mtc federation ${a.replace("<FED>",`"${u}"`)} --json`,{output:s}=await D.execute(f,12e3),c=s.split(/\r?\n/);let p=null;for(let I=0;I<c.length;I++)if(c[I].trimStart().startsWith("{")){for(let U=c.length;U>I;U--)try{p=JSON.parse(c.slice(I,U).join(`
4
+ `));break}catch{}if(p)break}K.value=p||{raw:s},x.success("命令执行完成"),l&&await xe()}catch(u){x.error("CLI 执行失败: "+(u?.message||u)),K.value={error:u?.message||String(u)}}finally{L.value=!1}}function ye(){const a=q.value;if(!a.actor||!a.candidate||!a.pubkeyId){x.warning("actor / candidate / pubkey-id 都必填");return}return O(`invite <FED> "${C(a.candidate)}" --actor "${C(a.actor)}" --candidate-pubkey-id "${C(a.pubkeyId)}"`)}function _e(){const a=H.value;if(!a.actor||!a.candidate){x.warning("actor / candidate 必填");return}return O(`vote <FED> "${C(a.candidate)}" --actor "${C(a.actor)}" --decision ${a.decision}`)}function he(){const a=Z.value;if(!a.actor){x.warning("actor 必填");return}return O(`propose-threshold <FED> ${parseInt(a.newM)} --actor "${C(a.actor)}"`)}function Be(){const a=Z.value;if(!a.actor){x.warning("actor 必填");return}return O(`confirm-threshold <FED> --actor "${C(a.actor)}"`)}function qe(a){const l=(Z.value.actor||"").trim();if(!l){x.warning('请先在"改 threshold"子 tab 填 actor');return}if(!a){x.warning("proposal event_id 缺失");return}return O(`confirm-threshold <FED> --actor "${C(l)}" --proposal-event-id "${C(a)}"`)}function He(a){return a?a.length<=16?a:`${a.slice(0,8)}…${a.slice(-4)}`:"—"}function ke(){const a=R.value;if(!a.actor||!a.target){x.warning("actor / target 必填");return}return O(`propose-revoke <FED> "${C(a.target)}" --actor "${C(a.actor)}" --reason "${C(a.reason)}"`)}function Ze(){const a=R.value;if(!a.actor||!a.target){x.warning("actor / target 必填");return}return O(`confirm-revoke <FED> "${C(a.target)}" --actor "${C(a.actor)}"`)}function Je(){if(!j.value.dropZone){x.warning("drop-zone 必填");return}return O(`governance-publish <FED> --drop-zone "${C(j.value.dropZone)}"`,!1)}function Ge(){if(!j.value.dropZone){x.warning("drop-zone 必填");return}const a=j.value.verify?" --verify":"";return O(`governance-pull <FED> --drop-zone "${C(j.value.dropZone)}"${a}`)}function Ve(){if(!j.value.dropZone){x.warning("drop-zone 必填");return}const a=j.value.verify?" --verify":"";return O(`governance-sync-serve <FED> --drop-zone "${C(j.value.dropZone)}" --once${a}`)}async function xe(){if(!J.value.trim()){x.warning("请输入联邦 ID");return}ne.value=!0;try{const a=J.value.trim().replace(/"/g,""),{output:l}=await D.execute(`mtc federation governance-log "${a}" --json`,8e3),u=l.split(/\r?\n/);let f=!1;for(let s=0;s<u.length;s++)if(u[s].trimStart().startsWith("{")){for(let c=u.length;c>s;c--)try{const p=JSON.parse(u.slice(s,c).join(`
5
+ `));if(p&&p.state){P.value=p,f=!0;break}}catch{}if(f)break}if(!f){x.error("未能解析 governance-log 输出");return}await We(a)}catch(a){x.error("加载 governance.log 失败: "+(a?.message||a))}finally{ne.value=!1}}async function We(a){if(_.value=null,ge.value="随 governance-log 加载刷新",!!a)try{const l=String(a).replace(/"/g,""),{output:u}=await D.execute(`mtc federation governance-sync-stats "${l}" --json`,8e3),f=u.split(/\r?\n/);for(let s=0;s<f.length;s++)if(f[s].trimStart().startsWith("{"))for(let c=f.length;c>s;c--)try{const p=JSON.parse(f.slice(s,c).join(`
6
+ `));if(p&&(p.available!==void 0||p.mode!==void 0)){_.value=p.available===!1?null:p;return}}catch{}}catch{_.value=null}}return lt(()=>{pe(),Ne(),be(),re=setInterval(be,3e4)}),ot(()=>{re&&clearInterval(re)}),(a,l)=>{const u=g("a-button"),f=g("a-space"),s=g("a-statistic"),c=g("a-card"),p=g("a-col"),I=g("a-tag"),U=g("a-row"),z=g("a-descriptions-item"),ee=g("a-descriptions"),T=g("a-alert"),A=g("a-tab-pane"),F=g("a-input"),b=g("a-form-item"),B=g("a-form"),ue=g("a-table"),Ke=g("a-collapse-panel"),Ye=g("a-collapse"),ie=g("a-empty"),we=g("a-list-item"),Se=g("a-list"),Qe=g("a-timeline-item"),Xe=g("a-timeline"),ze=g("a-select-option"),et=g("a-select"),tt=g("a-input-number"),at=g("a-checkbox"),Ce=g("a-tabs");return d(),M("div",null,[k("div",kt,[k("div",null,[k("h2",xt,i(o(r)("mtc.title")),1),k("p",wt,i(o(r)("mtc.subtitle")),1)]),e(f,null,{default:t(()=>[e(u,{loading:Q.value,onClick:pe},{icon:t(()=>[e(o(pt))]),default:t(()=>[v(" "+i(o(r)("mtc.refresh")),1)]),_:1},8,["loading"])]),_:1})]),e(Ce,{activeKey:ve.value,"onUpdate:activeKey":l[17]||(l[17]=n=>ve.value=n),class:"mtc-tabs"},{default:t(()=>[e(A,{key:"status",tab:o(r)("mtc.tabs.status")},{default:t(()=>[e(U,{gutter:[16,16],style:{"margin-bottom":"16px"}},{default:t(()=>[e(p,{xs:24,sm:12,lg:6},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(s,{title:o(r)("mtc.status.enabledLabel"),value:w.value.config.enabled?o(r)("mtc.status.enabled"):o(r)("mtc.status.disabled"),"value-style":{color:w.value.config.enabled?"#52c41a":"#888",fontSize:"20px"}},{prefix:t(()=>[(d(),m(rt(w.value.config.enabled?o(ft):o(mt))))]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),e(p,{xs:24,sm:12,lg:6},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(s,{title:o(r)("mtc.status.intervalLabel"),value:o(Fe)(w.value.config.batch_interval_seconds),"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:t(()=>[e(o(je))]),_:1},8,["title","value"])]),_:1})]),_:1}),e(p,{xs:24,sm:12,lg:6},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(s,{title:o(r)("mtc.status.stagingLabel"),value:w.value.staging.count,"value-style":{color:w.value.staging.count>0?"#faad14":"#888",fontSize:"20px"}},nt({prefix:t(()=>[e(o(bt))]),_:2},[w.value.staging.malformed>0?{name:"suffix",fn:t(()=>[e(I,{color:"red",style:{"margin-left":"8px"}},{default:t(()=>[v(i(o(r)("mtc.status.stagingMalformed",{count:w.value.staging.malformed})),1)]),_:1})]),key:"0"}:void 0]),1032,["title","value","value-style"])]),_:1})]),_:1}),e(p,{xs:24,sm:12,lg:6},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(s,{title:o(r)("mtc.status.totalBatches"),value:w.value.batches.count,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:t(()=>[e(o(gt))]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),e(c,{title:o(r)("mtc.status.configCard"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[e(ee,{column:{xs:1,sm:2},size:"small"},{default:t(()=>[e(z,{label:"namespace"},{default:t(()=>[k("span",St,i(w.value.config.namespace_prefix||"—"),1)]),_:1}),e(z,{label:"issuer"},{default:t(()=>[k("span",zt,i(w.value.config.issuer||"—"),1)]),_:1}),e(z,{label:"oldest queued"},{default:t(()=>[v(i(o(Le)(w.value.staging.oldest_queued_at)),1)]),_:1}),e(z,{label:"last batch"},{default:t(()=>[w.value.batches.last_batch_id?(d(),M(Ie,{key:0},[e(I,{color:"cyan",style:{"font-family":"monospace"}},{default:t(()=>[v("#"+i(w.value.batches.last_batch_id),1)]),_:1}),k("span",Ct,i(o(r)("mtc.status.lastBatchSize",{size:w.value.batches.last_tree_size,time:o(ae)(w.value.batches.last_closed_at)})),1)],64)):(d(),M("span",It,i(o(r)("mtc.status.noBatches")),1))]),_:1}),e(z,{label:"last tree_head_id",span:2},{default:t(()=>[w.value.batches.last_tree_head_id?(d(),M("span",$t,i(w.value.batches.last_tree_head_id),1)):(d(),M("span",Ft,"—"))]),_:1})]),_:1})]),_:1},8,["title"]),!w.value.ok&&!Q.value?(d(),m(T,{key:0,type:"info","show-icon":"",message:o(r)("mtc.status.loadFailMessage"),description:o(r)("mtc.status.loadFailDescription")},null,8,["message","description"])):w.value.config.enabled?y("",!0):(d(),m(T,{key:1,type:"info","show-icon":"",message:o(r)("mtc.status.notEnabledMessage"),description:o(r)("mtc.status.notEnabledDescription")},null,8,["message","description"]))]),_:1},8,["tab"]),e(A,{key:"publisher",tab:o(r)("mtc.tabs.publisher")},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[e(B,{layout:"inline",onSubmit:G(Ee,["prevent"])},{default:t(()=>[e(b,{label:o(r)("mtc.publisher.stateFileLabel")},{default:t(()=>[e(F,{value:X.value,"onUpdate:value":l[0]||(l[0]=n=>X.value=n),placeholder:o(r)("mtc.publisher.stateFilePlaceholder"),style:{"min-width":"360px"},"allow-clear":""},null,8,["value","placeholder"])]),_:1},8,["label"]),e(b,null,{default:t(()=>[e(u,{loading:le.value,type:"primary","html-type":"submit"},{default:t(()=>[v(i(o(r)("mtc.publisher.queryButton")),1)]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1}),E.value.ok&&!E.value.exists?(d(),m(T,{key:0,type:"info","show-icon":"",message:o(r)("mtc.publisher.missingMessage"),description:o(r)("mtc.publisher.missingDescription",{path:E.value.stateFile}),style:{"margin-bottom":"16px"}},null,8,["message","description"])):y("",!0),E.value.exists?(d(),m(U,{key:1,gutter:[16,16],style:{"margin-bottom":"16px"}},{default:t(()=>[e(p,{xs:24,sm:12,lg:8},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(s,{title:o(r)("mtc.publisher.lastSeq"),value:E.value.lastSeq,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:t(()=>[e(o(yt))]),_:1},8,["title","value"])]),_:1})]),_:1}),e(p,{xs:24,sm:12,lg:8},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(s,{title:o(r)("mtc.publisher.historyEntries"),value:E.value.historyCount,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:t(()=>[e(o(_t))]),_:1},8,["title","value"])]),_:1})]),_:1}),e(p,{xs:24,sm:12,lg:8},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(s,{title:o(r)("mtc.publisher.lastPublished"),value:o(ae)(E.value.lastPublishedAt),"value-style":{color:"#52c41a",fontSize:"16px"}},{prefix:t(()=>[e(o(je))]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1})):y("",!0),E.value.exists&&E.value.history.length>0?(d(),m(ue,{key:2,"data-source":E.value.history,columns:Me.value,pagination:{pageSize:10},size:"small","row-key":"key"},{bodyCell:t(({column:n,record:Y})=>[n.key==="seq"?(d(),m(I,{key:0,color:"cyan",style:{"font-family":"monospace"}},{default:t(()=>[v("#"+i(Y.seq),1)]),_:2},1024)):n.key==="treeHeadId"?(d(),M("span",Lt,i(De(Y.treeHeadId,22)),1)):n.key==="publishedAt"?(d(),M("span",{key:2,title:Y.publishedAt},i(o(ae)(Y.publishedAt)),9,jt)):y("",!0)]),_:1},8,["data-source","columns"])):y("",!0)]),_:1},8,["tab"]),e(A,{key:"verify",tab:o(r)("mtc.tabs.verify")},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[e(T,{type:"info","show-icon":"",message:o(r)("mtc.verify.infoMessage"),description:o(r)("mtc.verify.infoDescription"),style:{"margin-bottom":"16px"}},null,8,["message","description"]),e(B,{layout:"vertical",onSubmit:G(fe,["prevent"])},{default:t(()=>[e(b,{label:o(r)("mtc.verify.envelopeLabel")},{default:t(()=>[e(F,{value:V.value,"onUpdate:value":l[1]||(l[1]=n=>V.value=n),placeholder:o(r)("mtc.verify.envelopePlaceholder"),"allow-clear":""},null,8,["value","placeholder"])]),_:1},8,["label"]),e(b,{label:o(r)("mtc.verify.landmarkLabel")},{default:t(()=>[e(F,{value:W.value,"onUpdate:value":l[2]||(l[2]=n=>W.value=n),placeholder:o(r)("mtc.verify.landmarkPlaceholder"),"allow-clear":""},null,8,["value","placeholder"])]),_:1},8,["label"]),e(b,null,{default:t(()=>[e(u,{loading:oe.value,type:"primary",disabled:!V.value||!W.value,onClick:fe},{icon:t(()=>[e(o(ht))]),default:t(()=>[v(" "+i(o(r)("mtc.verify.runButton")),1)]),_:1},8,["loading","disabled"])]),_:1})]),_:1})]),_:1}),S.value?(d(),m(c,{key:0,title:S.value.ok?o(r)("mtc.verify.passTitle"):o(r)("mtc.verify.failTitle"),size:"small",style:st({background:"var(--bg-card)",borderColor:S.value.ok?"#52c41a":"#ff4d4f"})},{default:t(()=>[e(ee,{column:1,size:"small",bordered:""},{default:t(()=>[e(z,{label:o(r)("mtc.verify.resultLabel")},{default:t(()=>[e(I,{color:S.value.ok?"green":"red"},{default:t(()=>[v(i(S.value.ok?"PASS":"FAIL"),1)]),_:1},8,["color"])]),_:1},8,["label"]),S.value.ok?y("",!0):(d(),m(z,{key:0,label:o(r)("mtc.verify.errorCodeLabel")},{default:t(()=>[k("span",Mt,i(S.value.code||o(r)("mtc.verify.errorCodeNone")),1),S.value.recoverable?(d(),m(I,{key:0,color:"orange",style:{"margin-left":"8px"}},{default:t(()=>[v(i(o(r)("mtc.verify.recoverable")),1)]),_:1})):y("",!0)]),_:1},8,["label"])),S.value.leaf?(d(),m(z,{key:1,label:o(r)("mtc.verify.subjectLabel")},{default:t(()=>[k("span",Dt,i(S.value.leaf.subject||"—"),1)]),_:1},8,["label"])):y("",!0),S.value.leaf?(d(),m(z,{key:2,label:o(r)("mtc.verify.kindLabel")},{default:t(()=>[e(I,null,{default:t(()=>[v(i(S.value.leaf.kind||"—"),1)]),_:1})]),_:1},8,["label"])):y("",!0),S.value.treeHead?(d(),m(z,{key:3,label:o(r)("mtc.verify.treeSizeLabel")},{default:t(()=>[v(i(S.value.treeHead.tree_size),1)]),_:1},8,["label"])):y("",!0),S.value.treeHead?(d(),m(z,{key:4,label:o(r)("mtc.verify.issuerLabel")},{default:t(()=>[k("span",Et,i(S.value.treeHead.issuer||"—"),1)]),_:1},8,["label"])):y("",!0)]),_:1}),S.value.raw?(d(),m(Ye,{key:0,ghost:"",style:{"margin-top":"12px"}},{default:t(()=>[e(Ke,{key:"raw",header:o(r)("mtc.verify.rawHeader")},{default:t(()=>[k("pre",Pt,i(JSON.stringify(S.value.raw,null,2)),1)]),_:1},8,["header"])]),_:1})):y("",!0)]),_:1},8,["title","style"])):y("",!0)]),_:1},8,["tab"]),e(A,{key:"bridge",tab:"跨链桥 MTC"},{default:t(()=>[e(U,{gutter:[16,16],style:{"margin-bottom":"16px"}},{default:t(()=>[e(p,{xs:24,sm:8},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(s,{title:"桥 MTC 集成",value:$.value.config.enabled?"已启用":"未启用","value-style":{color:$.value.config.enabled?"#52c41a":"#888",fontSize:"20px"}},null,8,["value","value-style"])]),_:1})]),_:1}),e(p,{xs:24,sm:8},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(s,{title:"互信模式",value:Pe.value,"value-style":{color:"#1677ff",fontSize:"20px"}},null,8,["value"])]),_:1})]),_:1}),e(p,{xs:24,sm:8},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(s,{title:"待批次关闭",value:$.value.staging.pending,"value-style":{color:$.value.staging.pending>0?"#faad14":"#888",fontSize:"20px"}},null,8,["value","value-style"])]),_:1})]),_:1})]),_:1}),e(c,{title:"配置",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[e(ee,{column:{xs:1,sm:2},size:"small",bordered:""},{default:t(()=>[e(z,{label:"算法"},{default:t(()=>[e(I,{color:$.value.config.alg==="slh-dsa-128f"?"purple":"blue"},{default:t(()=>[v(i($.value.config.alg||"—"),1)]),_:1},8,["color"])]),_:1}),e(z,{label:"batch interval"},{default:t(()=>[v(i(o(Fe)($.value.config.batch_interval_seconds)),1)]),_:1}),e(z,{label:"issuer"},{default:t(()=>[k("span",Ot,i($.value.config.issuer||"—"),1)]),_:1}),e(z,{label:"batches 总数"},{default:t(()=>[v(i($.value.batches.total)+" ",1),$.value.batches.latest?(d(),M("span",Ut," latest: "+i($.value.batches.latest),1)):y("",!0)]),_:1})]),_:1})]),_:1}),e(c,{title:"信任锚 (Independent 模式)",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[$.value.trust_anchors.total===0?(d(),m(ie,{key:0,description:"未配置信任锚"})):(d(),m(ue,{key:1,"data-source":Ue.value,columns:Oe,pagination:!1,size:"small","row-key":"key"},null,8,["data-source"])),l[18]||(l[18]=k("p",{style:{"margin-top":"8px","font-size":"12px",color:"var(--text-tertiary)"}},[v(" 添加:"),k("code",null,"cc crosschain mtc-trust-anchor add <chain> <pubkey-id> --alg --issuer")],-1))]),_:1}),e(c,{title:"SLA / Monitoring (v0.2)",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[e(U,{gutter:[12,12]},{default:t(()=>[e(p,{xs:24,sm:12,lg:6},{default:t(()=>[e(s,{title:"SLA Status",value:N.value.sla_status||"—","value-style":{color:Ae(N.value.sla_status),fontSize:"18px"}},null,8,["value","value-style"])]),_:1}),e(p,{xs:24,sm:12,lg:6},{default:t(()=>[e(s,{title:"Staged pending",value:N.value.staged_pending_count??0,"value-style":{fontSize:"18px"}},null,8,["value"])]),_:1}),e(p,{xs:24,sm:12,lg:6},{default:t(()=>[e(s,{title:"Batches / hour",value:N.value.batches_last_hour??0,"value-style":{fontSize:"18px"}},null,8,["value"])]),_:1}),e(p,{xs:24,sm:12,lg:6},{default:t(()=>[e(s,{title:"Last batch",value:N.value.seconds_since_last_batch!==null&&N.value.seconds_since_last_batch!==void 0?`${N.value.seconds_since_last_batch}s ago`:"—","value-style":{fontSize:"14px"}},null,8,["value"])]),_:1})]),_:1}),l[19]||(l[19]=k("p",{style:{"margin-top":"8px","font-size":"12px",color:"var(--text-tertiary)"}},[v(" 通过 "),k("code",null,"cc crosschain mtc-sla --json"),v(" 实时刷新(30s 自动 poll)。可纳入外部 Prometheus / Grafana。 ")],-1))]),_:1}),e(T,{type:"info","show-icon":"",message:"桥 MTC 仍 opt-in",description:"启用后 cc crosschain bridge|swap|send 加 --mtc 才会写 envelope;定期 cc crosschain mtc-batch 关 staging 为批次。完整指南见 docs.chainlesschain.com/guide/mtc-merkle-tree-certs。"})]),_:1}),e(A,{key:"governance",tab:"联邦治理"},{default:t(()=>[e(B,{layout:"inline",style:{"margin-bottom":"16px"}},{default:t(()=>[e(b,{label:"联邦 ID"},{default:t(()=>[e(F,{value:J.value,"onUpdate:value":l[3]||(l[3]=n=>J.value=n),placeholder:"e.g. fed-test",style:{width:"240px"},"allow-clear":""},null,8,["value"])]),_:1}),e(b,null,{default:t(()=>[e(u,{type:"primary",loading:ne.value,onClick:xe},{default:t(()=>[...l[20]||(l[20]=[v(" 加载 governance.log ",-1)])]),_:1},8,["loading"])]),_:1})]),_:1}),P.value?(d(),M("div",At,[e(U,{gutter:[16,16],style:{"margin-bottom":"16px"}},{default:t(()=>[e(p,{xs:24,sm:8},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(s,{title:"状态",value:P.value.state.status||"—","value-style":{fontSize:"20px"}},null,8,["value"])]),_:1})]),_:1}),e(p,{xs:24,sm:8},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(s,{title:"Threshold",value:P.value.state.threshold||1,"value-style":{fontSize:"20px"}},null,8,["value"])]),_:1})]),_:1}),e(p,{xs:24,sm:8},{default:t(()=>[e(c,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(s,{title:"事件总数",value:(P.value.events||[]).length,"value-style":{fontSize:"20px"}},null,8,["value"])]),_:1})]),_:1})]),_:1}),e(c,{title:"成员",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[e(ue,{"data-source":P.value.state.members||[],columns:Re,pagination:!1,size:"small","row-key":"member_id"},null,8,["data-source"])]),_:1}),(P.value.state.pending_invites||[]).length?(d(),m(c,{key:0,title:"待投票邀请",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[e(Se,{"data-source":P.value.state.pending_invites,size:"small"},{renderItem:t(({item:n})=>[e(we,null,{default:t(()=>[k("span",Nt,i(n.member_id),1),e(I,{color:"blue"},{default:t(()=>[v("approve "+i(n.votes.approve.length)+"/"+i(n.required),1)]),_:2},1024),n.votes.reject.length?(d(),m(I,{key:0,color:"red"},{default:t(()=>[v("reject "+i(n.votes.reject.length),1)]),_:2},1024)):y("",!0)]),_:2},1024)]),_:1},8,["data-source"])]),_:1})):y("",!0),e(c,{title:"事件时间线",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[e(Xe,null,{default:t(()=>[(d(!0),M(Ie,null,ut(P.value.events||[],n=>(d(),m(Qe,{key:n.event_id},{default:t(()=>[k("span",Rt,i(n.issued_at),1),e(I,{color:Te(n.event_type),style:{"margin-left":"8px"}},{default:t(()=>[v(i(n.event_type),1)]),_:2},1032,["color"]),l[21]||(l[21]=v(" actor: ",-1)),k("span",Tt,i(n.actor_member_id),1)]),_:2},1024))),128))]),_:1})]),_:1}),se.value.length>0?(d(),m(c,{key:1,title:"待批 threshold proposals",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[se.value.length>1?(d(),m(T,{key:0,type:"warning","show-icon":"",message:"多 proposal 并发",description:"同一联邦同时存在多个待批 threshold proposal。下方每行可独立确认(CRDT-style 选择);不指定时 CLI 默认确认最新一条。",style:{"margin-bottom":"12px"}})):y("",!0),e(Se,{"data-source":se.value,size:"small"},{renderItem:t(({item:n})=>[e(we,null,{actions:t(()=>[e(u,{size:"small",type:"primary",loading:L.value,onClick:Y=>qe(n.event_id)},{default:t(()=>[...l[24]||(l[24]=[v(" 确认这个 ",-1)])]),_:1},8,["loading","onClick"])]),default:t(()=>[e(f,{wrap:""},{default:t(()=>[e(I,{color:"orange"},{default:t(()=>[v("target M = "+i(n.target),1)]),_:2},1024),l[22]||(l[22]=k("span",{style:{"font-size":"11px",color:"var(--text-secondary)"}},"by",-1)),k("span",Bt,i(n.proposer||"—"),1),l[23]||(l[23]=k("span",{style:{"font-size":"11px",color:"var(--text-secondary)"}},"at",-1)),k("span",qt,i(o(Le)(n.proposed_at)),1),e(I,{color:"cyan",style:{"font-family":"monospace"}},{default:t(()=>[v(i(He(n.event_id)),1)]),_:2},1024)]),_:2},1024)]),_:2},1024)]),_:1},8,["data-source"])]),_:1})):y("",!0),_.value?(d(),m(c,{key:2,title:"实时同步状态",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[e(U,{gutter:[12,12]},{default:t(()=>[e(p,{xs:24,sm:8},{default:t(()=>[e(s,{title:"模式",value:_.value.mode||"—","value-style":{fontSize:"16px",color:"#1677ff"}},null,8,["value"])]),_:1}),e(p,{xs:24,sm:8},{default:t(()=>[e(s,{title:"最近 tick",value:o(ae)(_.value.last_tick_at)||"—","value-style":{fontSize:"16px"}},null,8,["value"])]),_:1}),e(p,{xs:24,sm:8},{default:t(()=>[e(s,{title:"下次轮询",value:ge.value,"value-style":{fontSize:"14px",color:"var(--text-secondary)"}},null,8,["value"])]),_:1})]),_:1}),_.value.publish||_.value.pull||_.value.libp2p?(d(),m(ee,{key:0,column:{xs:1,sm:2},size:"small",style:{"margin-top":"12px"}},{default:t(()=>[_.value.publish?(d(),m(z,{key:0,label:"Publish"},{default:t(()=>[v(" last "+i(_.value.publish.last_published||0)+" / total "+i(_.value.publish.total_published||0),1)]),_:1})):y("",!0),_.value.pull?(d(),m(z,{key:1,label:"Pull"},{default:t(()=>[v(" last "+i(_.value.pull.last_appended||0)+" / total "+i(_.value.pull.total_appended||0)+" ",1),_.value.pull.last_invalid||_.value.pull.last_unknown?(d(),M("span",Ht," · invalid "+i(_.value.pull.last_invalid||0)+" / unknown "+i(_.value.pull.last_unknown||0),1)):y("",!0)]),_:1})):y("",!0),_.value.libp2p?(d(),m(z,{key:2,label:"libp2p wire",span:2},{default:t(()=>[v(" recv "+i(_.value.libp2p.wire_received||0)+" · appended "+i(_.value.libp2p.wire_appended||0)+" ",1),_.value.libp2p.topic?(d(),M("span",Zt," ("+i(_.value.libp2p.topic)+") ",1)):y("",!0)]),_:1})):y("",!0)]),_:1})):(d(),m(ie,{key:1,description:"daemon 还没写过 tick — 启动 governance-sync-serve 或 governance-sync-libp2p 后再加载"}))]),_:1})):y("",!0),e(c,{title:"操作型治理 (签名密钥仍 CLI-only)",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(T,{type:"warning","show-icon":"",message:"安全设计",description:"所有操作通过本机 CLI 子进程执行。私钥永远不进入 web 渲染进程 — 这里只是给 cc mtc federation * 命令拼参数。",style:{"margin-bottom":"12px"}}),e(Ce,{size:"small"},{default:t(()=>[e(A,{key:"invite",tab:"邀请"},{default:t(()=>[e(B,{layout:"inline",onSubmit:G(ye,["prevent"])},{default:t(()=>[e(b,{label:"actor"},{default:t(()=>[e(F,{value:q.value.actor,"onUpdate:value":l[4]||(l[4]=n=>q.value.actor=n),placeholder:"alice",style:{width:"120px"}},null,8,["value"])]),_:1}),e(b,{label:"candidate"},{default:t(()=>[e(F,{value:q.value.candidate,"onUpdate:value":l[5]||(l[5]=n=>q.value.candidate=n),placeholder:"bob",style:{width:"120px"}},null,8,["value"])]),_:1}),e(b,{label:"pubkey-id"},{default:t(()=>[e(F,{value:q.value.pubkeyId,"onUpdate:value":l[6]||(l[6]=n=>q.value.pubkeyId=n),placeholder:"sha256:...",style:{width:"200px"}},null,8,["value"])]),_:1}),e(b,null,{default:t(()=>[e(u,{type:"primary",loading:L.value,onClick:ye},{default:t(()=>[...l[25]||(l[25]=[v("invite",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1}),e(A,{key:"vote",tab:"投票"},{default:t(()=>[e(B,{layout:"inline",onSubmit:G(_e,["prevent"])},{default:t(()=>[e(b,{label:"actor"},{default:t(()=>[e(F,{value:H.value.actor,"onUpdate:value":l[7]||(l[7]=n=>H.value.actor=n),placeholder:"alice",style:{width:"120px"}},null,8,["value"])]),_:1}),e(b,{label:"candidate"},{default:t(()=>[e(F,{value:H.value.candidate,"onUpdate:value":l[8]||(l[8]=n=>H.value.candidate=n),placeholder:"bob",style:{width:"120px"}},null,8,["value"])]),_:1}),e(b,{label:"decision"},{default:t(()=>[e(et,{value:H.value.decision,"onUpdate:value":l[9]||(l[9]=n=>H.value.decision=n),style:{width:"110px"}},{default:t(()=>[e(ze,{value:"approve"},{default:t(()=>[...l[26]||(l[26]=[v("approve",-1)])]),_:1}),e(ze,{value:"reject"},{default:t(()=>[...l[27]||(l[27]=[v("reject",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),e(b,null,{default:t(()=>[e(u,{type:"primary",loading:L.value,onClick:_e},{default:t(()=>[...l[28]||(l[28]=[v("vote",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1}),e(A,{key:"threshold",tab:"改 threshold"},{default:t(()=>[e(B,{layout:"inline",onSubmit:G(he,["prevent"])},{default:t(()=>[e(b,{label:"actor"},{default:t(()=>[e(F,{value:Z.value.actor,"onUpdate:value":l[10]||(l[10]=n=>Z.value.actor=n),placeholder:"alice",style:{width:"120px"}},null,8,["value"])]),_:1}),e(b,{label:"新 M"},{default:t(()=>[e(tt,{value:Z.value.newM,"onUpdate:value":l[11]||(l[11]=n=>Z.value.newM=n),min:1,style:{width:"90px"}},null,8,["value"])]),_:1}),e(b,null,{default:t(()=>[e(u,{loading:L.value,onClick:he},{default:t(()=>[...l[29]||(l[29]=[v("propose",-1)])]),_:1},8,["loading"])]),_:1}),e(b,null,{default:t(()=>[e(u,{type:"primary",loading:L.value,onClick:Be},{default:t(()=>[...l[30]||(l[30]=[v("confirm",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1}),e(A,{key:"revoke",tab:"撤销"},{default:t(()=>[e(B,{layout:"inline",onSubmit:G(ke,["prevent"])},{default:t(()=>[e(b,{label:"actor"},{default:t(()=>[e(F,{value:R.value.actor,"onUpdate:value":l[12]||(l[12]=n=>R.value.actor=n),placeholder:"alice",style:{width:"120px"}},null,8,["value"])]),_:1}),e(b,{label:"target"},{default:t(()=>[e(F,{value:R.value.target,"onUpdate:value":l[13]||(l[13]=n=>R.value.target=n),placeholder:"bob",style:{width:"120px"}},null,8,["value"])]),_:1}),e(b,{label:"reason"},{default:t(()=>[e(F,{value:R.value.reason,"onUpdate:value":l[14]||(l[14]=n=>R.value.reason=n),placeholder:"inactive",style:{width:"160px"}},null,8,["value"])]),_:1}),e(b,null,{default:t(()=>[e(u,{loading:L.value,onClick:ke},{default:t(()=>[...l[31]||(l[31]=[v("propose-revoke",-1)])]),_:1},8,["loading"])]),_:1}),e(b,null,{default:t(()=>[e(u,{type:"primary",loading:L.value,onClick:Ze},{default:t(()=>[...l[32]||(l[32]=[v("confirm-revoke",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1}),e(A,{key:"sync",tab:"跨成员同步"},{default:t(()=>[e(B,{layout:"inline"},{default:t(()=>[e(b,{label:"drop-zone"},{default:t(()=>[e(F,{value:j.value.dropZone,"onUpdate:value":l[15]||(l[15]=n=>j.value.dropZone=n),placeholder:"/path/to/shared/dir",style:{width:"220px"}},null,8,["value"])]),_:1}),e(b,null,{default:t(()=>[e(at,{checked:j.value.verify,"onUpdate:checked":l[16]||(l[16]=n=>j.value.verify=n)},{default:t(()=>[...l[33]||(l[33]=[v("--verify",-1)])]),_:1},8,["checked"])]),_:1}),e(b,null,{default:t(()=>[e(u,{loading:L.value,onClick:Je},{default:t(()=>[...l[34]||(l[34]=[v("publish",-1)])]),_:1},8,["loading"])]),_:1}),e(b,null,{default:t(()=>[e(u,{type:"primary",loading:L.value,onClick:Ge},{default:t(()=>[...l[35]||(l[35]=[v("pull",-1)])]),_:1},8,["loading"])]),_:1}),e(b,null,{default:t(()=>[e(u,{loading:L.value,onClick:Ve},{default:t(()=>[...l[36]||(l[36]=[v("sync-once",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1})]),_:1}),K.value?(d(),m(c,{key:0,size:"small",style:{"margin-top":"12px",background:"var(--bg-hover)"}},{default:t(()=>[k("pre",Jt,i(JSON.stringify(K.value,null,2)),1)]),_:1})):y("",!0)]),_:1})])):(d(),m(ie,{key:1,description:"输入联邦 ID 加载 governance.log"})),e(T,{style:{"margin-top":"16px"},type:"info","show-icon":"",message:"跨成员同步",description:"cc mtc federation governance-publish/pull --drop-zone 文件系统通道;governance-sync-libp2p --listen 走 libp2p gossipsub 通道;governance-sync-serve 自动 daemon 化。事件签名 + dedupe by event_id 保证幂等。"})]),_:1})]),_:1},8,["activeKey"])])}}},ta=it(Gt,[["__scopeId","data-v-f251eb98"]]);export{ta as default};
@@ -0,0 +1 @@
1
+ .page-title[data-v-f251eb98]{margin:0;font-size:22px;color:var(--text-primary)}.page-sub[data-v-f251eb98]{margin:4px 0 0;font-size:13px;color:var(--text-secondary)}.mtc-tabs[data-v-f251eb98] .ant-tabs-tab{font-size:13px}.raw-pre[data-v-f251eb98]{margin:0;padding:8px 12px;background:var(--bg-hover);border-radius:4px;font-family:monospace;font-size:11px;line-height:1.5;max-height:320px;overflow:auto}
@@ -0,0 +1 @@
1
+ .mtc-audit-page[data-v-96ccb8cf]{padding:16px;max-width:1200px}.mtc-audit-page[data-v-96ccb8cf] .ant-card-head-title{font-size:13px}.mtc-audit-page pre[data-v-96ccb8cf]{background:var(--ant-color-fill-alter, #fafafa);padding:8px;border-radius:4px;margin:0}