chainlesschain 0.162.138 → 0.162.140

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 (155) hide show
  1. package/package.json +2 -2
  2. package/src/assets/web-panel/assets/{AIOps-CuPMTsPl.js → AIOps-bvXAAd1Q.js} +1 -1
  3. package/src/assets/web-panel/assets/{ActionButton-Pcw6Nehr.js → ActionButton-DRteHOC1.js} +1 -1
  4. package/src/assets/web-panel/assets/{Analytics-CieGgEDR.js → Analytics-CiGE1lt0.js} +3 -3
  5. package/src/assets/web-panel/assets/{AppLayout-zb-Tuj8P.js → AppLayout-BkV6NrVq.js} +5 -5
  6. package/src/assets/web-panel/assets/{Audit-Bl5hU9qI.js → Audit-DC9UmNdq.js} +1 -1
  7. package/src/assets/web-panel/assets/{Backup-DNaYxZ6v.js → Backup-Cu-9GPQ7.js} +1 -1
  8. package/src/assets/web-panel/assets/{BaseInput-dPZ-dsTl.js → BaseInput-D0KMtbVt.js} +1 -1
  9. package/src/assets/web-panel/assets/{Chat-BVcgPDj1.js → Chat-DXX2Bt7L.js} +6 -6
  10. package/src/assets/web-panel/assets/{ChatBubbleRenderer-44XDb8oI.js → ChatBubbleRenderer-DXLI6iGc.js} +1 -1
  11. package/src/assets/web-panel/assets/{Checkbox-aLXs1uti.js → Checkbox-VxkWZSHe.js} +1 -1
  12. package/src/assets/web-panel/assets/Codegen-EZp4AFOE.js +1 -0
  13. package/src/assets/web-panel/assets/{Col-CYZ20nTQ.js → Col-QlAvfJHU.js} +1 -1
  14. package/src/assets/web-panel/assets/{Community-Ba30bSgI.js → Community-DQgK81KO.js} +1 -1
  15. package/src/assets/web-panel/assets/{Compact-5ZdU4Ot5.js → Compact-BHoqwmKC.js} +1 -1
  16. package/src/assets/web-panel/assets/Compliance-DsHNSbYU.js +1 -0
  17. package/src/assets/web-panel/assets/{Cowork-hJEAO23w.js → Cowork-C8qfXsu7.js} +3 -3
  18. package/src/assets/web-panel/assets/{Cron-DUZqmMSA.js → Cron-FruQlaAY.js} +2 -2
  19. package/src/assets/web-panel/assets/{Crosschain-CeZm2yl1.js → Crosschain-hpJYl9JV.js} +1 -1
  20. package/src/assets/web-panel/assets/{DID-CuG0n4cE.js → DID-B6cNvMca.js} +2 -2
  21. package/src/assets/web-panel/assets/{Dashboard-93Wb_kK4.js → Dashboard-B3gQ_uJV.js} +2 -2
  22. package/src/assets/web-panel/assets/{Dropdown-CKGGkbfB.js → Dropdown-9Hvie3Mq.js} +1 -1
  23. package/src/assets/web-panel/assets/{EmailListRenderer-BscT321c.js → EmailListRenderer-CpN6phz5.js} +1 -1
  24. package/src/assets/web-panel/assets/{FamilyGuardDashboard-DbhWii9j.js → FamilyGuardDashboard-BEXspwEd.js} +1 -1
  25. package/src/assets/web-panel/assets/{Federation-DrDD75GW.js → Federation-CeiVCOFk.js} +1 -1
  26. package/src/assets/web-panel/assets/{FormItemContext-DnZFhXQk.js → FormItemContext-yjwTrHys.js} +1 -1
  27. package/src/assets/web-panel/assets/{GenericCardRenderer-Cm9-z_vw.js → GenericCardRenderer-DGYY7Z5G.js} +1 -1
  28. package/src/assets/web-panel/assets/{Git-D1glGFmw.js → Git-D11EZ5Om.js} +2 -2
  29. package/src/assets/web-panel/assets/{Governance-Xf75VdIY.js → Governance-DsJVXsjJ.js} +1 -1
  30. package/src/assets/web-panel/assets/{Inference-BWBSGdwG.js → Inference-F6l7bvny.js} +1 -1
  31. package/src/assets/web-panel/assets/{KnowledgeGraph-DwwINSlm.js → KnowledgeGraph-BAAXUGj0.js} +1 -1
  32. package/src/assets/web-panel/assets/{Logs-UIkOQs5w.js → Logs-CQkzCZfw.js} +2 -2
  33. package/src/assets/web-panel/assets/{Marketplace-D9yeS1ZW.js → Marketplace-DtZZNkKC.js} +1 -1
  34. package/src/assets/web-panel/assets/{McpTools-CKmxSse5.js → McpTools-BjHRfW9N.js} +5 -5
  35. package/src/assets/web-panel/assets/{Memory-DQffKFFc.js → Memory-B8GTJoT8.js} +2 -2
  36. package/src/assets/web-panel/assets/{MobileBridge-DAyR8I8a.js → MobileBridge-CMmFCmfj.js} +1 -1
  37. package/src/assets/web-panel/assets/{MobileProjects-DpfoO5f8.js → MobileProjects-C_psfz6z.js} +1 -1
  38. package/src/assets/web-panel/assets/{Mtc-D6C8LSpp.js → Mtc-fAIo2oV6.js} +6 -6
  39. package/src/assets/web-panel/assets/{MtcAudit-Da3wssbR.js → MtcAudit-B4ymXODe.js} +4 -4
  40. package/src/assets/web-panel/assets/{Multisig-BHDgke1X.js → Multisig-MguW3XQr.js} +3 -3
  41. package/src/assets/web-panel/assets/{NLProgramming-BDx3P3ux.js → NLProgramming-4uF69JHM.js} +1 -1
  42. package/src/assets/web-panel/assets/{Notes-jeSS-7PQ.js → Notes-BwPGV6Xv.js} +3 -3
  43. package/src/assets/web-panel/assets/{NotificationSettings-DdN4hWFL.js → NotificationSettings-DTl8LT-t.js} +1 -1
  44. package/src/assets/web-panel/assets/OrderTableRenderer-B22wKTDL.js +1 -0
  45. package/src/assets/web-panel/assets/{Organization-CBYxcerk.js → Organization-B47ngiW3.js} +4 -4
  46. package/src/assets/web-panel/assets/{Overflow-B10ibcqr.js → Overflow-3CV8viOO.js} +1 -1
  47. package/src/assets/web-panel/assets/{P2P-Mi93j-hW.js → P2P-EaT6OfQB.js} +2 -2
  48. package/src/assets/web-panel/assets/{PdhVaultBrowser-CJ-izVgS.js → PdhVaultBrowser-1GiDr9D1.js} +3 -3
  49. package/src/assets/web-panel/assets/{Permissions-H_VgO3BD.js → Permissions-CKfn1Gh9.js} +4 -4
  50. package/src/assets/web-panel/assets/{PersonalDataHub-DqNumQ9u.js → PersonalDataHub-CUd9Kfzx.js} +3 -3
  51. package/src/assets/web-panel/assets/{Pipeline-D76DlVwj.js → Pipeline-CKDPyvG6.js} +1 -1
  52. package/src/assets/web-panel/assets/{Privacy-COjrBObM.js → Privacy-DOKS2PTX.js} +1 -1
  53. package/src/assets/web-panel/assets/{ProjectInit-C_BzcMTx.js → ProjectInit-FlPqNvwH.js} +2 -2
  54. package/src/assets/web-panel/assets/{ProjectSettings-DjSiszub.js → ProjectSettings--ebkr3ES.js} +2 -2
  55. package/src/assets/web-panel/assets/{Projects-CksWRc0_.js → Projects-B9MV-yh6.js} +1 -1
  56. package/src/assets/web-panel/assets/{Providers-DSkUQSJy.js → Providers-Dt2OJvF4.js} +1 -1
  57. package/src/assets/web-panel/assets/{QuickAsk-vkWxqNXN.js → QuickAsk-CGYZFVh0.js} +1 -1
  58. package/src/assets/web-panel/assets/Recommend-DTI4-tAm.js +1 -0
  59. package/src/assets/web-panel/assets/{Reputation-BTpPsrWX.js → Reputation-d8HKdbiX.js} +1 -1
  60. package/src/assets/web-panel/assets/{Row-UkpIdv_5.js → Row-Dc44x2IX.js} +1 -1
  61. package/src/assets/web-panel/assets/{RssFeed-CShx4Tof.js → RssFeed-CaaSaE4Q.js} +3 -3
  62. package/src/assets/web-panel/assets/{Search-y_gmCTbc.js → Search-20qT3oPc.js} +1 -1
  63. package/src/assets/web-panel/assets/{Security-DOevA2tP.js → Security-CVRNp0_Z.js} +3 -3
  64. package/src/assets/web-panel/assets/{Services-vTNSkBu8.js → Services-BgHFNu-G.js} +2 -2
  65. package/src/assets/web-panel/assets/{Skeleton-BJqUn750.js → Skeleton-DLaz9DSt.js} +1 -1
  66. package/src/assets/web-panel/assets/Skills-CVglEUDM.js +1 -0
  67. package/src/assets/web-panel/assets/{Sla-1gL55FO0.js → Sla-BpcneA5B.js} +1 -1
  68. package/src/assets/web-panel/assets/SpeechSettings-CNfHQkV8.js +1 -0
  69. package/src/assets/web-panel/assets/{SyncSettings-DqlKeekk.js → SyncSettings-D2Y3j1zI.js} +2 -2
  70. package/src/assets/web-panel/assets/Tasks-D7IYY1Ex.js +1 -0
  71. package/src/assets/web-panel/assets/{Templates-7mQ2Y5aY.js → Templates-BOc6uw4o.js} +1 -1
  72. package/src/assets/web-panel/assets/{Tenant-UOv9tHlz.js → Tenant-Ut0O-24I.js} +1 -1
  73. package/src/assets/web-panel/assets/Terminal-Bxw7WvrK.js +3 -0
  74. package/src/assets/web-panel/assets/{TimelineRenderer-CkXcX7Kx.js → TimelineRenderer-BdCthhsG.js} +1 -1
  75. package/src/assets/web-panel/assets/{Tokens-CFpwWXql.js → Tokens-C84vliqR.js} +1 -1
  76. package/src/assets/web-panel/assets/{Trigger-C-qdyoCA.js → Trigger-BqofdSBW.js} +1 -1
  77. package/src/assets/web-panel/assets/{Trust-GQgHeP6y.js → Trust-BMwFkPP7.js} +1 -1
  78. package/src/assets/web-panel/assets/{UkeySign-L3QNRCBa.js → UkeySign-_SPdZCCh.js} +1 -1
  79. package/src/assets/web-panel/assets/{VideoEditing-o9IEduZP.js → VideoEditing-BRIQlJqG.js} +1 -1
  80. package/src/assets/web-panel/assets/{Wallet-CAF8ulAR.js → Wallet-BOFRvk9g.js} +4 -4
  81. package/src/assets/web-panel/assets/{WebAuthn-C0173yjI.js → WebAuthn-B8wm_aWq.js} +4 -4
  82. package/src/assets/web-panel/assets/{WorkflowEditor-ACXCzyXq.js → WorkflowEditor-DQzk82QZ.js} +1 -1
  83. package/src/assets/web-panel/assets/{chat-BS7lGBHP.js → chat-D6Efg8eg.js} +1 -1
  84. package/src/assets/web-panel/assets/{colors-BfEp5UAL.js → colors-D2EMnEmG.js} +1 -1
  85. package/src/assets/web-panel/assets/{compact-item-q8OE4Ozt.js → compact-item-DsVor0CJ.js} +1 -1
  86. package/src/assets/web-panel/assets/{createContext-CKFXnLud.js → createContext-BMbp9AQw.js} +1 -1
  87. package/src/assets/web-panel/assets/devWarning-Wy7JTDiY.js +1 -0
  88. package/src/assets/web-panel/assets/{hasIn-Cf5DP_7f.js → hasIn-Sg-3jDNK.js} +1 -1
  89. package/src/assets/web-panel/assets/{index-DAJEOleL.js → index-64awbBOJ.js} +1 -1
  90. package/src/assets/web-panel/assets/{index-DYKqvq8V.js → index-BB66SlI5.js} +1 -1
  91. package/src/assets/web-panel/assets/index-BHbU7NFT.js +1 -0
  92. package/src/assets/web-panel/assets/{index-DetDuxlQ.js → index-BJPMbG37.js} +1 -1
  93. package/src/assets/web-panel/assets/{index-r7ZY3ffW.js → index-BLMhhhrZ.js} +1 -1
  94. package/src/assets/web-panel/assets/{index-5DxIt-Ur.js → index-BREhf2Tg.js} +1 -1
  95. package/src/assets/web-panel/assets/{index-CSkHnOBN.js → index-Biedha9B.js} +1 -1
  96. package/src/assets/web-panel/assets/{index-1Da3-9ns.js → index-BjD5kyoO.js} +1 -1
  97. package/src/assets/web-panel/assets/{index-D-UN86XJ.js → index-BsDehgKm.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-xM4jUoHW.js → index-BuGkqbz4.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-CdjHqYqj.js → index-C2Lh8_ZU.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-8d4lYAnX.js → index-CALpqf2-.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-C3AVANs9.js → index-CJ6PZuB4.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-CHnc9BTl.js → index-CMTq08WX.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-CS05FAIM.js → index-CQ-PgFTt.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-CbiOsq_p.js → index-CRSBC6Ci.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-cnkpL_jy.js → index-CeHIzvN-.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-DnVxM_pX.js → index-Cln9D37_.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-DCIFLx2r.js → index-CqOWjxMM.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-B6ZMEstH.js → index-CrTQzYGg.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-DyRQ99wF.js → index-CxYZQm-P.js} +1 -1
  110. package/src/assets/web-panel/assets/index-D-zJjydc.js +1 -0
  111. package/src/assets/web-panel/assets/{index-grDQGSH_.js → index-DABer_Ol.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-c5-WuEIH.js → index-DEcSG9Bu.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-DyGGUw_t.js → index-DFY4l_xU.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-ByhdfDtv.js → index-DI5OTSsO.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-eY22W8SN.js → index-DKfmlXGj.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-CzE1DfQ_.js → index-DLfH4C2S.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-DJUlI6gf.js → index-DLzzgSlG.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-DH0vQxUe.js → index-DNU6XIBn.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-Dh8r6PnR.js → index-DyEpwvCK.js} +3 -3
  120. package/src/assets/web-panel/assets/{index-BXfWxqTR.js → index-G6VAQ3-n.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-DAT9P_Mp.js → index-GS7qxgrX.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-D7oq_59Y.js → index-MTNyLp7r.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-BcGfUFmL.js → index-Qh1M7Ivk.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-DEL2Cxkq.js → index-WyPPXRqA.js} +1 -1
  125. package/src/assets/web-panel/assets/{index--jzP01Dj.js → index-XxMse3U2.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-nU0xnvE9.js → index-eHH3SsIW.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-CcQdzuQg.js → index-ww3X2GtU.js} +1 -1
  128. package/src/assets/web-panel/assets/{initDefaultProps-Usi907C-.js → initDefaultProps-4eZyzmw6.js} +1 -1
  129. package/src/assets/web-panel/assets/{motion-BisW42Zx.js → motion-DJ2dUtV5.js} +1 -1
  130. package/src/assets/web-panel/assets/{move-DiQ9MJiV.js → move-tjPWtH6X.js} +1 -1
  131. package/src/assets/web-panel/assets/{mtc-parser-2gfA5DGK.js → mtc-parser-az3goxZX.js} +1 -1
  132. package/src/assets/web-panel/assets/{omit-DV6-xyI5.js → omit-DskzoCkD.js} +1 -1
  133. package/src/assets/web-panel/assets/{pickAttrs-CEa1NSzc.js → pickAttrs-DT84IaBT.js} +1 -1
  134. package/src/assets/web-panel/assets/{placementArrow-CRtBgFKf.js → placementArrow-B62Dq3BW.js} +1 -1
  135. package/src/assets/web-panel/assets/{responsiveObserve-BcHZcnQx.js → responsiveObserve-DrqUQ1e2.js} +1 -1
  136. package/src/assets/web-panel/assets/{slide-PfuTm9Ex.js → slide-Dorfe8Hd.js} +1 -1
  137. package/src/assets/web-panel/assets/{statusUtils-8IX7oIFo.js → statusUtils-DrSipiiM.js} +1 -1
  138. package/src/assets/web-panel/assets/{styleChecker-B4pe7rFW.js → styleChecker-LNhTXVEQ.js} +1 -1
  139. package/src/assets/web-panel/assets/{useFlexGapSupport-C7bjaPsk.js → useFlexGapSupport-BaXk9e_3.js} +1 -1
  140. package/src/assets/web-panel/assets/{useFs-BNvL4beQ.js → useFs-C8IVoB_V.js} +1 -1
  141. package/src/assets/web-panel/assets/{usePersonalDataHub-Sj42Z-Ua.js → usePersonalDataHub-CR7OaOPw.js} +1 -1
  142. package/src/assets/web-panel/assets/{vnode-x93SN88L.js → vnode-BE-nkNxk.js} +1 -1
  143. package/src/assets/web-panel/assets/{zoom-CRzwdeCE.js → zoom-CJYuFO8m.js} +1 -1
  144. package/src/assets/web-panel/index.html +1 -1
  145. package/src/assets/web-panel/assets/Codegen-CwGpkO2P.js +0 -1
  146. package/src/assets/web-panel/assets/Compliance-DoFMYDEx.js +0 -1
  147. package/src/assets/web-panel/assets/OrderTableRenderer-CdZIdIMR.js +0 -1
  148. package/src/assets/web-panel/assets/Recommend-CaHJ5YjP.js +0 -1
  149. package/src/assets/web-panel/assets/Skills-DVIOCnHU.js +0 -1
  150. package/src/assets/web-panel/assets/SpeechSettings-41p-Y13I.js +0 -1
  151. package/src/assets/web-panel/assets/Tasks-DnYAmxUK.js +0 -1
  152. package/src/assets/web-panel/assets/Terminal-Dc5aH3eZ.js +0 -3
  153. package/src/assets/web-panel/assets/devWarning-W_a4Dw4t.js +0 -1
  154. package/src/assets/web-panel/assets/index-CZL0e3aH.js +0 -1
  155. package/src/assets/web-panel/assets/index-DipwHsBu.js +0 -1
@@ -1 +1 @@
1
- import{I as b,J as g,U as O,R as d,c as n,K as t,V as f,S,o as ae,a as Q,b as V,r as _,P as c,Q as m,F as h,Z as E,$ as Se}from"./vendor-BvqAck49.js";import{t as X,_ as he,b as oe,u as ie,d as p}from"./index-Dh8r6PnR.js";import{a0 as Ce,f as Fe,$ as Te,a3 as we,as as Oe,R as Ae}from"./icons-DP3uiYxy.js";const Me=Object.freeze(["online","offline","busy","degraded"]),Ne=Object.freeze(["queued","dispatched","running","complete","failed"]),ze=Object.freeze(["standard","encrypted","federated"]);function F(s,l=0){return typeof s=="number"&&Number.isFinite(s)?s:l}function Ie(s){if(Array.isArray(s))return s.filter(l=>typeof l=="string");if(typeof s=="string")try{const l=JSON.parse(s);if(Array.isArray(l))return l.filter(a=>typeof a=="string")}catch{}return[]}function Le(s,l=0){if(!s||typeof s!="object")return null;const a=s.id||"";return a?{key:a,id:a,nodeId:s.nodeId??s.node_id??"",endpoint:s.endpoint||"",capabilities:Ie(s.capabilities),gpuMemoryMb:F(s.gpuMemoryMb??s.gpu_memory_mb,0),status:String(s.status||"offline").toLowerCase(),lastHeartbeat:s.lastHeartbeat??s.last_heartbeat??null,taskCount:F(s.taskCount??s.task_count,0),createdAt:s.createdAt??s.created_at??null,_idx:l}:null}function re(s){const l=X(s);return Array.isArray(l)?l.map(Le).filter(Boolean):[]}function je(s,l=0){if(!s||typeof s!="object")return null;const a=s.id||"";return a?{key:a,id:a,model:String(s.model||""),input:s.input??"",output:s.output??"",privacyMode:String(s.privacyMode??s.privacy_mode??"standard").toLowerCase(),priority:F(s.priority,5),assignedNode:s.assignedNode??s.assigned_node??null,status:String(s.status||"queued").toLowerCase(),durationMs:s.durationMs??s.duration_ms??null,createdAt:s.createdAt??s.created_at??null,completedAt:s.completedAt??s.completed_at??null,_idx:l}:null}function le(s){const l=X(s);return Array.isArray(l)?l.map(je).filter(Boolean):[]}const Ue={nodes:{total:0,online:0,offline:0,busy:0},tasks:{total:0,queued:0,completed:0,failed:0,avgDurationMs:0}};function se(s){const l=JSON.parse(JSON.stringify(Ue)),a=X(s);return!a||typeof a!="object"||Array.isArray(a)||(a.nodes&&typeof a.nodes=="object"&&(l.nodes.total=F(a.nodes.total,0),l.nodes.online=F(a.nodes.online,0),l.nodes.offline=F(a.nodes.offline,0),l.nodes.busy=F(a.nodes.busy,0)),a.tasks&&typeof a.tasks=="object"&&(l.tasks.total=F(a.tasks.total,0),l.tasks.queued=F(a.tasks.queued,0),l.tasks.completed=F(a.tasks.completed,0),l.tasks.failed=F(a.tasks.failed,0),l.tasks.avgDurationMs=F(a.tasks.avgDurationMs??a.tasks.avg_duration_ms,0))),l}function Re(s){if(s==null||s==="")return"—";const l=typeof s=="number"?new Date(s):new Date(String(s));return isNaN(l.getTime())?String(s):l.toLocaleString("zh-CN",{hour12:!1})}const De={__name:"Inference",setup(s,{expose:l}){l();const{t:a}=oe(),e=ie(),H=_(!1),K=_(!1),T=_(!1),U=_(""),R=_(""),I=_([]),D=_([]),L=_({nodes:{total:0,online:0,offline:0,busy:0},tasks:{total:0,queued:0,completed:0,failed:0,avgDurationMs:0}}),M=_("nodes"),N=_(""),q=_(""),C=_(""),w=_(!1),j=_(!1),k=Q({nodeId:"",endpoint:"",capabilities:"",gpuMemory:null}),v=Q({model:"",input:"",priority:5,mode:"standard"}),J=V(()=>[{title:a("inference.nodeColumns.nodeId"),key:"nodeId"},{title:a("inference.nodeColumns.capabilities"),key:"capabilities",width:"220px"},{title:a("inference.nodeColumns.gpu"),key:"gpu",width:"100px"},{title:a("inference.nodeColumns.status"),key:"status",width:"100px"},{title:a("inference.nodeColumns.taskCount"),key:"taskCount",width:"90px"},{title:a("inference.nodeColumns.lastHeartbeat"),key:"lastHeartbeat",width:"160px"},{title:a("inference.nodeColumns.action"),key:"action",width:"210px"}]),W=V(()=>[{title:a("inference.taskColumns.model"),key:"model"},{title:a("inference.taskColumns.privacyMode"),key:"privacyMode",width:"110px"},{title:a("inference.taskColumns.priority"),key:"priority",width:"80px"},{title:a("inference.taskColumns.assignedNode"),key:"assignedNode",width:"140px"},{title:a("inference.taskColumns.status"),key:"status",width:"110px"},{title:a("inference.taskColumns.duration"),key:"duration",width:"110px"},{title:a("inference.taskColumns.createdAt"),key:"createdAt",width:"160px"},{title:a("inference.taskColumns.action"),key:"action",width:"140px"}]),P=V(()=>N.value?I.value.filter(o=>o.status===N.value):I.value),A=V(()=>{let o=D.value;return q.value&&(o=o.filter(i=>i.status===q.value)),C.value&&(o=o.filter(i=>i.privacyMode===C.value)),o});function B(o){const i=`inference.nodeStatus.${o}`,y=a(i);return y===i?o:y}function Y(o){return{online:"green",offline:"default",busy:"orange",degraded:"red"}[o]||"default"}function G(o){const i=`inference.taskStatus.${o}`,y=a(i);return y===i?o:y}function Z(o){return{queued:"default",dispatched:"processing",running:"cyan",complete:"green",failed:"red"}[o]||"default"}function r(o){const i=`inference.privacy.${o}`,y=a(i);return y===i?o:y}function u(o){return{standard:"default",encrypted:"purple",federated:"cyan"}[o]||"default"}function x(o){return o>=8?"#ff4d4f":o>=5?"#faad14":"#52c41a"}function de(o){const i=I.value.find(y=>y.id===o);return i?i.nodeId:o.slice(0,8)}function ce(o,i){return o?o.length>i?o.slice(0,i)+"...":o:""}function ue(o){return o>=1024?`${(o/1024).toFixed(1)} GB`:`${o} MB`}function fe(o){return o.status==="queued"||o.status==="dispatched"||o.status==="running"}function me(o){return o.status!=="complete"&&o.status!=="failed"}function ye({key:o}){o==="register"?w.value=!0:o==="submit"&&(j.value=!0)}async function z(){H.value=!0;try{const[o,i,y]=await Promise.all([e.execute("inference nodes --limit 200 --json",1e4).catch(()=>({output:""})),e.execute("inference tasks --limit 200 --json",1e4).catch(()=>({output:""})),e.execute("inference stats --json",8e3).catch(()=>({output:""}))]);I.value=re(o.output),D.value=le(i.output),L.value=se(y.output)}catch(o){p.error(a("inference.messages.loadFailed",{err:o?.message||o}))}finally{H.value=!1}}async function ge(){const o=k.nodeId.trim();if(!o){p.warning(a("inference.messages.nodeIdRequired"));return}K.value=!0;try{const i=[`inference register "${o.replace(/"/g,'\\"')}"`];if(k.endpoint.trim()&&i.push(`--endpoint "${k.endpoint.trim().replace(/"/g,'\\"')}"`),k.capabilities.trim()){const ne=k.capabilities.split(/[,\s]+/).filter(Boolean).join(",");ne&&i.push(`--capabilities "${ne}"`)}k.gpuMemory!=null&&i.push(`--gpu ${k.gpuMemory}`),i.push("--json");const{output:y}=await e.execute(i.join(" "),1e4);if(/error|failed|失败/i.test(y)&&!/"nodeId"/.test(y)){p.error(a("inference.messages.registerFailed",{err:y.slice(0,120)}));return}p.success(a("inference.messages.registerOk")),w.value=!1,$(),await z()}catch(i){p.error(a("inference.messages.registerFailed",{err:i?.message||i}))}finally{K.value=!1}}async function pe(){const o=v.model.trim();if(!o){p.warning(a("inference.messages.modelRequired"));return}T.value=!0;try{const i=[`inference submit "${o.replace(/"/g,'\\"')}"`];v.input.trim()&&i.push(`--input "${v.input.trim().replace(/"/g,'\\"')}"`),v.priority!=null&&i.push(`--priority ${v.priority}`),i.push(`--mode ${v.mode}`),i.push("--json");const{output:y}=await e.execute(i.join(" "),12e3);if(/error|failed|失败/i.test(y)&&!/"taskId"/.test(y)){p.error(a("inference.messages.submitFailed",{err:y.slice(0,120)}));return}p.success(a("inference.messages.submitOk")),j.value=!1,ee(),M.value="tasks",await z()}catch(i){p.error(a("inference.messages.submitFailed",{err:i?.message||i}))}finally{T.value=!1}}async function be(o){U.value=o.id;try{const{output:i}=await e.execute(`inference heartbeat ${o.id} --json`,8e3);if(/error/i.test(i)&&!/"updated"/.test(i)){p.error(a("inference.messages.heartbeatFailed",{err:i.slice(0,120)}));return}p.success(a("inference.messages.heartbeatOk")),await z()}catch(i){p.error(a("inference.messages.heartbeatFailed",{err:i?.message||i}))}finally{U.value=""}}async function ke(o,i){if(i!==o.status)try{const{output:y}=await e.execute(`inference node-status ${o.id} ${i} --json`,8e3);if(/error|invalid/i.test(y)&&!/"updated"/.test(y)){p.error(a("inference.messages.statusFailed",{err:y.slice(0,120)}));return}p.success(a("inference.messages.statusOk",{status:B(i)})),await z()}catch(y){p.error(a("inference.messages.statusFailed",{err:y?.message||y}))}}async function _e(o){try{const{output:i}=await e.execute(`inference unregister ${o.id} --json`,8e3);if(/error/i.test(i)&&!/"removed"/.test(i)){p.error(a("inference.messages.unregisterFailed",{err:i.slice(0,120)}));return}p.success(a("inference.messages.unregisterOk")),await z()}catch(i){p.error(a("inference.messages.unregisterFailed",{err:i?.message||i}))}}async function ve(o){R.value=o.id;try{const{output:i}=await e.execute(`inference complete ${o.id} --json`,1e4);if(/error|failed/i.test(i)&&!/"completed"/.test(i)){p.error(a("inference.messages.completeFailed",{err:i.slice(0,120)}));return}p.success(a("inference.messages.completeOk")),await z()}catch(i){p.error(a("inference.messages.completeFailed",{err:i?.message||i}))}finally{R.value=""}}async function xe(o){try{const{output:i}=await e.execute(`inference fail-task ${o.id} --json`,8e3);if(/error/i.test(i)&&!/"failed"/.test(i)){p.error(a("inference.messages.failFailed",{err:i.slice(0,120)}));return}p.success(a("inference.messages.failOk")),await z()}catch(i){p.error(a("inference.messages.failFailed",{err:i?.message||i}))}}function $(){k.nodeId="",k.endpoint="",k.capabilities="",k.gpuMemory=null}function ee(){v.model="",v.input="",v.priority=5,v.mode="standard"}ae(z);const te={t:a,ws:e,loading:H,registering:K,submitting:T,heartbeatId:U,completingId:R,nodes:I,tasks:D,stats:L,activeTab:M,nodeStatusFilter:N,taskStatusFilter:q,taskPrivacyFilter:C,showRegisterModal:w,showSubmitModal:j,registerForm:k,submitForm:v,nodeColumns:J,taskColumns:W,filteredNodes:P,filteredTasks:A,nodeStatusLabel:B,nodeStatusColor:Y,taskStatusLabel:G,taskStatusColor:Z,privacyLabel:r,privacyColor:u,priorityColor:x,nodeShortName:de,truncate:ce,formatGpuMemory:ue,canComplete:fe,canFail:me,handleNewClick:ye,loadAll:z,registerNode:ge,submitTask:pe,sendHeartbeat:be,transitionStatus:ke,unregisterNode:_e,completeTask:ve,failTask:xe,resetRegisterForm:$,resetSubmitForm:ee,ref:_,computed:V,onMounted:ae,reactive:Q,get useI18n(){return oe},get ReloadOutlined(){return Ae},get PlusOutlined(){return Oe},get CloudServerOutlined(){return we},get ThunderboltOutlined(){return Te},get CheckCircleOutlined(){return Fe},get ClockCircleOutlined(){return Ce},get message(){return p},get useWsStore(){return ie},get parseNodes(){return re},get parseTasks(){return le},get parseStats(){return se},get formatInferenceTime(){return Re},get NODE_STATUSES(){return Me},get TASK_STATUSES(){return Ne},get PRIVACY_MODES(){return ze}};return Object.defineProperty(te,"__isScriptSetup",{enumerable:!1,value:!0}),te}},Pe={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Ee={class:"page-title"},qe={class:"page-sub"},Be={style:{color:"var(--text-secondary)","font-size":"12px","margin-left":"8px"}},Ve={class:"filter-bar"},He={style:{color:"var(--text-primary)","font-family":"monospace","font-weight":"500"}},Ke={key:0,style:{color:"var(--text-secondary)","font-size":"11px","margin-top":"2px"}},Je={key:1,style:{color:"var(--text-muted)"}},Ye={key:0,style:{color:"var(--text-secondary)","font-family":"monospace"}},Ge={key:1,style:{color:"var(--text-muted)"}},We={key:5,style:{color:"var(--text-secondary)","font-size":"11px"}},Ze={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Qe={class:"filter-bar"},Xe={style:{color:"var(--text-primary)","font-family":"monospace","font-weight":"500"}},$e={key:0,style:{color:"var(--text-secondary)","font-size":"11px","margin-top":"2px"}},et={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"11px"}},tt={key:1,style:{color:"var(--text-muted)"}},nt={key:0,style:{"font-family":"monospace",color:"var(--text-secondary)","font-size":"12px"}},at={key:1,style:{color:"var(--text-muted)"}},ot={key:6,style:{color:"var(--text-secondary)","font-size":"11px"}},it={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}};function rt(s,l,a,e,H,K){const T=b("a-button"),U=b("a-menu-item"),R=b("a-menu"),I=b("a-dropdown"),D=b("a-space"),L=b("a-statistic"),M=b("a-card"),N=b("a-col"),q=b("a-row"),C=b("a-tag"),w=b("a-radio-button"),j=b("a-radio-group"),k=b("a-popconfirm"),v=b("a-table"),J=b("a-tab-pane"),W=b("a-tabs"),P=b("a-input"),A=b("a-form-item"),B=b("a-input-number"),Y=b("a-form"),G=b("a-modal"),Z=b("a-textarea");return c(),g("div",null,[O("div",Pe,[O("div",null,[O("h2",Ee,d(e.t("inference.title")),1),O("p",qe,d(e.t("inference.subtitle")),1)]),n(D,null,{default:t(()=>[n(T,{loading:e.loading,onClick:e.loadAll},{icon:t(()=>[n(e.ReloadOutlined)]),default:t(()=>[m(" "+d(e.t("inference.refresh")),1)]),_:1},8,["loading"]),n(I,{trigger:["click"]},{overlay:t(()=>[n(R,{onClick:e.handleNewClick},{default:t(()=>[n(U,{key:"register"},{default:t(()=>[n(e.CloudServerOutlined),m(" "+d(e.t("inference.actions.register")),1)]),_:1}),n(U,{key:"submit"},{default:t(()=>[n(e.ThunderboltOutlined),m(" "+d(e.t("inference.actions.submit")),1)]),_:1})]),_:1})]),default:t(()=>[n(T,{type:"primary"},{icon:t(()=>[n(e.PlusOutlined)]),default:t(()=>[m(" "+d(e.t("inference.actionDropdown")),1)]),_:1})]),_:1})]),_:1})]),f(" Stat cards "),n(q,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:t(()=>[n(N,{xs:12,sm:8,lg:5},{default:t(()=>[n(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[n(L,{title:e.t("inference.stats.totalNodes"),value:e.stats.nodes.total,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:t(()=>[n(e.CloudServerOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),n(N,{xs:12,sm:8,lg:5},{default:t(()=>[n(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[n(L,{title:e.t("inference.stats.onlineNodes"),value:e.stats.nodes.online,"value-style":{color:e.stats.nodes.online>0?"#52c41a":"#888",fontSize:"20px"}},{prefix:t(()=>[n(e.CheckCircleOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),n(N,{xs:12,sm:8,lg:5},{default:t(()=>[n(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[n(L,{title:e.t("inference.stats.totalTasks"),value:e.stats.tasks.total,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:t(()=>[n(e.ThunderboltOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),n(N,{xs:12,sm:8,lg:5},{default:t(()=>[n(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[n(L,{title:e.t("inference.stats.queued"),value:e.stats.tasks.queued,"value-style":{color:e.stats.tasks.queued>0?"#faad14":"#52c41a",fontSize:"20px"}},{prefix:t(()=>[n(e.ClockCircleOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),n(N,{xs:24,sm:8,lg:4},{default:t(()=>[n(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[n(L,{title:e.t("inference.stats.avgDuration"),value:e.stats.tasks.avgDurationMs,suffix:"ms","value-style":{color:"#13c2c2",fontSize:"20px"}},null,8,["title","value"])]),_:1})]),_:1})]),_:1}),f(" Node status breakdown "),e.stats.nodes.total>0?(c(),S(M,{key:0,title:e.t("inference.breakdown.title"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:t(()=>[n(D,{size:[12,8],wrap:""},{default:t(()=>[n(C,{color:"green"},{default:t(()=>[m(d(e.t("inference.breakdown.online",{count:e.stats.nodes.online})),1)]),_:1}),n(C,{color:"orange"},{default:t(()=>[m(d(e.t("inference.breakdown.busy",{count:e.stats.nodes.busy})),1)]),_:1}),n(C,{color:"default"},{default:t(()=>[m(d(e.t("inference.breakdown.offline",{count:e.stats.nodes.offline})),1)]),_:1}),O("span",Be,d(e.t("inference.breakdown.extra",{complete:e.stats.tasks.completed,failed:e.stats.tasks.failed})),1)]),_:1})]),_:1},8,["title"])):f("v-if",!0),f(" Tabs "),n(W,{activeKey:e.activeTab,"onUpdate:activeKey":l[3]||(l[3]=r=>e.activeTab=r),class:"inference-tabs"},{default:t(()=>[f(" ── Nodes tab ─────────────────────────────────────────────── "),n(J,{key:"nodes",tab:e.t("inference.tabs.nodes")},{default:t(()=>[O("div",Ve,[n(j,{value:e.nodeStatusFilter,"onUpdate:value":l[0]||(l[0]=r=>e.nodeStatusFilter=r),size:"small","button-style":"solid"},{default:t(()=>[n(w,{value:""},{default:t(()=>[m(d(e.t("inference.filter.all")),1)]),_:1}),(c(!0),g(h,null,E(e.NODE_STATUSES,r=>(c(),S(w,{key:r,value:r},{default:t(()=>[m(d(e.nodeStatusLabel(r)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),n(v,{columns:e.nodeColumns,"data-source":e.filteredNodes,pagination:{pageSize:20,showTotal:r=>e.t("inference.totals.rows",{count:r})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:t(({column:r,record:u})=>[r.key==="nodeId"?(c(),g(h,{key:0},[O("span",He,d(u.nodeId),1),u.endpoint?(c(),g("div",Ke,d(e.truncate(u.endpoint,50)),1)):f("v-if",!0)],64)):f("v-if",!0),r.key==="capabilities"?(c(),g(h,{key:1},[(c(!0),g(h,null,E(u.capabilities.slice(0,4),x=>(c(),S(C,{key:x,color:"blue",style:{"font-size":"10px",margin:"1px"}},{default:t(()=>[m(d(x),1)]),_:2},1024))),128)),u.capabilities.length>4?(c(),S(C,{key:0,color:"default",style:{"font-size":"10px"}},{default:t(()=>[m("+"+d(u.capabilities.length-4),1)]),_:2},1024)):f("v-if",!0),u.capabilities.length?f("v-if",!0):(c(),g("span",Je,"—"))],64)):f("v-if",!0),r.key==="gpu"?(c(),g(h,{key:2},[u.gpuMemoryMb>0?(c(),g("span",Ye,d(e.formatGpuMemory(u.gpuMemoryMb)),1)):(c(),g("span",Ge,"—"))],64)):f("v-if",!0),r.key==="status"?(c(),S(C,{key:3,color:e.nodeStatusColor(u.status)},{default:t(()=>[m(d(e.nodeStatusLabel(u.status)),1)]),_:2},1032,["color"])):f("v-if",!0),r.key==="taskCount"?(c(),S(C,{key:4,color:"purple",style:{"font-size":"11px"}},{default:t(()=>[m(d(u.taskCount),1)]),_:2},1024)):f("v-if",!0),r.key==="lastHeartbeat"?(c(),g("span",We,d(e.formatInferenceTime(u.lastHeartbeat)),1)):f("v-if",!0),r.key==="action"?(c(),g(h,{key:6},[n(T,{size:"small",type:"link",loading:e.heartbeatId===u.id,onClick:x=>e.sendHeartbeat(u)},{default:t(()=>[m(d(e.t("inference.rowActions.heartbeat")),1)]),_:1},8,["loading","onClick"]),n(I,{trigger:["click"]},{overlay:t(()=>[n(R,{onClick:x=>e.transitionStatus(u,x.key)},{default:t(()=>[(c(!0),g(h,null,E(e.NODE_STATUSES,x=>(c(),S(U,{key:x,disabled:x===u.status},{default:t(()=>[m(d(e.nodeStatusLabel(x)),1)]),_:2},1032,["disabled"]))),128))]),_:2},1032,["onClick"])]),default:t(()=>[n(T,{size:"small",type:"link"},{default:t(()=>[m(d(e.t("inference.rowActions.statusDropdown")),1)]),_:1})]),_:2},1024),n(k,{title:e.t("inference.rowActions.unregisterConfirm"),"ok-text":e.t("inference.rowActions.unregisterOk"),"cancel-text":e.t("common.cancel"),onConfirm:x=>e.unregisterNode(u)},{default:t(()=>[n(T,{size:"small",type:"link",danger:""},{default:t(()=>[m(d(e.t("inference.rowActions.unregister")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])],64)):f("v-if",!0)]),emptyText:t(()=>[O("div",Ze,[n(e.CloudServerOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),m(" "+d(e.nodeStatusFilter?e.t("inference.empty.filteredNodes"):e.t("inference.empty.noNodes")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),f(" ── Tasks tab ─────────────────────────────────────────────── "),n(J,{key:"tasks",tab:e.t("inference.tabs.tasks")},{default:t(()=>[O("div",Qe,[n(j,{value:e.taskStatusFilter,"onUpdate:value":l[1]||(l[1]=r=>e.taskStatusFilter=r),size:"small"},{default:t(()=>[n(w,{value:""},{default:t(()=>[m(d(e.t("inference.filter.allStatuses")),1)]),_:1}),(c(!0),g(h,null,E(e.TASK_STATUSES,r=>(c(),S(w,{key:r,value:r},{default:t(()=>[m(d(e.taskStatusLabel(r)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),n(j,{value:e.taskPrivacyFilter,"onUpdate:value":l[2]||(l[2]=r=>e.taskPrivacyFilter=r),size:"small"},{default:t(()=>[n(w,{value:""},{default:t(()=>[m(d(e.t("inference.filter.allModes")),1)]),_:1}),(c(!0),g(h,null,E(e.PRIVACY_MODES,r=>(c(),S(w,{key:r,value:r},{default:t(()=>[m(d(e.privacyLabel(r)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),n(v,{columns:e.taskColumns,"data-source":e.filteredTasks,pagination:{pageSize:20,showTotal:r=>e.t("inference.totals.rows",{count:r})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:t(({column:r,record:u})=>[r.key==="model"?(c(),g(h,{key:0},[O("span",Xe,d(u.model),1),u.input?(c(),g("div",$e,d(e.truncate(u.input,60)),1)):f("v-if",!0)],64)):f("v-if",!0),r.key==="privacyMode"?(c(),S(C,{key:1,color:e.privacyColor(u.privacyMode)},{default:t(()=>[m(d(e.privacyLabel(u.privacyMode)),1)]),_:2},1032,["color"])):f("v-if",!0),r.key==="priority"?(c(),g("span",{key:2,style:Se({color:e.priorityColor(u.priority),fontWeight:500})},d(u.priority),5)):f("v-if",!0),r.key==="assignedNode"?(c(),g(h,{key:3},[u.assignedNode?(c(),g("span",et,d(e.nodeShortName(u.assignedNode)),1)):(c(),g("span",tt,"—"))],64)):f("v-if",!0),r.key==="status"?(c(),S(C,{key:4,color:e.taskStatusColor(u.status)},{default:t(()=>[m(d(e.taskStatusLabel(u.status)),1)]),_:2},1032,["color"])):f("v-if",!0),r.key==="duration"?(c(),g(h,{key:5},[u.durationMs!=null?(c(),g("span",nt,d(u.durationMs)+" ms ",1)):(c(),g("span",at,"—"))],64)):f("v-if",!0),r.key==="createdAt"?(c(),g("span",ot,d(e.formatInferenceTime(u.createdAt)),1)):f("v-if",!0),r.key==="action"?(c(),g(h,{key:7},[e.canComplete(u)?(c(),S(T,{key:0,size:"small",type:"link",loading:e.completingId===u.id,onClick:x=>e.completeTask(u)},{default:t(()=>[m(d(e.t("inference.rowActions.complete")),1)]),_:1},8,["loading","onClick"])):f("v-if",!0),e.canFail(u)?(c(),S(k,{key:1,title:e.t("inference.rowActions.failConfirm"),"ok-text":e.t("inference.rowActions.failOk"),"cancel-text":e.t("common.cancel"),onConfirm:x=>e.failTask(u)},{default:t(()=>[n(T,{size:"small",type:"link",danger:""},{default:t(()=>[m(d(e.t("inference.rowActions.fail")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):f("v-if",!0)],64)):f("v-if",!0)]),emptyText:t(()=>[O("div",it,[n(e.ThunderboltOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),m(" "+d(e.taskStatusFilter||e.taskPrivacyFilter?e.t("inference.empty.filteredTasks"):e.t("inference.empty.noTasks")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"])]),_:1},8,["activeKey"]),f(" ── Register node modal ──────────────────────────────────── "),n(G,{open:e.showRegisterModal,"onUpdate:open":l[8]||(l[8]=r=>e.showRegisterModal=r),title:e.t("inference.register.title"),"confirm-loading":e.registering,width:520,"ok-text":e.t("inference.register.ok"),"cancel-text":e.t("common.cancel"),onOk:e.registerNode,onCancel:e.resetRegisterForm},{default:t(()=>[n(Y,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:t(()=>[n(A,{label:e.t("inference.register.nodeIdLabel"),required:""},{default:t(()=>[n(P,{value:e.registerForm.nodeId,"onUpdate:value":l[4]||(l[4]=r=>e.registerForm.nodeId=r),placeholder:e.t("inference.register.nodeIdPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),n(A,{label:e.t("inference.register.endpointLabel")},{default:t(()=>[n(P,{value:e.registerForm.endpoint,"onUpdate:value":l[5]||(l[5]=r=>e.registerForm.endpoint=r),placeholder:e.t("inference.register.endpointPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),n(A,{label:e.t("inference.register.capabilitiesLabel")},{default:t(()=>[n(P,{value:e.registerForm.capabilities,"onUpdate:value":l[6]||(l[6]=r=>e.registerForm.capabilities=r),placeholder:e.t("inference.register.capabilitiesPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),n(A,{label:e.t("inference.register.gpuLabel")},{default:t(()=>[n(B,{value:e.registerForm.gpuMemory,"onUpdate:value":l[7]||(l[7]=r=>e.registerForm.gpuMemory=r),min:0,max:2e5,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),f(" ── Submit task modal ────────────────────────────────────── "),n(G,{open:e.showSubmitModal,"onUpdate:open":l[13]||(l[13]=r=>e.showSubmitModal=r),title:e.t("inference.submit.title"),"confirm-loading":e.submitting,width:520,"ok-text":e.t("inference.submit.ok"),"cancel-text":e.t("common.cancel"),onOk:e.submitTask,onCancel:e.resetSubmitForm},{default:t(()=>[n(Y,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:t(()=>[n(A,{label:e.t("inference.submit.modelLabel"),required:""},{default:t(()=>[n(P,{value:e.submitForm.model,"onUpdate:value":l[9]||(l[9]=r=>e.submitForm.model=r),placeholder:e.t("inference.submit.modelPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),n(A,{label:e.t("inference.submit.inputLabel")},{default:t(()=>[n(Z,{value:e.submitForm.input,"onUpdate:value":l[10]||(l[10]=r=>e.submitForm.input=r),"auto-size":{minRows:3,maxRows:6}},null,8,["value"])]),_:1},8,["label"]),n(A,{label:e.t("inference.submit.priorityLabel")},{default:t(()=>[n(B,{value:e.submitForm.priority,"onUpdate:value":l[11]||(l[11]=r=>e.submitForm.priority=r),min:1,max:10,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"]),n(A,{label:e.t("inference.submit.modeLabel")},{default:t(()=>[n(j,{value:e.submitForm.mode,"onUpdate:value":l[12]||(l[12]=r=>e.submitForm.mode=r)},{default:t(()=>[(c(!0),g(h,null,E(e.PRIVACY_MODES,r=>(c(),S(w,{key:r,value:r},{default:t(()=>[m(d(e.privacyLabel(r)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])])}const ct=he(De,[["render",rt],["__scopeId","data-v-93ae85f8"],["__file","/tmp/cc-web-panel-2pZejZ/repo/packages/web-panel/src/views/Inference.vue"]]);export{ct as default};
1
+ import{I as b,J as g,U as O,R as d,c as n,K as t,V as f,S,o as ae,a as X,b as V,r as _,P as c,Q as m,F as h,Z as E,$ as Se}from"./vendor-BvqAck49.js";import{t as Z,_ as he,b as oe,u as ie,d as p}from"./index-DyEpwvCK.js";import{a0 as Ce,f as Fe,$ as Te,a3 as we,as as Oe,R as Ae}from"./icons-DP3uiYxy.js";const Me=Object.freeze(["online","offline","busy","degraded"]),Ne=Object.freeze(["queued","dispatched","running","complete","failed"]),ze=Object.freeze(["standard","encrypted","federated"]);function F(s,l=0){return typeof s=="number"&&Number.isFinite(s)?s:l}function Ie(s){if(Array.isArray(s))return s.filter(l=>typeof l=="string");if(typeof s=="string")try{const l=JSON.parse(s);if(Array.isArray(l))return l.filter(a=>typeof a=="string")}catch{}return[]}function Le(s,l=0){if(!s||typeof s!="object")return null;const a=s.id||"";return a?{key:a,id:a,nodeId:s.nodeId??s.node_id??"",endpoint:s.endpoint||"",capabilities:Ie(s.capabilities),gpuMemoryMb:F(s.gpuMemoryMb??s.gpu_memory_mb,0),status:String(s.status||"offline").toLowerCase(),lastHeartbeat:s.lastHeartbeat??s.last_heartbeat??null,taskCount:F(s.taskCount??s.task_count,0),createdAt:s.createdAt??s.created_at??null,_idx:l}:null}function re(s){const l=Z(s);return Array.isArray(l)?l.map(Le).filter(Boolean):[]}function je(s,l=0){if(!s||typeof s!="object")return null;const a=s.id||"";return a?{key:a,id:a,model:String(s.model||""),input:s.input??"",output:s.output??"",privacyMode:String(s.privacyMode??s.privacy_mode??"standard").toLowerCase(),priority:F(s.priority,5),assignedNode:s.assignedNode??s.assigned_node??null,status:String(s.status||"queued").toLowerCase(),durationMs:s.durationMs??s.duration_ms??null,createdAt:s.createdAt??s.created_at??null,completedAt:s.completedAt??s.completed_at??null,_idx:l}:null}function le(s){const l=Z(s);return Array.isArray(l)?l.map(je).filter(Boolean):[]}const Ue={nodes:{total:0,online:0,offline:0,busy:0},tasks:{total:0,queued:0,completed:0,failed:0,avgDurationMs:0}};function se(s){const l=JSON.parse(JSON.stringify(Ue)),a=Z(s);return!a||typeof a!="object"||Array.isArray(a)||(a.nodes&&typeof a.nodes=="object"&&(l.nodes.total=F(a.nodes.total,0),l.nodes.online=F(a.nodes.online,0),l.nodes.offline=F(a.nodes.offline,0),l.nodes.busy=F(a.nodes.busy,0)),a.tasks&&typeof a.tasks=="object"&&(l.tasks.total=F(a.tasks.total,0),l.tasks.queued=F(a.tasks.queued,0),l.tasks.completed=F(a.tasks.completed,0),l.tasks.failed=F(a.tasks.failed,0),l.tasks.avgDurationMs=F(a.tasks.avgDurationMs??a.tasks.avg_duration_ms,0))),l}function Re(s){if(s==null||s==="")return"—";const l=typeof s=="number"?new Date(s):new Date(String(s));return isNaN(l.getTime())?String(s):l.toLocaleString("zh-CN",{hour12:!1})}const De={__name:"Inference",setup(s,{expose:l}){l();const{t:a}=oe(),e=ie(),H=_(!1),K=_(!1),T=_(!1),U=_(""),R=_(""),I=_([]),D=_([]),L=_({nodes:{total:0,online:0,offline:0,busy:0},tasks:{total:0,queued:0,completed:0,failed:0,avgDurationMs:0}}),M=_("nodes"),N=_(""),q=_(""),C=_(""),w=_(!1),j=_(!1),k=X({nodeId:"",endpoint:"",capabilities:"",gpuMemory:null}),v=X({model:"",input:"",priority:5,mode:"standard"}),J=V(()=>[{title:a("inference.nodeColumns.nodeId"),key:"nodeId"},{title:a("inference.nodeColumns.capabilities"),key:"capabilities",width:"220px"},{title:a("inference.nodeColumns.gpu"),key:"gpu",width:"100px"},{title:a("inference.nodeColumns.status"),key:"status",width:"100px"},{title:a("inference.nodeColumns.taskCount"),key:"taskCount",width:"90px"},{title:a("inference.nodeColumns.lastHeartbeat"),key:"lastHeartbeat",width:"160px"},{title:a("inference.nodeColumns.action"),key:"action",width:"210px"}]),W=V(()=>[{title:a("inference.taskColumns.model"),key:"model"},{title:a("inference.taskColumns.privacyMode"),key:"privacyMode",width:"110px"},{title:a("inference.taskColumns.priority"),key:"priority",width:"80px"},{title:a("inference.taskColumns.assignedNode"),key:"assignedNode",width:"140px"},{title:a("inference.taskColumns.status"),key:"status",width:"110px"},{title:a("inference.taskColumns.duration"),key:"duration",width:"110px"},{title:a("inference.taskColumns.createdAt"),key:"createdAt",width:"160px"},{title:a("inference.taskColumns.action"),key:"action",width:"140px"}]),P=V(()=>N.value?I.value.filter(o=>o.status===N.value):I.value),A=V(()=>{let o=D.value;return q.value&&(o=o.filter(i=>i.status===q.value)),C.value&&(o=o.filter(i=>i.privacyMode===C.value)),o});function B(o){const i=`inference.nodeStatus.${o}`,y=a(i);return y===i?o:y}function Y(o){return{online:"green",offline:"default",busy:"orange",degraded:"red"}[o]||"default"}function G(o){const i=`inference.taskStatus.${o}`,y=a(i);return y===i?o:y}function Q(o){return{queued:"default",dispatched:"processing",running:"cyan",complete:"green",failed:"red"}[o]||"default"}function r(o){const i=`inference.privacy.${o}`,y=a(i);return y===i?o:y}function u(o){return{standard:"default",encrypted:"purple",federated:"cyan"}[o]||"default"}function x(o){return o>=8?"#ff4d4f":o>=5?"#faad14":"#52c41a"}function de(o){const i=I.value.find(y=>y.id===o);return i?i.nodeId:o.slice(0,8)}function ce(o,i){return o?o.length>i?o.slice(0,i)+"...":o:""}function ue(o){return o>=1024?`${(o/1024).toFixed(1)} GB`:`${o} MB`}function fe(o){return o.status==="queued"||o.status==="dispatched"||o.status==="running"}function me(o){return o.status!=="complete"&&o.status!=="failed"}function ye({key:o}){o==="register"?w.value=!0:o==="submit"&&(j.value=!0)}async function z(){H.value=!0;try{const[o,i,y]=await Promise.all([e.execute("inference nodes --limit 200 --json",1e4).catch(()=>({output:""})),e.execute("inference tasks --limit 200 --json",1e4).catch(()=>({output:""})),e.execute("inference stats --json",8e3).catch(()=>({output:""}))]);I.value=re(o.output),D.value=le(i.output),L.value=se(y.output)}catch(o){p.error(a("inference.messages.loadFailed",{err:o?.message||o}))}finally{H.value=!1}}async function ge(){const o=k.nodeId.trim();if(!o){p.warning(a("inference.messages.nodeIdRequired"));return}K.value=!0;try{const i=[`inference register "${o.replace(/"/g,'\\"')}"`];if(k.endpoint.trim()&&i.push(`--endpoint "${k.endpoint.trim().replace(/"/g,'\\"')}"`),k.capabilities.trim()){const ne=k.capabilities.split(/[,\s]+/).filter(Boolean).join(",");ne&&i.push(`--capabilities "${ne}"`)}k.gpuMemory!=null&&i.push(`--gpu ${k.gpuMemory}`),i.push("--json");const{output:y}=await e.execute(i.join(" "),1e4);if(/error|failed|失败/i.test(y)&&!/"nodeId"/.test(y)){p.error(a("inference.messages.registerFailed",{err:y.slice(0,120)}));return}p.success(a("inference.messages.registerOk")),w.value=!1,$(),await z()}catch(i){p.error(a("inference.messages.registerFailed",{err:i?.message||i}))}finally{K.value=!1}}async function pe(){const o=v.model.trim();if(!o){p.warning(a("inference.messages.modelRequired"));return}T.value=!0;try{const i=[`inference submit "${o.replace(/"/g,'\\"')}"`];v.input.trim()&&i.push(`--input "${v.input.trim().replace(/"/g,'\\"')}"`),v.priority!=null&&i.push(`--priority ${v.priority}`),i.push(`--mode ${v.mode}`),i.push("--json");const{output:y}=await e.execute(i.join(" "),12e3);if(/error|failed|失败/i.test(y)&&!/"taskId"/.test(y)){p.error(a("inference.messages.submitFailed",{err:y.slice(0,120)}));return}p.success(a("inference.messages.submitOk")),j.value=!1,ee(),M.value="tasks",await z()}catch(i){p.error(a("inference.messages.submitFailed",{err:i?.message||i}))}finally{T.value=!1}}async function be(o){U.value=o.id;try{const{output:i}=await e.execute(`inference heartbeat ${o.id} --json`,8e3);if(/error/i.test(i)&&!/"updated"/.test(i)){p.error(a("inference.messages.heartbeatFailed",{err:i.slice(0,120)}));return}p.success(a("inference.messages.heartbeatOk")),await z()}catch(i){p.error(a("inference.messages.heartbeatFailed",{err:i?.message||i}))}finally{U.value=""}}async function ke(o,i){if(i!==o.status)try{const{output:y}=await e.execute(`inference node-status ${o.id} ${i} --json`,8e3);if(/error|invalid/i.test(y)&&!/"updated"/.test(y)){p.error(a("inference.messages.statusFailed",{err:y.slice(0,120)}));return}p.success(a("inference.messages.statusOk",{status:B(i)})),await z()}catch(y){p.error(a("inference.messages.statusFailed",{err:y?.message||y}))}}async function _e(o){try{const{output:i}=await e.execute(`inference unregister ${o.id} --json`,8e3);if(/error/i.test(i)&&!/"removed"/.test(i)){p.error(a("inference.messages.unregisterFailed",{err:i.slice(0,120)}));return}p.success(a("inference.messages.unregisterOk")),await z()}catch(i){p.error(a("inference.messages.unregisterFailed",{err:i?.message||i}))}}async function ve(o){R.value=o.id;try{const{output:i}=await e.execute(`inference complete ${o.id} --json`,1e4);if(/error|failed/i.test(i)&&!/"completed"/.test(i)){p.error(a("inference.messages.completeFailed",{err:i.slice(0,120)}));return}p.success(a("inference.messages.completeOk")),await z()}catch(i){p.error(a("inference.messages.completeFailed",{err:i?.message||i}))}finally{R.value=""}}async function xe(o){try{const{output:i}=await e.execute(`inference fail-task ${o.id} --json`,8e3);if(/error/i.test(i)&&!/"failed"/.test(i)){p.error(a("inference.messages.failFailed",{err:i.slice(0,120)}));return}p.success(a("inference.messages.failOk")),await z()}catch(i){p.error(a("inference.messages.failFailed",{err:i?.message||i}))}}function $(){k.nodeId="",k.endpoint="",k.capabilities="",k.gpuMemory=null}function ee(){v.model="",v.input="",v.priority=5,v.mode="standard"}ae(z);const te={t:a,ws:e,loading:H,registering:K,submitting:T,heartbeatId:U,completingId:R,nodes:I,tasks:D,stats:L,activeTab:M,nodeStatusFilter:N,taskStatusFilter:q,taskPrivacyFilter:C,showRegisterModal:w,showSubmitModal:j,registerForm:k,submitForm:v,nodeColumns:J,taskColumns:W,filteredNodes:P,filteredTasks:A,nodeStatusLabel:B,nodeStatusColor:Y,taskStatusLabel:G,taskStatusColor:Q,privacyLabel:r,privacyColor:u,priorityColor:x,nodeShortName:de,truncate:ce,formatGpuMemory:ue,canComplete:fe,canFail:me,handleNewClick:ye,loadAll:z,registerNode:ge,submitTask:pe,sendHeartbeat:be,transitionStatus:ke,unregisterNode:_e,completeTask:ve,failTask:xe,resetRegisterForm:$,resetSubmitForm:ee,ref:_,computed:V,onMounted:ae,reactive:X,get useI18n(){return oe},get ReloadOutlined(){return Ae},get PlusOutlined(){return Oe},get CloudServerOutlined(){return we},get ThunderboltOutlined(){return Te},get CheckCircleOutlined(){return Fe},get ClockCircleOutlined(){return Ce},get message(){return p},get useWsStore(){return ie},get parseNodes(){return re},get parseTasks(){return le},get parseStats(){return se},get formatInferenceTime(){return Re},get NODE_STATUSES(){return Me},get TASK_STATUSES(){return Ne},get PRIVACY_MODES(){return ze}};return Object.defineProperty(te,"__isScriptSetup",{enumerable:!1,value:!0}),te}},Pe={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Ee={class:"page-title"},qe={class:"page-sub"},Be={style:{color:"var(--text-secondary)","font-size":"12px","margin-left":"8px"}},Ve={class:"filter-bar"},He={style:{color:"var(--text-primary)","font-family":"monospace","font-weight":"500"}},Ke={key:0,style:{color:"var(--text-secondary)","font-size":"11px","margin-top":"2px"}},Je={key:1,style:{color:"var(--text-muted)"}},Ye={key:0,style:{color:"var(--text-secondary)","font-family":"monospace"}},Ge={key:1,style:{color:"var(--text-muted)"}},We={key:5,style:{color:"var(--text-secondary)","font-size":"11px"}},Qe={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Xe={class:"filter-bar"},Ze={style:{color:"var(--text-primary)","font-family":"monospace","font-weight":"500"}},$e={key:0,style:{color:"var(--text-secondary)","font-size":"11px","margin-top":"2px"}},et={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"11px"}},tt={key:1,style:{color:"var(--text-muted)"}},nt={key:0,style:{"font-family":"monospace",color:"var(--text-secondary)","font-size":"12px"}},at={key:1,style:{color:"var(--text-muted)"}},ot={key:6,style:{color:"var(--text-secondary)","font-size":"11px"}},it={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}};function rt(s,l,a,e,H,K){const T=b("a-button"),U=b("a-menu-item"),R=b("a-menu"),I=b("a-dropdown"),D=b("a-space"),L=b("a-statistic"),M=b("a-card"),N=b("a-col"),q=b("a-row"),C=b("a-tag"),w=b("a-radio-button"),j=b("a-radio-group"),k=b("a-popconfirm"),v=b("a-table"),J=b("a-tab-pane"),W=b("a-tabs"),P=b("a-input"),A=b("a-form-item"),B=b("a-input-number"),Y=b("a-form"),G=b("a-modal"),Q=b("a-textarea");return c(),g("div",null,[O("div",Pe,[O("div",null,[O("h2",Ee,d(e.t("inference.title")),1),O("p",qe,d(e.t("inference.subtitle")),1)]),n(D,null,{default:t(()=>[n(T,{loading:e.loading,onClick:e.loadAll},{icon:t(()=>[n(e.ReloadOutlined)]),default:t(()=>[m(" "+d(e.t("inference.refresh")),1)]),_:1},8,["loading"]),n(I,{trigger:["click"]},{overlay:t(()=>[n(R,{onClick:e.handleNewClick},{default:t(()=>[n(U,{key:"register"},{default:t(()=>[n(e.CloudServerOutlined),m(" "+d(e.t("inference.actions.register")),1)]),_:1}),n(U,{key:"submit"},{default:t(()=>[n(e.ThunderboltOutlined),m(" "+d(e.t("inference.actions.submit")),1)]),_:1})]),_:1})]),default:t(()=>[n(T,{type:"primary"},{icon:t(()=>[n(e.PlusOutlined)]),default:t(()=>[m(" "+d(e.t("inference.actionDropdown")),1)]),_:1})]),_:1})]),_:1})]),f(" Stat cards "),n(q,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:t(()=>[n(N,{xs:12,sm:8,lg:5},{default:t(()=>[n(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[n(L,{title:e.t("inference.stats.totalNodes"),value:e.stats.nodes.total,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:t(()=>[n(e.CloudServerOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),n(N,{xs:12,sm:8,lg:5},{default:t(()=>[n(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[n(L,{title:e.t("inference.stats.onlineNodes"),value:e.stats.nodes.online,"value-style":{color:e.stats.nodes.online>0?"#52c41a":"#888",fontSize:"20px"}},{prefix:t(()=>[n(e.CheckCircleOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),n(N,{xs:12,sm:8,lg:5},{default:t(()=>[n(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[n(L,{title:e.t("inference.stats.totalTasks"),value:e.stats.tasks.total,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:t(()=>[n(e.ThunderboltOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),n(N,{xs:12,sm:8,lg:5},{default:t(()=>[n(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[n(L,{title:e.t("inference.stats.queued"),value:e.stats.tasks.queued,"value-style":{color:e.stats.tasks.queued>0?"#faad14":"#52c41a",fontSize:"20px"}},{prefix:t(()=>[n(e.ClockCircleOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),n(N,{xs:24,sm:8,lg:4},{default:t(()=>[n(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[n(L,{title:e.t("inference.stats.avgDuration"),value:e.stats.tasks.avgDurationMs,suffix:"ms","value-style":{color:"#13c2c2",fontSize:"20px"}},null,8,["title","value"])]),_:1})]),_:1})]),_:1}),f(" Node status breakdown "),e.stats.nodes.total>0?(c(),S(M,{key:0,title:e.t("inference.breakdown.title"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:t(()=>[n(D,{size:[12,8],wrap:""},{default:t(()=>[n(C,{color:"green"},{default:t(()=>[m(d(e.t("inference.breakdown.online",{count:e.stats.nodes.online})),1)]),_:1}),n(C,{color:"orange"},{default:t(()=>[m(d(e.t("inference.breakdown.busy",{count:e.stats.nodes.busy})),1)]),_:1}),n(C,{color:"default"},{default:t(()=>[m(d(e.t("inference.breakdown.offline",{count:e.stats.nodes.offline})),1)]),_:1}),O("span",Be,d(e.t("inference.breakdown.extra",{complete:e.stats.tasks.completed,failed:e.stats.tasks.failed})),1)]),_:1})]),_:1},8,["title"])):f("v-if",!0),f(" Tabs "),n(W,{activeKey:e.activeTab,"onUpdate:activeKey":l[3]||(l[3]=r=>e.activeTab=r),class:"inference-tabs"},{default:t(()=>[f(" ── Nodes tab ─────────────────────────────────────────────── "),n(J,{key:"nodes",tab:e.t("inference.tabs.nodes")},{default:t(()=>[O("div",Ve,[n(j,{value:e.nodeStatusFilter,"onUpdate:value":l[0]||(l[0]=r=>e.nodeStatusFilter=r),size:"small","button-style":"solid"},{default:t(()=>[n(w,{value:""},{default:t(()=>[m(d(e.t("inference.filter.all")),1)]),_:1}),(c(!0),g(h,null,E(e.NODE_STATUSES,r=>(c(),S(w,{key:r,value:r},{default:t(()=>[m(d(e.nodeStatusLabel(r)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),n(v,{columns:e.nodeColumns,"data-source":e.filteredNodes,pagination:{pageSize:20,showTotal:r=>e.t("inference.totals.rows",{count:r})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:t(({column:r,record:u})=>[r.key==="nodeId"?(c(),g(h,{key:0},[O("span",He,d(u.nodeId),1),u.endpoint?(c(),g("div",Ke,d(e.truncate(u.endpoint,50)),1)):f("v-if",!0)],64)):f("v-if",!0),r.key==="capabilities"?(c(),g(h,{key:1},[(c(!0),g(h,null,E(u.capabilities.slice(0,4),x=>(c(),S(C,{key:x,color:"blue",style:{"font-size":"10px",margin:"1px"}},{default:t(()=>[m(d(x),1)]),_:2},1024))),128)),u.capabilities.length>4?(c(),S(C,{key:0,color:"default",style:{"font-size":"10px"}},{default:t(()=>[m("+"+d(u.capabilities.length-4),1)]),_:2},1024)):f("v-if",!0),u.capabilities.length?f("v-if",!0):(c(),g("span",Je,"—"))],64)):f("v-if",!0),r.key==="gpu"?(c(),g(h,{key:2},[u.gpuMemoryMb>0?(c(),g("span",Ye,d(e.formatGpuMemory(u.gpuMemoryMb)),1)):(c(),g("span",Ge,"—"))],64)):f("v-if",!0),r.key==="status"?(c(),S(C,{key:3,color:e.nodeStatusColor(u.status)},{default:t(()=>[m(d(e.nodeStatusLabel(u.status)),1)]),_:2},1032,["color"])):f("v-if",!0),r.key==="taskCount"?(c(),S(C,{key:4,color:"purple",style:{"font-size":"11px"}},{default:t(()=>[m(d(u.taskCount),1)]),_:2},1024)):f("v-if",!0),r.key==="lastHeartbeat"?(c(),g("span",We,d(e.formatInferenceTime(u.lastHeartbeat)),1)):f("v-if",!0),r.key==="action"?(c(),g(h,{key:6},[n(T,{size:"small",type:"link",loading:e.heartbeatId===u.id,onClick:x=>e.sendHeartbeat(u)},{default:t(()=>[m(d(e.t("inference.rowActions.heartbeat")),1)]),_:1},8,["loading","onClick"]),n(I,{trigger:["click"]},{overlay:t(()=>[n(R,{onClick:x=>e.transitionStatus(u,x.key)},{default:t(()=>[(c(!0),g(h,null,E(e.NODE_STATUSES,x=>(c(),S(U,{key:x,disabled:x===u.status},{default:t(()=>[m(d(e.nodeStatusLabel(x)),1)]),_:2},1032,["disabled"]))),128))]),_:2},1032,["onClick"])]),default:t(()=>[n(T,{size:"small",type:"link"},{default:t(()=>[m(d(e.t("inference.rowActions.statusDropdown")),1)]),_:1})]),_:2},1024),n(k,{title:e.t("inference.rowActions.unregisterConfirm"),"ok-text":e.t("inference.rowActions.unregisterOk"),"cancel-text":e.t("common.cancel"),onConfirm:x=>e.unregisterNode(u)},{default:t(()=>[n(T,{size:"small",type:"link",danger:""},{default:t(()=>[m(d(e.t("inference.rowActions.unregister")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])],64)):f("v-if",!0)]),emptyText:t(()=>[O("div",Qe,[n(e.CloudServerOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),m(" "+d(e.nodeStatusFilter?e.t("inference.empty.filteredNodes"):e.t("inference.empty.noNodes")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),f(" ── Tasks tab ─────────────────────────────────────────────── "),n(J,{key:"tasks",tab:e.t("inference.tabs.tasks")},{default:t(()=>[O("div",Xe,[n(j,{value:e.taskStatusFilter,"onUpdate:value":l[1]||(l[1]=r=>e.taskStatusFilter=r),size:"small"},{default:t(()=>[n(w,{value:""},{default:t(()=>[m(d(e.t("inference.filter.allStatuses")),1)]),_:1}),(c(!0),g(h,null,E(e.TASK_STATUSES,r=>(c(),S(w,{key:r,value:r},{default:t(()=>[m(d(e.taskStatusLabel(r)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),n(j,{value:e.taskPrivacyFilter,"onUpdate:value":l[2]||(l[2]=r=>e.taskPrivacyFilter=r),size:"small"},{default:t(()=>[n(w,{value:""},{default:t(()=>[m(d(e.t("inference.filter.allModes")),1)]),_:1}),(c(!0),g(h,null,E(e.PRIVACY_MODES,r=>(c(),S(w,{key:r,value:r},{default:t(()=>[m(d(e.privacyLabel(r)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),n(v,{columns:e.taskColumns,"data-source":e.filteredTasks,pagination:{pageSize:20,showTotal:r=>e.t("inference.totals.rows",{count:r})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:t(({column:r,record:u})=>[r.key==="model"?(c(),g(h,{key:0},[O("span",Ze,d(u.model),1),u.input?(c(),g("div",$e,d(e.truncate(u.input,60)),1)):f("v-if",!0)],64)):f("v-if",!0),r.key==="privacyMode"?(c(),S(C,{key:1,color:e.privacyColor(u.privacyMode)},{default:t(()=>[m(d(e.privacyLabel(u.privacyMode)),1)]),_:2},1032,["color"])):f("v-if",!0),r.key==="priority"?(c(),g("span",{key:2,style:Se({color:e.priorityColor(u.priority),fontWeight:500})},d(u.priority),5)):f("v-if",!0),r.key==="assignedNode"?(c(),g(h,{key:3},[u.assignedNode?(c(),g("span",et,d(e.nodeShortName(u.assignedNode)),1)):(c(),g("span",tt,"—"))],64)):f("v-if",!0),r.key==="status"?(c(),S(C,{key:4,color:e.taskStatusColor(u.status)},{default:t(()=>[m(d(e.taskStatusLabel(u.status)),1)]),_:2},1032,["color"])):f("v-if",!0),r.key==="duration"?(c(),g(h,{key:5},[u.durationMs!=null?(c(),g("span",nt,d(u.durationMs)+" ms ",1)):(c(),g("span",at,"—"))],64)):f("v-if",!0),r.key==="createdAt"?(c(),g("span",ot,d(e.formatInferenceTime(u.createdAt)),1)):f("v-if",!0),r.key==="action"?(c(),g(h,{key:7},[e.canComplete(u)?(c(),S(T,{key:0,size:"small",type:"link",loading:e.completingId===u.id,onClick:x=>e.completeTask(u)},{default:t(()=>[m(d(e.t("inference.rowActions.complete")),1)]),_:1},8,["loading","onClick"])):f("v-if",!0),e.canFail(u)?(c(),S(k,{key:1,title:e.t("inference.rowActions.failConfirm"),"ok-text":e.t("inference.rowActions.failOk"),"cancel-text":e.t("common.cancel"),onConfirm:x=>e.failTask(u)},{default:t(()=>[n(T,{size:"small",type:"link",danger:""},{default:t(()=>[m(d(e.t("inference.rowActions.fail")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):f("v-if",!0)],64)):f("v-if",!0)]),emptyText:t(()=>[O("div",it,[n(e.ThunderboltOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),m(" "+d(e.taskStatusFilter||e.taskPrivacyFilter?e.t("inference.empty.filteredTasks"):e.t("inference.empty.noTasks")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"])]),_:1},8,["activeKey"]),f(" ── Register node modal ──────────────────────────────────── "),n(G,{open:e.showRegisterModal,"onUpdate:open":l[8]||(l[8]=r=>e.showRegisterModal=r),title:e.t("inference.register.title"),"confirm-loading":e.registering,width:520,"ok-text":e.t("inference.register.ok"),"cancel-text":e.t("common.cancel"),onOk:e.registerNode,onCancel:e.resetRegisterForm},{default:t(()=>[n(Y,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:t(()=>[n(A,{label:e.t("inference.register.nodeIdLabel"),required:""},{default:t(()=>[n(P,{value:e.registerForm.nodeId,"onUpdate:value":l[4]||(l[4]=r=>e.registerForm.nodeId=r),placeholder:e.t("inference.register.nodeIdPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),n(A,{label:e.t("inference.register.endpointLabel")},{default:t(()=>[n(P,{value:e.registerForm.endpoint,"onUpdate:value":l[5]||(l[5]=r=>e.registerForm.endpoint=r),placeholder:e.t("inference.register.endpointPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),n(A,{label:e.t("inference.register.capabilitiesLabel")},{default:t(()=>[n(P,{value:e.registerForm.capabilities,"onUpdate:value":l[6]||(l[6]=r=>e.registerForm.capabilities=r),placeholder:e.t("inference.register.capabilitiesPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),n(A,{label:e.t("inference.register.gpuLabel")},{default:t(()=>[n(B,{value:e.registerForm.gpuMemory,"onUpdate:value":l[7]||(l[7]=r=>e.registerForm.gpuMemory=r),min:0,max:2e5,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),f(" ── Submit task modal ────────────────────────────────────── "),n(G,{open:e.showSubmitModal,"onUpdate:open":l[13]||(l[13]=r=>e.showSubmitModal=r),title:e.t("inference.submit.title"),"confirm-loading":e.submitting,width:520,"ok-text":e.t("inference.submit.ok"),"cancel-text":e.t("common.cancel"),onOk:e.submitTask,onCancel:e.resetSubmitForm},{default:t(()=>[n(Y,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:t(()=>[n(A,{label:e.t("inference.submit.modelLabel"),required:""},{default:t(()=>[n(P,{value:e.submitForm.model,"onUpdate:value":l[9]||(l[9]=r=>e.submitForm.model=r),placeholder:e.t("inference.submit.modelPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),n(A,{label:e.t("inference.submit.inputLabel")},{default:t(()=>[n(Q,{value:e.submitForm.input,"onUpdate:value":l[10]||(l[10]=r=>e.submitForm.input=r),"auto-size":{minRows:3,maxRows:6}},null,8,["value"])]),_:1},8,["label"]),n(A,{label:e.t("inference.submit.priorityLabel")},{default:t(()=>[n(B,{value:e.submitForm.priority,"onUpdate:value":l[11]||(l[11]=r=>e.submitForm.priority=r),min:1,max:10,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"]),n(A,{label:e.t("inference.submit.modeLabel")},{default:t(()=>[n(j,{value:e.submitForm.mode,"onUpdate:value":l[12]||(l[12]=r=>e.submitForm.mode=r)},{default:t(()=>[(c(!0),g(h,null,E(e.PRIVACY_MODES,r=>(c(),S(w,{key:r,value:r},{default:t(()=>[m(d(e.privacyLabel(r)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])])}const ct=he(De,[["render",rt],["__scopeId","data-v-93ae85f8"],["__file","/tmp/cc-web-panel-Ep7NSX/repo/packages/web-panel/src/views/Inference.vue"]]);export{ct as default};
@@ -1 +1 @@
1
- import{I as c,J as m,U as E,R as s,c as a,K as o,S as A,V as f,o as re,b as U,a as X,r as k,P as d,Q as y,F as B,Z as N}from"./vendor-BvqAck49.js";import{t as J,_ as Se,u as ie,b as se,d as v}from"./index-Dh8r6PnR.js";import{u as de,i as pe,a as ue,b as ce,c as ye,d as ge,E as Ie}from"./echarts-jxgIOFUZ.js";import{H as Ae,x as De,p as je,aB as ze,as as Fe,R as Me}from"./icons-DP3uiYxy.js";function ee(t,l=0){if(!t||typeof t!="object")return null;const i=t.id||t.entity_id||"";if(!i)return null;const e=Array.isArray(t.tags)?t.tags:typeof t.tags=="string"&&t.tags.length>0?t.tags.split(",").map(b=>b.trim()).filter(Boolean):[];return{key:i,id:i,name:t.name||"",type:t.type||"",tags:e,properties:t.properties&&typeof t.properties=="object"?t.properties:null,createdAt:t.created_at||t.createdAt||"",updatedAt:t.updated_at||t.updatedAt||"",_idx:l}}function me(t,l=0){if(!t||typeof t!="object")return null;const i=t.id||t.relation_id||"";if(!i)return null;const e=t.sourceId||t.source_id||"",b=t.targetId||t.target_id||"";if(!e||!b)return null;const O=typeof t.weight=="number"?t.weight:typeof t.weight=="string"?parseFloat(t.weight):1;return{key:i,id:i,sourceId:e,targetId:b,relationType:t.relationType||t.relation_type||"",weight:Number.isFinite(O)?O:1,properties:t.properties&&typeof t.properties=="object"?t.properties:null,createdAt:t.created_at||t.createdAt||"",_idx:l}}function fe(t){const l=J(t);return Array.isArray(l)?l.map(ee).filter(Boolean):l&&Array.isArray(l.entities)?l.entities.map(ee).filter(Boolean):[]}function he(t){const l=J(t);return Array.isArray(l)?l.map(me).filter(Boolean):l&&Array.isArray(l.relations)?l.relations.map(me).filter(Boolean):[]}function ke(t){const l=J(t);if(!l||typeof l!="object"||Array.isArray(l))return{entityCount:0,relationCount:0,avgDegree:0,density:0,typeDistribution:{},relationTypeDistribution:{}};const i=e=>{const b=typeof e=="number"?e:parseFloat(e);return Number.isFinite(b)?b:0};return{entityCount:i(l.entityCount??l.entity_count),relationCount:i(l.relationCount??l.relation_count),avgDegree:i(l.avgDegree??l.avg_degree),density:i(l.density),typeDistribution:l.typeDistribution||l.type_distribution||{},relationTypeDistribution:l.relationTypeDistribution||l.relation_type_distribution||{}}}function ve(t){const l=J(t);return Array.isArray(l)?l.map((i,e)=>{if(!i||typeof i!="object"||!i.entity)return null;const b=ee(i.entity,e);return b?{key:`${b.id}-${e}`,depth:typeof i.depth=="number"?i.depth:0,entity:b}:null}).filter(Boolean):[]}function _e(t){const l=J(t);return Array.isArray(l)?l.map(i=>!i||typeof i!="object"||!i.name?null:{name:String(i.name),description:String(i.description||"")}).filter(Boolean):[]}function be(t,l){const i=new Map,e=[];for(const p of t)i.has(p.type)||(i.set(p.type,e.length),e.push({name:p.type||"unknown"}));const b=t.map(p=>({id:p.id,name:p.name||p.id.slice(0,8),category:i.get(p.type)??0,value:1,symbolSize:24})),O=new Set(t.map(p=>p.id)),R=[];for(const p of l)!O.has(p.sourceId)||!O.has(p.targetId)||R.push({source:p.sourceId,target:p.targetId,value:p.relationType,lineStyle:{width:Math.max(1,Math.min(6,p.weight*2))}});return{nodes:b,links:R,categories:e}}const Le={__name:"KnowledgeGraph",setup(t,{expose:l}){l(),de([ge,ye,ce,ue,pe]);const i=ie(),{t:e}=se(),b=k(!1),O=k(!1),R=k(!1),p=k(!1),D=k(!1),T=k(""),S=k(!1),W=k("graph"),M=k([]),j=k([]),z=k([]),C=k({entityCount:0,relationCount:0,avgDegree:0,density:0,typeDistribution:{},relationTypeDistribution:{}}),H=k(!1),K=k(!1),V=k(!1),x=X({name:"",type:"",tags:""}),_=X({sourceId:"",targetId:"",relationType:"",weight:1}),G=X({maxDepth:3,direction:"out"}),I=k(""),L=k(""),F=k([]),q=U(()=>[{title:e("knowledgeGraph.entityCols.id"),key:"id",width:"120px"},{title:e("knowledgeGraph.entityCols.name"),key:"name",dataIndex:"name",ellipsis:!0},{title:e("knowledgeGraph.entityCols.type"),key:"type",dataIndex:"type",width:"140px"},{title:e("knowledgeGraph.entityCols.tags"),key:"tags",width:"200px"},{title:e("knowledgeGraph.entityCols.action"),key:"action",width:"160px"}]),Q=U(()=>[{title:e("knowledgeGraph.relationCols.source"),key:"source",width:"120px"},{title:"",key:"arrow",width:"40px"},{title:e("knowledgeGraph.relationCols.target"),key:"target",width:"120px"},{title:e("knowledgeGraph.relationCols.relationType"),key:"relationType",width:"160px"},{title:e("knowledgeGraph.relationCols.weight"),key:"weight",width:"100px"}]),Y={Person:"magenta",Organization:"blue",Project:"cyan",Technology:"geekblue",Document:"gold",Concept:"purple",Event:"volcano"};function $(r){return Y[r]||"default"}const n=U(()=>{const r=new Map;for(const u of M.value)r.set(u.id,u.name||u.id.slice(0,8));return r});function w(r){return n.value.get(r)||r.slice(0,12)}function P(r,u){return String(u?.children?.[0]?.children||"").toLowerCase().includes(String(r).toLowerCase())}const we=U(()=>{const r=C.value.typeDistribution||{},u=Object.values(r).reduce((g,h)=>g+h,0)||1;return Object.entries(r).map(([g,h])=>({type:g,count:h,percent:Math.round(h/u*100)})).sort((g,h)=>h.count-g.count)}),Ge=U(()=>{const r=C.value.relationTypeDistribution||{},u=Object.values(r).reduce((g,h)=>g+h,0)||1;return Object.entries(r).map(([g,h])=>({type:g,count:h,percent:Math.round(h/u*100)})).sort((g,h)=>h.count-g.count)}),Re=U(()=>{const{nodes:r,links:u,categories:g}=be(M.value,j.value);return{tooltip:{show:!0},legend:[{data:g.map(h=>h.name),textStyle:{color:"#aaa"},bottom:0}],series:[{type:"graph",layout:"force",data:r,links:u,categories:g,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 Z(){O.value=!0;try{await Promise.all([te(),ae(),ne()])}finally{O.value=!1}}async function te(){try{const{output:r}=await i.execute("kg list --limit 500 --json",15e3);M.value=fe(r)}catch(r){v.error(e("knowledgeGraph.msg.loadEntitiesFailed")+": "+r.message),M.value=[]}}async function ae(){try{const{output:r}=await i.execute("kg relations --limit 1000 --json",15e3);j.value=he(r)}catch(r){v.error(e("knowledgeGraph.msg.loadRelationsFailed")+": "+r.message),j.value=[]}}async function ne(){try{const{output:r}=await i.execute("kg stats --json",1e4);C.value=ke(r)}catch(r){v.error(e("knowledgeGraph.msg.loadStatsFailed")+": "+r.message)}}async function oe(){if(!(z.value.length>0)){R.value=!0;try{const{output:r}=await i.execute("kg entity-types --json",1e4);z.value=_e(r)}catch(r){v.error(e("knowledgeGraph.msg.loadEntityTypesFailed")+": "+r.message)}finally{R.value=!1}}}async function Ce(){if(!x.name.trim()||!x.type){v.warning(e("knowledgeGraph.msg.addEntityEmpty"));return}p.value=!0;try{let u=`kg add "${x.name.trim().replace(/"/g,'\\"')}" ${x.type} --json`;x.tags.trim()&&(u+=` --tags "${x.tags.trim().replace(/"/g,'\\"')}"`);const{output:g,exitCode:h}=await i.execute(u,15e3);h!==0||/error|失败/i.test(g)?v.error(e("knowledgeGraph.msg.addEntityFailed")+": "+g.slice(0,120)):(v.success(e("knowledgeGraph.msg.addEntitySuccess")),H.value=!1,x.name="",x.type="",x.tags="",await Z())}catch(r){v.error(e("knowledgeGraph.msg.addEntityFailed")+": "+r.message)}finally{p.value=!1}}async function xe(){if(!_.sourceId||!_.targetId||!_.relationType.trim()){v.warning(e("knowledgeGraph.msg.addRelationEmpty"));return}if(_.sourceId===_.targetId){v.warning(e("knowledgeGraph.msg.addRelationSelfLoop"));return}D.value=!0;try{const r=_.relationType.trim().replace(/"/g,'\\"'),u=`kg add-relation ${_.sourceId} ${_.targetId} "${r}" --weight ${_.weight} --json`,{output:g,exitCode:h}=await i.execute(u,15e3);h!==0||/error|失败/i.test(g)?v.error(e("knowledgeGraph.msg.addRelationFailed")+": "+g.slice(0,120)):(v.success(e("knowledgeGraph.msg.addRelationSuccess")),K.value=!1,_.sourceId="",_.targetId="",_.relationType="",_.weight=1,await Z())}catch(r){v.error(e("knowledgeGraph.msg.addRelationFailed")+": "+r.message)}finally{D.value=!1}}async function Te(r){T.value=r.id;try{const{output:u,exitCode:g}=await i.execute(`kg remove ${r.id}`,15e3);g!==0||/error|失败/i.test(u)?v.error(e("knowledgeGraph.msg.deleteFailed")+": "+u.slice(0,120)):(v.success(e("knowledgeGraph.msg.deleteSuccess")),await Z())}catch(u){v.error(e("knowledgeGraph.msg.deleteFailed")+": "+u.message)}finally{T.value=""}}function Ee(r){I.value=r.id,L.value=r.name,F.value=[],V.value=!0}async function Oe(){S.value=!0;try{const r=`kg reason ${I.value} --max-depth ${G.maxDepth} --direction ${G.direction} --json`,{output:u}=await i.execute(r,15e3);F.value=ve(u),F.value.length===0&&v.info(e("knowledgeGraph.msg.reasonEmpty"))}catch(r){v.error(e("knowledgeGraph.msg.reasonFailed")+": "+r.message)}finally{S.value=!1}}re(()=>{Z(),oe()});const le={ws:i,t:e,hasDesktopFeatures:b,loading:O,loadingTypes:R,addingEntity:p,addingRelation:D,removing:T,reasoning:S,activeTab:W,entities:M,relations:j,entityTypes:z,stats:C,showAddEntityModal:H,showAddRelationModal:K,showReasonModal:V,newEntity:x,newRelation:_,reasonOptions:G,reasonStartId:I,reasonStartName:L,reasonResults:F,entityColumns:q,relationColumns:Q,TYPE_COLORS:Y,entityTypeColor:$,entityNameMap:n,entityNameOrId:w,entityFilter:P,entityTypeRows:we,relationTypeRows:Ge,graphOption:Re,loadAll:Z,loadEntities:te,loadRelations:ae,loadStats:ne,loadEntityTypes:oe,addEntity:Ce,addRelation:xe,removeEntity:Te,openReason:Ee,runReason:Oe,ref:k,reactive:X,computed:U,onMounted:re,get ReloadOutlined(){return Me},get PlusOutlined(){return Fe},get LinkOutlined(){return ze},get DeploymentUnitOutlined(){return je},get ShareAltOutlined(){return De},get BarChartOutlined(){return Ae},get message(){return v},get useI18n(){return se},get VChart(){return Ie},get use(){return de},get CanvasRenderer(){return ge},get GraphChart(){return ye},get TooltipComponent(){return ce},get LegendComponent(){return ue},get TitleComponent(){return pe},get useWsStore(){return ie},get parseEntities(){return fe},get parseRelations(){return he},get parseStats(){return ke},get parseReason(){return ve},get parseEntityTypes(){return _e},get buildGraphData(){return be}};return Object.defineProperty(le,"__isScriptSetup",{enumerable:!1,value:!0}),le}},Ue={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Be={class:"page-title"},Pe={class:"page-sub"},Ne={key:0,style:{padding:"60px","text-align":"center"}},Ke={key:1,style:{height:"540px"}},Ve={key:0,style:{color:"#888","font-family":"monospace","font-size":"11px"}},qe={key:1,style:{color:"var(--text-primary)"}},Ze={key:0,style:{color:"var(--text-muted)"}},Je={key:0,style:{color:"#888","font-family":"monospace","font-size":"11px"}},We={key:1,style:{color:"var(--text-muted)"}},He={key:2,style:{color:"#888","font-family":"monospace","font-size":"11px"}},Qe={key:4,style:{color:"var(--text-secondary)","font-family":"monospace"}},Ye={key:0,style:{padding:"40px","text-align":"center",color:"var(--text-muted)"}},Xe={style:{display:"flex","justify-content":"space-between","margin-bottom":"4px"}},$e={style:{color:"var(--text-secondary)","font-family":"monospace"}},et={key:0,style:{padding:"40px","text-align":"center",color:"var(--text-muted)"}},tt={style:{display:"flex","justify-content":"space-between","margin-bottom":"4px"}},at={style:{color:"var(--text-secondary)","font-family":"monospace"}},nt={style:{color:"var(--text-muted)","font-size":"11px"}},ot={key:0,style:{padding:"30px","text-align":"center",color:"var(--text-muted)"}},lt={style:{"margin-left":"12px",color:"var(--text-primary)"}},rt={style:{"margin-left":"8px",color:"#888","font-family":"monospace","font-size":"11px"}};function it(t,l,i,e,b,O){const R=c("a-button"),p=c("a-space"),D=c("a-statistic"),T=c("a-card"),S=c("a-col"),W=c("a-row"),M=c("a-alert"),j=c("a-empty"),z=c("a-tab-pane"),C=c("a-tag"),H=c("a-popconfirm"),K=c("a-table"),V=c("a-progress"),x=c("a-tabs"),_=c("a-input"),G=c("a-form-item"),I=c("a-select-option"),L=c("a-select"),F=c("a-form"),q=c("a-modal"),Q=c("a-input-number"),Y=c("a-list-item"),$=c("a-list");return d(),m("div",null,[E("div",Ue,[E("div",null,[E("h2",Be,s(t.$t("knowledgeGraph.title")),1),E("p",Pe,s(t.$t("knowledgeGraph.subtitle")),1)]),a(p,null,{default:o(()=>[a(R,{loading:e.loading,onClick:e.loadAll},{icon:o(()=>[a(e.ReloadOutlined)]),default:o(()=>[y(" "+s(t.$t("knowledgeGraph.refresh")),1)]),_:1},8,["loading"]),a(R,{type:"primary",onClick:l[0]||(l[0]=n=>e.showAddEntityModal=!0)},{icon:o(()=>[a(e.PlusOutlined)]),default:o(()=>[y(" "+s(t.$t("knowledgeGraph.addEntity")),1)]),_:1}),a(R,{onClick:l[1]||(l[1]=n=>e.showAddRelationModal=!0),disabled:e.entities.length<2},{icon:o(()=>[a(e.LinkOutlined)]),default:o(()=>[y(" "+s(t.$t("knowledgeGraph.addRelation")),1)]),_:1},8,["disabled"])]),_:1})]),a(W,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:o(()=>[a(S,{xs:24,sm:12,lg:6},{default:o(()=>[a(T,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(D,{title:t.$t("knowledgeGraph.stats.entityCount"),value:e.stats.entityCount,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:o(()=>[a(e.DeploymentUnitOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),a(S,{xs:24,sm:12,lg:6},{default:o(()=>[a(T,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(D,{title:t.$t("knowledgeGraph.stats.relationCount"),value:e.stats.relationCount,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:o(()=>[a(e.LinkOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),a(S,{xs:24,sm:12,lg:6},{default:o(()=>[a(T,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(D,{title:t.$t("knowledgeGraph.stats.avgDegree"),value:e.stats.avgDegree,precision:2,"value-style":{color:"#faad14",fontSize:"20px"}},null,8,["title","value"])]),_:1})]),_:1}),a(S,{xs:24,sm:12,lg:6},{default:o(()=>[a(T,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(D,{title:t.$t("knowledgeGraph.stats.density"),value:e.stats.density,precision:4,"value-style":{color:"#722ed1",fontSize:"20px"}},null,8,["title","value"])]),_:1})]),_:1})]),_:1}),e.hasDesktopFeatures?f("v-if",!0):(d(),A(M,{key:0,message:t.$t("knowledgeGraph.webOnly.message"),description:t.$t("knowledgeGraph.webOnly.description"),type:"info","show-icon":"",closable:"",style:{"margin-bottom":"16px"}},null,8,["message","description"])),a(x,{activeKey:e.activeTab,"onUpdate:activeKey":l[2]||(l[2]=n=>e.activeTab=n),type:"card"},{default:o(()=>[f(" Tab 1: graph viz "),a(z,{key:"graph"},{tab:o(()=>[a(e.ShareAltOutlined),y(" "+s(t.$t("knowledgeGraph.tabs.graph")),1)]),default:o(()=>[a(T,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[e.entities.length===0?(d(),m("div",Ne,[a(j,{description:t.$t("knowledgeGraph.table.emptyGraph")},null,8,["description"])])):(d(),m("div",Ke,[a(e.VChart,{option:e.graphOption,autoresize:""},null,8,["option"])]))]),_:1})]),_:1}),f(" Tab 2: entities "),a(z,{key:"entities"},{tab:o(()=>[a(e.DeploymentUnitOutlined),y(" "+s(t.$t("knowledgeGraph.tabs.entities",{n:e.entities.length})),1)]),default:o(()=>[a(K,{columns:e.entityColumns,"data-source":e.entities,pagination:{pageSize:20,showTotal:n=>t.$t("knowledgeGraph.table.totalSuffix",{n})},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"kg-row"},{bodyCell:o(({column:n,record:w})=>[n.key==="id"?(d(),m("span",Ve,s(w.id.slice(0,12)),1)):f("v-if",!0),n.key==="name"?(d(),m("span",qe,s(w.name),1)):f("v-if",!0),n.key==="type"?(d(),A(C,{key:2,color:e.entityTypeColor(w.type)},{default:o(()=>[y(s(w.type),1)]),_:2},1032,["color"])):f("v-if",!0),n.key==="tags"?(d(),m(B,{key:3},[(d(!0),m(B,null,N(w.tags,P=>(d(),A(C,{key:P,color:"default"},{default:o(()=>[y(s(P),1)]),_:2},1024))),128)),w.tags.length===0?(d(),m("span",Ze,"-")):f("v-if",!0)],64)):f("v-if",!0),n.key==="action"?(d(),A(p,{key:4,size:"small"},{default:o(()=>[a(R,{size:"small",type:"link",onClick:P=>e.openReason(w)},{default:o(()=>[y(s(t.$t("knowledgeGraph.actions.reason")),1)]),_:1},8,["onClick"]),a(H,{title:t.$t("knowledgeGraph.deleteConfirm.title"),"ok-text":t.$t("knowledgeGraph.deleteConfirm.ok"),"ok-type":"danger","cancel-text":t.$t("knowledgeGraph.deleteConfirm.cancel"),onConfirm:P=>e.removeEntity(w)},{default:o(()=>[a(R,{size:"small",type:"link",danger:"",loading:e.removing===w.id},{default:o(()=>[y(s(t.$t("knowledgeGraph.actions.delete")),1)]),_:1},8,["loading"])]),_:2},1032,["title","ok-text","cancel-text","onConfirm"])]),_:2},1024)):f("v-if",!0)]),emptyText:o(()=>[a(j,{description:t.$t("knowledgeGraph.table.emptyEntities")},null,8,["description"])]),_:1},8,["columns","data-source","pagination"])]),_:1}),f(" Tab 3: relations "),a(z,{key:"relations"},{tab:o(()=>[a(e.LinkOutlined),y(" "+s(t.$t("knowledgeGraph.tabs.relations",{n:e.relations.length})),1)]),default:o(()=>[a(K,{columns:e.relationColumns,"data-source":e.relations,pagination:{pageSize:20,showTotal:n=>t.$t("knowledgeGraph.table.totalSuffix",{n})},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"kg-row"},{bodyCell:o(({column:n,record:w})=>[n.key==="source"?(d(),m("span",Je,s(e.entityNameOrId(w.sourceId)),1)):f("v-if",!0),n.key==="arrow"?(d(),m("span",We,"→")):f("v-if",!0),n.key==="target"?(d(),m("span",He,s(e.entityNameOrId(w.targetId)),1)):f("v-if",!0),n.key==="relationType"?(d(),A(C,{key:3,color:"cyan"},{default:o(()=>[y(s(w.relationType),1)]),_:2},1024)):f("v-if",!0),n.key==="weight"?(d(),m("span",Qe,s(w.weight.toFixed(2)),1)):f("v-if",!0)]),emptyText:o(()=>[a(j,{description:t.$t("knowledgeGraph.table.emptyRelations")},null,8,["description"])]),_:1},8,["columns","data-source","pagination"])]),_:1}),f(" Tab 4: type breakdown "),a(z,{key:"distribution"},{tab:o(()=>[a(e.BarChartOutlined),y(" "+s(t.$t("knowledgeGraph.tabs.distribution")),1)]),default:o(()=>[a(W,{gutter:[24,24]},{default:o(()=>[a(S,{xs:24,md:12},{default:o(()=>[a(T,{title:t.$t("knowledgeGraph.distribution.entityTypes"),style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[e.entityTypeRows.length===0?(d(),m("div",Ye,s(t.$t("knowledgeGraph.table.emptyData")),1)):f("v-if",!0),(d(!0),m(B,null,N(e.entityTypeRows,n=>(d(),m("div",{key:n.type,style:{"margin-bottom":"8px"}},[E("div",Xe,[a(C,{color:e.entityTypeColor(n.type)},{default:o(()=>[y(s(n.type),1)]),_:2},1032,["color"]),E("span",$e,s(n.count),1)]),a(V,{percent:n.percent,"show-info":!1,"stroke-color":"#1677ff"},null,8,["percent"])]))),128))]),_:1},8,["title"])]),_:1}),a(S,{xs:24,md:12},{default:o(()=>[a(T,{title:t.$t("knowledgeGraph.distribution.relationTypes"),style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[e.relationTypeRows.length===0?(d(),m("div",et,s(t.$t("knowledgeGraph.table.emptyData")),1)):f("v-if",!0),(d(!0),m(B,null,N(e.relationTypeRows,n=>(d(),m("div",{key:n.type,style:{"margin-bottom":"8px"}},[E("div",tt,[a(C,{color:"cyan"},{default:o(()=>[y(s(n.type),1)]),_:2},1024),E("span",at,s(n.count),1)]),a(V,{percent:n.percent,"show-info":!1,"stroke-color":"#52c41a"},null,8,["percent"])]))),128))]),_:1},8,["title"])]),_:1})]),_:1})]),_:1})]),_:1},8,["activeKey"]),f(" Add Entity Modal "),a(q,{open:e.showAddEntityModal,"onUpdate:open":l[6]||(l[6]=n=>e.showAddEntityModal=n),title:t.$t("knowledgeGraph.addEntity_modal.title"),"confirm-loading":e.addingEntity,onOk:e.addEntity,"ok-text":t.$t("knowledgeGraph.addEntity_modal.ok"),"cancel-text":t.$t("knowledgeGraph.addEntity_modal.cancel")},{default:o(()=>[a(F,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:o(()=>[a(G,{label:t.$t("knowledgeGraph.addEntity_modal.nameLabel"),required:""},{default:o(()=>[a(_,{value:e.newEntity.name,"onUpdate:value":l[3]||(l[3]=n=>e.newEntity.name=n),placeholder:t.$t("knowledgeGraph.addEntity_modal.namePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(G,{label:t.$t("knowledgeGraph.addEntity_modal.typeLabel"),required:""},{default:o(()=>[a(L,{value:e.newEntity.type,"onUpdate:value":l[4]||(l[4]=n=>e.newEntity.type=n),placeholder:t.$t("knowledgeGraph.addEntity_modal.typePlaceholder"),loading:e.loadingTypes},{default:o(()=>[(d(!0),m(B,null,N(e.entityTypes,n=>(d(),A(I,{key:n.name,value:n.name},{default:o(()=>[y(s(n.name)+" ",1),E("span",nt,"— "+s(n.description),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value","placeholder","loading"])]),_:1},8,["label"]),a(G,{label:t.$t("knowledgeGraph.addEntity_modal.tagsLabel")},{default:o(()=>[a(_,{value:e.newEntity.tags,"onUpdate:value":l[5]||(l[5]=n=>e.newEntity.tags=n),placeholder:t.$t("knowledgeGraph.addEntity_modal.tagsPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),f(" Add Relation Modal "),a(q,{open:e.showAddRelationModal,"onUpdate:open":l[11]||(l[11]=n=>e.showAddRelationModal=n),title:t.$t("knowledgeGraph.addRelation_modal.title"),"confirm-loading":e.addingRelation,onOk:e.addRelation,"ok-text":t.$t("knowledgeGraph.addRelation_modal.ok"),"cancel-text":t.$t("knowledgeGraph.addRelation_modal.cancel")},{default:o(()=>[a(F,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:o(()=>[a(G,{label:t.$t("knowledgeGraph.addRelation_modal.sourceLabel"),required:""},{default:o(()=>[a(L,{value:e.newRelation.sourceId,"onUpdate:value":l[7]||(l[7]=n=>e.newRelation.sourceId=n),placeholder:t.$t("knowledgeGraph.addRelation_modal.sourcePlaceholder"),"show-search":"","filter-option":e.entityFilter},{default:o(()=>[(d(!0),m(B,null,N(e.entities,n=>(d(),A(I,{key:n.id,value:n.id},{default:o(()=>[y(s(n.name)+" ("+s(n.type)+") ",1)]),_:2},1032,["value"]))),128))]),_:1},8,["value","placeholder"])]),_:1},8,["label"]),a(G,{label:t.$t("knowledgeGraph.addRelation_modal.targetLabel"),required:""},{default:o(()=>[a(L,{value:e.newRelation.targetId,"onUpdate:value":l[8]||(l[8]=n=>e.newRelation.targetId=n),placeholder:t.$t("knowledgeGraph.addRelation_modal.targetPlaceholder"),"show-search":"","filter-option":e.entityFilter},{default:o(()=>[(d(!0),m(B,null,N(e.entities,n=>(d(),A(I,{key:n.id,value:n.id,disabled:n.id===e.newRelation.sourceId},{default:o(()=>[y(s(n.name)+" ("+s(n.type)+") ",1)]),_:2},1032,["value","disabled"]))),128))]),_:1},8,["value","placeholder"])]),_:1},8,["label"]),a(G,{label:t.$t("knowledgeGraph.addRelation_modal.relationTypeLabel"),required:""},{default:o(()=>[a(_,{value:e.newRelation.relationType,"onUpdate:value":l[9]||(l[9]=n=>e.newRelation.relationType=n),placeholder:t.$t("knowledgeGraph.addRelation_modal.relationTypePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(G,{label:t.$t("knowledgeGraph.addRelation_modal.weightLabel")},{default:o(()=>[a(Q,{value:e.newRelation.weight,"onUpdate:value":l[10]||(l[10]=n=>e.newRelation.weight=n),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"]),f(" Reason Modal (BFS) "),a(q,{open:e.showReasonModal,"onUpdate:open":l[14]||(l[14]=n=>e.showReasonModal=n),title:t.$t("knowledgeGraph.reason_modal.title",{name:e.reasonStartName}),width:640,footer:null},{default:o(()=>[a(F,{layout:"inline",style:{"margin-bottom":"16px"}},{default:o(()=>[a(G,{label:t.$t("knowledgeGraph.reason_modal.maxDepth")},{default:o(()=>[a(Q,{value:e.reasonOptions.maxDepth,"onUpdate:value":l[12]||(l[12]=n=>e.reasonOptions.maxDepth=n),min:1,max:10},null,8,["value"])]),_:1},8,["label"]),a(G,{label:t.$t("knowledgeGraph.reason_modal.direction")},{default:o(()=>[a(L,{value:e.reasonOptions.direction,"onUpdate:value":l[13]||(l[13]=n=>e.reasonOptions.direction=n),style:{width:"100px"}},{default:o(()=>[a(I,{value:"out"},{default:o(()=>[y(s(t.$t("knowledgeGraph.reason_modal.directionOut")),1)]),_:1}),a(I,{value:"in"},{default:o(()=>[y(s(t.$t("knowledgeGraph.reason_modal.directionIn")),1)]),_:1}),a(I,{value:"both"},{default:o(()=>[y(s(t.$t("knowledgeGraph.reason_modal.directionBoth")),1)]),_:1})]),_:1},8,["value"])]),_:1},8,["label"]),a(G,null,{default:o(()=>[a(R,{type:"primary",loading:e.reasoning,onClick:e.runReason},{default:o(()=>[y(s(t.$t("knowledgeGraph.reason_modal.run")),1)]),_:1},8,["loading"])]),_:1})]),_:1}),e.reasonResults.length===0&&!e.reasoning?(d(),m("div",ot,s(t.$t("knowledgeGraph.reason_modal.hint")),1)):(d(),A($,{key:1,"data-source":e.reasonResults,size:"small"},{renderItem:o(({item:n})=>[a(Y,null,{default:o(()=>[a(C,{color:"purple"},{default:o(()=>[y("depth="+s(n.depth),1)]),_:2},1024),a(C,{color:e.entityTypeColor(n.entity.type),style:{"margin-left":"8px"}},{default:o(()=>[y(s(n.entity.type),1)]),_:2},1032,["color"]),E("span",lt,s(n.entity.name),1),E("span",rt,s(n.entity.id.slice(0,12)),1)]),_:2},1024)]),_:1},8,["data-source"]))]),_:1},8,["open","title"])])}const ct=Se(Le,[["render",it],["__scopeId","data-v-ce227b16"],["__file","/tmp/cc-web-panel-2pZejZ/repo/packages/web-panel/src/views/KnowledgeGraph.vue"]]);export{ct as default};
1
+ import{I as c,J as m,U as E,R as s,c as a,K as o,S as A,V as f,o as re,b as U,a as Y,r as k,P as d,Q as y,F as B,Z as N}from"./vendor-BvqAck49.js";import{t as W,_ as Se,u as ie,b as se,d as v}from"./index-DyEpwvCK.js";import{u as de,i as pe,a as ue,b as ce,c as ye,d as ge,E as Ie}from"./echarts-jxgIOFUZ.js";import{H as Ae,x as De,p as je,aB as ze,as as Fe,R as Me}from"./icons-DP3uiYxy.js";function ee(t,l=0){if(!t||typeof t!="object")return null;const i=t.id||t.entity_id||"";if(!i)return null;const e=Array.isArray(t.tags)?t.tags:typeof t.tags=="string"&&t.tags.length>0?t.tags.split(",").map(b=>b.trim()).filter(Boolean):[];return{key:i,id:i,name:t.name||"",type:t.type||"",tags:e,properties:t.properties&&typeof t.properties=="object"?t.properties:null,createdAt:t.created_at||t.createdAt||"",updatedAt:t.updated_at||t.updatedAt||"",_idx:l}}function me(t,l=0){if(!t||typeof t!="object")return null;const i=t.id||t.relation_id||"";if(!i)return null;const e=t.sourceId||t.source_id||"",b=t.targetId||t.target_id||"";if(!e||!b)return null;const O=typeof t.weight=="number"?t.weight:typeof t.weight=="string"?parseFloat(t.weight):1;return{key:i,id:i,sourceId:e,targetId:b,relationType:t.relationType||t.relation_type||"",weight:Number.isFinite(O)?O:1,properties:t.properties&&typeof t.properties=="object"?t.properties:null,createdAt:t.created_at||t.createdAt||"",_idx:l}}function fe(t){const l=W(t);return Array.isArray(l)?l.map(ee).filter(Boolean):l&&Array.isArray(l.entities)?l.entities.map(ee).filter(Boolean):[]}function he(t){const l=W(t);return Array.isArray(l)?l.map(me).filter(Boolean):l&&Array.isArray(l.relations)?l.relations.map(me).filter(Boolean):[]}function ke(t){const l=W(t);if(!l||typeof l!="object"||Array.isArray(l))return{entityCount:0,relationCount:0,avgDegree:0,density:0,typeDistribution:{},relationTypeDistribution:{}};const i=e=>{const b=typeof e=="number"?e:parseFloat(e);return Number.isFinite(b)?b:0};return{entityCount:i(l.entityCount??l.entity_count),relationCount:i(l.relationCount??l.relation_count),avgDegree:i(l.avgDegree??l.avg_degree),density:i(l.density),typeDistribution:l.typeDistribution||l.type_distribution||{},relationTypeDistribution:l.relationTypeDistribution||l.relation_type_distribution||{}}}function ve(t){const l=W(t);return Array.isArray(l)?l.map((i,e)=>{if(!i||typeof i!="object"||!i.entity)return null;const b=ee(i.entity,e);return b?{key:`${b.id}-${e}`,depth:typeof i.depth=="number"?i.depth:0,entity:b}:null}).filter(Boolean):[]}function _e(t){const l=W(t);return Array.isArray(l)?l.map(i=>!i||typeof i!="object"||!i.name?null:{name:String(i.name),description:String(i.description||"")}).filter(Boolean):[]}function be(t,l){const i=new Map,e=[];for(const p of t)i.has(p.type)||(i.set(p.type,e.length),e.push({name:p.type||"unknown"}));const b=t.map(p=>({id:p.id,name:p.name||p.id.slice(0,8),category:i.get(p.type)??0,value:1,symbolSize:24})),O=new Set(t.map(p=>p.id)),R=[];for(const p of l)!O.has(p.sourceId)||!O.has(p.targetId)||R.push({source:p.sourceId,target:p.targetId,value:p.relationType,lineStyle:{width:Math.max(1,Math.min(6,p.weight*2))}});return{nodes:b,links:R,categories:e}}const Le={__name:"KnowledgeGraph",setup(t,{expose:l}){l(),de([ge,ye,ce,ue,pe]);const i=ie(),{t:e}=se(),b=k(!1),O=k(!1),R=k(!1),p=k(!1),D=k(!1),T=k(""),S=k(!1),Z=k("graph"),M=k([]),j=k([]),z=k([]),C=k({entityCount:0,relationCount:0,avgDegree:0,density:0,typeDistribution:{},relationTypeDistribution:{}}),H=k(!1),K=k(!1),V=k(!1),x=Y({name:"",type:"",tags:""}),_=Y({sourceId:"",targetId:"",relationType:"",weight:1}),G=Y({maxDepth:3,direction:"out"}),I=k(""),L=k(""),F=k([]),q=U(()=>[{title:e("knowledgeGraph.entityCols.id"),key:"id",width:"120px"},{title:e("knowledgeGraph.entityCols.name"),key:"name",dataIndex:"name",ellipsis:!0},{title:e("knowledgeGraph.entityCols.type"),key:"type",dataIndex:"type",width:"140px"},{title:e("knowledgeGraph.entityCols.tags"),key:"tags",width:"200px"},{title:e("knowledgeGraph.entityCols.action"),key:"action",width:"160px"}]),Q=U(()=>[{title:e("knowledgeGraph.relationCols.source"),key:"source",width:"120px"},{title:"",key:"arrow",width:"40px"},{title:e("knowledgeGraph.relationCols.target"),key:"target",width:"120px"},{title:e("knowledgeGraph.relationCols.relationType"),key:"relationType",width:"160px"},{title:e("knowledgeGraph.relationCols.weight"),key:"weight",width:"100px"}]),X={Person:"magenta",Organization:"blue",Project:"cyan",Technology:"geekblue",Document:"gold",Concept:"purple",Event:"volcano"};function $(r){return X[r]||"default"}const n=U(()=>{const r=new Map;for(const u of M.value)r.set(u.id,u.name||u.id.slice(0,8));return r});function w(r){return n.value.get(r)||r.slice(0,12)}function P(r,u){return String(u?.children?.[0]?.children||"").toLowerCase().includes(String(r).toLowerCase())}const we=U(()=>{const r=C.value.typeDistribution||{},u=Object.values(r).reduce((g,h)=>g+h,0)||1;return Object.entries(r).map(([g,h])=>({type:g,count:h,percent:Math.round(h/u*100)})).sort((g,h)=>h.count-g.count)}),Ge=U(()=>{const r=C.value.relationTypeDistribution||{},u=Object.values(r).reduce((g,h)=>g+h,0)||1;return Object.entries(r).map(([g,h])=>({type:g,count:h,percent:Math.round(h/u*100)})).sort((g,h)=>h.count-g.count)}),Re=U(()=>{const{nodes:r,links:u,categories:g}=be(M.value,j.value);return{tooltip:{show:!0},legend:[{data:g.map(h=>h.name),textStyle:{color:"#aaa"},bottom:0}],series:[{type:"graph",layout:"force",data:r,links:u,categories:g,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 J(){O.value=!0;try{await Promise.all([te(),ae(),ne()])}finally{O.value=!1}}async function te(){try{const{output:r}=await i.execute("kg list --limit 500 --json",15e3);M.value=fe(r)}catch(r){v.error(e("knowledgeGraph.msg.loadEntitiesFailed")+": "+r.message),M.value=[]}}async function ae(){try{const{output:r}=await i.execute("kg relations --limit 1000 --json",15e3);j.value=he(r)}catch(r){v.error(e("knowledgeGraph.msg.loadRelationsFailed")+": "+r.message),j.value=[]}}async function ne(){try{const{output:r}=await i.execute("kg stats --json",1e4);C.value=ke(r)}catch(r){v.error(e("knowledgeGraph.msg.loadStatsFailed")+": "+r.message)}}async function oe(){if(!(z.value.length>0)){R.value=!0;try{const{output:r}=await i.execute("kg entity-types --json",1e4);z.value=_e(r)}catch(r){v.error(e("knowledgeGraph.msg.loadEntityTypesFailed")+": "+r.message)}finally{R.value=!1}}}async function Ce(){if(!x.name.trim()||!x.type){v.warning(e("knowledgeGraph.msg.addEntityEmpty"));return}p.value=!0;try{let u=`kg add "${x.name.trim().replace(/"/g,'\\"')}" ${x.type} --json`;x.tags.trim()&&(u+=` --tags "${x.tags.trim().replace(/"/g,'\\"')}"`);const{output:g,exitCode:h}=await i.execute(u,15e3);h!==0||/error|失败/i.test(g)?v.error(e("knowledgeGraph.msg.addEntityFailed")+": "+g.slice(0,120)):(v.success(e("knowledgeGraph.msg.addEntitySuccess")),H.value=!1,x.name="",x.type="",x.tags="",await J())}catch(r){v.error(e("knowledgeGraph.msg.addEntityFailed")+": "+r.message)}finally{p.value=!1}}async function xe(){if(!_.sourceId||!_.targetId||!_.relationType.trim()){v.warning(e("knowledgeGraph.msg.addRelationEmpty"));return}if(_.sourceId===_.targetId){v.warning(e("knowledgeGraph.msg.addRelationSelfLoop"));return}D.value=!0;try{const r=_.relationType.trim().replace(/"/g,'\\"'),u=`kg add-relation ${_.sourceId} ${_.targetId} "${r}" --weight ${_.weight} --json`,{output:g,exitCode:h}=await i.execute(u,15e3);h!==0||/error|失败/i.test(g)?v.error(e("knowledgeGraph.msg.addRelationFailed")+": "+g.slice(0,120)):(v.success(e("knowledgeGraph.msg.addRelationSuccess")),K.value=!1,_.sourceId="",_.targetId="",_.relationType="",_.weight=1,await J())}catch(r){v.error(e("knowledgeGraph.msg.addRelationFailed")+": "+r.message)}finally{D.value=!1}}async function Te(r){T.value=r.id;try{const{output:u,exitCode:g}=await i.execute(`kg remove ${r.id}`,15e3);g!==0||/error|失败/i.test(u)?v.error(e("knowledgeGraph.msg.deleteFailed")+": "+u.slice(0,120)):(v.success(e("knowledgeGraph.msg.deleteSuccess")),await J())}catch(u){v.error(e("knowledgeGraph.msg.deleteFailed")+": "+u.message)}finally{T.value=""}}function Ee(r){I.value=r.id,L.value=r.name,F.value=[],V.value=!0}async function Oe(){S.value=!0;try{const r=`kg reason ${I.value} --max-depth ${G.maxDepth} --direction ${G.direction} --json`,{output:u}=await i.execute(r,15e3);F.value=ve(u),F.value.length===0&&v.info(e("knowledgeGraph.msg.reasonEmpty"))}catch(r){v.error(e("knowledgeGraph.msg.reasonFailed")+": "+r.message)}finally{S.value=!1}}re(()=>{J(),oe()});const le={ws:i,t:e,hasDesktopFeatures:b,loading:O,loadingTypes:R,addingEntity:p,addingRelation:D,removing:T,reasoning:S,activeTab:Z,entities:M,relations:j,entityTypes:z,stats:C,showAddEntityModal:H,showAddRelationModal:K,showReasonModal:V,newEntity:x,newRelation:_,reasonOptions:G,reasonStartId:I,reasonStartName:L,reasonResults:F,entityColumns:q,relationColumns:Q,TYPE_COLORS:X,entityTypeColor:$,entityNameMap:n,entityNameOrId:w,entityFilter:P,entityTypeRows:we,relationTypeRows:Ge,graphOption:Re,loadAll:J,loadEntities:te,loadRelations:ae,loadStats:ne,loadEntityTypes:oe,addEntity:Ce,addRelation:xe,removeEntity:Te,openReason:Ee,runReason:Oe,ref:k,reactive:Y,computed:U,onMounted:re,get ReloadOutlined(){return Me},get PlusOutlined(){return Fe},get LinkOutlined(){return ze},get DeploymentUnitOutlined(){return je},get ShareAltOutlined(){return De},get BarChartOutlined(){return Ae},get message(){return v},get useI18n(){return se},get VChart(){return Ie},get use(){return de},get CanvasRenderer(){return ge},get GraphChart(){return ye},get TooltipComponent(){return ce},get LegendComponent(){return ue},get TitleComponent(){return pe},get useWsStore(){return ie},get parseEntities(){return fe},get parseRelations(){return he},get parseStats(){return ke},get parseReason(){return ve},get parseEntityTypes(){return _e},get buildGraphData(){return be}};return Object.defineProperty(le,"__isScriptSetup",{enumerable:!1,value:!0}),le}},Ue={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Be={class:"page-title"},Pe={class:"page-sub"},Ne={key:0,style:{padding:"60px","text-align":"center"}},Ke={key:1,style:{height:"540px"}},Ve={key:0,style:{color:"#888","font-family":"monospace","font-size":"11px"}},qe={key:1,style:{color:"var(--text-primary)"}},Je={key:0,style:{color:"var(--text-muted)"}},We={key:0,style:{color:"#888","font-family":"monospace","font-size":"11px"}},Ze={key:1,style:{color:"var(--text-muted)"}},He={key:2,style:{color:"#888","font-family":"monospace","font-size":"11px"}},Qe={key:4,style:{color:"var(--text-secondary)","font-family":"monospace"}},Xe={key:0,style:{padding:"40px","text-align":"center",color:"var(--text-muted)"}},Ye={style:{display:"flex","justify-content":"space-between","margin-bottom":"4px"}},$e={style:{color:"var(--text-secondary)","font-family":"monospace"}},et={key:0,style:{padding:"40px","text-align":"center",color:"var(--text-muted)"}},tt={style:{display:"flex","justify-content":"space-between","margin-bottom":"4px"}},at={style:{color:"var(--text-secondary)","font-family":"monospace"}},nt={style:{color:"var(--text-muted)","font-size":"11px"}},ot={key:0,style:{padding:"30px","text-align":"center",color:"var(--text-muted)"}},lt={style:{"margin-left":"12px",color:"var(--text-primary)"}},rt={style:{"margin-left":"8px",color:"#888","font-family":"monospace","font-size":"11px"}};function it(t,l,i,e,b,O){const R=c("a-button"),p=c("a-space"),D=c("a-statistic"),T=c("a-card"),S=c("a-col"),Z=c("a-row"),M=c("a-alert"),j=c("a-empty"),z=c("a-tab-pane"),C=c("a-tag"),H=c("a-popconfirm"),K=c("a-table"),V=c("a-progress"),x=c("a-tabs"),_=c("a-input"),G=c("a-form-item"),I=c("a-select-option"),L=c("a-select"),F=c("a-form"),q=c("a-modal"),Q=c("a-input-number"),X=c("a-list-item"),$=c("a-list");return d(),m("div",null,[E("div",Ue,[E("div",null,[E("h2",Be,s(t.$t("knowledgeGraph.title")),1),E("p",Pe,s(t.$t("knowledgeGraph.subtitle")),1)]),a(p,null,{default:o(()=>[a(R,{loading:e.loading,onClick:e.loadAll},{icon:o(()=>[a(e.ReloadOutlined)]),default:o(()=>[y(" "+s(t.$t("knowledgeGraph.refresh")),1)]),_:1},8,["loading"]),a(R,{type:"primary",onClick:l[0]||(l[0]=n=>e.showAddEntityModal=!0)},{icon:o(()=>[a(e.PlusOutlined)]),default:o(()=>[y(" "+s(t.$t("knowledgeGraph.addEntity")),1)]),_:1}),a(R,{onClick:l[1]||(l[1]=n=>e.showAddRelationModal=!0),disabled:e.entities.length<2},{icon:o(()=>[a(e.LinkOutlined)]),default:o(()=>[y(" "+s(t.$t("knowledgeGraph.addRelation")),1)]),_:1},8,["disabled"])]),_:1})]),a(Z,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:o(()=>[a(S,{xs:24,sm:12,lg:6},{default:o(()=>[a(T,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(D,{title:t.$t("knowledgeGraph.stats.entityCount"),value:e.stats.entityCount,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:o(()=>[a(e.DeploymentUnitOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),a(S,{xs:24,sm:12,lg:6},{default:o(()=>[a(T,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(D,{title:t.$t("knowledgeGraph.stats.relationCount"),value:e.stats.relationCount,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:o(()=>[a(e.LinkOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),a(S,{xs:24,sm:12,lg:6},{default:o(()=>[a(T,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(D,{title:t.$t("knowledgeGraph.stats.avgDegree"),value:e.stats.avgDegree,precision:2,"value-style":{color:"#faad14",fontSize:"20px"}},null,8,["title","value"])]),_:1})]),_:1}),a(S,{xs:24,sm:12,lg:6},{default:o(()=>[a(T,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(D,{title:t.$t("knowledgeGraph.stats.density"),value:e.stats.density,precision:4,"value-style":{color:"#722ed1",fontSize:"20px"}},null,8,["title","value"])]),_:1})]),_:1})]),_:1}),e.hasDesktopFeatures?f("v-if",!0):(d(),A(M,{key:0,message:t.$t("knowledgeGraph.webOnly.message"),description:t.$t("knowledgeGraph.webOnly.description"),type:"info","show-icon":"",closable:"",style:{"margin-bottom":"16px"}},null,8,["message","description"])),a(x,{activeKey:e.activeTab,"onUpdate:activeKey":l[2]||(l[2]=n=>e.activeTab=n),type:"card"},{default:o(()=>[f(" Tab 1: graph viz "),a(z,{key:"graph"},{tab:o(()=>[a(e.ShareAltOutlined),y(" "+s(t.$t("knowledgeGraph.tabs.graph")),1)]),default:o(()=>[a(T,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[e.entities.length===0?(d(),m("div",Ne,[a(j,{description:t.$t("knowledgeGraph.table.emptyGraph")},null,8,["description"])])):(d(),m("div",Ke,[a(e.VChart,{option:e.graphOption,autoresize:""},null,8,["option"])]))]),_:1})]),_:1}),f(" Tab 2: entities "),a(z,{key:"entities"},{tab:o(()=>[a(e.DeploymentUnitOutlined),y(" "+s(t.$t("knowledgeGraph.tabs.entities",{n:e.entities.length})),1)]),default:o(()=>[a(K,{columns:e.entityColumns,"data-source":e.entities,pagination:{pageSize:20,showTotal:n=>t.$t("knowledgeGraph.table.totalSuffix",{n})},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"kg-row"},{bodyCell:o(({column:n,record:w})=>[n.key==="id"?(d(),m("span",Ve,s(w.id.slice(0,12)),1)):f("v-if",!0),n.key==="name"?(d(),m("span",qe,s(w.name),1)):f("v-if",!0),n.key==="type"?(d(),A(C,{key:2,color:e.entityTypeColor(w.type)},{default:o(()=>[y(s(w.type),1)]),_:2},1032,["color"])):f("v-if",!0),n.key==="tags"?(d(),m(B,{key:3},[(d(!0),m(B,null,N(w.tags,P=>(d(),A(C,{key:P,color:"default"},{default:o(()=>[y(s(P),1)]),_:2},1024))),128)),w.tags.length===0?(d(),m("span",Je,"-")):f("v-if",!0)],64)):f("v-if",!0),n.key==="action"?(d(),A(p,{key:4,size:"small"},{default:o(()=>[a(R,{size:"small",type:"link",onClick:P=>e.openReason(w)},{default:o(()=>[y(s(t.$t("knowledgeGraph.actions.reason")),1)]),_:1},8,["onClick"]),a(H,{title:t.$t("knowledgeGraph.deleteConfirm.title"),"ok-text":t.$t("knowledgeGraph.deleteConfirm.ok"),"ok-type":"danger","cancel-text":t.$t("knowledgeGraph.deleteConfirm.cancel"),onConfirm:P=>e.removeEntity(w)},{default:o(()=>[a(R,{size:"small",type:"link",danger:"",loading:e.removing===w.id},{default:o(()=>[y(s(t.$t("knowledgeGraph.actions.delete")),1)]),_:1},8,["loading"])]),_:2},1032,["title","ok-text","cancel-text","onConfirm"])]),_:2},1024)):f("v-if",!0)]),emptyText:o(()=>[a(j,{description:t.$t("knowledgeGraph.table.emptyEntities")},null,8,["description"])]),_:1},8,["columns","data-source","pagination"])]),_:1}),f(" Tab 3: relations "),a(z,{key:"relations"},{tab:o(()=>[a(e.LinkOutlined),y(" "+s(t.$t("knowledgeGraph.tabs.relations",{n:e.relations.length})),1)]),default:o(()=>[a(K,{columns:e.relationColumns,"data-source":e.relations,pagination:{pageSize:20,showTotal:n=>t.$t("knowledgeGraph.table.totalSuffix",{n})},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"kg-row"},{bodyCell:o(({column:n,record:w})=>[n.key==="source"?(d(),m("span",We,s(e.entityNameOrId(w.sourceId)),1)):f("v-if",!0),n.key==="arrow"?(d(),m("span",Ze,"→")):f("v-if",!0),n.key==="target"?(d(),m("span",He,s(e.entityNameOrId(w.targetId)),1)):f("v-if",!0),n.key==="relationType"?(d(),A(C,{key:3,color:"cyan"},{default:o(()=>[y(s(w.relationType),1)]),_:2},1024)):f("v-if",!0),n.key==="weight"?(d(),m("span",Qe,s(w.weight.toFixed(2)),1)):f("v-if",!0)]),emptyText:o(()=>[a(j,{description:t.$t("knowledgeGraph.table.emptyRelations")},null,8,["description"])]),_:1},8,["columns","data-source","pagination"])]),_:1}),f(" Tab 4: type breakdown "),a(z,{key:"distribution"},{tab:o(()=>[a(e.BarChartOutlined),y(" "+s(t.$t("knowledgeGraph.tabs.distribution")),1)]),default:o(()=>[a(Z,{gutter:[24,24]},{default:o(()=>[a(S,{xs:24,md:12},{default:o(()=>[a(T,{title:t.$t("knowledgeGraph.distribution.entityTypes"),style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[e.entityTypeRows.length===0?(d(),m("div",Xe,s(t.$t("knowledgeGraph.table.emptyData")),1)):f("v-if",!0),(d(!0),m(B,null,N(e.entityTypeRows,n=>(d(),m("div",{key:n.type,style:{"margin-bottom":"8px"}},[E("div",Ye,[a(C,{color:e.entityTypeColor(n.type)},{default:o(()=>[y(s(n.type),1)]),_:2},1032,["color"]),E("span",$e,s(n.count),1)]),a(V,{percent:n.percent,"show-info":!1,"stroke-color":"#1677ff"},null,8,["percent"])]))),128))]),_:1},8,["title"])]),_:1}),a(S,{xs:24,md:12},{default:o(()=>[a(T,{title:t.$t("knowledgeGraph.distribution.relationTypes"),style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[e.relationTypeRows.length===0?(d(),m("div",et,s(t.$t("knowledgeGraph.table.emptyData")),1)):f("v-if",!0),(d(!0),m(B,null,N(e.relationTypeRows,n=>(d(),m("div",{key:n.type,style:{"margin-bottom":"8px"}},[E("div",tt,[a(C,{color:"cyan"},{default:o(()=>[y(s(n.type),1)]),_:2},1024),E("span",at,s(n.count),1)]),a(V,{percent:n.percent,"show-info":!1,"stroke-color":"#52c41a"},null,8,["percent"])]))),128))]),_:1},8,["title"])]),_:1})]),_:1})]),_:1})]),_:1},8,["activeKey"]),f(" Add Entity Modal "),a(q,{open:e.showAddEntityModal,"onUpdate:open":l[6]||(l[6]=n=>e.showAddEntityModal=n),title:t.$t("knowledgeGraph.addEntity_modal.title"),"confirm-loading":e.addingEntity,onOk:e.addEntity,"ok-text":t.$t("knowledgeGraph.addEntity_modal.ok"),"cancel-text":t.$t("knowledgeGraph.addEntity_modal.cancel")},{default:o(()=>[a(F,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:o(()=>[a(G,{label:t.$t("knowledgeGraph.addEntity_modal.nameLabel"),required:""},{default:o(()=>[a(_,{value:e.newEntity.name,"onUpdate:value":l[3]||(l[3]=n=>e.newEntity.name=n),placeholder:t.$t("knowledgeGraph.addEntity_modal.namePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(G,{label:t.$t("knowledgeGraph.addEntity_modal.typeLabel"),required:""},{default:o(()=>[a(L,{value:e.newEntity.type,"onUpdate:value":l[4]||(l[4]=n=>e.newEntity.type=n),placeholder:t.$t("knowledgeGraph.addEntity_modal.typePlaceholder"),loading:e.loadingTypes},{default:o(()=>[(d(!0),m(B,null,N(e.entityTypes,n=>(d(),A(I,{key:n.name,value:n.name},{default:o(()=>[y(s(n.name)+" ",1),E("span",nt,"— "+s(n.description),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value","placeholder","loading"])]),_:1},8,["label"]),a(G,{label:t.$t("knowledgeGraph.addEntity_modal.tagsLabel")},{default:o(()=>[a(_,{value:e.newEntity.tags,"onUpdate:value":l[5]||(l[5]=n=>e.newEntity.tags=n),placeholder:t.$t("knowledgeGraph.addEntity_modal.tagsPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),f(" Add Relation Modal "),a(q,{open:e.showAddRelationModal,"onUpdate:open":l[11]||(l[11]=n=>e.showAddRelationModal=n),title:t.$t("knowledgeGraph.addRelation_modal.title"),"confirm-loading":e.addingRelation,onOk:e.addRelation,"ok-text":t.$t("knowledgeGraph.addRelation_modal.ok"),"cancel-text":t.$t("knowledgeGraph.addRelation_modal.cancel")},{default:o(()=>[a(F,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:o(()=>[a(G,{label:t.$t("knowledgeGraph.addRelation_modal.sourceLabel"),required:""},{default:o(()=>[a(L,{value:e.newRelation.sourceId,"onUpdate:value":l[7]||(l[7]=n=>e.newRelation.sourceId=n),placeholder:t.$t("knowledgeGraph.addRelation_modal.sourcePlaceholder"),"show-search":"","filter-option":e.entityFilter},{default:o(()=>[(d(!0),m(B,null,N(e.entities,n=>(d(),A(I,{key:n.id,value:n.id},{default:o(()=>[y(s(n.name)+" ("+s(n.type)+") ",1)]),_:2},1032,["value"]))),128))]),_:1},8,["value","placeholder"])]),_:1},8,["label"]),a(G,{label:t.$t("knowledgeGraph.addRelation_modal.targetLabel"),required:""},{default:o(()=>[a(L,{value:e.newRelation.targetId,"onUpdate:value":l[8]||(l[8]=n=>e.newRelation.targetId=n),placeholder:t.$t("knowledgeGraph.addRelation_modal.targetPlaceholder"),"show-search":"","filter-option":e.entityFilter},{default:o(()=>[(d(!0),m(B,null,N(e.entities,n=>(d(),A(I,{key:n.id,value:n.id,disabled:n.id===e.newRelation.sourceId},{default:o(()=>[y(s(n.name)+" ("+s(n.type)+") ",1)]),_:2},1032,["value","disabled"]))),128))]),_:1},8,["value","placeholder"])]),_:1},8,["label"]),a(G,{label:t.$t("knowledgeGraph.addRelation_modal.relationTypeLabel"),required:""},{default:o(()=>[a(_,{value:e.newRelation.relationType,"onUpdate:value":l[9]||(l[9]=n=>e.newRelation.relationType=n),placeholder:t.$t("knowledgeGraph.addRelation_modal.relationTypePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(G,{label:t.$t("knowledgeGraph.addRelation_modal.weightLabel")},{default:o(()=>[a(Q,{value:e.newRelation.weight,"onUpdate:value":l[10]||(l[10]=n=>e.newRelation.weight=n),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"]),f(" Reason Modal (BFS) "),a(q,{open:e.showReasonModal,"onUpdate:open":l[14]||(l[14]=n=>e.showReasonModal=n),title:t.$t("knowledgeGraph.reason_modal.title",{name:e.reasonStartName}),width:640,footer:null},{default:o(()=>[a(F,{layout:"inline",style:{"margin-bottom":"16px"}},{default:o(()=>[a(G,{label:t.$t("knowledgeGraph.reason_modal.maxDepth")},{default:o(()=>[a(Q,{value:e.reasonOptions.maxDepth,"onUpdate:value":l[12]||(l[12]=n=>e.reasonOptions.maxDepth=n),min:1,max:10},null,8,["value"])]),_:1},8,["label"]),a(G,{label:t.$t("knowledgeGraph.reason_modal.direction")},{default:o(()=>[a(L,{value:e.reasonOptions.direction,"onUpdate:value":l[13]||(l[13]=n=>e.reasonOptions.direction=n),style:{width:"100px"}},{default:o(()=>[a(I,{value:"out"},{default:o(()=>[y(s(t.$t("knowledgeGraph.reason_modal.directionOut")),1)]),_:1}),a(I,{value:"in"},{default:o(()=>[y(s(t.$t("knowledgeGraph.reason_modal.directionIn")),1)]),_:1}),a(I,{value:"both"},{default:o(()=>[y(s(t.$t("knowledgeGraph.reason_modal.directionBoth")),1)]),_:1})]),_:1},8,["value"])]),_:1},8,["label"]),a(G,null,{default:o(()=>[a(R,{type:"primary",loading:e.reasoning,onClick:e.runReason},{default:o(()=>[y(s(t.$t("knowledgeGraph.reason_modal.run")),1)]),_:1},8,["loading"])]),_:1})]),_:1}),e.reasonResults.length===0&&!e.reasoning?(d(),m("div",ot,s(t.$t("knowledgeGraph.reason_modal.hint")),1)):(d(),A($,{key:1,"data-source":e.reasonResults,size:"small"},{renderItem:o(({item:n})=>[a(X,null,{default:o(()=>[a(C,{color:"purple"},{default:o(()=>[y("depth="+s(n.depth),1)]),_:2},1024),a(C,{color:e.entityTypeColor(n.entity.type),style:{"margin-left":"8px"}},{default:o(()=>[y(s(n.entity.type),1)]),_:2},1032,["color"]),E("span",lt,s(n.entity.name),1),E("span",rt,s(n.entity.id.slice(0,12)),1)]),_:2},1024)]),_:1},8,["data-source"]))]),_:1},8,["open","title"])])}const ct=Se(Le,[["render",it],["__scopeId","data-v-ce227b16"],["__file","/tmp/cc-web-panel-Ep7NSX/repo/packages/web-panel/src/views/KnowledgeGraph.vue"]]);export{ct as default};
@@ -1,2 +1,2 @@
1
- import{I as s,J as g,U as d,c as n,K as _,V as k,S as W,R as S,F as K,Z as Q,w as M,n as C,o as R,b as T,r,P as p,Q as O,_ as U}from"./vendor-BvqAck49.js";import{_ as j,u as N}from"./index-Dh8r6PnR.js";import{R as E}from"./icons-DP3uiYxy.js";const Z={__name:"Logs",setup(V,{expose:a}){a();const x=N(),e=r("status"),y=r(!1),v=r(""),i=r(""),c=r(""),f=r(!0),o=r(null),h={status:"status",doctor:"doctor","skill-sources":"skill sources","llm-providers":"llm providers"},m=T(()=>i.value.split(`
2
- `)),b=T(()=>{if(!c.value)return m.value;const t=c.value.toLowerCase();return m.value.filter(u=>u.toLowerCase().includes(t))});function L(t){return t.includes("✖")||t.includes("error")||t.includes("Error")||t.includes("failed")?"line-error":t.includes("✔")||t.includes("✓")||t.includes("success")||t.includes("running")?"line-success":t.includes("warn")||t.includes("Warn")||t.includes("○")?"line-warn":t.startsWith(" ")||t.startsWith(" ")?"line-indent":""}function l(t){return t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function w(t){if(!c.value)return t;const u=c.value.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return t.replace(new RegExp(`(${u})`,"gi"),"<mark>$1</mark>")}async function B(){y.value=!0,v.value="",i.value="";const t=h[e.value]||"status";try{const{output:u}=await x.execute(t,3e4);i.value=u,f.value&&(await C(),o.value&&(o.value.scrollTop=o.value.scrollHeight))}catch(u){v.value=`执行失败: ${u.message}`,i.value=v.value}finally{y.value=!1}}M(b,async()=>{f.value&&(await C(),o.value&&(o.value.scrollTop=o.value.scrollHeight))}),R(B);const H={ws:x,activeTab:e,loading:y,error:v,rawOutput:i,searchQuery:c,autoScroll:f,logContainer:o,TAB_COMMANDS:h,allLines:m,filteredLines:b,lineClass:L,escapeHtml:l,highlightSearch:w,loadLog:B,ref:r,computed:T,watch:M,nextTick:C,onMounted:R,get ReloadOutlined(){return E},get useWsStore(){return N}};return Object.defineProperty(H,"__isScriptSetup",{enumerable:!1,value:!0}),H}},q={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},z={style:{display:"flex",gap:"10px",margin:"12px 0"}},A={ref:"logContainer",class:"log-box"},D={key:0,style:{"text-align":"center",padding:"40px",color:"var(--text-muted)"}},F={key:1,style:{"text-align":"center",padding:"40px",color:"var(--text-muted)"}},I={key:2},P=["innerHTML"];function J(V,a,x,e,y,v){const i=s("a-checkbox"),c=s("a-button"),f=s("a-space"),o=s("a-tab-pane"),h=s("a-tabs"),m=s("a-input-search"),b=s("a-tag"),L=s("a-spin");return p(),g("div",null,[d("div",q,[a[5]||(a[5]=d("div",null,[d("h2",{class:"page-title"},"日志查看"),d("p",{class:"page-sub"},"系统运行日志与诊断输出")],-1)),n(f,null,{default:_(()=>[n(i,{checked:e.autoScroll,"onUpdate:checked":a[0]||(a[0]=l=>e.autoScroll=l)},{default:_(()=>[...a[3]||(a[3]=[O("自动滚动",-1)])]),_:1},8,["checked"]),n(c,{type:"primary",ghost:"",loading:e.loading,onClick:e.loadLog},{icon:_(()=>[n(e.ReloadOutlined)]),default:_(()=>[a[4]||(a[4]=O(" 刷新 ",-1))]),_:1},8,["loading"])]),_:1})]),k(" Tab Selector "),n(h,{activeKey:e.activeTab,"onUpdate:activeKey":a[1]||(a[1]=l=>e.activeTab=l),onChange:e.loadLog,style:{"margin-bottom":"0"}},{default:_(()=>[n(o,{key:"status",tab:"系统状态"}),n(o,{key:"doctor",tab:"环境诊断"}),n(o,{key:"skill-sources",tab:"技能来源"}),n(o,{key:"llm-providers",tab:"LLM 提供商"})]),_:1},8,["activeKey"]),k(" Search Bar "),d("div",z,[n(m,{value:e.searchQuery,"onUpdate:value":a[2]||(a[2]=l=>e.searchQuery=l),placeholder:"搜索日志内容...","allow-clear":"",style:{flex:"1"}},null,8,["value"]),e.filteredLines.length!==e.allLines.length?(p(),W(b,{key:0,color:"blue"},{default:_(()=>[O(S(e.filteredLines.length)+" / "+S(e.allLines.length)+" 行 ",1)]),_:1})):k("v-if",!0)]),k(" Log Output "),d("div",A,[e.loading?(p(),g("div",D,[n(L,{size:"large"}),a[6]||(a[6]=d("div",{style:{"margin-top":"10px"}},"加载中...",-1))])):e.filteredLines.length?(p(),g("div",I,[(p(!0),g(K,null,Q(e.filteredLines,(l,w)=>(p(),g("div",{key:w,class:U(["log-line",e.lineClass(l)]),innerHTML:e.highlightSearch(e.escapeHtml(l))},null,10,P))),128))])):(p(),g("div",F,S(e.error||"暂无日志内容,点击刷新加载"),1))],512)])}const $=j(Z,[["render",J],["__scopeId","data-v-8c2906e0"],["__file","/tmp/cc-web-panel-2pZejZ/repo/packages/web-panel/src/views/Logs.vue"]]);export{$ as default};
1
+ import{I as s,J as g,U as d,c as n,K as _,V as k,S as W,R as S,F as E,Z as K,w as M,n as C,o as N,b as T,r,P as p,Q as O,_ as Q}from"./vendor-BvqAck49.js";import{_ as U,u as R}from"./index-DyEpwvCK.js";import{R as j}from"./icons-DP3uiYxy.js";const q={__name:"Logs",setup(V,{expose:a}){a();const x=R(),e=r("status"),y=r(!1),v=r(""),i=r(""),c=r(""),f=r(!0),o=r(null),h={status:"status",doctor:"doctor","skill-sources":"skill sources","llm-providers":"llm providers"},m=T(()=>i.value.split(`
2
+ `)),b=T(()=>{if(!c.value)return m.value;const t=c.value.toLowerCase();return m.value.filter(u=>u.toLowerCase().includes(t))});function L(t){return t.includes("✖")||t.includes("error")||t.includes("Error")||t.includes("failed")?"line-error":t.includes("✔")||t.includes("✓")||t.includes("success")||t.includes("running")?"line-success":t.includes("warn")||t.includes("Warn")||t.includes("○")?"line-warn":t.startsWith(" ")||t.startsWith(" ")?"line-indent":""}function l(t){return t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function w(t){if(!c.value)return t;const u=c.value.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return t.replace(new RegExp(`(${u})`,"gi"),"<mark>$1</mark>")}async function B(){y.value=!0,v.value="",i.value="";const t=h[e.value]||"status";try{const{output:u}=await x.execute(t,3e4);i.value=u,f.value&&(await C(),o.value&&(o.value.scrollTop=o.value.scrollHeight))}catch(u){v.value=`执行失败: ${u.message}`,i.value=v.value}finally{y.value=!1}}M(b,async()=>{f.value&&(await C(),o.value&&(o.value.scrollTop=o.value.scrollHeight))}),N(B);const H={ws:x,activeTab:e,loading:y,error:v,rawOutput:i,searchQuery:c,autoScroll:f,logContainer:o,TAB_COMMANDS:h,allLines:m,filteredLines:b,lineClass:L,escapeHtml:l,highlightSearch:w,loadLog:B,ref:r,computed:T,watch:M,nextTick:C,onMounted:N,get ReloadOutlined(){return j},get useWsStore(){return R}};return Object.defineProperty(H,"__isScriptSetup",{enumerable:!1,value:!0}),H}},z={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},A={style:{display:"flex",gap:"10px",margin:"12px 0"}},D={ref:"logContainer",class:"log-box"},F={key:0,style:{"text-align":"center",padding:"40px",color:"var(--text-muted)"}},I={key:1,style:{"text-align":"center",padding:"40px",color:"var(--text-muted)"}},P={key:2},J=["innerHTML"];function X(V,a,x,e,y,v){const i=s("a-checkbox"),c=s("a-button"),f=s("a-space"),o=s("a-tab-pane"),h=s("a-tabs"),m=s("a-input-search"),b=s("a-tag"),L=s("a-spin");return p(),g("div",null,[d("div",z,[a[5]||(a[5]=d("div",null,[d("h2",{class:"page-title"},"日志查看"),d("p",{class:"page-sub"},"系统运行日志与诊断输出")],-1)),n(f,null,{default:_(()=>[n(i,{checked:e.autoScroll,"onUpdate:checked":a[0]||(a[0]=l=>e.autoScroll=l)},{default:_(()=>[...a[3]||(a[3]=[O("自动滚动",-1)])]),_:1},8,["checked"]),n(c,{type:"primary",ghost:"",loading:e.loading,onClick:e.loadLog},{icon:_(()=>[n(e.ReloadOutlined)]),default:_(()=>[a[4]||(a[4]=O(" 刷新 ",-1))]),_:1},8,["loading"])]),_:1})]),k(" Tab Selector "),n(h,{activeKey:e.activeTab,"onUpdate:activeKey":a[1]||(a[1]=l=>e.activeTab=l),onChange:e.loadLog,style:{"margin-bottom":"0"}},{default:_(()=>[n(o,{key:"status",tab:"系统状态"}),n(o,{key:"doctor",tab:"环境诊断"}),n(o,{key:"skill-sources",tab:"技能来源"}),n(o,{key:"llm-providers",tab:"LLM 提供商"})]),_:1},8,["activeKey"]),k(" Search Bar "),d("div",A,[n(m,{value:e.searchQuery,"onUpdate:value":a[2]||(a[2]=l=>e.searchQuery=l),placeholder:"搜索日志内容...","allow-clear":"",style:{flex:"1"}},null,8,["value"]),e.filteredLines.length!==e.allLines.length?(p(),W(b,{key:0,color:"blue"},{default:_(()=>[O(S(e.filteredLines.length)+" / "+S(e.allLines.length)+" 行 ",1)]),_:1})):k("v-if",!0)]),k(" Log Output "),d("div",D,[e.loading?(p(),g("div",F,[n(L,{size:"large"}),a[6]||(a[6]=d("div",{style:{"margin-top":"10px"}},"加载中...",-1))])):e.filteredLines.length?(p(),g("div",P,[(p(!0),g(E,null,K(e.filteredLines,(l,w)=>(p(),g("div",{key:w,class:Q(["log-line",e.lineClass(l)]),innerHTML:e.highlightSearch(e.escapeHtml(l))},null,10,J))),128))])):(p(),g("div",I,S(e.error||"暂无日志内容,点击刷新加载"),1))],512)])}const $=U(q,[["render",X],["__scopeId","data-v-8c2906e0"],["__file","/tmp/cc-web-panel-Ep7NSX/repo/packages/web-panel/src/views/Logs.vue"]]);export{$ as default};
@@ -1 +1 @@
1
- import{I as p,J as f,U as C,R as u,c as l,K as r,V as b,o as ae,a as Y,b as U,r as y,P as i,Q as _,F as x,Z as V,S as T}from"./vendor-BvqAck49.js";import{t as $,_ as me,u as le,b as oe,d as h}from"./index-Dh8r6PnR.js";import{a0 as ve,a$ as fe,$ as be,f as ke,a9 as _e,z as ye,R as ge}from"./icons-DP3uiYxy.js";const he=Object.freeze(["draft","published","deprecated","suspended"]),Se=Object.freeze(["pending","running","success","failed","timeout"]);function B(t,o=0){return typeof t=="number"&&Number.isFinite(t)?t:o}function Ce(t,o=0){if(!t||typeof t!="object")return null;const c=t.id||"";return c?{key:c,id:c,name:String(t.name||""),version:String(t.version||""),description:String(t.description||""),endpoint:t.endpoint||"",pricing:t.pricing??null,status:String(t.status||"draft").toLowerCase(),owner:t.owner||"",invocationCount:B(t.invocationCount??t.invocation_count,0),createdAt:t.createdAt??t.created_at??null,updatedAt:t.updatedAt??t.updated_at??null,_idx:o}:null}function re(t){const o=$(t);return Array.isArray(o)?o.map(Ce).filter(Boolean):[]}function xe(t,o=0){if(!t||typeof t!="object")return null;const c=t.id||"";return c?{key:c,id:c,serviceId:t.serviceId||t.service_id||"",callerId:t.callerId||t.caller_id||"",input:t.input??null,output:t.output??null,status:String(t.status||"success").toLowerCase(),durationMs:t.durationMs??t.duration_ms??null,error:t.error||"",createdAt:t.createdAt??t.created_at??null,_idx:o}:null}function ne(t){const o=$(t);return Array.isArray(o)?o.map(xe).filter(Boolean):[]}function se(t){const o={total:0,counts:{success:0,failed:0,timeout:0,pending:0,running:0},successRate:0,avgDurationMs:0,scopedToService:null},c=$(t);if(!c||typeof c!="object"||Array.isArray(c))return o;o.total=B(c.total,0),o.successRate=B(c.successRate??c.success_rate,0),o.avgDurationMs=B(c.avgDurationMs??c.avg_duration_ms,0),o.scopedToService=c.scopedToService??c.scoped_to_service??null;const e=c.counts&&typeof c.counts=="object"?c.counts:{};for(const I of Object.keys(o.counts))o.counts[I]=B(e[I],0);return o}function Fe(t){if(t==null||t==="")return"—";const o=typeof t=="number"?new Date(t):new Date(String(t));return isNaN(o.getTime())?String(t):o.toLocaleString("zh-CN",{hour12:!1})}const we={__name:"Marketplace",setup(t,{expose:o}){o();const c=le(),{t:e}=oe(),I=y(!1),K=y(!1),R=y(!1),O=y([]),F=y([]),w=y({total:0,counts:{success:0,failed:0,timeout:0,pending:0,running:0},successRate:0,avgDurationMs:0,scopedToService:null}),A=y("services"),E=y(""),L=y(""),P=y(null),Z=y(!1),M=y(!1),k=Y({name:"",version:"",description:"",endpoint:"",owner:"",status:"published"}),m=Y({serviceId:"",caller:"",status:"success",durationMs:null,error:""}),j=y(""),J=U(()=>[{title:e("marketplace.serviceCols.name"),key:"name"},{title:e("marketplace.serviceCols.status"),key:"status",width:"120px"},{title:e("marketplace.serviceCols.invocationCount"),key:"invocationCount",width:"110px"},{title:e("marketplace.serviceCols.owner"),key:"owner",width:"180px"},{title:e("marketplace.serviceCols.createdAt"),key:"createdAt",width:"160px"},{title:e("marketplace.serviceCols.action"),key:"action",width:"180px"}]),W=U(()=>[{title:e("marketplace.invocationCols.service"),key:"service"},{title:e("marketplace.invocationCols.caller"),key:"caller",width:"180px"},{title:e("marketplace.invocationCols.status"),key:"status",width:"100px"},{title:e("marketplace.invocationCols.durationMs"),key:"durationMs",width:"110px"},{title:e("marketplace.invocationCols.createdAt"),key:"createdAt",width:"160px"}]),N=U(()=>O.value.filter(n=>n.status==="published").length),D=U(()=>w.value.successRate*100),H=U(()=>{let n=O.value;if(E.value&&(n=n.filter(s=>s.status===E.value)),L.value){const s=L.value.toLowerCase();n=n.filter(v=>v.name.toLowerCase().includes(s))}return n}),z=U(()=>P.value?F.value.filter(n=>n.serviceId===P.value):F.value);function g(n){const s=`marketplace.serviceStatusLabels.${n}`,v=e(s);return v===s?n:v}function q(n){return{draft:"default",published:"green",deprecated:"orange",suspended:"red"}[n]||"default"}function Q(n){const s=`marketplace.invocationStatusLabels.${n}`,v=e(s);return v===s?n:v}function G(n){return{pending:"default",running:"processing",success:"green",failed:"red",timeout:"orange"}[n]||"default"}function X(n){return n?n.length>28?n.slice(0,16)+"..."+n.slice(-8):n:""}function a(n,s){return n?n.length>s?n.slice(0,s)+"...":n:""}function d(n){const s=O.value.find(v=>v.id===n);return s?s.name:e("marketplace.deletedService")}async function S(){I.value=!0;try{const[n,s,v]=await Promise.all([c.execute("marketplace list --limit 200 --json",1e4).catch(()=>({output:""})),c.execute("marketplace invocations --limit 200 --json",1e4).catch(()=>({output:""})),c.execute("marketplace stats --json",1e4).catch(()=>({output:""}))]);O.value=re(n.output),F.value=ne(s.output),w.value=se(v.output)}catch(n){h.error(e("marketplace.msg.loadFailed")+": "+(n?.message||n))}finally{I.value=!1}}async function ie(){const n=k.name.trim();if(!n){h.warning(e("marketplace.msg.publishEmpty"));return}K.value=!0;try{const s=[`marketplace publish "${n.replace(/"/g,'\\"')}"`];k.version.trim()&&s.push(`--version "${k.version.trim().replace(/"/g,'\\"')}"`),k.description.trim()&&s.push(`--description "${k.description.trim().replace(/"/g,'\\"')}"`),k.endpoint.trim()&&s.push(`--endpoint "${k.endpoint.trim().replace(/"/g,'\\"')}"`),k.owner.trim()&&s.push(`--owner "${k.owner.trim().replace(/"/g,'\\"')}"`),s.push(`--status ${k.status}`),s.push("--json");const{output:v}=await c.execute(s.join(" "),15e3);if(/error|failed|失败/i.test(v)&&!/"id"/.test(v)){h.error(e("marketplace.msg.publishFailed")+": "+v.slice(0,120));return}h.success(e("marketplace.msg.publishSuccess")),Z.value=!1,ee(),await S()}catch(s){h.error(e("marketplace.msg.publishFailed")+": "+(s?.message||s))}finally{K.value=!1}}function ce(n){if(n.status!=="published"){h.warning(e("marketplace.msg.recordOnlyPublished"));return}m.serviceId=n.id,m.caller="",m.status="success",m.durationMs=null,m.error="",j.value=n.name,M.value=!0}async function ue(){R.value=!0;try{const n=[`marketplace record ${m.serviceId}`];m.caller.trim()&&n.push(`--caller "${m.caller.trim().replace(/"/g,'\\"')}"`),n.push(`--status ${m.status}`),m.durationMs!=null&&n.push(`--duration-ms ${m.durationMs}`),(m.status==="failed"||m.status==="timeout")&&m.error.trim()&&n.push(`--error "${m.error.trim().replace(/"/g,'\\"')}"`),n.push("--json");const{output:s}=await c.execute(n.join(" "),15e3);if(/error|failed|失败/i.test(s)&&!/"id"/.test(s)){h.error(e("marketplace.msg.recordFailed")+": "+s.slice(0,120));return}h.success(e("marketplace.msg.recordSuccess")),M.value=!1,A.value="invocations",await S()}catch(n){h.error(e("marketplace.msg.recordFailed")+": "+(n?.message||n))}finally{R.value=!1}}async function de(n,s){if(s!==n.status)try{const{output:v}=await c.execute(`marketplace status ${n.id} ${s} --json`,1e4);if(/error|invalid|失败/i.test(v)&&!/"status"/.test(v)){h.error(e("marketplace.msg.transitionFailed")+": "+v.slice(0,120));return}h.success(e("marketplace.msg.transitionSuccess",{label:g(s)})),await S()}catch(v){h.error(e("marketplace.msg.transitionFailed")+": "+(v?.message||v))}}function ee(){k.name="",k.version="",k.description="",k.endpoint="",k.owner="",k.status="published"}function pe(){m.serviceId="",m.caller="",m.status="success",m.durationMs=null,m.error="",j.value=""}ae(S);const te={ws:c,t:e,loading:I,publishing:K,recording:R,services:O,invocations:F,stats:w,activeTab:A,statusFilter:E,nameFilter:L,invocationServiceFilter:P,showPublishModal:Z,showRecordModal:M,publishForm:k,recordForm:m,recordTargetName:j,serviceColumns:J,invocationColumns:W,publishedCount:N,successRatePct:D,filteredServices:H,filteredInvocations:z,statusLabel:g,serviceStatusColor:q,invocationStatusLabel:Q,invocationStatusColor:G,shortDid:X,truncate:a,serviceName:d,loadAll:S,publishService:ie,openRecord:ce,recordInvocation:ue,transitionStatus:de,resetPublishForm:ee,resetRecordForm:pe,ref:y,computed:U,onMounted:ae,reactive:Y,get ReloadOutlined(){return ge},get CloudUploadOutlined(){return ye},get AppstoreOutlined(){return _e},get CheckCircleOutlined(){return ke},get ThunderboltOutlined(){return be},get RiseOutlined(){return fe},get ClockCircleOutlined(){return ve},get message(){return h},get useI18n(){return oe},get useWsStore(){return le},get parseServices(){return re},get parseInvocations(){return ne},get parseStats(){return se},get formatMarketplaceTime(){return Fe},get SERVICE_STATUSES(){return he},get INVOCATION_STATUSES(){return Se}};return Object.defineProperty(te,"__isScriptSetup",{enumerable:!1,value:!0}),te}},Te={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Re={class:"page-title"},Ae={class:"page-sub"},Ie={class:"filter-bar"},Oe={style:{color:"var(--text-primary)","font-weight":"500"}},Me={key:1,style:{color:"var(--text-secondary)","font-size":"11px","margin-top":"2px"}},ze={key:2,style:{color:"#722ed1","font-weight":"500"}},Ue={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"11px"}},Le={key:1,style:{color:"var(--text-muted)"}},Ee={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},Pe={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},je={class:"filter-bar"},Ne={style:{color:"var(--text-primary)"}},De={style:{color:"var(--text-muted)","font-size":"11px","font-family":"monospace"}},Ve={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"11px"}},Be={key:1,style:{color:"var(--text-muted)"}},Ke={key:0,style:{color:"var(--text-secondary)","font-size":"12px"}},Ze={key:1,style:{color:"var(--text-muted)"}},Je={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},We={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}};function qe(t,o,c,e,I,K){const R=p("a-button"),O=p("a-space"),F=p("a-statistic"),w=p("a-card"),A=p("a-col"),E=p("a-row"),L=p("a-radio-button"),P=p("a-radio-group"),Z=p("a-input-search"),M=p("a-tag"),k=p("a-menu-item"),m=p("a-menu"),j=p("a-dropdown"),J=p("a-table"),W=p("a-tab-pane"),N=p("a-select-option"),D=p("a-select"),H=p("a-tabs"),z=p("a-input"),g=p("a-form-item"),q=p("a-textarea"),Q=p("a-form"),G=p("a-modal"),X=p("a-input-number");return i(),f("div",null,[C("div",Te,[C("div",null,[C("h2",Re,u(t.$t("marketplace.title")),1),C("p",Ae,u(t.$t("marketplace.subtitle")),1)]),l(O,null,{default:r(()=>[l(R,{loading:e.loading,onClick:e.loadAll},{icon:r(()=>[l(e.ReloadOutlined)]),default:r(()=>[_(" "+u(t.$t("marketplace.refresh")),1)]),_:1},8,["loading"]),l(R,{type:"primary",onClick:o[0]||(o[0]=a=>e.showPublishModal=!0)},{icon:r(()=>[l(e.CloudUploadOutlined)]),default:r(()=>[_(" "+u(t.$t("marketplace.publish")),1)]),_:1})]),_:1})]),b(" Stats overview "),l(E,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:r(()=>[l(A,{xs:12,sm:8,lg:5},{default:r(()=>[l(w,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[l(F,{title:t.$t("marketplace.stats.total"),value:e.services.length,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:r(()=>[l(e.AppstoreOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),l(A,{xs:12,sm:8,lg:5},{default:r(()=>[l(w,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[l(F,{title:t.$t("marketplace.stats.published"),value:e.publishedCount,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:r(()=>[l(e.CheckCircleOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),l(A,{xs:12,sm:8,lg:5},{default:r(()=>[l(w,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[l(F,{title:t.$t("marketplace.stats.invocations"),value:e.stats.total,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:r(()=>[l(e.ThunderboltOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),l(A,{xs:12,sm:8,lg:5},{default:r(()=>[l(w,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[l(F,{title:t.$t("marketplace.stats.successRate"),value:e.successRatePct,suffix:"%",precision:1,"value-style":{color:e.stats.successRate>=.9?"#52c41a":"#faad14",fontSize:"20px"}},{prefix:r(()=>[l(e.RiseOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),l(A,{xs:24,sm:8,lg:4},{default:r(()=>[l(w,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[l(F,{title:t.$t("marketplace.stats.avgDuration"),value:e.stats.avgDurationMs,suffix:"ms","value-style":{color:"#faad14",fontSize:"20px"}},{prefix:r(()=>[l(e.ClockCircleOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),b(" Tabs "),l(H,{activeKey:e.activeTab,"onUpdate:activeKey":o[4]||(o[4]=a=>e.activeTab=a),class:"market-tabs"},{default:r(()=>[b(" ── Services tab ──────────────────────────────────────────── "),l(W,{key:"services",tab:t.$t("marketplace.tabs.services")},{default:r(()=>[C("div",Ie,[l(P,{value:e.statusFilter,"onUpdate:value":o[1]||(o[1]=a=>e.statusFilter=a),size:"small","button-style":"solid"},{default:r(()=>[l(L,{value:""},{default:r(()=>[_(u(t.$t("marketplace.filter.all")),1)]),_:1}),(i(!0),f(x,null,V(e.SERVICE_STATUSES,a=>(i(),T(L,{key:a,value:a},{default:r(()=>[_(u(e.statusLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),l(Z,{value:e.nameFilter,"onUpdate:value":o[2]||(o[2]=a=>e.nameFilter=a),placeholder:t.$t("marketplace.filter.namePlaceholder"),"allow-clear":"",style:{"max-width":"280px"}},null,8,["value","placeholder"])]),l(J,{columns:e.serviceColumns,"data-source":e.filteredServices,pagination:{pageSize:20,showTotal:a=>t.$t("marketplace.table.totalSuffix",{n:a})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:r(({column:a,record:d})=>[a.key==="name"?(i(),f(x,{key:0},[C("span",Oe,u(d.name),1),d.version?(i(),T(M,{key:0,color:"blue",style:{"margin-left":"6px","font-size":"10px"}},{default:r(()=>[_(" v"+u(d.version),1)]),_:2},1024)):b("v-if",!0),d.description?(i(),f("div",Me,u(e.truncate(d.description,80)),1)):b("v-if",!0)],64)):b("v-if",!0),a.key==="status"?(i(),T(M,{key:1,color:e.serviceStatusColor(d.status)},{default:r(()=>[_(u(e.statusLabel(d.status)),1)]),_:2},1032,["color"])):b("v-if",!0),a.key==="invocationCount"?(i(),f("span",ze,u(d.invocationCount),1)):b("v-if",!0),a.key==="owner"?(i(),f(x,{key:3},[d.owner?(i(),f("span",Ue,u(e.shortDid(d.owner)),1)):(i(),f("span",Le,"—"))],64)):b("v-if",!0),a.key==="createdAt"?(i(),f("span",Ee,u(e.formatMarketplaceTime(d.createdAt)),1)):b("v-if",!0),a.key==="action"?(i(),f(x,{key:5},[l(R,{size:"small",type:"link",onClick:S=>e.openRecord(d)},{default:r(()=>[_(u(t.$t("marketplace.table.actionRecord")),1)]),_:1},8,["onClick"]),l(j,{trigger:["click"]},{overlay:r(()=>[l(m,{onClick:S=>e.transitionStatus(d,S.key)},{default:r(()=>[(i(!0),f(x,null,V(e.SERVICE_STATUSES,S=>(i(),T(k,{key:S,disabled:S===d.status},{default:r(()=>[_(u(e.statusLabel(S)),1)]),_:2},1032,["disabled"]))),128))]),_:2},1032,["onClick"])]),default:r(()=>[l(R,{size:"small",type:"link"},{default:r(()=>[_(u(t.$t("marketplace.table.statusDropdown")),1)]),_:1})]),_:2},1024)],64)):b("v-if",!0)]),emptyText:r(()=>[C("div",Pe,[l(e.AppstoreOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),_(" "+u(e.statusFilter||e.nameFilter?t.$t("marketplace.table.emptyFiltered"):t.$t("marketplace.table.empty")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),b(" ── Invocations tab ───────────────────────────────────────── "),l(W,{key:"invocations",tab:t.$t("marketplace.tabs.invocations")},{default:r(()=>[C("div",je,[l(D,{value:e.invocationServiceFilter,"onUpdate:value":o[3]||(o[3]=a=>e.invocationServiceFilter=a),placeholder:t.$t("marketplace.filter.byService"),"allow-clear":"",style:{width:"280px"},size:"small"},{default:r(()=>[(i(!0),f(x,null,V(e.services,a=>(i(),T(N,{key:a.id,value:a.id},{default:r(()=>[_(u(a.name)+" ("+u(e.statusLabel(a.status))+") ",1)]),_:2},1032,["value"]))),128))]),_:1},8,["value","placeholder"])]),l(J,{columns:e.invocationColumns,"data-source":e.filteredInvocations,pagination:{pageSize:20,showTotal:a=>t.$t("marketplace.table.totalSuffix",{n:a})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:r(({column:a,record:d})=>[a.key==="service"?(i(),f(x,{key:0},[C("span",Ne,u(e.serviceName(d.serviceId)),1),C("div",De,u(d.serviceId.slice(0,8)),1)],64)):b("v-if",!0),a.key==="caller"?(i(),f(x,{key:1},[d.callerId?(i(),f("span",Ve,u(e.shortDid(d.callerId)),1)):(i(),f("span",Be,"—"))],64)):b("v-if",!0),a.key==="status"?(i(),T(M,{key:2,color:e.invocationStatusColor(d.status)},{default:r(()=>[_(u(e.invocationStatusLabel(d.status)),1)]),_:2},1032,["color"])):b("v-if",!0),a.key==="durationMs"?(i(),f(x,{key:3},[d.durationMs!=null?(i(),f("span",Ke,u(d.durationMs)+" ms ",1)):(i(),f("span",Ze,"—"))],64)):b("v-if",!0),a.key==="createdAt"?(i(),f("span",Je,u(e.formatMarketplaceTime(d.createdAt)),1)):b("v-if",!0)]),emptyText:r(()=>[C("div",We,[l(e.ThunderboltOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),_(" "+u(t.$t("marketplace.table.emptyInvocations")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"])]),_:1},8,["activeKey"]),b(" ── Publish service modal ─────────────────────────────────── "),l(G,{open:e.showPublishModal,"onUpdate:open":o[11]||(o[11]=a=>e.showPublishModal=a),title:t.$t("marketplace.publish_modal.title"),"confirm-loading":e.publishing,width:560,"ok-text":t.$t("marketplace.publish_modal.ok"),"cancel-text":t.$t("marketplace.publish_modal.cancel"),onOk:e.publishService,onCancel:e.resetPublishForm},{default:r(()=>[l(Q,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:r(()=>[l(g,{label:t.$t("marketplace.publish_modal.nameLabel"),required:""},{default:r(()=>[l(z,{value:e.publishForm.name,"onUpdate:value":o[5]||(o[5]=a=>e.publishForm.name=a),placeholder:t.$t("marketplace.publish_modal.namePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),l(g,{label:t.$t("marketplace.publish_modal.versionLabel")},{default:r(()=>[l(z,{value:e.publishForm.version,"onUpdate:value":o[6]||(o[6]=a=>e.publishForm.version=a),placeholder:t.$t("marketplace.publish_modal.versionPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),l(g,{label:t.$t("marketplace.publish_modal.descLabel")},{default:r(()=>[l(q,{value:e.publishForm.description,"onUpdate:value":o[7]||(o[7]=a=>e.publishForm.description=a),"auto-size":{minRows:2,maxRows:5}},null,8,["value"])]),_:1},8,["label"]),l(g,{label:t.$t("marketplace.publish_modal.endpointLabel")},{default:r(()=>[l(z,{value:e.publishForm.endpoint,"onUpdate:value":o[8]||(o[8]=a=>e.publishForm.endpoint=a),placeholder:t.$t("marketplace.publish_modal.endpointPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),l(g,{label:t.$t("marketplace.publish_modal.ownerLabel")},{default:r(()=>[l(z,{value:e.publishForm.owner,"onUpdate:value":o[9]||(o[9]=a=>e.publishForm.owner=a),placeholder:t.$t("marketplace.publish_modal.ownerPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),l(g,{label:t.$t("marketplace.publish_modal.statusLabel")},{default:r(()=>[l(D,{value:e.publishForm.status,"onUpdate:value":o[10]||(o[10]=a=>e.publishForm.status=a)},{default:r(()=>[(i(!0),f(x,null,V(e.SERVICE_STATUSES,a=>(i(),T(N,{key:a,value:a},{default:r(()=>[_(u(e.statusLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),b(" ── Record invocation modal ───────────────────────────────── "),l(G,{open:e.showRecordModal,"onUpdate:open":o[16]||(o[16]=a=>e.showRecordModal=a),title:t.$t("marketplace.record_modal.title",{name:e.recordTargetName}),"confirm-loading":e.recording,width:520,"ok-text":t.$t("marketplace.record_modal.ok"),"cancel-text":t.$t("marketplace.record_modal.cancel"),onOk:e.recordInvocation,onCancel:e.resetRecordForm},{default:r(()=>[l(Q,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:r(()=>[l(g,{label:t.$t("marketplace.record_modal.callerLabel")},{default:r(()=>[l(z,{value:e.recordForm.caller,"onUpdate:value":o[12]||(o[12]=a=>e.recordForm.caller=a),placeholder:t.$t("marketplace.record_modal.callerPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),l(g,{label:t.$t("marketplace.record_modal.statusLabel")},{default:r(()=>[l(D,{value:e.recordForm.status,"onUpdate:value":o[13]||(o[13]=a=>e.recordForm.status=a)},{default:r(()=>[(i(!0),f(x,null,V(e.INVOCATION_STATUSES,a=>(i(),T(N,{key:a,value:a},{default:r(()=>[_(u(e.invocationStatusLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),l(g,{label:t.$t("marketplace.record_modal.durationLabel")},{default:r(()=>[l(X,{value:e.recordForm.durationMs,"onUpdate:value":o[14]||(o[14]=a=>e.recordForm.durationMs=a),min:0,max:36e5,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"]),e.recordForm.status==="failed"||e.recordForm.status==="timeout"?(i(),T(g,{key:0,label:t.$t("marketplace.record_modal.errorLabel")},{default:r(()=>[l(q,{value:e.recordForm.error,"onUpdate:value":o[15]||(o[15]=a=>e.recordForm.error=a),"auto-size":{minRows:2,maxRows:4}},null,8,["value"])]),_:1},8,["label"])):b("v-if",!0)]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])])}const Xe=me(we,[["render",qe],["__scopeId","data-v-892f664d"],["__file","/tmp/cc-web-panel-2pZejZ/repo/packages/web-panel/src/views/Marketplace.vue"]]);export{Xe as default};
1
+ import{I as p,J as f,U as C,R as u,c as l,K as r,V as b,o as ae,a as Y,b as U,r as y,P as i,Q as _,F as x,Z as V,S as T}from"./vendor-BvqAck49.js";import{t as $,_ as me,u as le,b as oe,d as h}from"./index-DyEpwvCK.js";import{a0 as ve,a$ as fe,$ as be,f as ke,a9 as _e,z as ye,R as ge}from"./icons-DP3uiYxy.js";const he=Object.freeze(["draft","published","deprecated","suspended"]),Se=Object.freeze(["pending","running","success","failed","timeout"]);function B(t,o=0){return typeof t=="number"&&Number.isFinite(t)?t:o}function Ce(t,o=0){if(!t||typeof t!="object")return null;const c=t.id||"";return c?{key:c,id:c,name:String(t.name||""),version:String(t.version||""),description:String(t.description||""),endpoint:t.endpoint||"",pricing:t.pricing??null,status:String(t.status||"draft").toLowerCase(),owner:t.owner||"",invocationCount:B(t.invocationCount??t.invocation_count,0),createdAt:t.createdAt??t.created_at??null,updatedAt:t.updatedAt??t.updated_at??null,_idx:o}:null}function re(t){const o=$(t);return Array.isArray(o)?o.map(Ce).filter(Boolean):[]}function xe(t,o=0){if(!t||typeof t!="object")return null;const c=t.id||"";return c?{key:c,id:c,serviceId:t.serviceId||t.service_id||"",callerId:t.callerId||t.caller_id||"",input:t.input??null,output:t.output??null,status:String(t.status||"success").toLowerCase(),durationMs:t.durationMs??t.duration_ms??null,error:t.error||"",createdAt:t.createdAt??t.created_at??null,_idx:o}:null}function ne(t){const o=$(t);return Array.isArray(o)?o.map(xe).filter(Boolean):[]}function se(t){const o={total:0,counts:{success:0,failed:0,timeout:0,pending:0,running:0},successRate:0,avgDurationMs:0,scopedToService:null},c=$(t);if(!c||typeof c!="object"||Array.isArray(c))return o;o.total=B(c.total,0),o.successRate=B(c.successRate??c.success_rate,0),o.avgDurationMs=B(c.avgDurationMs??c.avg_duration_ms,0),o.scopedToService=c.scopedToService??c.scoped_to_service??null;const e=c.counts&&typeof c.counts=="object"?c.counts:{};for(const I of Object.keys(o.counts))o.counts[I]=B(e[I],0);return o}function Fe(t){if(t==null||t==="")return"—";const o=typeof t=="number"?new Date(t):new Date(String(t));return isNaN(o.getTime())?String(t):o.toLocaleString("zh-CN",{hour12:!1})}const we={__name:"Marketplace",setup(t,{expose:o}){o();const c=le(),{t:e}=oe(),I=y(!1),K=y(!1),R=y(!1),O=y([]),F=y([]),w=y({total:0,counts:{success:0,failed:0,timeout:0,pending:0,running:0},successRate:0,avgDurationMs:0,scopedToService:null}),A=y("services"),E=y(""),L=y(""),P=y(null),J=y(!1),M=y(!1),k=Y({name:"",version:"",description:"",endpoint:"",owner:"",status:"published"}),m=Y({serviceId:"",caller:"",status:"success",durationMs:null,error:""}),N=y(""),W=U(()=>[{title:e("marketplace.serviceCols.name"),key:"name"},{title:e("marketplace.serviceCols.status"),key:"status",width:"120px"},{title:e("marketplace.serviceCols.invocationCount"),key:"invocationCount",width:"110px"},{title:e("marketplace.serviceCols.owner"),key:"owner",width:"180px"},{title:e("marketplace.serviceCols.createdAt"),key:"createdAt",width:"160px"},{title:e("marketplace.serviceCols.action"),key:"action",width:"180px"}]),q=U(()=>[{title:e("marketplace.invocationCols.service"),key:"service"},{title:e("marketplace.invocationCols.caller"),key:"caller",width:"180px"},{title:e("marketplace.invocationCols.status"),key:"status",width:"100px"},{title:e("marketplace.invocationCols.durationMs"),key:"durationMs",width:"110px"},{title:e("marketplace.invocationCols.createdAt"),key:"createdAt",width:"160px"}]),j=U(()=>O.value.filter(n=>n.status==="published").length),D=U(()=>w.value.successRate*100),G=U(()=>{let n=O.value;if(E.value&&(n=n.filter(s=>s.status===E.value)),L.value){const s=L.value.toLowerCase();n=n.filter(v=>v.name.toLowerCase().includes(s))}return n}),z=U(()=>P.value?F.value.filter(n=>n.serviceId===P.value):F.value);function g(n){const s=`marketplace.serviceStatusLabels.${n}`,v=e(s);return v===s?n:v}function Q(n){return{draft:"default",published:"green",deprecated:"orange",suspended:"red"}[n]||"default"}function X(n){const s=`marketplace.invocationStatusLabels.${n}`,v=e(s);return v===s?n:v}function Z(n){return{pending:"default",running:"processing",success:"green",failed:"red",timeout:"orange"}[n]||"default"}function H(n){return n?n.length>28?n.slice(0,16)+"..."+n.slice(-8):n:""}function a(n,s){return n?n.length>s?n.slice(0,s)+"...":n:""}function d(n){const s=O.value.find(v=>v.id===n);return s?s.name:e("marketplace.deletedService")}async function S(){I.value=!0;try{const[n,s,v]=await Promise.all([c.execute("marketplace list --limit 200 --json",1e4).catch(()=>({output:""})),c.execute("marketplace invocations --limit 200 --json",1e4).catch(()=>({output:""})),c.execute("marketplace stats --json",1e4).catch(()=>({output:""}))]);O.value=re(n.output),F.value=ne(s.output),w.value=se(v.output)}catch(n){h.error(e("marketplace.msg.loadFailed")+": "+(n?.message||n))}finally{I.value=!1}}async function ie(){const n=k.name.trim();if(!n){h.warning(e("marketplace.msg.publishEmpty"));return}K.value=!0;try{const s=[`marketplace publish "${n.replace(/"/g,'\\"')}"`];k.version.trim()&&s.push(`--version "${k.version.trim().replace(/"/g,'\\"')}"`),k.description.trim()&&s.push(`--description "${k.description.trim().replace(/"/g,'\\"')}"`),k.endpoint.trim()&&s.push(`--endpoint "${k.endpoint.trim().replace(/"/g,'\\"')}"`),k.owner.trim()&&s.push(`--owner "${k.owner.trim().replace(/"/g,'\\"')}"`),s.push(`--status ${k.status}`),s.push("--json");const{output:v}=await c.execute(s.join(" "),15e3);if(/error|failed|失败/i.test(v)&&!/"id"/.test(v)){h.error(e("marketplace.msg.publishFailed")+": "+v.slice(0,120));return}h.success(e("marketplace.msg.publishSuccess")),J.value=!1,ee(),await S()}catch(s){h.error(e("marketplace.msg.publishFailed")+": "+(s?.message||s))}finally{K.value=!1}}function ce(n){if(n.status!=="published"){h.warning(e("marketplace.msg.recordOnlyPublished"));return}m.serviceId=n.id,m.caller="",m.status="success",m.durationMs=null,m.error="",N.value=n.name,M.value=!0}async function ue(){R.value=!0;try{const n=[`marketplace record ${m.serviceId}`];m.caller.trim()&&n.push(`--caller "${m.caller.trim().replace(/"/g,'\\"')}"`),n.push(`--status ${m.status}`),m.durationMs!=null&&n.push(`--duration-ms ${m.durationMs}`),(m.status==="failed"||m.status==="timeout")&&m.error.trim()&&n.push(`--error "${m.error.trim().replace(/"/g,'\\"')}"`),n.push("--json");const{output:s}=await c.execute(n.join(" "),15e3);if(/error|failed|失败/i.test(s)&&!/"id"/.test(s)){h.error(e("marketplace.msg.recordFailed")+": "+s.slice(0,120));return}h.success(e("marketplace.msg.recordSuccess")),M.value=!1,A.value="invocations",await S()}catch(n){h.error(e("marketplace.msg.recordFailed")+": "+(n?.message||n))}finally{R.value=!1}}async function de(n,s){if(s!==n.status)try{const{output:v}=await c.execute(`marketplace status ${n.id} ${s} --json`,1e4);if(/error|invalid|失败/i.test(v)&&!/"status"/.test(v)){h.error(e("marketplace.msg.transitionFailed")+": "+v.slice(0,120));return}h.success(e("marketplace.msg.transitionSuccess",{label:g(s)})),await S()}catch(v){h.error(e("marketplace.msg.transitionFailed")+": "+(v?.message||v))}}function ee(){k.name="",k.version="",k.description="",k.endpoint="",k.owner="",k.status="published"}function pe(){m.serviceId="",m.caller="",m.status="success",m.durationMs=null,m.error="",N.value=""}ae(S);const te={ws:c,t:e,loading:I,publishing:K,recording:R,services:O,invocations:F,stats:w,activeTab:A,statusFilter:E,nameFilter:L,invocationServiceFilter:P,showPublishModal:J,showRecordModal:M,publishForm:k,recordForm:m,recordTargetName:N,serviceColumns:W,invocationColumns:q,publishedCount:j,successRatePct:D,filteredServices:G,filteredInvocations:z,statusLabel:g,serviceStatusColor:Q,invocationStatusLabel:X,invocationStatusColor:Z,shortDid:H,truncate:a,serviceName:d,loadAll:S,publishService:ie,openRecord:ce,recordInvocation:ue,transitionStatus:de,resetPublishForm:ee,resetRecordForm:pe,ref:y,computed:U,onMounted:ae,reactive:Y,get ReloadOutlined(){return ge},get CloudUploadOutlined(){return ye},get AppstoreOutlined(){return _e},get CheckCircleOutlined(){return ke},get ThunderboltOutlined(){return be},get RiseOutlined(){return fe},get ClockCircleOutlined(){return ve},get message(){return h},get useI18n(){return oe},get useWsStore(){return le},get parseServices(){return re},get parseInvocations(){return ne},get parseStats(){return se},get formatMarketplaceTime(){return Fe},get SERVICE_STATUSES(){return he},get INVOCATION_STATUSES(){return Se}};return Object.defineProperty(te,"__isScriptSetup",{enumerable:!1,value:!0}),te}},Te={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Re={class:"page-title"},Ae={class:"page-sub"},Ie={class:"filter-bar"},Oe={style:{color:"var(--text-primary)","font-weight":"500"}},Me={key:1,style:{color:"var(--text-secondary)","font-size":"11px","margin-top":"2px"}},ze={key:2,style:{color:"#722ed1","font-weight":"500"}},Ue={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"11px"}},Le={key:1,style:{color:"var(--text-muted)"}},Ee={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},Pe={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Ne={class:"filter-bar"},je={style:{color:"var(--text-primary)"}},De={style:{color:"var(--text-muted)","font-size":"11px","font-family":"monospace"}},Ve={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"11px"}},Be={key:1,style:{color:"var(--text-muted)"}},Ke={key:0,style:{color:"var(--text-secondary)","font-size":"12px"}},Je={key:1,style:{color:"var(--text-muted)"}},We={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},qe={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}};function Qe(t,o,c,e,I,K){const R=p("a-button"),O=p("a-space"),F=p("a-statistic"),w=p("a-card"),A=p("a-col"),E=p("a-row"),L=p("a-radio-button"),P=p("a-radio-group"),J=p("a-input-search"),M=p("a-tag"),k=p("a-menu-item"),m=p("a-menu"),N=p("a-dropdown"),W=p("a-table"),q=p("a-tab-pane"),j=p("a-select-option"),D=p("a-select"),G=p("a-tabs"),z=p("a-input"),g=p("a-form-item"),Q=p("a-textarea"),X=p("a-form"),Z=p("a-modal"),H=p("a-input-number");return i(),f("div",null,[C("div",Te,[C("div",null,[C("h2",Re,u(t.$t("marketplace.title")),1),C("p",Ae,u(t.$t("marketplace.subtitle")),1)]),l(O,null,{default:r(()=>[l(R,{loading:e.loading,onClick:e.loadAll},{icon:r(()=>[l(e.ReloadOutlined)]),default:r(()=>[_(" "+u(t.$t("marketplace.refresh")),1)]),_:1},8,["loading"]),l(R,{type:"primary",onClick:o[0]||(o[0]=a=>e.showPublishModal=!0)},{icon:r(()=>[l(e.CloudUploadOutlined)]),default:r(()=>[_(" "+u(t.$t("marketplace.publish")),1)]),_:1})]),_:1})]),b(" Stats overview "),l(E,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:r(()=>[l(A,{xs:12,sm:8,lg:5},{default:r(()=>[l(w,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[l(F,{title:t.$t("marketplace.stats.total"),value:e.services.length,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:r(()=>[l(e.AppstoreOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),l(A,{xs:12,sm:8,lg:5},{default:r(()=>[l(w,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[l(F,{title:t.$t("marketplace.stats.published"),value:e.publishedCount,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:r(()=>[l(e.CheckCircleOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),l(A,{xs:12,sm:8,lg:5},{default:r(()=>[l(w,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[l(F,{title:t.$t("marketplace.stats.invocations"),value:e.stats.total,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:r(()=>[l(e.ThunderboltOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),l(A,{xs:12,sm:8,lg:5},{default:r(()=>[l(w,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[l(F,{title:t.$t("marketplace.stats.successRate"),value:e.successRatePct,suffix:"%",precision:1,"value-style":{color:e.stats.successRate>=.9?"#52c41a":"#faad14",fontSize:"20px"}},{prefix:r(()=>[l(e.RiseOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),l(A,{xs:24,sm:8,lg:4},{default:r(()=>[l(w,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[l(F,{title:t.$t("marketplace.stats.avgDuration"),value:e.stats.avgDurationMs,suffix:"ms","value-style":{color:"#faad14",fontSize:"20px"}},{prefix:r(()=>[l(e.ClockCircleOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),b(" Tabs "),l(G,{activeKey:e.activeTab,"onUpdate:activeKey":o[4]||(o[4]=a=>e.activeTab=a),class:"market-tabs"},{default:r(()=>[b(" ── Services tab ──────────────────────────────────────────── "),l(q,{key:"services",tab:t.$t("marketplace.tabs.services")},{default:r(()=>[C("div",Ie,[l(P,{value:e.statusFilter,"onUpdate:value":o[1]||(o[1]=a=>e.statusFilter=a),size:"small","button-style":"solid"},{default:r(()=>[l(L,{value:""},{default:r(()=>[_(u(t.$t("marketplace.filter.all")),1)]),_:1}),(i(!0),f(x,null,V(e.SERVICE_STATUSES,a=>(i(),T(L,{key:a,value:a},{default:r(()=>[_(u(e.statusLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),l(J,{value:e.nameFilter,"onUpdate:value":o[2]||(o[2]=a=>e.nameFilter=a),placeholder:t.$t("marketplace.filter.namePlaceholder"),"allow-clear":"",style:{"max-width":"280px"}},null,8,["value","placeholder"])]),l(W,{columns:e.serviceColumns,"data-source":e.filteredServices,pagination:{pageSize:20,showTotal:a=>t.$t("marketplace.table.totalSuffix",{n:a})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:r(({column:a,record:d})=>[a.key==="name"?(i(),f(x,{key:0},[C("span",Oe,u(d.name),1),d.version?(i(),T(M,{key:0,color:"blue",style:{"margin-left":"6px","font-size":"10px"}},{default:r(()=>[_(" v"+u(d.version),1)]),_:2},1024)):b("v-if",!0),d.description?(i(),f("div",Me,u(e.truncate(d.description,80)),1)):b("v-if",!0)],64)):b("v-if",!0),a.key==="status"?(i(),T(M,{key:1,color:e.serviceStatusColor(d.status)},{default:r(()=>[_(u(e.statusLabel(d.status)),1)]),_:2},1032,["color"])):b("v-if",!0),a.key==="invocationCount"?(i(),f("span",ze,u(d.invocationCount),1)):b("v-if",!0),a.key==="owner"?(i(),f(x,{key:3},[d.owner?(i(),f("span",Ue,u(e.shortDid(d.owner)),1)):(i(),f("span",Le,"—"))],64)):b("v-if",!0),a.key==="createdAt"?(i(),f("span",Ee,u(e.formatMarketplaceTime(d.createdAt)),1)):b("v-if",!0),a.key==="action"?(i(),f(x,{key:5},[l(R,{size:"small",type:"link",onClick:S=>e.openRecord(d)},{default:r(()=>[_(u(t.$t("marketplace.table.actionRecord")),1)]),_:1},8,["onClick"]),l(N,{trigger:["click"]},{overlay:r(()=>[l(m,{onClick:S=>e.transitionStatus(d,S.key)},{default:r(()=>[(i(!0),f(x,null,V(e.SERVICE_STATUSES,S=>(i(),T(k,{key:S,disabled:S===d.status},{default:r(()=>[_(u(e.statusLabel(S)),1)]),_:2},1032,["disabled"]))),128))]),_:2},1032,["onClick"])]),default:r(()=>[l(R,{size:"small",type:"link"},{default:r(()=>[_(u(t.$t("marketplace.table.statusDropdown")),1)]),_:1})]),_:2},1024)],64)):b("v-if",!0)]),emptyText:r(()=>[C("div",Pe,[l(e.AppstoreOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),_(" "+u(e.statusFilter||e.nameFilter?t.$t("marketplace.table.emptyFiltered"):t.$t("marketplace.table.empty")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),b(" ── Invocations tab ───────────────────────────────────────── "),l(q,{key:"invocations",tab:t.$t("marketplace.tabs.invocations")},{default:r(()=>[C("div",Ne,[l(D,{value:e.invocationServiceFilter,"onUpdate:value":o[3]||(o[3]=a=>e.invocationServiceFilter=a),placeholder:t.$t("marketplace.filter.byService"),"allow-clear":"",style:{width:"280px"},size:"small"},{default:r(()=>[(i(!0),f(x,null,V(e.services,a=>(i(),T(j,{key:a.id,value:a.id},{default:r(()=>[_(u(a.name)+" ("+u(e.statusLabel(a.status))+") ",1)]),_:2},1032,["value"]))),128))]),_:1},8,["value","placeholder"])]),l(W,{columns:e.invocationColumns,"data-source":e.filteredInvocations,pagination:{pageSize:20,showTotal:a=>t.$t("marketplace.table.totalSuffix",{n:a})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:r(({column:a,record:d})=>[a.key==="service"?(i(),f(x,{key:0},[C("span",je,u(e.serviceName(d.serviceId)),1),C("div",De,u(d.serviceId.slice(0,8)),1)],64)):b("v-if",!0),a.key==="caller"?(i(),f(x,{key:1},[d.callerId?(i(),f("span",Ve,u(e.shortDid(d.callerId)),1)):(i(),f("span",Be,"—"))],64)):b("v-if",!0),a.key==="status"?(i(),T(M,{key:2,color:e.invocationStatusColor(d.status)},{default:r(()=>[_(u(e.invocationStatusLabel(d.status)),1)]),_:2},1032,["color"])):b("v-if",!0),a.key==="durationMs"?(i(),f(x,{key:3},[d.durationMs!=null?(i(),f("span",Ke,u(d.durationMs)+" ms ",1)):(i(),f("span",Je,"—"))],64)):b("v-if",!0),a.key==="createdAt"?(i(),f("span",We,u(e.formatMarketplaceTime(d.createdAt)),1)):b("v-if",!0)]),emptyText:r(()=>[C("div",qe,[l(e.ThunderboltOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),_(" "+u(t.$t("marketplace.table.emptyInvocations")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"])]),_:1},8,["activeKey"]),b(" ── Publish service modal ─────────────────────────────────── "),l(Z,{open:e.showPublishModal,"onUpdate:open":o[11]||(o[11]=a=>e.showPublishModal=a),title:t.$t("marketplace.publish_modal.title"),"confirm-loading":e.publishing,width:560,"ok-text":t.$t("marketplace.publish_modal.ok"),"cancel-text":t.$t("marketplace.publish_modal.cancel"),onOk:e.publishService,onCancel:e.resetPublishForm},{default:r(()=>[l(X,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:r(()=>[l(g,{label:t.$t("marketplace.publish_modal.nameLabel"),required:""},{default:r(()=>[l(z,{value:e.publishForm.name,"onUpdate:value":o[5]||(o[5]=a=>e.publishForm.name=a),placeholder:t.$t("marketplace.publish_modal.namePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),l(g,{label:t.$t("marketplace.publish_modal.versionLabel")},{default:r(()=>[l(z,{value:e.publishForm.version,"onUpdate:value":o[6]||(o[6]=a=>e.publishForm.version=a),placeholder:t.$t("marketplace.publish_modal.versionPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),l(g,{label:t.$t("marketplace.publish_modal.descLabel")},{default:r(()=>[l(Q,{value:e.publishForm.description,"onUpdate:value":o[7]||(o[7]=a=>e.publishForm.description=a),"auto-size":{minRows:2,maxRows:5}},null,8,["value"])]),_:1},8,["label"]),l(g,{label:t.$t("marketplace.publish_modal.endpointLabel")},{default:r(()=>[l(z,{value:e.publishForm.endpoint,"onUpdate:value":o[8]||(o[8]=a=>e.publishForm.endpoint=a),placeholder:t.$t("marketplace.publish_modal.endpointPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),l(g,{label:t.$t("marketplace.publish_modal.ownerLabel")},{default:r(()=>[l(z,{value:e.publishForm.owner,"onUpdate:value":o[9]||(o[9]=a=>e.publishForm.owner=a),placeholder:t.$t("marketplace.publish_modal.ownerPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),l(g,{label:t.$t("marketplace.publish_modal.statusLabel")},{default:r(()=>[l(D,{value:e.publishForm.status,"onUpdate:value":o[10]||(o[10]=a=>e.publishForm.status=a)},{default:r(()=>[(i(!0),f(x,null,V(e.SERVICE_STATUSES,a=>(i(),T(j,{key:a,value:a},{default:r(()=>[_(u(e.statusLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),b(" ── Record invocation modal ───────────────────────────────── "),l(Z,{open:e.showRecordModal,"onUpdate:open":o[16]||(o[16]=a=>e.showRecordModal=a),title:t.$t("marketplace.record_modal.title",{name:e.recordTargetName}),"confirm-loading":e.recording,width:520,"ok-text":t.$t("marketplace.record_modal.ok"),"cancel-text":t.$t("marketplace.record_modal.cancel"),onOk:e.recordInvocation,onCancel:e.resetRecordForm},{default:r(()=>[l(X,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:r(()=>[l(g,{label:t.$t("marketplace.record_modal.callerLabel")},{default:r(()=>[l(z,{value:e.recordForm.caller,"onUpdate:value":o[12]||(o[12]=a=>e.recordForm.caller=a),placeholder:t.$t("marketplace.record_modal.callerPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),l(g,{label:t.$t("marketplace.record_modal.statusLabel")},{default:r(()=>[l(D,{value:e.recordForm.status,"onUpdate:value":o[13]||(o[13]=a=>e.recordForm.status=a)},{default:r(()=>[(i(!0),f(x,null,V(e.INVOCATION_STATUSES,a=>(i(),T(j,{key:a,value:a},{default:r(()=>[_(u(e.invocationStatusLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),l(g,{label:t.$t("marketplace.record_modal.durationLabel")},{default:r(()=>[l(H,{value:e.recordForm.durationMs,"onUpdate:value":o[14]||(o[14]=a=>e.recordForm.durationMs=a),min:0,max:36e5,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"]),e.recordForm.status==="failed"||e.recordForm.status==="timeout"?(i(),T(g,{key:0,label:t.$t("marketplace.record_modal.errorLabel")},{default:r(()=>[l(Q,{value:e.recordForm.error,"onUpdate:value":o[15]||(o[15]=a=>e.recordForm.error=a),"auto-size":{minRows:2,maxRows:4}},null,8,["value"])]),_:1},8,["label"])):b("v-if",!0)]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])])}const He=me(we,[["render",Qe],["__scopeId","data-v-892f664d"],["__file","/tmp/cc-web-panel-Ep7NSX/repo/packages/web-panel/src/views/Marketplace.vue"]]);export{He as default};