chainlesschain 0.162.20 → 0.162.26

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 (156) hide show
  1. package/package.json +2 -2
  2. package/src/assets/web-panel/.build-hash +1 -1
  3. package/src/assets/web-panel/assets/{AIOps-Buh_mYlF.js → AIOps-DEhhAYYj.js} +1 -1
  4. package/src/assets/web-panel/assets/{ActionButton-Dc7c0bZf.js → ActionButton-DEyfUz5F.js} +1 -1
  5. package/src/assets/web-panel/assets/{Analytics-CR9TWfM-.js → Analytics-D1rjS61W.js} +1 -1
  6. package/src/assets/web-panel/assets/{AppLayout-DVfanUep.js → AppLayout-CptFJPy6.js} +2 -2
  7. package/src/assets/web-panel/assets/{Audit-BxojBqRe.js → Audit-BG6KQUHY.js} +1 -1
  8. package/src/assets/web-panel/assets/{Backup-CGkreaK9.js → Backup-D2ikQT54.js} +1 -1
  9. package/src/assets/web-panel/assets/{BaseInput-B-Q2ZGfz.js → BaseInput-BG_d8yMt.js} +1 -1
  10. package/src/assets/web-panel/assets/{Chat-Dd_VC5Av.js → Chat-CcHmGkLY.js} +1 -1
  11. package/src/assets/web-panel/assets/{ChatBubbleRenderer-B64kZfRH.js → ChatBubbleRenderer-DIXrOHbn.js} +1 -1
  12. package/src/assets/web-panel/assets/{Checkbox-NYBD1rCW.js → Checkbox-Bx2h6vT3.js} +1 -1
  13. package/src/assets/web-panel/assets/{Codegen-B3Kqhgv1.js → Codegen-o14zzfuK.js} +1 -1
  14. package/src/assets/web-panel/assets/{Col-2A3Bg2GC.js → Col-HlZjxy7V.js} +1 -1
  15. package/src/assets/web-panel/assets/{Community-C84SkDEJ.js → Community-DXxMflr2.js} +1 -1
  16. package/src/assets/web-panel/assets/{Compact-Crv3pyZJ.js → Compact-DbswbBjd.js} +1 -1
  17. package/src/assets/web-panel/assets/{Compliance-D4qasxoY.js → Compliance-C7Q4Da2p.js} +1 -1
  18. package/src/assets/web-panel/assets/{Cowork-Bfbvysw-.js → Cowork-BLImywOe.js} +1 -1
  19. package/src/assets/web-panel/assets/{Cron-Dkjyiekd.js → Cron-DpXu1G4m.js} +1 -1
  20. package/src/assets/web-panel/assets/{Crosschain-DbJm9Kjd.js → Crosschain-C4qokeJu.js} +1 -1
  21. package/src/assets/web-panel/assets/{DID-C2HI6acG.js → DID-C0BjPiij.js} +1 -1
  22. package/src/assets/web-panel/assets/{Dashboard-BXMY7QVP.js → Dashboard-CsfDXwPl.js} +2 -2
  23. package/src/assets/web-panel/assets/{Dropdown-DcOykpfh.js → Dropdown-CiwMUKrx.js} +1 -1
  24. package/src/assets/web-panel/assets/{EmailListRenderer-Doo52F2M.js → EmailListRenderer-DX7xfm5a.js} +1 -1
  25. package/src/assets/web-panel/assets/{Federation-cHubZT6U.js → Federation-CA4Ibsg0.js} +1 -1
  26. package/src/assets/web-panel/assets/{FormItemContext-B5OVlspi.js → FormItemContext-DvM0lU-7.js} +1 -1
  27. package/src/assets/web-panel/assets/{GenericCardRenderer-OgA46PJq.js → GenericCardRenderer-REjsnTHA.js} +1 -1
  28. package/src/assets/web-panel/assets/{Git-_OKH_JOq.js → Git-ZhnSDQGH.js} +1 -1
  29. package/src/assets/web-panel/assets/{Governance-CTByBwSV.js → Governance-BL8iUV_g.js} +1 -1
  30. package/src/assets/web-panel/assets/{Inference-C0nqgySA.js → Inference-BONrgLk-.js} +1 -1
  31. package/src/assets/web-panel/assets/{KnowledgeGraph-CWW4ZIqH.js → KnowledgeGraph-q9SAz7h7.js} +1 -1
  32. package/src/assets/web-panel/assets/{Logs-DrwqUltr.js → Logs-eHfEFnEZ.js} +1 -1
  33. package/src/assets/web-panel/assets/{Marketplace-LJMRx-dm.js → Marketplace-DzwuVedm.js} +1 -1
  34. package/src/assets/web-panel/assets/{McpTools-F_EjC8j3.js → McpTools-BRoLIeq5.js} +1 -1
  35. package/src/assets/web-panel/assets/{Memory-VonDem9-.js → Memory-DjvAa1Ce.js} +1 -1
  36. package/src/assets/web-panel/assets/{MobileBridge-CUWxIrfb.js → MobileBridge-CGTanjsT.js} +1 -1
  37. package/src/assets/web-panel/assets/{MobileProjects-CGOo70lk.js → MobileProjects-cTccXHwN.js} +1 -1
  38. package/src/assets/web-panel/assets/{Mtc-CqUquFbQ.js → Mtc-CNUe29wS.js} +1 -1
  39. package/src/assets/web-panel/assets/{MtcAudit-CRVusaip.js → MtcAudit-COk24mdH.js} +1 -1
  40. package/src/assets/web-panel/assets/{Multisig-B0o8Mv8T.js → Multisig-CFq2j0BU.js} +1 -1
  41. package/src/assets/web-panel/assets/{NLProgramming-CxQINUhu.js → NLProgramming-dfRr-FGW.js} +1 -1
  42. package/src/assets/web-panel/assets/{Notes-B6Q_apFW.js → Notes-iM4aoXiw.js} +1 -1
  43. package/src/assets/web-panel/assets/{NotificationSettings-DO-lgp6x.js → NotificationSettings-CeVJ-942.js} +1 -1
  44. package/src/assets/web-panel/assets/{OrderTableRenderer-DxoBoMtz.js → OrderTableRenderer-zQ5jvUZI.js} +1 -1
  45. package/src/assets/web-panel/assets/{Organization-DqJ_KawH.js → Organization-CTSWyMGT.js} +1 -1
  46. package/src/assets/web-panel/assets/{Overflow-Cg4iKODM.js → Overflow---n60sAp.js} +1 -1
  47. package/src/assets/web-panel/assets/{P2P-n5GPMrwC.js → P2P-BCQurpAB.js} +1 -1
  48. package/src/assets/web-panel/assets/{PdhVaultBrowser-BdZI0EJs.js → PdhVaultBrowser-C5L1qAc0.js} +2 -2
  49. package/src/assets/web-panel/assets/{Permissions-BjtwAIGb.js → Permissions-I8sgLLE5.js} +1 -1
  50. package/src/assets/web-panel/assets/PersonalDataHub-CEUfFRCj.js +2 -0
  51. package/src/assets/web-panel/assets/{PersonalDataHub-D0ncF92t.css → PersonalDataHub-CO9-IYDY.css} +1 -1
  52. package/src/assets/web-panel/assets/{Pipeline-BZe2-Flj.js → Pipeline-BTBjJaRd.js} +1 -1
  53. package/src/assets/web-panel/assets/{Privacy-OJqMon4c.js → Privacy-aCs44rpW.js} +1 -1
  54. package/src/assets/web-panel/assets/{ProjectInit-Dw-5SMG1.js → ProjectInit-DZ2iIlbN.js} +1 -1
  55. package/src/assets/web-panel/assets/{ProjectSettings-DxqW44cV.js → ProjectSettings-oYUtNgHP.js} +1 -1
  56. package/src/assets/web-panel/assets/{Projects-CPOqs2ec.js → Projects-FonFg0ie.js} +1 -1
  57. package/src/assets/web-panel/assets/{Providers-hBfwscEl.js → Providers-CRmOuabY.js} +1 -1
  58. package/src/assets/web-panel/assets/{QuickAsk-DA3WFFAr.js → QuickAsk-BHd6UZ1A.js} +1 -1
  59. package/src/assets/web-panel/assets/{Recommend-DMpz3URg.js → Recommend-BkzGGuq-.js} +1 -1
  60. package/src/assets/web-panel/assets/{Reputation-6-z56FwC.js → Reputation-Do7cPr9u.js} +1 -1
  61. package/src/assets/web-panel/assets/{Row-CL1Y6SfW.js → Row-D_sR3MmD.js} +1 -1
  62. package/src/assets/web-panel/assets/{RssFeed-BIHU2bMf.js → RssFeed-pWSbZ06l.js} +1 -1
  63. package/src/assets/web-panel/assets/{Search-CRAfuEX-.js → Search-BTL71JSs.js} +1 -1
  64. package/src/assets/web-panel/assets/{Security-CVya3gvH.js → Security-8lbNoqY6.js} +1 -1
  65. package/src/assets/web-panel/assets/{Services-Cxv7_umF.js → Services-yr3QVduo.js} +1 -1
  66. package/src/assets/web-panel/assets/{Skeleton-D_GvsCtv.js → Skeleton-DdnY1ZTz.js} +1 -1
  67. package/src/assets/web-panel/assets/{Skills-DyiEpcvf.js → Skills-fk24WY3D.js} +1 -1
  68. package/src/assets/web-panel/assets/{Sla-wiglQzXV.js → Sla-bOXRT7wR.js} +1 -1
  69. package/src/assets/web-panel/assets/{SpeechSettings-CLtovaa5.js → SpeechSettings-DjonFUbP.js} +1 -1
  70. package/src/assets/web-panel/assets/{SyncSettings-BOgVef1O.js → SyncSettings-C-7HTl6d.js} +1 -1
  71. package/src/assets/web-panel/assets/{Tasks-Ik8AX7-J.js → Tasks-DDohfzFT.js} +1 -1
  72. package/src/assets/web-panel/assets/{Templates-CireiINW.js → Templates-C8PI_WTt.js} +1 -1
  73. package/src/assets/web-panel/assets/{Tenant-t7jF9NkQ.js → Tenant-CIvbeRkn.js} +1 -1
  74. package/src/assets/web-panel/assets/{Terminal-Btq_O951.js → Terminal-BuIPGugj.js} +1 -1
  75. package/src/assets/web-panel/assets/{TimelineRenderer-hC_Piiwy.js → TimelineRenderer-BefCbTxN.js} +1 -1
  76. package/src/assets/web-panel/assets/{Tokens-BTIqA2J1.js → Tokens-gGAeez46.js} +1 -1
  77. package/src/assets/web-panel/assets/{Trigger-Dzv2gJpK.js → Trigger-C_86E2v7.js} +1 -1
  78. package/src/assets/web-panel/assets/{Trust-B13QpWOh.js → Trust-Beg23C1W.js} +1 -1
  79. package/src/assets/web-panel/assets/{UkeySign-CFj3UF4G.js → UkeySign--sGSaISg.js} +1 -1
  80. package/src/assets/web-panel/assets/{VideoEditing-CGMOGTQb.js → VideoEditing-DIsnY6D_.js} +1 -1
  81. package/src/assets/web-panel/assets/{Wallet-BkCJ573Y.js → Wallet-a7ECYY0i.js} +1 -1
  82. package/src/assets/web-panel/assets/{WebAuthn-C8dCrmGH.js → WebAuthn-CsVpkUE8.js} +1 -1
  83. package/src/assets/web-panel/assets/{WorkflowEditor-CclfhxwH.js → WorkflowEditor-BOJ4WTgl.js} +1 -1
  84. package/src/assets/web-panel/assets/{chat-CW_X_A9l.js → chat-ezCR5ZZX.js} +1 -1
  85. package/src/assets/web-panel/assets/{colors-6GtheJb2.js → colors-DSUEQ7GR.js} +1 -1
  86. package/src/assets/web-panel/assets/{compact-item-tz7dJapw.js → compact-item-D4w3DGj_.js} +1 -1
  87. package/src/assets/web-panel/assets/{createContext-CbiGcRCw.js → createContext-B_hvu-NR.js} +1 -1
  88. package/src/assets/web-panel/assets/{hasIn-bmNFD3PH.js → hasIn-FY775Vpc.js} +1 -1
  89. package/src/assets/web-panel/assets/{index-DxHmNJ8S.js → index-1ki6aTIz.js} +1 -1
  90. package/src/assets/web-panel/assets/{index-UId2JAY6.js → index-B3lbDu2b.js} +1 -1
  91. package/src/assets/web-panel/assets/{index-BM4slfDH.js → index-B9LXVosT.js} +1 -1
  92. package/src/assets/web-panel/assets/{index-b7sSMzkC.js → index-BGdchdRx.js} +1 -1
  93. package/src/assets/web-panel/assets/{index-KFdfLxVt.js → index-BGrm33US.js} +1 -1
  94. package/src/assets/web-panel/assets/{index-B9sJpsz3.js → index-BHPD-_s2.js} +1 -1
  95. package/src/assets/web-panel/assets/{index-B6GgMo1k.js → index-BMnGj-Ui.js} +1 -1
  96. package/src/assets/web-panel/assets/{index-B2P1c5yD.js → index-BSp1hSN8.js} +1 -1
  97. package/src/assets/web-panel/assets/{index-S9g45I5s.js → index-BaZmrJ6j.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-Cb33JbDx.js → index-BnvLdkR8.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-CQ7aJ-8s.js → index-BzME19Nh.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-DeoJYTHX.js → index-C0wDzrUK.js} +3 -3
  101. package/src/assets/web-panel/assets/{index-CBNnbQxM.js → index-CAa3LSKI.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-CLk3xgD2.js → index-CE3vDzJj.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-De0xvTEv.js → index-CLp4V3Tb.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-CKP-AZD3.js → index-CNUQnJsg.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-CzIQ0u4e.js → index-CSbCIyga.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-UjxsY00y.js → index-CUNYcWEF.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-CgLF_zD1.js → index-CV-F9a_X.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-C5zlrlPd.js → index-CcvzscCg.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-B3UH6whC.js → index-CdzLJsac.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-CU0MeCwH.js → index-Cug_yoee.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-DxdLksCx.js → index-CxMArAIk.js} +1 -1
  112. package/src/assets/web-panel/assets/index-CzkEIn_T.js +1 -0
  113. package/src/assets/web-panel/assets/index-D2PcvXPP.js +1 -0
  114. package/src/assets/web-panel/assets/{index-DMGJqZ-o.js → index-D6yJ0RMr.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-DaYfMM7r.js → index-DM77-xyl.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-CV9aPPYM.js → index-DfU6zsU8.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-l2VM-W36.js → index-DqsQUPY7.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-DK7ee5hC.js → index-DqxLCUYa.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-DaK59dFw.js → index-DtztktoP.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-Cs5KWviO.js → index-Dz8-7APi.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-Da2RUdcb.js → index-Enin7rzK.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-CYIwY9zQ.js → index-S6A76pR1.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-DvWXdCxl.js → index-ZGJo2fz1.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-Dj1N1idV.js → index-d0HXotWE.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-CTnIkosg.js → index-gAtp_KkQ.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-zP_o4yKV.js → index-mlTTTHla.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-BxCPkuTG.js → index-wWVM6ENX.js} +1 -1
  128. package/src/assets/web-panel/assets/{initDefaultProps-BTGwT0NA.js → initDefaultProps-BoLcNBz9.js} +1 -1
  129. package/src/assets/web-panel/assets/{motion-BheHkG8e.js → motion-ouRvP3eO.js} +1 -1
  130. package/src/assets/web-panel/assets/{move-BkMMNkAw.js → move-BBITvaOV.js} +1 -1
  131. package/src/assets/web-panel/assets/{omit-B9zmSFf6.js → omit-D8Yxdvbb.js} +1 -1
  132. package/src/assets/web-panel/assets/{pickAttrs-CFNBcA5Z.js → pickAttrs-BIUy7mER.js} +1 -1
  133. package/src/assets/web-panel/assets/{placementArrow-B4mvrUYw.js → placementArrow-CrNWpNSF.js} +1 -1
  134. package/src/assets/web-panel/assets/{responsiveObserve-BJqsSjxJ.js → responsiveObserve-aHLPN464.js} +1 -1
  135. package/src/assets/web-panel/assets/{slide-Cj78MXSi.js → slide-2qNtePjk.js} +1 -1
  136. package/src/assets/web-panel/assets/{statusUtils-Bk6ChXAV.js → statusUtils-FAF3iR3R.js} +1 -1
  137. package/src/assets/web-panel/assets/{styleChecker-B_YDSNYf.js → styleChecker-BNFTkrbl.js} +1 -1
  138. package/src/assets/web-panel/assets/{useFlexGapSupport-q90prOQL.js → useFlexGapSupport-BgdPlW7E.js} +1 -1
  139. package/src/assets/web-panel/assets/{useFs-BtpFJ9kI.js → useFs-q1QvAh3f.js} +1 -1
  140. package/src/assets/web-panel/assets/{usePersonalDataHub-C3qhf1sQ.js → usePersonalDataHub-DEZ6cY8C.js} +1 -1
  141. package/src/assets/web-panel/assets/{vnode-Bz2j0JiG.js → vnode-vp6H-NL_.js} +1 -1
  142. package/src/assets/web-panel/assets/{zoom-CzaEtel2.js → zoom-UatfJMw4.js} +1 -1
  143. package/src/assets/web-panel/index.html +1 -1
  144. package/src/commands/__tests__/hub-bilibili-adb-sync.test.js +350 -0
  145. package/src/commands/__tests__/hub-douyin-adb-sync.test.js +199 -0
  146. package/src/commands/__tests__/hub-kuaishou-adb-sync.test.js +161 -0
  147. package/src/commands/__tests__/hub-toutiao-adb-sync.test.js +158 -0
  148. package/src/commands/__tests__/hub-weibo-adb-sync.test.js +163 -0
  149. package/src/commands/__tests__/hub-xhs-adb-sync.test.js +155 -0
  150. package/src/commands/hub.js +883 -0
  151. package/src/gateways/ws/personal-data-hub-protocol.js +84 -0
  152. package/src/lib/host-adb-bridge.js +77 -1
  153. package/src/lib/personal-data-hub-wiring.js +471 -12
  154. package/src/assets/web-panel/assets/PersonalDataHub-Bsf3Wh6n.js +0 -1
  155. package/src/assets/web-panel/assets/index-BFkZAdio.js +0 -1
  156. package/src/assets/web-panel/assets/index-BhgINPAH.js +0 -1
@@ -1 +1 @@
1
- import{_ as Ue,u as Pe,b as Me,d as h}from"./index-DeoJYTHX.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-Dj_pBaVI.js";import{R as We,as as Ze,aB as le,a1 as ke,v as He,a5 as Xe}from"./icons-AILO5ZcK.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 B,a as re}from"./vendor-DhFY8mDK.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([]),U=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=B(()=>[{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=B(()=>[{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=B(()=>{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=B(()=>{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=B(()=>{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=B(()=>{const{nodes:e,links:r,categories:u}=rt(x.value,U.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);U.value=at(e)}catch(e){h.error(n("knowledgeGraph.msg.loadRelationsFailed")+": "+e.message),U.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"),Be=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:U.value.length})),1)]),default:a(()=>[t(fe,{columns:we.value,"data-source":U.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(Be,{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=Ue(Rt,[["__scopeId","data-v-d675e73f"]]);export{Ot as default};
1
+ import{_ as Ue,u as Pe,b as Me,d as h}from"./index-C0wDzrUK.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-Dj_pBaVI.js";import{R as We,as as Ze,aB as le,a1 as ke,v as He,a5 as Xe}from"./icons-AILO5ZcK.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 B,a as re}from"./vendor-DhFY8mDK.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([]),U=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=B(()=>[{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=B(()=>[{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=B(()=>{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=B(()=>{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=B(()=>{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=B(()=>{const{nodes:e,links:r,categories:u}=rt(x.value,U.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);U.value=at(e)}catch(e){h.error(n("knowledgeGraph.msg.loadRelationsFailed")+": "+e.message),U.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"),Be=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:U.value.length})),1)]),default:a(()=>[t(fe,{columns:we.value,"data-source":U.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(Be,{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=Ue(Rt,[["__scopeId","data-v-d675e73f"]]);export{Ot as default};
@@ -1,2 +1,2 @@
1
- import{_ as E,u as U}from"./index-DeoJYTHX.js";import{R as q}from"./icons-AILO5ZcK.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-DhFY8mDK.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(`
1
+ import{_ as E,u as U}from"./index-C0wDzrUK.js";import{R as q}from"./icons-AILO5ZcK.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-DhFY8mDK.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
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};
@@ -1 +1 @@
1
- import{_ as Oe,u as je,b as Ne,d as g}from"./index-DeoJYTHX.js";import{s as Pe}from"./community-parser-CO25nZFt.js";import{R as De,Z as Be,m as ie,f as Ee,i as ue,a$ as Ve,y as Ke}from"./icons-AILO5ZcK.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-DhFY8mDK.js";function H(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 G=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=H(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 Ze(n){const r=H(n);return Array.isArray(r)?r.map(Ye).filter(Boolean):[]}function Ge(n){const r={total:0,counts:{success:0,failed:0,timeout:0,pending:0,running:0},successRate:0,avgDurationMs:0,scopedToService:null},s=H(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 He={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Xe={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 X(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=Ze(t.output),I.value=Ge(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"),Z=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",He,[h("div",null,[h("h2",Xe,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(G),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(G),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(Z,{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(X(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(Z,{value:c.status,"onUpdate:value":t[10]||(t[10]=a=>c.status=a)},{default:o(()=>[(i(!0),f($,null,P(y(G),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(Z,{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(X(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
+ import{_ as Oe,u as je,b as Ne,d as g}from"./index-C0wDzrUK.js";import{s as Pe}from"./community-parser-CO25nZFt.js";import{R as De,Z as Be,m as ie,f as Ee,i as ue,a$ as Ve,y as Ke}from"./icons-AILO5ZcK.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-DhFY8mDK.js";function H(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 G=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=H(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 Ze(n){const r=H(n);return Array.isArray(r)?r.map(Ye).filter(Boolean):[]}function Ge(n){const r={total:0,counts:{success:0,failed:0,timeout:0,pending:0,running:0},successRate:0,avgDurationMs:0,scopedToService:null},s=H(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 He={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Xe={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 X(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=Ze(t.output),I.value=Ge(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"),Z=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",He,[h("div",null,[h("h2",Xe,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(G),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(G),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(Z,{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(X(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(Z,{value:c.status,"onUpdate:value":t[10]||(t[10]=a=>c.status=a)},{default:o(()=>[(i(!0),f($,null,P(y(G),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(Z,{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(X(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,4 +1,4 @@
1
- import{u as be,_ as Pe,b as Ee}from"./index-DeoJYTHX.js";import{as as Ne,R as qe,o as he,ae as Fe,f as Ie,aq as Je,at as Be}from"./icons-AILO5ZcK.js";import{K as V,L as o,M as r,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 $,u as i,f as W,o as He,r as A}from"./vendor-DhFY8mDK.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 s(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:s}}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=[],s=t.properties||{};for(const[m,u]of Object.entries(s)){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 s=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(s==="string")T=Ye(e,m)?"textarea":"text";else if(s==="integer"||s==="number")T="number";else if(s==="boolean")T="boolean";else if(s==="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:s,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 s of t){const m=Array.isArray(s.path)?s.path:String(s.name).split("."),u=e?.[s.name];if(Qe(u,s.widget)){s.required&&(d[s.name]="必填");continue}if(s.widget==="number"){const w=typeof u=="number"?u:Number(u);if(Number.isNaN(w)){d[s.name]="必须是数字";continue}if(s.type==="integer"&&!Number.isInteger(w)){d[s.name]="必须是整数";continue}G(c,m,w);continue}if(s.widget==="boolean"){G(c,m,!!u);continue}if(s.widget==="tags"){const w=Array.isArray(u)?u:String(u).split(/[\n,]/).map(T=>T.trim()).filter(Boolean);G(c,m,w);continue}if(s.widget==="select"){if(Array.isArray(s.enum)&&!s.enum.includes(u)){d[s.name]="值不在允许的选项内";continue}G(c,m,u);continue}if(s.widget==="raw"){try{G(c,m,JSON.parse(u))}catch(w){d[s.name]=`JSON 解析失败:${w.message}`}continue}if(s.widget==="objectList"){if(!Array.isArray(u)){d[s.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[`${s.name}[${O}]`]="必须是对象",T=!0;continue}const P=ke(s.itemFields||[],U);if(!P.ok){T=!0;for(const[x,S]of Object.entries(P.errors))d[`${s.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 s=0;s<e.length-1;s++){const m=e[s];(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"}},st={style:{color:"var(--text-muted)","font-size":"11px"}},rt={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,s=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){s("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},s("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),s("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),s("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(),r("div",Xe,[(o(!0),r(Y,null,le(m.value,n=>(o(),r("div",{key:n.name,style:We(u(n))},[w(n)!==""?(o(),r("div",Ze,a(w(n)),1)):k("",!0),y("div",et,[y("span",tt,a(n.label),1),n.required?(o(),r("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(),r("div",nt,a(n.description),1)):k("",!0),n.widget==="text"?(o(),$(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(),$(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(),$(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(),$(F,{key:5,checked:!!t.modelValue[n.name],"onUpdate:checked":z=>T(n.name,z)},null,8,["checked","onUpdate:checked"])):n.widget==="select"?(o(),$(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(),$(D,{key:7,value:Array.isArray(t.modelValue[n.name])?t.modelValue[n.name]:[],mode:"tags",size:"small",style:{width:"100%"},placeholder:"输入后回车添加","token-separators":[",",`
1
+ import{u as be,_ as Pe,b as Ee}from"./index-C0wDzrUK.js";import{as as Ne,R as qe,o as he,ae as Fe,f as Ie,aq as Je,at as Be}from"./icons-AILO5ZcK.js";import{K as V,L as o,M as r,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 $,u as i,f as W,o as He,r as A}from"./vendor-DhFY8mDK.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 s(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:s}}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=[],s=t.properties||{};for(const[m,u]of Object.entries(s)){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 s=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(s==="string")T=Ye(e,m)?"textarea":"text";else if(s==="integer"||s==="number")T="number";else if(s==="boolean")T="boolean";else if(s==="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:s,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 s of t){const m=Array.isArray(s.path)?s.path:String(s.name).split("."),u=e?.[s.name];if(Qe(u,s.widget)){s.required&&(d[s.name]="必填");continue}if(s.widget==="number"){const w=typeof u=="number"?u:Number(u);if(Number.isNaN(w)){d[s.name]="必须是数字";continue}if(s.type==="integer"&&!Number.isInteger(w)){d[s.name]="必须是整数";continue}G(c,m,w);continue}if(s.widget==="boolean"){G(c,m,!!u);continue}if(s.widget==="tags"){const w=Array.isArray(u)?u:String(u).split(/[\n,]/).map(T=>T.trim()).filter(Boolean);G(c,m,w);continue}if(s.widget==="select"){if(Array.isArray(s.enum)&&!s.enum.includes(u)){d[s.name]="值不在允许的选项内";continue}G(c,m,u);continue}if(s.widget==="raw"){try{G(c,m,JSON.parse(u))}catch(w){d[s.name]=`JSON 解析失败:${w.message}`}continue}if(s.widget==="objectList"){if(!Array.isArray(u)){d[s.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[`${s.name}[${O}]`]="必须是对象",T=!0;continue}const P=ke(s.itemFields||[],U);if(!P.ok){T=!0;for(const[x,S]of Object.entries(P.errors))d[`${s.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 s=0;s<e.length-1;s++){const m=e[s];(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"}},st={style:{color:"var(--text-muted)","font-size":"11px"}},rt={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,s=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){s("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},s("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),s("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),s("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(),r("div",Xe,[(o(!0),r(Y,null,le(m.value,n=>(o(),r("div",{key:n.name,style:We(u(n))},[w(n)!==""?(o(),r("div",Ze,a(w(n)),1)):k("",!0),y("div",et,[y("span",tt,a(n.label),1),n.required?(o(),r("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(),r("div",nt,a(n.description),1)):k("",!0),n.widget==="text"?(o(),$(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(),$(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(),$(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(),$(F,{key:5,checked:!!t.modelValue[n.name],"onUpdate:checked":z=>T(n.name,z)},null,8,["checked","onUpdate:checked"])):n.widget==="select"?(o(),$(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(),$(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
2
  `],"onUpdate:value":z=>T(n.name,z)},null,8,["value","onUpdate:value"])):n.widget==="objectList"?(o(),r("div",at,[(o(!0),r(Y,null,le(Array.isArray(t.modelValue[n.name])?t.modelValue[n.name]:[],(z,I)=>(o(),r("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",st,"#"+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",rt,[(o(!0),r(Y,null,le(n.itemFields||[],C=>(o(),r("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(),r("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(),$(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(),$(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(),$(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(),$(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(),$(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(),r("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(),$(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(),r("div",dt,a(t.errors[n.name]),1)):k("",!0)],4))),128))])):(o(),r("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)"}},At={key:0,style:{"text-align":"center",padding:"30px"}},$t={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"}},so={key:2,style:{background:"#2a1517",border:"1px solid #5c2426",padding:"8px","border-radius":"4px"}},ro={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(),s=A(!1),m=A([]),u=A([]),j=A(""),w=A(""),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=A([]),P=A(""),x=A(!1),S=A(!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=A(!1),F=A(null),D=A(!1),K=A([]),n=A(""),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=A(!1),R=A(null),oe=A("form"),se=A({}),re=A({}),ie=A("{}"),ne=A(!1),Q=A(null),ae=A(""),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=A("");function Ce(p){R.value=p,ie.value="{}",Q.value=null,ae.value="",Z.value="",re.value={};const l=ce(p?.inputSchema||null);oe.value=l.length>0?"form":"json",se.value=De(l),E.value=!0}function Ae(){E.value=!1}async function $e(){if(!R.value||ne.value)return;Z.value="",re.value={};let p={};if(oe.value==="form"){const l=ce(R.value.inputSchema||null),g=ke(l,se.value);if(!g.ok){re.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(){s.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{s.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(`
@@ -1,2 +1,2 @@
1
- import{_ as X,b as Z,u as ee,d as C}from"./index-DeoJYTHX.js";import{as as te,R as oe,i as ae,y as le,aA as re,p as ne}from"./icons-AILO5ZcK.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-DhFY8mDK.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(`
1
+ import{_ as X,b as Z,u as ee,d as C}from"./index-C0wDzrUK.js";import{as as te,R as oe,i as ae,y as le,aA as re,p as ne}from"./icons-AILO5ZcK.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-DhFY8mDK.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
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"),A=c("a-input-search"),E=c("a-spin"),K=c("a-tag"),Q=c("a-textarea"),N=c("a-form-item"),Y=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(A,{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(E)])):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(K,{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(Q,{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(Y,{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};