chainlesschain 0.157.6 → 0.157.7

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 (118) hide show
  1. package/package.json +1 -1
  2. package/src/assets/web-panel/.build-hash +1 -1
  3. package/src/assets/web-panel/assets/{AIOps-BT4aiWvN.js → AIOps-CoVPS4_f.js} +1 -1
  4. package/src/assets/web-panel/assets/{ActionButton-DAsV0-Ys.js → ActionButton-BYA9htq4.js} +1 -1
  5. package/src/assets/web-panel/assets/{Analytics-DD0zl4Pt.js → Analytics-CkCmN3yh.js} +1 -1
  6. package/src/assets/web-panel/assets/AppLayout-BbhrUX4i.css +1 -0
  7. package/src/assets/web-panel/assets/AppLayout-CcqxQGmE.js +1 -0
  8. package/src/assets/web-panel/assets/{Backup-YA2dxmc0.js → Backup-SPQtiUev.js} +1 -1
  9. package/src/assets/web-panel/assets/{BaseInput-DEsW823u.js → BaseInput-BAmfd4Ir.js} +1 -1
  10. package/src/assets/web-panel/assets/{Chat-DWPvh1tj.js → Chat-Cl9LpsTj.js} +2 -2
  11. package/src/assets/web-panel/assets/{Checkbox-Clf5-xld.js → Checkbox-BiSO-WqE.js} +1 -1
  12. package/src/assets/web-panel/assets/{Col-CH1hrzXT.js → Col-DIGPvqVy.js} +1 -1
  13. package/src/assets/web-panel/assets/{Community-roZ8U4aT.js → Community-RZzIND1A.js} +1 -1
  14. package/src/assets/web-panel/assets/{Compact-BgdvLc3A.js → Compact-B-UF0szM.js} +1 -1
  15. package/src/assets/web-panel/assets/{Compliance-CufbqW0y.js → Compliance-D7dNQEQ9.js} +1 -1
  16. package/src/assets/web-panel/assets/{Cowork-C_IaxH0e.js → Cowork-CPj75S0j.js} +3 -3
  17. package/src/assets/web-panel/assets/{Cron-DhL_2kgD.js → Cron-PnlUFCIP.js} +1 -1
  18. package/src/assets/web-panel/assets/{Crosschain-DJOk256v.js → Crosschain-C7Kxjjlo.js} +1 -1
  19. package/src/assets/web-panel/assets/{DID-C-NGafCc.js → DID-B3aBXElX.js} +1 -1
  20. package/src/assets/web-panel/assets/{Dashboard-BehZEEGb.js → Dashboard-XxsWjoEF.js} +1 -1
  21. package/src/assets/web-panel/assets/{Dropdown-Di1XKsKH.js → Dropdown-B6FSgG11.js} +1 -1
  22. package/src/assets/web-panel/assets/{FormItemContext-BiLL758Z.js → FormItemContext-B0xgi547.js} +1 -1
  23. package/src/assets/web-panel/assets/{Git-CK7BDDon.js → Git-BnVgKR_0.js} +2 -2
  24. package/src/assets/web-panel/assets/{Inference-BKfMNDPb.js → Inference-pcPaCXHq.js} +1 -1
  25. package/src/assets/web-panel/assets/{KnowledgeGraph-CnMK_681.js → KnowledgeGraph-CH3dpH-_.js} +1 -1
  26. package/src/assets/web-panel/assets/{Logs-OZ_SDJhi.js → Logs-4wvIp1ss.js} +2 -2
  27. package/src/assets/web-panel/assets/{Marketplace-s1GETxG1.js → Marketplace-BydQkgpf.js} +1 -1
  28. package/src/assets/web-panel/assets/{McpTools-I_suskam.js → McpTools-DBERPbTA.js} +3 -3
  29. package/src/assets/web-panel/assets/{Memory-Xg-8FUwL.js → Memory-CMNbDULN.js} +1 -1
  30. package/src/assets/web-panel/assets/{NLProgramming-CuTxb54H.js → NLProgramming-DVSbNLly.js} +1 -1
  31. package/src/assets/web-panel/assets/{Notes-D3HPrdzx.js → Notes-DMgBT122.js} +2 -2
  32. package/src/assets/web-panel/assets/{Organization-BPk2hqkU.js → Organization-u7P1VpPr.js} +3 -3
  33. package/src/assets/web-panel/assets/{Overflow-DglXWvmc.js → Overflow-BYKMeaWJ.js} +1 -1
  34. package/src/assets/web-panel/assets/{P2P-9506J4Fa.js → P2P-DKDUTaaL.js} +2 -2
  35. package/src/assets/web-panel/assets/{Permissions-D1ZT_iLb.js → Permissions-DlZ_n4w_.js} +1 -1
  36. package/src/assets/web-panel/assets/{Pipeline-s2l8q5TK.js → Pipeline-BUqsWXKt.js} +1 -1
  37. package/src/assets/web-panel/assets/{Privacy-Cj1MuXI1.js → Privacy-5YZQ-neP.js} +1 -1
  38. package/src/assets/web-panel/assets/{ProjectSettings-Ck1WnkO5.js → ProjectSettings-DnrhLjZI.js} +2 -2
  39. package/src/assets/web-panel/assets/{Projects-1kgHPHWk.js → Projects-Bi66Yv3y.js} +1 -1
  40. package/src/assets/web-panel/assets/{Providers-DnE4yu5E.js → Providers-CikNkb5X.js} +2 -2
  41. package/src/assets/web-panel/assets/{Row-B0eZSULe.js → Row-Dq1TXcMH.js} +1 -1
  42. package/src/assets/web-panel/assets/{RssFeed-CKCkUq-C.js → RssFeed-NMgrJXli.js} +1 -1
  43. package/src/assets/web-panel/assets/{Security-DIVXGpQK.js → Security-C8Ivt-oU.js} +4 -4
  44. package/src/assets/web-panel/assets/{Services-DhJEUDnu.js → Services-CEuZeNM6.js} +2 -2
  45. package/src/assets/web-panel/assets/{Skeleton-ecuW2YBG.js → Skeleton-CVXI8LKZ.js} +1 -1
  46. package/src/assets/web-panel/assets/{Skills-DeBN8_s8.js → Skills-CIv4Cs3T.js} +1 -1
  47. package/src/assets/web-panel/assets/{Tasks-R-1xMJ9F.js → Tasks-DePDDw0g.js} +1 -1
  48. package/src/assets/web-panel/assets/{Templates-DHHfXjDu.js → Templates-h2flhfZ2.js} +1 -1
  49. package/src/assets/web-panel/assets/{Tenant-CC0KuURy.js → Tenant-BZN5JCLW.js} +1 -1
  50. package/src/assets/web-panel/assets/{Trigger-D9s00Sgd.js → Trigger-DmhLeltH.js} +1 -1
  51. package/src/assets/web-panel/assets/{VideoEditing-DcDab4pD.js → VideoEditing-DP5Te9MV.js} +1 -1
  52. package/src/assets/web-panel/assets/{Wallet-DQl4w6NV.js → Wallet-DbdgPt_i.js} +4 -4
  53. package/src/assets/web-panel/assets/{WebAuthn-Hr3U_uGz.js → WebAuthn-0qV34Bht.js} +3 -3
  54. package/src/assets/web-panel/assets/{WorkflowEditor-BC8eATB5.js → WorkflowEditor-C4sIrXd7.js} +1 -1
  55. package/src/assets/web-panel/assets/{colors-CCC3A9ZL.js → colors-Iv3ft_s8.js} +1 -1
  56. package/src/assets/web-panel/assets/{compact-item-BmWW5F8V.js → compact-item-CtT5KcXA.js} +1 -1
  57. package/src/assets/web-panel/assets/{createContext-B2b9CRr1.js → createContext-CHLVxTn6.js} +1 -1
  58. package/src/assets/web-panel/assets/{hasIn-BRo_JT_S.js → hasIn-B9IRZs23.js} +1 -1
  59. package/src/assets/web-panel/assets/{icons-DbKJDD5_.js → icons-srBCpwXl.js} +4 -4
  60. package/src/assets/web-panel/assets/{index-Bkjna3jQ.js → index--eBMlDjO.js} +1 -1
  61. package/src/assets/web-panel/assets/{index-GXgIXqCa.js → index-4I01hpiN.js} +1 -1
  62. package/src/assets/web-panel/assets/{index-1U9E0b34.js → index-4wtT_zvC.js} +1 -1
  63. package/src/assets/web-panel/assets/index-69KL83qL.js +1 -0
  64. package/src/assets/web-panel/assets/{index-DG8Argyk.js → index-B0IQIuHE.js} +1 -1
  65. package/src/assets/web-panel/assets/{index-2kaOH6lv.js → index-B18bc0ut.js} +1 -1
  66. package/src/assets/web-panel/assets/{index-BynNl5nX.js → index-B6JARzH-.js} +2 -2
  67. package/src/assets/web-panel/assets/{index-CAv1O9z-.js → index-BOlkR4CB.js} +1 -1
  68. package/src/assets/web-panel/assets/{index-2Yn7789f.js → index-BRlYu6_d.js} +1 -1
  69. package/src/assets/web-panel/assets/{index-DcLgLWwU.js → index-BWtxplKf.js} +1 -1
  70. package/src/assets/web-panel/assets/{index-CNtb4sCH.js → index-BaHFTtgz.js} +2 -2
  71. package/src/assets/web-panel/assets/{index-CEwU1s8_.js → index-BjC8S1t1.js} +1 -1
  72. package/src/assets/web-panel/assets/{index-zd2QMXg3.js → index-C1uasX17.js} +1 -1
  73. package/src/assets/web-panel/assets/{index-CNBAfkwP.js → index-C8LBTJ8l.js} +1 -1
  74. package/src/assets/web-panel/assets/index-C8wxMp_Z.js +1 -0
  75. package/src/assets/web-panel/assets/{index-CWIWWW-z.js → index-CDWpDZgD.js} +1 -1
  76. package/src/assets/web-panel/assets/{index-D6LoUbxl.js → index-CMKIwCKt.js} +1 -1
  77. package/src/assets/web-panel/assets/{index-CG3GraND.js → index-CYQVfA_R.js} +1 -1
  78. package/src/assets/web-panel/assets/index-Cps5gHTC.js +1 -0
  79. package/src/assets/web-panel/assets/{index-CtUuEt-Q.js → index-CzGZa5Ow.js} +1 -1
  80. package/src/assets/web-panel/assets/{index-BiNBF-Y_.js → index-D5hcqkeW.js} +1 -1
  81. package/src/assets/web-panel/assets/{index-CSF19Udr.js → index-D7VXIYiM.js} +1 -1
  82. package/src/assets/web-panel/assets/{index-Crg53xLr.js → index-DUg23xvw.js} +1 -1
  83. package/src/assets/web-panel/assets/{index-CV88wBE4.js → index-DXEG5UZz.js} +1 -1
  84. package/src/assets/web-panel/assets/{index-6h7y54EK.js → index-Dbaj1U7z.js} +1 -1
  85. package/src/assets/web-panel/assets/{index-xMCJBS-g.js → index-DiZ3aYcD.js} +1 -1
  86. package/src/assets/web-panel/assets/{index-BLYcQWYW.js → index-DlSUq1W3.js} +3 -3
  87. package/src/assets/web-panel/assets/{index-Bd2qQOOl.js → index-DzKYMmMu.js} +1 -1
  88. package/src/assets/web-panel/assets/{index-DktiurCg.js → index-E7-XzEfE.js} +1 -1
  89. package/src/assets/web-panel/assets/{index-vldy_vgJ.js → index-KZbeEKa2.js} +2 -2
  90. package/src/assets/web-panel/assets/{index-bcMcPEIb.js → index-NJzH4w-U.js} +2 -2
  91. package/src/assets/web-panel/assets/{index-ytX4yyzs.js → index-TOigBSzr.js} +1 -1
  92. package/src/assets/web-panel/assets/{index-Cx1K1h3R.js → index-ThYPc1ub.js} +1 -1
  93. package/src/assets/web-panel/assets/{index-Bxy0lJmt.js → index-UmTF1KQy.js} +1 -1
  94. package/src/assets/web-panel/assets/{index-NIIkheoM.js → index-cqU5_E3h.js} +1 -1
  95. package/src/assets/web-panel/assets/{index-BiCTVNS6.js → index-d3aFQf7u.js} +2 -2
  96. package/src/assets/web-panel/assets/{index-B7kbey_Y.js → index-dzwxxvlh.js} +1 -1
  97. package/src/assets/web-panel/assets/{index-CzondF_H.js → index-q__DPgfq.js} +1 -1
  98. package/src/assets/web-panel/assets/{initDefaultProps-DbZ1HRc7.js → initDefaultProps-BcWs5QbR.js} +1 -1
  99. package/src/assets/web-panel/assets/{motion-KRtHWi9E.js → motion-CrLibvjP.js} +1 -1
  100. package/src/assets/web-panel/assets/{move-B-zOsK6x.js → move-B5c6-VQr.js} +1 -1
  101. package/src/assets/web-panel/assets/{omit-DNrV7ppz.js → omit-DpIEkCg5.js} +1 -1
  102. package/src/assets/web-panel/assets/{pickAttrs-B-AcyBpj.js → pickAttrs-KtgV4VKB.js} +1 -1
  103. package/src/assets/web-panel/assets/{placementArrow-Bu6BH9hd.js → placementArrow-UtY5srm7.js} +1 -1
  104. package/src/assets/web-panel/assets/{responsiveObserve-BMFIMTDs.js → responsiveObserve-C---VD6e.js} +1 -1
  105. package/src/assets/web-panel/assets/{slide-xFVMoPwP.js → slide-hr0X8KAK.js} +1 -1
  106. package/src/assets/web-panel/assets/{statusUtils-HggAwxhx.js → statusUtils-CgoYe6s3.js} +1 -1
  107. package/src/assets/web-panel/assets/{styleChecker-CG5OjpVk.js → styleChecker-DJv72QFU.js} +1 -1
  108. package/src/assets/web-panel/assets/{transition-C4Iby8cT.js → transition-D2wU6PAY.js} +1 -1
  109. package/src/assets/web-panel/assets/{useConfigInject-BlTQDaaH.js → useConfigInject-DqhngD-R.js} +1 -1
  110. package/src/assets/web-panel/assets/{useFlexGapSupport-B4LJA5eG.js → useFlexGapSupport-CTWfwV__.js} +1 -1
  111. package/src/assets/web-panel/assets/{vnode-BToqLQaO.js → vnode-B2xg11HE.js} +1 -1
  112. package/src/assets/web-panel/assets/{zoom-Cdr5kiga.js → zoom-BGImMPSi.js} +1 -1
  113. package/src/assets/web-panel/index.html +2 -2
  114. package/src/assets/web-panel/assets/AppLayout-C39vcA-h.js +0 -1
  115. package/src/assets/web-panel/assets/AppLayout-CQShwOhr.css +0 -1
  116. package/src/assets/web-panel/assets/index-BafG-FrC.js +0 -1
  117. package/src/assets/web-panel/assets/index-DIHZW5eL.js +0 -1
  118. package/src/assets/web-panel/assets/index-pX3VTY9A.js +0 -1
@@ -1,3 +1,3 @@
1
- import{k as le,r as O,l as oe,M as ae,F as p,D as l,I as o,u as r,c as t,x as s,m as A,G as J,j as S,q as x,B as ne,v as i,J as m,N as q,H as P,L as j}from"./vendor-BVetwVfk.js";import{u as H}from"./ws-Bv7YH0VB.js";import{u as re}from"./chat-CVn-r3oV.js";import{_ as ie}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{y as ue,F as de,z as K,b as Q,M as X,H as ve,J as ce,a as Y,N as pe,c as me}from"./icons-DbKJDD5_.js";function fe(){return{samples:0,compressedSamples:0,hitRate:0,totalSavedTokens:0,averageSavedTokens:0,totalOriginalTokens:0,totalCompressedTokens:0,netSavingsRate:0,variantDistribution:{},strategyDistribution:[],providerDistribution:[],modelDistribution:[]}}const ye=le("dashboard",()=>{const B=O(!1),N=O(!1),d=O({wsStatus:"disconnected",activeLlm:null,activeModel:null,skillCount:0,sessionCount:0,providerCount:0,appRunning:!1,setupDone:!1,edition:"",mcpCount:null,noteCount:null}),E=O(""),y=O(fe()),v=O({windowPreset:"all",provider:"",model:""});let _=null;function F(n=H()){_||(_=n.onRuntimeEvent(c=>{c.type==="compression:summary"?M(c.payload?.summary||{}):c.type==="session:start"?d.value.sessionCount=(d.value.sessionCount||0)+1:c.type==="session:end"&&(d.value.sessionCount=Math.max(0,(d.value.sessionCount||0)-1))}))}function I(){_&&(_(),_=null)}function M(n){y.value={...y.value,...n||{}}}function U(n){return n==="1h"?3600*1e3:n==="24h"?1440*60*1e3:n==="7d"?10080*60*1e3:null}function R(n){d.value.appRunning=n.includes("Desktop app running"),d.value.setupDone=n.includes("Setup completed");const c=n.match(/Edition:\s+(\S+)/i);c&&(d.value.edition=c[1]);const b=n.match(/LLM:\s+(\S+)\s+\(([^)]+)\)/i);if(b)d.value.activeLlm=b[1],d.value.activeModel=b[2];else{const k=n.match(/LLM:\s+(\S+)/i);k&&(d.value.activeLlm=k[1])}}async function f(){const n=H();F(n),N.value=!0;const c={type:"compression-stats",windowMs:U(v.value.windowPreset)};v.value.provider&&(c.provider=v.value.provider),v.value.model&&(c.model=v.value.model);try{const b=await n.sendRaw(c,1e4);M(b.summary||{})}catch{}finally{N.value=!1}}async function g(){const n=H();F(n),B.value=!0,d.value.wsStatus=n.status,E.value="";try{const[c,b]=await Promise.allSettled([n.execute("status",15e3),n.listSessions()]);if(c.status==="fulfilled"){const k=c.value.output;E.value=k.split(`
1
+ import{k as le,r as O,l as oe,M as ae,F as p,D as l,I as o,u as r,c as t,x as s,m as A,G as J,j as S,q as x,B as ne,v as i,J as m,N as q,H as P,L as j}from"./vendor-BVetwVfk.js";import{u as H}from"./ws-Bv7YH0VB.js";import{u as re}from"./chat-CVn-r3oV.js";import{_ as ie}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{z as ue,F as de,H as K,b as Q,M as X,J as ve,N as ce,a as Y,O as pe,c as me}from"./icons-srBCpwXl.js";function fe(){return{samples:0,compressedSamples:0,hitRate:0,totalSavedTokens:0,averageSavedTokens:0,totalOriginalTokens:0,totalCompressedTokens:0,netSavingsRate:0,variantDistribution:{},strategyDistribution:[],providerDistribution:[],modelDistribution:[]}}const ye=le("dashboard",()=>{const B=O(!1),N=O(!1),d=O({wsStatus:"disconnected",activeLlm:null,activeModel:null,skillCount:0,sessionCount:0,providerCount:0,appRunning:!1,setupDone:!1,edition:"",mcpCount:null,noteCount:null}),E=O(""),y=O(fe()),v=O({windowPreset:"all",provider:"",model:""});let _=null;function F(n=H()){_||(_=n.onRuntimeEvent(c=>{c.type==="compression:summary"?M(c.payload?.summary||{}):c.type==="session:start"?d.value.sessionCount=(d.value.sessionCount||0)+1:c.type==="session:end"&&(d.value.sessionCount=Math.max(0,(d.value.sessionCount||0)-1))}))}function I(){_&&(_(),_=null)}function M(n){y.value={...y.value,...n||{}}}function U(n){return n==="1h"?3600*1e3:n==="24h"?1440*60*1e3:n==="7d"?10080*60*1e3:null}function R(n){d.value.appRunning=n.includes("Desktop app running"),d.value.setupDone=n.includes("Setup completed");const c=n.match(/Edition:\s+(\S+)/i);c&&(d.value.edition=c[1]);const b=n.match(/LLM:\s+(\S+)\s+\(([^)]+)\)/i);if(b)d.value.activeLlm=b[1],d.value.activeModel=b[2];else{const k=n.match(/LLM:\s+(\S+)/i);k&&(d.value.activeLlm=k[1])}}async function f(){const n=H();F(n),N.value=!0;const c={type:"compression-stats",windowMs:U(v.value.windowPreset)};v.value.provider&&(c.provider=v.value.provider),v.value.model&&(c.model=v.value.model);try{const b=await n.sendRaw(c,1e4);M(b.summary||{})}catch{}finally{N.value=!1}}async function g(){const n=H();F(n),B.value=!0,d.value.wsStatus=n.status,E.value="";try{const[c,b]=await Promise.allSettled([n.execute("status",15e3),n.listSessions()]);if(c.status==="fulfilled"){const k=c.value.output;E.value=k.split(`
2
2
  `).slice(0,20).join(`
3
3
  `),R(k)}b.status==="fulfilled"&&(d.value.sessionCount=b.value.length),Promise.allSettled([n.execute("skill sources",15e3),n.execute("llm providers",15e3)]).then(([k,$])=>{if(k.status==="fulfilled"){const z=k.value.output.match(/(\d+)\s*(?:skills|技能)/i);z&&(d.value.skillCount=parseInt(z[1],10))}if($.status==="fulfilled"){const V=$.value.output.match(/active[:\s]+(\S+)/i);V&&!d.value.activeLlm&&(d.value.activeLlm=V[1])}}),n.execute("mcp servers",1e4).then(({output:k})=>{const $=(k.match(/^[a-z]/gm)||[]).length;d.value.mcpCount=$}).catch(()=>{d.value.mcpCount=0}),await f()}catch{}finally{B.value=!1}}return{loading:B,compressionLoading:N,stats:d,statusLog:E,compression:y,telemetryFilters:v,ensureRuntimeSubscription:F,stopRuntimeSubscription:I,refresh:g,refreshCompression:f,applyCompressionSummary:M,toWindowMs:U}}),_e={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"20px"}},ge={class:"page-sub"},be={style:{display:"flex","align-items":"center",gap:"12px","flex-wrap":"wrap"}},ke={style:{color:"#91caff","font-weight":"600"}},we={style:{color:"#4a6fa5","font-size":"11px","font-family":"monospace"}},Ce={class:"stat-header"},xe={class:"stat-sub"},Se={class:"stat-header"},he={class:"stat-value",style:{color:"#91caff","font-size":"15px",overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"}},Re={class:"stat-sub",style:{overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"}},$e={class:"stat-header"},ze={class:"stat-value",style:{color:"#1677ff"}},De={class:"stat-header"},Le={class:"stat-value",style:{color:"#c084fc"}},Me={class:"stat-header"},Te={class:"stat-sub"},Oe={class:"stat-header"},Pe={class:"stat-value",style:{color:"#13c2c2"}},je={class:"stat-header"},Ne={class:"stat-value",style:{color:"#faad14"}},Ee={class:"status-log"},Fe={class:"telemetry-filter"},Ie={class:"telemetry-filter"},Ae={class:"telemetry-filter"},Be={class:"telemetry-card"},Ue={class:"telemetry-value"},Ve={class:"telemetry-sub"},He={class:"telemetry-card"},We={class:"telemetry-value"},Ge={class:"telemetry-sub"},Je={class:"telemetry-card"},qe={class:"telemetry-value"},Ke={class:"telemetry-sub"},Qe={class:"telemetry-section"},Xe={key:0,class:"telemetry-empty"},Ye={key:1,class:"telemetry-list"},Ze={class:"telemetry-section"},et={key:0,class:"telemetry-empty"},tt={key:1,class:"telemetry-list"},st={class:"telemetry-section"},lt={key:0,class:"telemetry-empty"},ot={key:1,class:"telemetry-list"},at={class:"telemetry-section"},nt={key:0,class:"telemetry-empty"},rt={key:1,class:"telemetry-list"},it={style:{color:"#91caff"}},ut={style:{color:"var(--text-muted)","font-family":"monospace","font-size":"11px"}},dt={style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},vt={style:{color:"var(--text-muted)"}},ct={__name:"Dashboard",setup(B){const N=ne(),d=H(),E=re(),y=ye(),v=window.__CC_CONFIG__||{},_=S(()=>v.mode==="project"),F="v5.0.3.1",I=S(()=>d.status),M=S(()=>y.loading),U=S(()=>y.statusLog),R=S(()=>y.telemetryFilters),f=S(()=>y.compression),g=S(()=>y.stats),n=S(()=>Object.entries(f.value.variantDistribution||{})),c=S(()=>f.value.providerDistribution||[]),b=S(()=>f.value.modelDistribution||[]);async function k(){await y.refresh()}async function $(){await y.refreshCompression()}function z(w){return`${((w||0)*100).toFixed(1)}%`}async function V(){await E.createSession("agent"),N.push("/chat")}return oe(()=>{y.ensureRuntimeSubscription(d),setTimeout(k,300)}),ae(()=>{y.stopRuntimeSubscription()}),(w,e)=>{const D=x("a-button"),W=x("a-tag"),C=x("a-card"),Z=x("a-badge"),u=x("a-col"),h=x("a-row"),ee=x("a-space"),L=x("a-select-option"),G=x("a-select"),T=x("a-descriptions-item"),te=x("a-descriptions");return i(),p("div",null,[l("div",_e,[l("div",null,[e[13]||(e[13]=l("h2",{class:"page-title"},"仪表板",-1)),l("p",ge,o(_.value?`项目「${r(v).projectName||"未命名"}」运行概览`:"ChainlessChain 全局运行概览"),1)]),t(D,{type:"primary",ghost:"",loading:M.value,onClick:k},{icon:s(()=>[t(r(ue))]),default:s(()=>[e[14]||(e[14]=m(" 刷新 ",-1))]),_:1},8,["loading"])]),_.value?(i(),A(C,{key:0,style:{background:"rgba(22,119,255,.08)","border-color":"rgba(22,119,255,.25)","margin-bottom":"16px"},size:"small"},{default:s(()=>[l("div",be,[t(r(de),{style:{color:"#1677ff","font-size":"18px"}}),l("div",null,[l("div",ke,o(r(v).projectName||"项目"),1),l("div",we,o(r(v).projectRoot),1)]),t(W,{color:"blue",style:{"margin-left":"auto"}},{default:s(()=>[...e[15]||(e[15]=[m("项目面板",-1)])]),_:1})])]),_:1})):J("",!0),t(h,{gutter:[12,12],style:{"margin-bottom":"16px"}},{default:s(()=>[t(u,{xs:24,sm:12,lg:6},{default:s(()=>[t(C,{class:"stat-card gateway-card",size:"small"},{default:s(()=>[l("div",Ce,[e[16]||(e[16]=l("span",{class:"stat-label"},"WebSocket Gateway",-1)),t(Z,{status:I.value==="connected"?"success":"error"},null,8,["status"])]),l("div",{class:"stat-value",style:q({color:I.value==="connected"?"#52c41a":"#888"})},o(I.value==="connected"?"运行中":"未连接"),5),l("div",xe,"端口 "+o(r(v).wsPort||18800)+" · "+o(r(v).wsHost||"127.0.0.1"),1)]),_:1})]),_:1}),t(u,{xs:24,sm:12,lg:6},{default:s(()=>[t(C,{class:"stat-card",size:"small"},{default:s(()=>[l("div",Se,[e[17]||(e[17]=l("span",{class:"stat-label"},"当前 LLM",-1)),t(r(K),{style:{color:"#1677ff"}})]),l("div",he,o(g.value.activeLlm||"未配置"),1),l("div",Re,o(g.value.activeModel||"—"),1)]),_:1})]),_:1}),t(u,{xs:24,sm:12,lg:6},{default:s(()=>[t(C,{class:"stat-card",size:"small",style:{cursor:"pointer"},onClick:e[0]||(e[0]=a=>w.$router.push("/skills"))},{default:s(()=>[l("div",$e,[e[18]||(e[18]=l("span",{class:"stat-label"},"可用技能",-1)),t(r(Q),{style:{color:"#1677ff"}})]),l("div",ze,o(g.value.skillCount||"—"),1),e[19]||(e[19]=l("div",{class:"stat-sub"},"点击管理技能",-1))]),_:1})]),_:1}),t(u,{xs:24,sm:12,lg:6},{default:s(()=>[t(C,{class:"stat-card",size:"small",style:{cursor:"pointer"},onClick:e[1]||(e[1]=a=>w.$router.push("/chat"))},{default:s(()=>[l("div",De,[e[20]||(e[20]=l("span",{class:"stat-label"},"AI 会话",-1)),t(r(X),{style:{color:"#722ed1"}})]),l("div",Le,o(g.value.sessionCount),1),e[21]||(e[21]=l("div",{class:"stat-sub"},"点击进入对话",-1))]),_:1})]),_:1})]),_:1}),t(h,{gutter:[12,12],style:{"margin-bottom":"16px"}},{default:s(()=>[t(u,{xs:24,sm:8},{default:s(()=>[t(C,{class:"stat-card",size:"small"},{default:s(()=>[l("div",Me,[e[22]||(e[22]=l("span",{class:"stat-label"},"应用状态",-1)),t(r(ve),{style:q({color:g.value.appRunning?"#52c41a":"#888"})},null,8,["style"])]),l("div",{class:"stat-value",style:q({color:g.value.appRunning?"#52c41a":"#888",fontSize:"15px"})},o(g.value.appRunning?"运行中":g.value.setupDone?"已初始化":"未启动"),5),l("div",Te,o(g.value.edition||"Community")+" Edition",1)]),_:1})]),_:1}),t(u,{xs:24,sm:8},{default:s(()=>[t(C,{class:"stat-card",size:"small",style:{cursor:"pointer"},onClick:e[2]||(e[2]=a=>w.$router.push("/mcp"))},{default:s(()=>[l("div",Oe,[e[23]||(e[23]=l("span",{class:"stat-label"},"MCP 工具",-1)),t(r(ce),{style:{color:"#13c2c2"}})]),l("div",Pe,o(g.value.mcpCount??"—"),1),e[24]||(e[24]=l("div",{class:"stat-sub"},"已挂载扩展",-1))]),_:1})]),_:1}),t(u,{xs:24,sm:8},{default:s(()=>[t(C,{class:"stat-card",size:"small",style:{cursor:"pointer"},onClick:e[3]||(e[3]=a=>w.$router.push("/notes"))},{default:s(()=>[l("div",je,[e[25]||(e[25]=l("span",{class:"stat-label"},"知识库笔记",-1)),t(r(Y),{style:{color:"#faad14"}})]),l("div",Ne,o(g.value.noteCount??"—"),1),e[26]||(e[26]=l("div",{class:"stat-sub"},"点击管理笔记",-1))]),_:1})]),_:1})]),_:1}),t(h,{gutter:[16,16]},{default:s(()=>[t(u,{xs:24,lg:10},{default:s(()=>[t(C,{title:"快速操作",style:{background:"var(--bg-card)","border-color":"var(--border-color)",height:"100%"}},{default:s(()=>[t(ee,{direction:"vertical",style:{width:"100%"},size:"middle"},{default:s(()=>[t(D,{type:"primary",block:"",onClick:e[4]||(e[4]=a=>w.$router.push("/chat"))},{icon:s(()=>[t(r(X))]),default:s(()=>[m(" "+o(_.value?"进入项目 Chat":"新建 AI 对话"),1)]),_:1}),t(D,{block:"",onClick:V,style:{background:"rgba(114,46,209,.12)","border-color":"#722ed1",color:"#722ed1"}},{icon:s(()=>[t(r(K))]),default:s(()=>[e[27]||(e[27]=m(" 启动 Agent 模式 ",-1))]),_:1}),t(h,{gutter:8},{default:s(()=>[t(u,{span:12},{default:s(()=>[t(D,{block:"",onClick:e[5]||(e[5]=a=>w.$router.push("/services")),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:s(()=>[t(r(pe))]),default:s(()=>[e[28]||(e[28]=m(" 服务管理 ",-1))]),_:1})]),_:1}),t(u,{span:12},{default:s(()=>[t(D,{block:"",onClick:e[6]||(e[6]=a=>w.$router.push("/logs")),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:s(()=>[t(r(Y))]),default:s(()=>[e[29]||(e[29]=m(" 查看日志 ",-1))]),_:1})]),_:1})]),_:1}),t(h,{gutter:8},{default:s(()=>[t(u,{span:12},{default:s(()=>[t(D,{block:"",onClick:e[7]||(e[7]=a=>w.$router.push("/skills")),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:s(()=>[t(r(Q))]),default:s(()=>[e[30]||(e[30]=m(" 技能管理 ",-1))]),_:1})]),_:1}),t(u,{span:12},{default:s(()=>[t(D,{block:"",onClick:e[8]||(e[8]=a=>w.$router.push("/providers")),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:s(()=>[t(r(me))]),default:s(()=>[e[31]||(e[31]=m(" LLM 配置 ",-1))]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}),t(u,{xs:24,lg:14},{default:s(()=>[t(C,{title:"最近状态",style:{background:"var(--bg-card)","border-color":"var(--border-color)"},loading:M.value},{extra:s(()=>[t(D,{type:"link",size:"small",onClick:e[9]||(e[9]=a=>w.$router.push("/logs"))},{default:s(()=>[...e[32]||(e[32]=[m("查看更多",-1)])]),_:1})]),default:s(()=>[l("pre",Ee,o(U.value||"点击刷新加载系统状态..."),1)]),_:1},8,["loading"])]),_:1})]),_:1}),t(C,{title:"压缩策略观测",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-top":"16px"},loading:M.value},{default:s(()=>[t(h,{gutter:[12,12],style:{"margin-bottom":"12px"}},{default:s(()=>[t(u,{xs:24,md:8},{default:s(()=>[l("div",Fe,[e[37]||(e[37]=l("div",{class:"telemetry-filter-label"},"时间窗口",-1)),t(G,{value:R.value.windowPreset,"onUpdate:value":e[10]||(e[10]=a=>R.value.windowPreset=a),style:{width:"100%"},onChange:$},{default:s(()=>[t(L,{value:"all"},{default:s(()=>[...e[33]||(e[33]=[m("全部样本",-1)])]),_:1}),t(L,{value:"1h"},{default:s(()=>[...e[34]||(e[34]=[m("近 1 小时",-1)])]),_:1}),t(L,{value:"24h"},{default:s(()=>[...e[35]||(e[35]=[m("近 24 小时",-1)])]),_:1}),t(L,{value:"7d"},{default:s(()=>[...e[36]||(e[36]=[m("近 7 天",-1)])]),_:1})]),_:1},8,["value"])])]),_:1}),t(u,{xs:24,md:8},{default:s(()=>[l("div",Ie,[e[39]||(e[39]=l("div",{class:"telemetry-filter-label"},"Provider 切片",-1)),t(G,{value:R.value.provider,"onUpdate:value":e[11]||(e[11]=a=>R.value.provider=a),style:{width:"100%"},onChange:$},{default:s(()=>[t(L,{value:""},{default:s(()=>[...e[38]||(e[38]=[m("全部 Provider",-1)])]),_:1}),(i(!0),p(P,null,j(c.value,a=>(i(),A(L,{key:a.key,value:a.key},{default:s(()=>[m(o(a.key),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])])]),_:1}),t(u,{xs:24,md:8},{default:s(()=>[l("div",Ae,[e[41]||(e[41]=l("div",{class:"telemetry-filter-label"},"Model 切片",-1)),t(G,{value:R.value.model,"onUpdate:value":e[12]||(e[12]=a=>R.value.model=a),style:{width:"100%"},onChange:$},{default:s(()=>[t(L,{value:""},{default:s(()=>[...e[40]||(e[40]=[m("全部 Model",-1)])]),_:1}),(i(!0),p(P,null,j(b.value,a=>(i(),A(L,{key:a.key,value:a.key},{default:s(()=>[m(o(a.key),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])])]),_:1})]),_:1}),t(h,{gutter:[12,12]},{default:s(()=>[t(u,{xs:24,sm:8},{default:s(()=>[l("div",Be,[e[42]||(e[42]=l("div",{class:"telemetry-label"},"压缩命中率",-1)),l("div",Ue,o(z(f.value.hitRate)),1),l("div",Ve,o(f.value.compressedSamples)+" / "+o(f.value.samples)+" 次压缩产生了有效节省 ",1)])]),_:1}),t(u,{xs:24,sm:8},{default:s(()=>[l("div",He,[e[43]||(e[43]=l("div",{class:"telemetry-label"},"累计节省 Token",-1)),l("div",We,o(f.value.totalSavedTokens),1),l("div",Ge,"平均每次 "+o(f.value.averageSavedTokens)+" Token",1)])]),_:1}),t(u,{xs:24,sm:8},{default:s(()=>[l("div",Je,[e[44]||(e[44]=l("div",{class:"telemetry-label"},"净节省率",-1)),l("div",qe,o(z(f.value.netSavingsRate)),1),l("div",Ke," 原始 "+o(f.value.totalOriginalTokens)+" -> 压缩后 "+o(f.value.totalCompressedTokens),1)])]),_:1})]),_:1}),t(h,{gutter:[16,16],style:{"margin-top":"12px"}},{default:s(()=>[t(u,{xs:24,lg:12},{default:s(()=>[l("div",Qe,[e[45]||(e[45]=l("div",{class:"telemetry-section-title"},"策略命中分布",-1)),f.value.strategyDistribution.length===0?(i(),p("div",Xe,"暂无压缩样本")):(i(),p("div",Ye,[(i(!0),p(P,null,j(f.value.strategyDistribution.slice(0,6),a=>(i(),p("div",{key:a.strategy,class:"telemetry-row"},[l("span",null,o(a.strategy),1),l("span",null,o(a.hits)+" 次 · "+o(z(a.hitRate)),1)]))),128))]))])]),_:1}),t(u,{xs:24,lg:12},{default:s(()=>[l("div",Ze,[e[46]||(e[46]=l("div",{class:"telemetry-section-title"},"变体分布",-1)),n.value.length===0?(i(),p("div",et,"暂无变体数据")):(i(),p("div",tt,[(i(!0),p(P,null,j(n.value,([a,se])=>(i(),p("div",{key:a,class:"telemetry-row"},[l("span",null,o(a),1),l("span",null,o(se)+" 次",1)]))),128))]))])]),_:1})]),_:1}),t(h,{gutter:[16,16],style:{"margin-top":"12px"}},{default:s(()=>[t(u,{xs:24,lg:12},{default:s(()=>[l("div",st,[e[47]||(e[47]=l("div",{class:"telemetry-section-title"},"Provider 切片",-1)),c.value.length===0?(i(),p("div",lt,"暂无 Provider 数据")):(i(),p("div",ot,[(i(!0),p(P,null,j(c.value.slice(0,6),a=>(i(),p("div",{key:a.key,class:"telemetry-row"},[l("span",null,o(a.key),1),l("span",null,o(a.samples)+" 次 · "+o(z(a.hitRate)),1)]))),128))]))])]),_:1}),t(u,{xs:24,lg:12},{default:s(()=>[l("div",at,[e[48]||(e[48]=l("div",{class:"telemetry-section-title"},"Model 切片",-1)),b.value.length===0?(i(),p("div",nt,"暂无 Model 数据")):(i(),p("div",rt,[(i(!0),p(P,null,j(b.value.slice(0,6),a=>(i(),p("div",{key:a.key,class:"telemetry-row"},[l("span",null,o(a.key),1),l("span",null,o(a.samples)+" 次 · "+o(a.savedTokens)+" saved",1)]))),128))]))])]),_:1})]),_:1})]),_:1},8,["loading"]),t(C,{title:"运行信息",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-top":"16px"}},{default:s(()=>[t(te,{column:{xs:1,sm:2,lg:3},size:"small"},{default:s(()=>[t(T,{label:"面板模式"},{default:s(()=>[t(W,{color:_.value?"blue":"purple"},{default:s(()=>[m(o(_.value?"项目级":"全局"),1)]),_:1},8,["color"])]),_:1}),_.value?(i(),A(T,{key:0,label:"项目名称"},{default:s(()=>[l("span",it,o(r(v).projectName||"—"),1)]),_:1})):J("",!0),_.value?(i(),A(T,{key:1,label:"项目路径"},{default:s(()=>[l("span",ut,o(r(v).projectRoot),1)]),_:1})):J("",!0),t(T,{label:"WebSocket"},{default:s(()=>[l("span",dt," ws://"+o(r(v).wsHost||"127.0.0.1")+":"+o(r(v).wsPort||18800),1)]),_:1}),t(T,{label:"认证"},{default:s(()=>[t(W,{color:r(v).wsToken?"green":"default",style:{"font-size":"11px"}},{default:s(()=>[m(o(r(v).wsToken?"已启用":"未启用"),1)]),_:1},8,["color"])]),_:1}),t(T,{label:"版本"},{default:s(()=>[l("span",vt,o(r(F)),1)]),_:1})]),_:1})]),_:1})])}}},gt=ie(ct,[["__scopeId","data-v-ab1b4e86"]]);export{gt as default};
@@ -1 +1 @@
1
- import{_ as m,c as V,I as B}from"./useConfigInject-BlTQDaaH.js";import{P as n}from"./index-U4Zd5IK6.js";import{T as D}from"./Trigger-D9s00Sgd.js";import{c as g}from"./vnode-BToqLQaO.js";import{d as M,r as v,w as L,c as d,H as W,j as y}from"./vendor-BVetwVfk.js";const l={adjustX:1,adjustY:1},s=[0,0],$={topLeft:{points:["bl","tl"],overflow:l,offset:[0,-4],targetOffset:s},topCenter:{points:["bc","tc"],overflow:l,offset:[0,-4],targetOffset:s},topRight:{points:["br","tr"],overflow:l,offset:[0,-4],targetOffset:s},bottomLeft:{points:["tl","bl"],overflow:l,offset:[0,4],targetOffset:s},bottomCenter:{points:["tc","bc"],overflow:l,offset:[0,4],targetOffset:s},bottomRight:{points:["tr","br"],overflow:l,offset:[0,4],targetOffset:s}};var F=function(e,c){var r={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&c.indexOf(o)<0&&(r[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,o=Object.getOwnPropertySymbols(e);a<o.length;a++)c.indexOf(o[a])<0&&Object.prototype.propertyIsEnumerable.call(e,o[a])&&(r[o[a]]=e[o[a]]);return r};const Y=M({compatConfig:{MODE:3},props:{minOverlayWidthMatchTrigger:{type:Boolean,default:void 0},arrow:{type:Boolean,default:!1},prefixCls:n.string.def("rc-dropdown"),transitionName:String,overlayClassName:n.string.def(""),openClassName:String,animation:n.any,align:n.object,overlayStyle:{type:Object,default:void 0},placement:n.string.def("bottomLeft"),overlay:n.any,trigger:n.oneOfType([n.string,n.arrayOf(n.string)]).def("hover"),alignPoint:{type:Boolean,default:void 0},showAction:n.array,hideAction:n.array,getPopupContainer:Function,visible:{type:Boolean,default:void 0},defaultVisible:{type:Boolean,default:!1},mouseEnterDelay:n.number.def(.15),mouseLeaveDelay:n.number.def(.1)},emits:["visibleChange","overlayClick"],setup(e,c){let{slots:r,emit:o,expose:a}=c;const f=v(!!e.visible);L(()=>e.visible,t=>{t!==void 0&&(f.value=t)});const p=v();a({triggerRef:p});const b=t=>{e.visible===void 0&&(f.value=!1),o("overlayClick",t)},h=t=>{e.visible===void 0&&(f.value=t),o("visibleChange",t)},C=()=>{var t;const i=(t=r.overlay)===null||t===void 0?void 0:t.call(r),u={prefixCls:`${e.prefixCls}-menu`,onClick:b};return d(W,{key:B},[e.arrow&&d("div",{class:`${e.prefixCls}-arrow`},null),g(i,u,!1)])},w=y(()=>{const{minOverlayWidthMatchTrigger:t=!e.alignPoint}=e;return t}),O=()=>{var t;const i=(t=r.default)===null||t===void 0?void 0:t.call(r);return f.value&&i?g(i[0],{class:e.openClassName||`${e.prefixCls}-open`},!1):i},P=y(()=>!e.hideAction&&e.trigger.indexOf("contextmenu")!==-1?["click"]:e.hideAction);return()=>{const{prefixCls:t,arrow:i,showAction:u,overlayStyle:x,trigger:A,placement:N,align:j,getPopupContainer:S,transitionName:T,animation:_,overlayClassName:k}=e,E=F(e,["prefixCls","arrow","showAction","overlayStyle","trigger","placement","align","getPopupContainer","transitionName","animation","overlayClassName"]);return d(D,m(m({},E),{},{prefixCls:t,ref:p,popupClassName:V(k,{[`${t}-show-arrow`]:i}),popupStyle:x,builtinPlacements:$,action:A,showAction:u,hideAction:P.value||[],popupPlacement:N,popupAlign:j,popupTransitionName:T,popupAnimation:_,popupVisible:f.value,stretch:w.value?"minWidth":"",onPopupVisibleChange:h,getPopupContainer:S}),{popup:C,default:O})}}});export{Y as D};
1
+ import{_ as m,c as V,I as B}from"./useConfigInject-DqhngD-R.js";import{P as n}from"./index-U4Zd5IK6.js";import{T as D}from"./Trigger-DmhLeltH.js";import{c as g}from"./vnode-B2xg11HE.js";import{d as M,r as v,w as L,c as d,H as W,j as y}from"./vendor-BVetwVfk.js";const l={adjustX:1,adjustY:1},s=[0,0],$={topLeft:{points:["bl","tl"],overflow:l,offset:[0,-4],targetOffset:s},topCenter:{points:["bc","tc"],overflow:l,offset:[0,-4],targetOffset:s},topRight:{points:["br","tr"],overflow:l,offset:[0,-4],targetOffset:s},bottomLeft:{points:["tl","bl"],overflow:l,offset:[0,4],targetOffset:s},bottomCenter:{points:["tc","bc"],overflow:l,offset:[0,4],targetOffset:s},bottomRight:{points:["tr","br"],overflow:l,offset:[0,4],targetOffset:s}};var F=function(e,c){var r={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&c.indexOf(o)<0&&(r[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,o=Object.getOwnPropertySymbols(e);a<o.length;a++)c.indexOf(o[a])<0&&Object.prototype.propertyIsEnumerable.call(e,o[a])&&(r[o[a]]=e[o[a]]);return r};const Y=M({compatConfig:{MODE:3},props:{minOverlayWidthMatchTrigger:{type:Boolean,default:void 0},arrow:{type:Boolean,default:!1},prefixCls:n.string.def("rc-dropdown"),transitionName:String,overlayClassName:n.string.def(""),openClassName:String,animation:n.any,align:n.object,overlayStyle:{type:Object,default:void 0},placement:n.string.def("bottomLeft"),overlay:n.any,trigger:n.oneOfType([n.string,n.arrayOf(n.string)]).def("hover"),alignPoint:{type:Boolean,default:void 0},showAction:n.array,hideAction:n.array,getPopupContainer:Function,visible:{type:Boolean,default:void 0},defaultVisible:{type:Boolean,default:!1},mouseEnterDelay:n.number.def(.15),mouseLeaveDelay:n.number.def(.1)},emits:["visibleChange","overlayClick"],setup(e,c){let{slots:r,emit:o,expose:a}=c;const f=v(!!e.visible);L(()=>e.visible,t=>{t!==void 0&&(f.value=t)});const p=v();a({triggerRef:p});const b=t=>{e.visible===void 0&&(f.value=!1),o("overlayClick",t)},h=t=>{e.visible===void 0&&(f.value=t),o("visibleChange",t)},C=()=>{var t;const i=(t=r.overlay)===null||t===void 0?void 0:t.call(r),u={prefixCls:`${e.prefixCls}-menu`,onClick:b};return d(W,{key:B},[e.arrow&&d("div",{class:`${e.prefixCls}-arrow`},null),g(i,u,!1)])},w=y(()=>{const{minOverlayWidthMatchTrigger:t=!e.alignPoint}=e;return t}),O=()=>{var t;const i=(t=r.default)===null||t===void 0?void 0:t.call(r);return f.value&&i?g(i[0],{class:e.openClassName||`${e.prefixCls}-open`},!1):i},P=y(()=>!e.hideAction&&e.trigger.indexOf("contextmenu")!==-1?["click"]:e.hideAction);return()=>{const{prefixCls:t,arrow:i,showAction:u,overlayStyle:x,trigger:A,placement:N,align:j,getPopupContainer:S,transitionName:T,animation:_,overlayClassName:k}=e,E=F(e,["prefixCls","arrow","showAction","overlayStyle","trigger","placement","align","getPopupContainer","transitionName","animation","overlayClassName"]);return d(D,m(m({},E),{},{prefixCls:t,ref:p,popupClassName:V(k,{[`${t}-show-arrow`]:i}),popupStyle:x,builtinPlacements:$,action:A,showAction:u,hideAction:P.value||[],popupPlacement:N,popupAlign:j,popupTransitionName:T,popupAnimation:_,popupVisible:f.value,stretch:w.value?"minWidth":"",onPopupVisibleChange:h,getPopupContainer:S}),{popup:C,default:O})}}});export{Y as D};
@@ -1 +1 @@
1
- import{c as I}from"./createContext-B2b9CRr1.js";import{d as i,i as u,o as p,w as C,g as f,j as c,r as x,p as a}from"./vendor-BVetwVfk.js";const r=Symbol("ContextProps"),s=Symbol("InternalContextProps"),S=function(n){let o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:c(()=>!0);const e=x(new Map),t=(m,v)=>{e.value.set(m,v),e.value=new Map(e.value)},F=m=>{e.value.delete(m),e.value=new Map(e.value)};C([o,e],()=>{}),a(r,n),a(s,{addFormItemField:t,removeFormItemField:F})},l={id:c(()=>{}),onFieldBlur:()=>{},onFieldChange:()=>{},clearValidate:()=>{}},d={addFormItemField:()=>{},removeFormItemField:()=>{}},b=()=>{const n=u(s,d),o=Symbol("FormItemFieldKey"),e=f();return n.addFormItemField(o,e.type),p(()=>{n.removeFormItemField(o)}),a(s,d),a(r,l),u(r,l)},K=i({compatConfig:{MODE:3},name:"AFormItemRest",setup(n,o){let{slots:e}=o;return a(s,d),a(r,l),()=>{var t;return(t=e.default)===null||t===void 0?void 0:t.call(e)}}}),g=I({}),M=i({name:"NoFormStatus",setup(n,o){let{slots:e}=o;return g.useProvide({}),()=>{var t;return(t=e.default)===null||t===void 0?void 0:t.call(e)}}});export{g as F,M as N,S as a,K as b,b as u};
1
+ import{c as I}from"./createContext-CHLVxTn6.js";import{d as i,i as u,o as p,w as C,g as f,j as c,r as x,p as a}from"./vendor-BVetwVfk.js";const r=Symbol("ContextProps"),s=Symbol("InternalContextProps"),S=function(n){let o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:c(()=>!0);const e=x(new Map),t=(m,v)=>{e.value.set(m,v),e.value=new Map(e.value)},F=m=>{e.value.delete(m),e.value=new Map(e.value)};C([o,e],()=>{}),a(r,n),a(s,{addFormItemField:t,removeFormItemField:F})},l={id:c(()=>{}),onFieldBlur:()=>{},onFieldChange:()=>{},clearValidate:()=>{}},d={addFormItemField:()=>{},removeFormItemField:()=>{}},b=()=>{const n=u(s,d),o=Symbol("FormItemFieldKey"),e=f();return n.addFormItemField(o,e.type),p(()=>{n.removeFormItemField(o)}),a(s,d),a(r,l),u(r,l)},K=i({compatConfig:{MODE:3},name:"AFormItemRest",setup(n,o){let{slots:e}=o;return a(s,d),a(r,l),()=>{var t;return(t=e.default)===null||t===void 0?void 0:t.call(e)}}}),g=I({}),M=i({name:"NoFormStatus",setup(n,o){let{slots:e}=o;return g.useProvide({}),()=>{var t;return(t=e.default)===null||t===void 0?void 0:t.call(e)}}});export{g as F,M as N,S as a,K as b,b as u};
@@ -1,2 +1,2 @@
1
- import{u as ee}from"./ws-Bv7YH0VB.js";import{_ as te}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{y as ae,ac as oe,f as P,ad as T,ae as le}from"./icons-DbKJDD5_.js";import{a as m}from"./index-CtUuEt-Q.js";import{F as j,D as s,c as a,x as t,r as l,q as u,v as p,J as i,u as g,m as v,I as V,G as b}from"./vendor-BVetwVfk.js";import"./index-BLYcQWYW.js";import"./useConfigInject-BlTQDaaH.js";import"./transition-C4Iby8cT.js";import"./Keyframes-C7fCrnlS.js";import"./Portal-CHsntPCQ.js";import"./index-U4Zd5IK6.js";const se={key:0,style:{"margin-bottom":"16px"}},ne={style:{"white-space":"pre-wrap","word-break":"break-all",color:"var(--text-primary)","font-family":"'Cascadia Code', 'Fira Code', Consolas, monospace","font-size":"13px","line-height":"1.7",margin:"0"}},re={style:{display:"flex",gap:"12px","align-items":"flex-end","flex-wrap":"wrap"}},ie={style:{flex:"1","min-width":"200px"}},ue={style:{"min-width":"140px"}},de={style:{display:"flex",gap:"12px","align-items":"flex-end","flex-wrap":"wrap"}},pe={style:{flex:"1","min-width":"200px"}},ce={style:{"white-space":"pre-wrap","word-break":"break-all",color:"var(--text-primary)","font-family":"'Cascadia Code', 'Fira Code', Consolas, monospace","font-size":"13px","line-height":"1.7",margin:"0"}},me={__name:"Git",setup(ve){const G=ee(),$=l("git"),L=l(!1),k=l(""),h=l(""),C=l(0),B=l(!1),x=l(""),O=l(!1),E=l(!1),M=l(""),z=l("markdown"),A=l(!1),S=l("./site"),D=l(!1),c=l(""),_=l(!1),w=l("");function q(o){const e=o.split(`
2
- `);let n="",r=0;for(const f of e){const y=f.match(/On branch\s+(.+)/)||f.match(/分支\s+(.+)/);y&&(n=y[1].trim());const U=f.trim();/^(M|A|D|R|C|U|\?\?|MM|AM|AD)\s/.test(U)&&r++,/^(modified|new file|deleted|renamed):/i.test(U)&&r++}return{branch:n,changed:r}}async function I(){L.value=!0;try{const{output:o}=await G.execute("git status",15e3);k.value=o;const e=q(o);h.value=e.branch,C.value=e.changed}catch(o){m.error("获取 Git 状态失败: "+o.message),k.value=""}finally{L.value=!1}}function J(){E.value=!0}async function W(){E.value=!1,B.value=!0,x.value="";try{const{output:o}=await G.execute("git auto-commit",3e4);x.value=o,O.value=!o.includes("✖")&&!o.toLowerCase().includes("error"),O.value&&m.success("自动提交完成"),await I()}catch(o){x.value="提交失败: "+o.message,O.value=!1,m.error("自动提交失败")}finally{B.value=!1}}async function H(){const o=M.value.trim();if(!o){m.warning("请输入文件路径");return}A.value=!0,c.value="",w.value="";try{const e=`import ${z.value} ${o}`,{output:n}=await G.execute(e,6e4);w.value=n;const r=n.includes("✖")||n.toLowerCase().includes("error");_.value=!r,c.value=r?"导入过程中可能存在问题,请查看输出":"导入完成",r||m.success("导入成功")}catch(e){c.value="导入失败: "+e.message,_.value=!1,m.error("导入失败")}finally{A.value=!1}}async function Q(){const o=S.value.trim();if(!o){m.warning("请输入输出路径");return}D.value=!0,c.value="",w.value="";try{const e=`export site -o ${o}`,{output:n}=await G.execute(e,6e4);w.value=n;const r=n.includes("✖")||n.toLowerCase().includes("error");_.value=!r,c.value=r?"导出过程中可能存在问题,请查看输出":"导出完成",r||m.success("导出成功")}catch(e){c.value="导出失败: "+e.message,_.value=!1,m.error("导出失败")}finally{D.value=!1}}return(o,e)=>{const n=u("a-button"),r=u("a-space"),f=u("a-tag"),y=u("a-card"),U=u("a-empty"),N=u("a-alert"),R=u("a-tab-pane"),K=u("a-input"),F=u("a-select-option"),X=u("a-select"),Y=u("a-tabs"),Z=u("a-modal");return p(),j("div",null,[e[21]||(e[21]=s("div",{style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},[s("div",null,[s("h2",{class:"page-title"},"Git 与数据"),s("p",{class:"page-sub"},"版本控制 / 导入导出")])],-1)),a(Y,{activeKey:$.value,"onUpdate:activeKey":e[5]||(e[5]=d=>$.value=d),type:"card"},{default:t(()=>[a(R,{key:"git"},{tab:t(()=>[a(g(P)),e[7]||(e[7]=i(" Git 仓库 ",-1))]),default:t(()=>[a(r,{style:{"margin-bottom":"16px"}},{default:t(()=>[a(n,{type:"primary",loading:L.value,onClick:I},{icon:t(()=>[a(g(ae))]),default:t(()=>[e[8]||(e[8]=i(" 刷新状态 ",-1))]),_:1},8,["loading"]),a(n,{loading:B.value,onClick:J},{icon:t(()=>[a(g(oe))]),default:t(()=>[e[9]||(e[9]=i(" 自动提交 ",-1))]),_:1},8,["loading"])]),_:1}),h.value||C.value>0?(p(),j("div",se,[a(r,null,{default:t(()=>[h.value?(p(),v(f,{key:0,color:"blue"},{default:t(()=>[a(g(P)),i(" "+V(h.value),1)]),_:1})):b("",!0),C.value>0?(p(),v(f,{key:1,color:"orange"},{default:t(()=>[i(V(C.value)+" 个文件变更",1)]),_:1})):k.value&&C.value===0?(p(),v(f,{key:2,color:"green"},{default:t(()=>[...e[10]||(e[10]=[i("工作区干净",-1)])]),_:1})):b("",!0)]),_:1})])):b("",!0),k.value?(p(),v(y,{key:1,bordered:!1,style:{background:"var(--bg-base)",border:"1px solid var(--border-color)"}},{default:t(()=>[s("pre",ne,V(k.value),1)]),_:1})):L.value?b("",!0):(p(),v(U,{key:2,description:"点击刷新状态查看 Git 信息",style:{padding:"60px 0"}})),x.value?(p(),v(N,{key:3,message:O.value?"提交成功":"提交结果",description:x.value,type:O.value?"success":"info","show-icon":"",closable:"",style:{"margin-top":"16px"},onClose:e[0]||(e[0]=d=>x.value="")},null,8,["message","description","type"])):b("",!0)]),_:1}),a(R,{key:"io"},{tab:t(()=>[a(g(T)),e[11]||(e[11]=i(" 导入导出 ",-1))]),default:t(()=>[a(y,{title:"导入数据",bordered:!1,style:{background:"var(--bg-card)",border:"1px solid var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[s("div",re,[s("div",ie,[e[12]||(e[12]=s("label",{style:{display:"block","margin-bottom":"6px",color:"var(--text-secondary)","font-size":"13px"}},"文件路径",-1)),a(K,{value:M.value,"onUpdate:value":e[1]||(e[1]=d=>M.value=d),placeholder:"输入文件或目录路径,如 ./docs","allow-clear":""},null,8,["value"])]),s("div",ue,[e[16]||(e[16]=s("label",{style:{display:"block","margin-bottom":"6px",color:"var(--text-secondary)","font-size":"13px"}},"格式",-1)),a(X,{value:z.value,"onUpdate:value":e[2]||(e[2]=d=>z.value=d),style:{width:"140px"}},{default:t(()=>[a(F,{value:"markdown"},{default:t(()=>[...e[13]||(e[13]=[i("Markdown",-1)])]),_:1}),a(F,{value:"pdf"},{default:t(()=>[...e[14]||(e[14]=[i("PDF",-1)])]),_:1}),a(F,{value:"evernote"},{default:t(()=>[...e[15]||(e[15]=[i("Evernote",-1)])]),_:1})]),_:1},8,["value"])]),a(n,{type:"primary",loading:A.value,disabled:!M.value.trim(),onClick:H},{icon:t(()=>[a(g(T))]),default:t(()=>[e[17]||(e[17]=i(" 导入 ",-1))]),_:1},8,["loading","disabled"])])]),_:1}),a(y,{title:"导出站点",bordered:!1,style:{background:"var(--bg-card)",border:"1px solid var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[s("div",de,[s("div",pe,[e[18]||(e[18]=s("label",{style:{display:"block","margin-bottom":"6px",color:"var(--text-secondary)","font-size":"13px"}},"输出路径",-1)),a(K,{value:S.value,"onUpdate:value":e[3]||(e[3]=d=>S.value=d),placeholder:"输出目录,如 ./site","allow-clear":""},null,8,["value"])]),a(n,{type:"primary",loading:D.value,disabled:!S.value.trim(),onClick:Q},{icon:t(()=>[a(g(le))]),default:t(()=>[e[19]||(e[19]=i(" 导出为静态站点 ",-1))]),_:1},8,["loading","disabled"])])]),_:1}),c.value?(p(),v(N,{key:0,message:_.value?"操作成功":"操作结果",description:c.value,type:_.value?"success":"info","show-icon":"",closable:"",style:{"margin-top":"16px"},onClose:e[4]||(e[4]=d=>c.value="")},null,8,["message","description","type"])):b("",!0),w.value?(p(),v(y,{key:1,title:"命令输出",bordered:!1,style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","margin-top":"16px"}},{default:t(()=>[s("pre",ce,V(w.value),1)]),_:1})):b("",!0)]),_:1})]),_:1},8,["activeKey"]),a(Z,{open:E.value,"onUpdate:open":e[6]||(e[6]=d=>E.value=d),title:"确认自动提交","ok-text":"确认提交","cancel-text":"取消","confirm-loading":B.value,onOk:W},{default:t(()=>[...e[20]||(e[20]=[s("p",{style:{color:"var(--text-secondary)"}},[i(" 将执行 "),s("code",null,"git auto-commit"),i(" 自动提交当前所有变更。请确认工作区文件已准备就绪。 ")],-1)])]),_:1},8,["open","confirm-loading"])])}}},Le=te(me,[["__scopeId","data-v-1f28d00c"]]);export{Le as default};
1
+ import{u as ee}from"./ws-Bv7YH0VB.js";import{_ as te}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{z as ae,ad as oe,f as P,ae as T,af as le}from"./icons-srBCpwXl.js";import{a as m}from"./index-CzGZa5Ow.js";import{F as j,D as s,c as a,x as t,r as l,q as u,v as p,J as i,u as g,m as v,I as U,G as b}from"./vendor-BVetwVfk.js";import"./index-DlSUq1W3.js";import"./useConfigInject-DqhngD-R.js";import"./transition-D2wU6PAY.js";import"./Keyframes-C7fCrnlS.js";import"./Portal-CHsntPCQ.js";import"./index-U4Zd5IK6.js";const se={key:0,style:{"margin-bottom":"16px"}},ne={style:{"white-space":"pre-wrap","word-break":"break-all",color:"var(--text-primary)","font-family":"'Cascadia Code', 'Fira Code', Consolas, monospace","font-size":"13px","line-height":"1.7",margin:"0"}},re={style:{display:"flex",gap:"12px","align-items":"flex-end","flex-wrap":"wrap"}},ie={style:{flex:"1","min-width":"200px"}},ue={style:{"min-width":"140px"}},de={style:{display:"flex",gap:"12px","align-items":"flex-end","flex-wrap":"wrap"}},pe={style:{flex:"1","min-width":"200px"}},ce={style:{"white-space":"pre-wrap","word-break":"break-all",color:"var(--text-primary)","font-family":"'Cascadia Code', 'Fira Code', Consolas, monospace","font-size":"13px","line-height":"1.7",margin:"0"}},me={__name:"Git",setup(ve){const G=ee(),$=l("git"),L=l(!1),k=l(""),h=l(""),C=l(0),z=l(!1),x=l(""),O=l(!1),B=l(!1),E=l(""),V=l("markdown"),A=l(!1),M=l("./site"),D=l(!1),c=l(""),_=l(!1),w=l("");function q(o){const e=o.split(`
2
+ `);let n="",r=0;for(const f of e){const y=f.match(/On branch\s+(.+)/)||f.match(/分支\s+(.+)/);y&&(n=y[1].trim());const S=f.trim();/^(M|A|D|R|C|U|\?\?|MM|AM|AD)\s/.test(S)&&r++,/^(modified|new file|deleted|renamed):/i.test(S)&&r++}return{branch:n,changed:r}}async function I(){L.value=!0;try{const{output:o}=await G.execute("git status",15e3);k.value=o;const e=q(o);h.value=e.branch,C.value=e.changed}catch(o){m.error("获取 Git 状态失败: "+o.message),k.value=""}finally{L.value=!1}}function J(){B.value=!0}async function W(){B.value=!1,z.value=!0,x.value="";try{const{output:o}=await G.execute("git auto-commit",3e4);x.value=o,O.value=!o.includes("✖")&&!o.toLowerCase().includes("error"),O.value&&m.success("自动提交完成"),await I()}catch(o){x.value="提交失败: "+o.message,O.value=!1,m.error("自动提交失败")}finally{z.value=!1}}async function H(){const o=E.value.trim();if(!o){m.warning("请输入文件路径");return}A.value=!0,c.value="",w.value="";try{const e=`import ${V.value} ${o}`,{output:n}=await G.execute(e,6e4);w.value=n;const r=n.includes("✖")||n.toLowerCase().includes("error");_.value=!r,c.value=r?"导入过程中可能存在问题,请查看输出":"导入完成",r||m.success("导入成功")}catch(e){c.value="导入失败: "+e.message,_.value=!1,m.error("导入失败")}finally{A.value=!1}}async function Q(){const o=M.value.trim();if(!o){m.warning("请输入输出路径");return}D.value=!0,c.value="",w.value="";try{const e=`export site -o ${o}`,{output:n}=await G.execute(e,6e4);w.value=n;const r=n.includes("✖")||n.toLowerCase().includes("error");_.value=!r,c.value=r?"导出过程中可能存在问题,请查看输出":"导出完成",r||m.success("导出成功")}catch(e){c.value="导出失败: "+e.message,_.value=!1,m.error("导出失败")}finally{D.value=!1}}return(o,e)=>{const n=u("a-button"),r=u("a-space"),f=u("a-tag"),y=u("a-card"),S=u("a-empty"),N=u("a-alert"),R=u("a-tab-pane"),K=u("a-input"),F=u("a-select-option"),X=u("a-select"),Y=u("a-tabs"),Z=u("a-modal");return p(),j("div",null,[e[21]||(e[21]=s("div",{style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},[s("div",null,[s("h2",{class:"page-title"},"Git 与数据"),s("p",{class:"page-sub"},"版本控制 / 导入导出")])],-1)),a(Y,{activeKey:$.value,"onUpdate:activeKey":e[5]||(e[5]=d=>$.value=d),type:"card"},{default:t(()=>[a(R,{key:"git"},{tab:t(()=>[a(g(P)),e[7]||(e[7]=i(" Git 仓库 ",-1))]),default:t(()=>[a(r,{style:{"margin-bottom":"16px"}},{default:t(()=>[a(n,{type:"primary",loading:L.value,onClick:I},{icon:t(()=>[a(g(ae))]),default:t(()=>[e[8]||(e[8]=i(" 刷新状态 ",-1))]),_:1},8,["loading"]),a(n,{loading:z.value,onClick:J},{icon:t(()=>[a(g(oe))]),default:t(()=>[e[9]||(e[9]=i(" 自动提交 ",-1))]),_:1},8,["loading"])]),_:1}),h.value||C.value>0?(p(),j("div",se,[a(r,null,{default:t(()=>[h.value?(p(),v(f,{key:0,color:"blue"},{default:t(()=>[a(g(P)),i(" "+U(h.value),1)]),_:1})):b("",!0),C.value>0?(p(),v(f,{key:1,color:"orange"},{default:t(()=>[i(U(C.value)+" 个文件变更",1)]),_:1})):k.value&&C.value===0?(p(),v(f,{key:2,color:"green"},{default:t(()=>[...e[10]||(e[10]=[i("工作区干净",-1)])]),_:1})):b("",!0)]),_:1})])):b("",!0),k.value?(p(),v(y,{key:1,bordered:!1,style:{background:"var(--bg-base)",border:"1px solid var(--border-color)"}},{default:t(()=>[s("pre",ne,U(k.value),1)]),_:1})):L.value?b("",!0):(p(),v(S,{key:2,description:"点击刷新状态查看 Git 信息",style:{padding:"60px 0"}})),x.value?(p(),v(N,{key:3,message:O.value?"提交成功":"提交结果",description:x.value,type:O.value?"success":"info","show-icon":"",closable:"",style:{"margin-top":"16px"},onClose:e[0]||(e[0]=d=>x.value="")},null,8,["message","description","type"])):b("",!0)]),_:1}),a(R,{key:"io"},{tab:t(()=>[a(g(T)),e[11]||(e[11]=i(" 导入导出 ",-1))]),default:t(()=>[a(y,{title:"导入数据",bordered:!1,style:{background:"var(--bg-card)",border:"1px solid var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[s("div",re,[s("div",ie,[e[12]||(e[12]=s("label",{style:{display:"block","margin-bottom":"6px",color:"var(--text-secondary)","font-size":"13px"}},"文件路径",-1)),a(K,{value:E.value,"onUpdate:value":e[1]||(e[1]=d=>E.value=d),placeholder:"输入文件或目录路径,如 ./docs","allow-clear":""},null,8,["value"])]),s("div",ue,[e[16]||(e[16]=s("label",{style:{display:"block","margin-bottom":"6px",color:"var(--text-secondary)","font-size":"13px"}},"格式",-1)),a(X,{value:V.value,"onUpdate:value":e[2]||(e[2]=d=>V.value=d),style:{width:"140px"}},{default:t(()=>[a(F,{value:"markdown"},{default:t(()=>[...e[13]||(e[13]=[i("Markdown",-1)])]),_:1}),a(F,{value:"pdf"},{default:t(()=>[...e[14]||(e[14]=[i("PDF",-1)])]),_:1}),a(F,{value:"evernote"},{default:t(()=>[...e[15]||(e[15]=[i("Evernote",-1)])]),_:1})]),_:1},8,["value"])]),a(n,{type:"primary",loading:A.value,disabled:!E.value.trim(),onClick:H},{icon:t(()=>[a(g(T))]),default:t(()=>[e[17]||(e[17]=i(" 导入 ",-1))]),_:1},8,["loading","disabled"])])]),_:1}),a(y,{title:"导出站点",bordered:!1,style:{background:"var(--bg-card)",border:"1px solid var(--border-color)","margin-bottom":"16px"}},{default:t(()=>[s("div",de,[s("div",pe,[e[18]||(e[18]=s("label",{style:{display:"block","margin-bottom":"6px",color:"var(--text-secondary)","font-size":"13px"}},"输出路径",-1)),a(K,{value:M.value,"onUpdate:value":e[3]||(e[3]=d=>M.value=d),placeholder:"输出目录,如 ./site","allow-clear":""},null,8,["value"])]),a(n,{type:"primary",loading:D.value,disabled:!M.value.trim(),onClick:Q},{icon:t(()=>[a(g(le))]),default:t(()=>[e[19]||(e[19]=i(" 导出为静态站点 ",-1))]),_:1},8,["loading","disabled"])])]),_:1}),c.value?(p(),v(N,{key:0,message:_.value?"操作成功":"操作结果",description:c.value,type:_.value?"success":"info","show-icon":"",closable:"",style:{"margin-top":"16px"},onClose:e[4]||(e[4]=d=>c.value="")},null,8,["message","description","type"])):b("",!0),w.value?(p(),v(y,{key:1,title:"命令输出",bordered:!1,style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","margin-top":"16px"}},{default:t(()=>[s("pre",ce,U(w.value),1)]),_:1})):b("",!0)]),_:1})]),_:1},8,["activeKey"]),a(Z,{open:B.value,"onUpdate:open":e[6]||(e[6]=d=>B.value=d),title:"确认自动提交","ok-text":"确认提交","cancel-text":"取消","confirm-loading":z.value,onOk:W},{default:t(()=>[...e[20]||(e[20]=[s("p",{style:{color:"var(--text-secondary)"}},[i(" 将执行 "),s("code",null,"git auto-commit"),i(" 自动提交当前所有变更。请确认工作区文件已准备就绪。 ")],-1)])]),_:1},8,["open","confirm-loading"])])}}},Le=te(me,[["__scopeId","data-v-1f28d00c"]]);export{Le as default};
@@ -1 +1 @@
1
- import{u as He}from"./ws-Bv7YH0VB.js";import{s as Je}from"./community-parser-CO25nZFt.js";import{_ as Pe}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{a as y}from"./index-CtUuEt-Q.js";import{y as Ee,a5 as Ge,d as Q,k as X,a3 as Ve,i as Ke}from"./icons-DbKJDD5_.js";import{l as We,F as c,D as M,c as a,x as t,m as x,G as m,q as v,r as S,v as i,J as d,u as k,I as p,H as C,L as w,N as Ye,j as ye,a as me}from"./vendor-BVetwVfk.js";import"./index-BLYcQWYW.js";import"./useConfigInject-BlTQDaaH.js";import"./transition-C4Iby8cT.js";import"./Keyframes-C7fCrnlS.js";import"./Portal-CHsntPCQ.js";import"./index-U4Zd5IK6.js";function Z(l){const s=Je(l);if(!s)return null;try{return JSON.parse(s)}catch{}const u=s.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!u)return null;try{return JSON.parse(u[0])}catch{return null}}const ve=Object.freeze(["online","offline","busy","degraded"]),Qe=Object.freeze(["queued","dispatched","running","complete","failed"]),ge=Object.freeze(["standard","encrypted","federated"]);function h(l,s=0){return typeof l=="number"&&Number.isFinite(l)?l:s}function Xe(l){if(Array.isArray(l))return l.filter(s=>typeof s=="string");if(typeof l=="string")try{const s=JSON.parse(l);if(Array.isArray(s))return s.filter(u=>typeof u=="string")}catch{}return[]}function Ze(l,s=0){if(!l||typeof l!="object")return null;const u=l.id||"";return u?{key:u,id:u,nodeId:l.nodeId??l.node_id??"",endpoint:l.endpoint||"",capabilities:Xe(l.capabilities),gpuMemoryMb:h(l.gpuMemoryMb??l.gpu_memory_mb,0),status:String(l.status||"offline").toLowerCase(),lastHeartbeat:l.lastHeartbeat??l.last_heartbeat??null,taskCount:h(l.taskCount??l.task_count,0),createdAt:l.createdAt??l.created_at??null,_idx:s}:null}function et(l){const s=Z(l);return Array.isArray(s)?s.map(Ze).filter(Boolean):[]}function tt(l,s=0){if(!l||typeof l!="object")return null;const u=l.id||"";return u?{key:u,id:u,model:String(l.model||""),input:l.input??"",output:l.output??"",privacyMode:String(l.privacyMode??l.privacy_mode??"standard").toLowerCase(),priority:h(l.priority,5),assignedNode:l.assignedNode??l.assigned_node??null,status:String(l.status||"queued").toLowerCase(),durationMs:l.durationMs??l.duration_ms??null,createdAt:l.createdAt??l.created_at??null,completedAt:l.completedAt??l.completed_at??null,_idx:s}:null}function at(l){const s=Z(l);return Array.isArray(s)?s.map(tt).filter(Boolean):[]}const ot={nodes:{total:0,online:0,offline:0,busy:0},tasks:{total:0,queued:0,completed:0,failed:0,avgDurationMs:0}};function nt(l){const s=JSON.parse(JSON.stringify(ot)),u=Z(l);return!u||typeof u!="object"||Array.isArray(u)||(u.nodes&&typeof u.nodes=="object"&&(s.nodes.total=h(u.nodes.total,0),s.nodes.online=h(u.nodes.online,0),s.nodes.offline=h(u.nodes.offline,0),s.nodes.busy=h(u.nodes.busy,0)),u.tasks&&typeof u.tasks=="object"&&(s.tasks.total=h(u.tasks.total,0),s.tasks.queued=h(u.tasks.queued,0),s.tasks.completed=h(u.tasks.completed,0),s.tasks.failed=h(u.tasks.failed,0),s.tasks.avgDurationMs=h(u.tasks.avgDurationMs??u.tasks.avg_duration_ms,0))),s}function _e(l){if(l==null||l==="")return"—";const s=typeof l=="number"?new Date(l):new Date(String(l));return isNaN(s.getTime())?String(l):s.toLocaleString("zh-CN",{hour12:!1})}const lt={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},st={style:{color:"var(--text-secondary)","font-size":"12px","margin-left":"8px"}},it={class:"filter-bar"},rt={style:{color:"var(--text-primary)","font-family":"monospace","font-weight":"500"}},ut={key:0,style:{color:"var(--text-secondary)","font-size":"11px","margin-top":"2px"}},dt={key:1,style:{color:"var(--text-muted)"}},pt={key:0,style:{color:"var(--text-secondary)","font-family":"monospace"}},ct={key:1,style:{color:"var(--text-muted)"}},ft={key:5,style:{color:"var(--text-secondary)","font-size":"11px"}},yt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},mt={class:"filter-bar"},vt={style:{color:"var(--text-primary)","font-family":"monospace","font-weight":"500"}},gt={key:0,style:{color:"var(--text-secondary)","font-size":"11px","margin-top":"2px"}},_t={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"11px"}},kt={key:1,style:{color:"var(--text-muted)"}},bt={key:0,style:{"font-family":"monospace",color:"var(--text-secondary)","font-size":"12px"}},xt={key:1,style:{color:"var(--text-muted)"}},St={key:6,style:{color:"var(--text-secondary)","font-size":"11px"}},Ct={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},zt={__name:"Inference",setup(l){const s=He(),u=S(!1),E=S(!1),G=S(!1),V=S(""),K=S(""),L=S([]),ee=S([]),b=S({nodes:{total:0,online:0,offline:0,busy:0},tasks:{total:0,queued:0,completed:0,failed:0,avgDurationMs:0}}),W=S("nodes"),U=S(""),O=S(""),D=S(""),B=S(!1),R=S(!1),g=me({nodeId:"",endpoint:"",capabilities:"",gpuMemory:null}),_=me({model:"",input:"",priority:5,mode:"standard"}),ke=[{title:"节点 ID",key:"nodeId"},{title:"能力",key:"capabilities",width:"220px"},{title:"GPU",key:"gpu",width:"100px"},{title:"状态",key:"status",width:"100px"},{title:"任务数",key:"taskCount",width:"90px"},{title:"最近心跳",key:"lastHeartbeat",width:"160px"},{title:"操作",key:"action",width:"210px"}],be=[{title:"模型",key:"model"},{title:"隐私",key:"privacyMode",width:"110px"},{title:"优先级",key:"priority",width:"80px"},{title:"执行节点",key:"assignedNode",width:"140px"},{title:"状态",key:"status",width:"110px"},{title:"耗时",key:"duration",width:"110px"},{title:"提交时间",key:"createdAt",width:"160px"},{title:"操作",key:"action",width:"140px"}],xe=ye(()=>U.value?L.value.filter(o=>o.status===U.value):L.value),Se=ye(()=>{let o=ee.value;return O.value&&(o=o.filter(e=>e.status===O.value)),D.value&&(o=o.filter(e=>e.privacyMode===D.value)),o});function H(o){return{online:"在线",offline:"离线",busy:"忙碌",degraded:"降级"}[o]||o}function Ce(o){return{online:"green",offline:"default",busy:"orange",degraded:"red"}[o]||"default"}function te(o){return{queued:"排队中",dispatched:"已派发",running:"运行中",complete:"已完成",failed:"失败"}[o]||o}function ze(o){return{queued:"default",dispatched:"processing",running:"cyan",complete:"green",failed:"red"}[o]||"default"}function Y(o){return{standard:"标准",encrypted:"加密",federated:"联邦"}[o]||o}function he(o){return{standard:"default",encrypted:"purple",federated:"cyan"}[o]||"default"}function Me(o){return o>=8?"#ff4d4f":o>=5?"#faad14":"#52c41a"}function Ne(o){const e=L.value.find(f=>f.id===o);return e?e.nodeId:o.slice(0,8)}function ae(o,e){return o?o.length>e?o.slice(0,e)+"...":o:""}function Ae(o){return o>=1024?`${(o/1024).toFixed(1)} GB`:`${o} MB`}function Ie(o){return o.status==="queued"||o.status==="dispatched"||o.status==="running"}function je(o){return o.status!=="complete"&&o.status!=="failed"}function Te({key:o}){o==="register"?B.value=!0:o==="submit"&&(R.value=!0)}async function N(){u.value=!0;try{const[o,e,f]=await Promise.all([s.execute("inference nodes --limit 200 --json",1e4).catch(()=>({output:""})),s.execute("inference tasks --limit 200 --json",1e4).catch(()=>({output:""})),s.execute("inference stats --json",8e3).catch(()=>({output:""}))]);L.value=et(o.output),ee.value=at(e.output),b.value=nt(f.output)}catch(o){y.error("加载推理网络数据失败: "+(o?.message||o))}finally{u.value=!1}}async function $e(){const o=g.nodeId.trim();if(!o){y.warning("请填写节点 ID");return}E.value=!0;try{const e=[`inference register "${o.replace(/"/g,'\\"')}"`];if(g.endpoint.trim()&&e.push(`--endpoint "${g.endpoint.trim().replace(/"/g,'\\"')}"`),g.capabilities.trim()){const T=g.capabilities.split(/[,\s]+/).filter(Boolean).join(",");T&&e.push(`--capabilities "${T}"`)}g.gpuMemory!=null&&e.push(`--gpu ${g.gpuMemory}`),e.push("--json");const{output:f}=await s.execute(e.join(" "),1e4);if(/error|failed|失败/i.test(f)&&!/"nodeId"/.test(f)){y.error("注册失败: "+f.slice(0,120));return}y.success("节点已注册"),B.value=!1,oe(),await N()}catch(e){y.error("注册失败: "+(e?.message||e))}finally{E.value=!1}}async function we(){const o=_.model.trim();if(!o){y.warning("请填写模型名");return}G.value=!0;try{const e=[`inference submit "${o.replace(/"/g,'\\"')}"`];_.input.trim()&&e.push(`--input "${_.input.trim().replace(/"/g,'\\"')}"`),_.priority!=null&&e.push(`--priority ${_.priority}`),e.push(`--mode ${_.mode}`),e.push("--json");const{output:f}=await s.execute(e.join(" "),12e3);if(/error|failed|失败/i.test(f)&&!/"taskId"/.test(f)){y.error("提交失败: "+f.slice(0,120));return}y.success("任务已提交"),R.value=!1,ne(),W.value="tasks",await N()}catch(e){y.error("提交失败: "+(e?.message||e))}finally{G.value=!1}}async function Ue(o){V.value=o.id;try{const{output:e}=await s.execute(`inference heartbeat ${o.id} --json`,8e3);if(/error/i.test(e)&&!/"updated"/.test(e)){y.error("心跳失败: "+e.slice(0,120));return}y.success("心跳已更新"),await N()}catch(e){y.error("心跳失败: "+(e?.message||e))}finally{V.value=""}}async function Oe(o,e){if(e!==o.status)try{const{output:f}=await s.execute(`inference node-status ${o.id} ${e} --json`,8e3);if(/error|invalid/i.test(f)&&!/"updated"/.test(f)){y.error("状态转换失败: "+f.slice(0,120));return}y.success(`节点状态已更新为 ${H(e)}`),await N()}catch(f){y.error("状态转换失败: "+(f?.message||f))}}async function De(o){try{const{output:e}=await s.execute(`inference unregister ${o.id} --json`,8e3);if(/error/i.test(e)&&!/"removed"/.test(e)){y.error("注销失败: "+e.slice(0,120));return}y.success("节点已注销"),await N()}catch(e){y.error("注销失败: "+(e?.message||e))}}async function qe(o){K.value=o.id;try{const{output:e}=await s.execute(`inference complete ${o.id} --json`,1e4);if(/error|failed/i.test(e)&&!/"completed"/.test(e)){y.error("完成失败: "+e.slice(0,120));return}y.success("任务已完成"),await N()}catch(e){y.error("完成失败: "+(e?.message||e))}finally{K.value=""}}async function Fe(o){try{const{output:e}=await s.execute(`inference fail-task ${o.id} --json`,8e3);if(/error/i.test(e)&&!/"failed"/.test(e)){y.error("标记失败: "+e.slice(0,120));return}y.success("已标记为失败"),await N()}catch(e){y.error("标记失败: "+(e?.message||e))}}function oe(){g.nodeId="",g.endpoint="",g.capabilities="",g.gpuMemory=null}function ne(){_.model="",_.input="",_.priority=5,_.mode="standard"}return We(N),(o,e)=>{const f=v("a-button"),T=v("a-menu-item"),le=v("a-menu"),se=v("a-dropdown"),ie=v("a-space"),q=v("a-statistic"),$=v("a-card"),F=v("a-col"),Le=v("a-row"),A=v("a-tag"),j=v("a-radio-button"),J=v("a-radio-group"),re=v("a-popconfirm"),ue=v("a-table"),de=v("a-tab-pane"),Be=v("a-tabs"),P=v("a-input"),I=v("a-form-item"),pe=v("a-input-number"),ce=v("a-form"),fe=v("a-modal"),Re=v("a-textarea");return i(),c("div",null,[M("div",lt,[e[18]||(e[18]=M("div",null,[M("h2",{class:"page-title"},"推理网络"),M("p",{class:"page-sub"},"去中心化推理节点 · 任务调度 · 隐私模式")],-1)),a(ie,null,{default:t(()=>[a(f,{loading:u.value,onClick:N},{icon:t(()=>[a(k(Ee))]),default:t(()=>[e[14]||(e[14]=d(" 刷新 ",-1))]),_:1},8,["loading"]),a(se,{trigger:["click"]},{overlay:t(()=>[a(le,{onClick:Te},{default:t(()=>[a(T,{key:"register"},{default:t(()=>[a(k(Q)),e[16]||(e[16]=d(" 注册节点",-1))]),_:1}),a(T,{key:"submit"},{default:t(()=>[a(k(X)),e[17]||(e[17]=d(" 提交推理任务",-1))]),_:1})]),_:1})]),default:t(()=>[a(f,{type:"primary"},{icon:t(()=>[a(k(Ge))]),default:t(()=>[e[15]||(e[15]=d(" 操作 ▼ ",-1))]),_:1})]),_:1})]),_:1})]),a(Le,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:t(()=>[a(F,{xs:12,sm:8,lg:5},{default:t(()=>[a($,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(q,{title:"节点总数",value:b.value.nodes.total,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:t(()=>[a(k(Q))]),_:1},8,["value"])]),_:1})]),_:1}),a(F,{xs:12,sm:8,lg:5},{default:t(()=>[a($,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(q,{title:"在线节点",value:b.value.nodes.online,"value-style":{color:b.value.nodes.online>0?"#52c41a":"#888",fontSize:"20px"}},{prefix:t(()=>[a(k(Ve))]),_:1},8,["value","value-style"])]),_:1})]),_:1}),a(F,{xs:12,sm:8,lg:5},{default:t(()=>[a($,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(q,{title:"任务总数",value:b.value.tasks.total,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:t(()=>[a(k(X))]),_:1},8,["value"])]),_:1})]),_:1}),a(F,{xs:12,sm:8,lg:5},{default:t(()=>[a($,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(q,{title:"排队中",value:b.value.tasks.queued,"value-style":{color:b.value.tasks.queued>0?"#faad14":"#52c41a",fontSize:"20px"}},{prefix:t(()=>[a(k(Ke))]),_:1},8,["value","value-style"])]),_:1})]),_:1}),a(F,{xs:24,sm:8,lg:4},{default:t(()=>[a($,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(q,{title:"平均耗时",value:b.value.tasks.avgDurationMs,suffix:"ms","value-style":{color:"#13c2c2",fontSize:"20px"}},null,8,["value"])]),_:1})]),_:1})]),_:1}),b.value.nodes.total>0?(i(),x($,{key:0,title:"节点状态分布",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:t(()=>[a(ie,{size:[12,8],wrap:""},{default:t(()=>[a(A,{color:"green"},{default:t(()=>[d("在线 "+p(b.value.nodes.online),1)]),_:1}),a(A,{color:"orange"},{default:t(()=>[d("忙碌 "+p(b.value.nodes.busy),1)]),_:1}),a(A,{color:"default"},{default:t(()=>[d("离线 "+p(b.value.nodes.offline),1)]),_:1}),M("span",st," 完成: "+p(b.value.tasks.completed)+" · 失败: "+p(b.value.tasks.failed),1)]),_:1})]),_:1})):m("",!0),a(Be,{activeKey:W.value,"onUpdate:activeKey":e[3]||(e[3]=n=>W.value=n),class:"inference-tabs"},{default:t(()=>[a(de,{key:"nodes",tab:"节点"},{default:t(()=>[M("div",it,[a(J,{value:U.value,"onUpdate:value":e[0]||(e[0]=n=>U.value=n),size:"small","button-style":"solid"},{default:t(()=>[a(j,{value:""},{default:t(()=>[...e[19]||(e[19]=[d("全部",-1)])]),_:1}),(i(!0),c(C,null,w(k(ve),n=>(i(),x(j,{key:n,value:n},{default:t(()=>[d(p(H(n)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),a(ue,{columns:ke,"data-source":xe.value,pagination:{pageSize:20,showTotal:n=>`共 ${n} 条`},size:"small",loading:u.value,style:{background:"var(--bg-card)"}},{bodyCell:t(({column:n,record:r})=>[n.key==="nodeId"?(i(),c(C,{key:0},[M("span",rt,p(r.nodeId),1),r.endpoint?(i(),c("div",ut,p(ae(r.endpoint,50)),1)):m("",!0)],64)):m("",!0),n.key==="capabilities"?(i(),c(C,{key:1},[(i(!0),c(C,null,w(r.capabilities.slice(0,4),z=>(i(),x(A,{key:z,color:"blue",style:{"font-size":"10px",margin:"1px"}},{default:t(()=>[d(p(z),1)]),_:2},1024))),128)),r.capabilities.length>4?(i(),x(A,{key:0,color:"default",style:{"font-size":"10px"}},{default:t(()=>[d("+"+p(r.capabilities.length-4),1)]),_:2},1024)):m("",!0),r.capabilities.length?m("",!0):(i(),c("span",dt,"—"))],64)):m("",!0),n.key==="gpu"?(i(),c(C,{key:2},[r.gpuMemoryMb>0?(i(),c("span",pt,p(Ae(r.gpuMemoryMb)),1)):(i(),c("span",ct,"—"))],64)):m("",!0),n.key==="status"?(i(),x(A,{key:3,color:Ce(r.status)},{default:t(()=>[d(p(H(r.status)),1)]),_:2},1032,["color"])):m("",!0),n.key==="taskCount"?(i(),x(A,{key:4,color:"purple",style:{"font-size":"11px"}},{default:t(()=>[d(p(r.taskCount),1)]),_:2},1024)):m("",!0),n.key==="lastHeartbeat"?(i(),c("span",ft,p(k(_e)(r.lastHeartbeat)),1)):m("",!0),n.key==="action"?(i(),c(C,{key:6},[a(f,{size:"small",type:"link",loading:V.value===r.id,onClick:z=>Ue(r)},{default:t(()=>[...e[20]||(e[20]=[d("心跳",-1)])]),_:1},8,["loading","onClick"]),a(se,{trigger:["click"]},{overlay:t(()=>[a(le,{onClick:z=>Oe(r,z.key)},{default:t(()=>[(i(!0),c(C,null,w(k(ve),z=>(i(),x(T,{key:z,disabled:z===r.status},{default:t(()=>[d(p(H(z)),1)]),_:2},1032,["disabled"]))),128))]),_:2},1032,["onClick"])]),default:t(()=>[a(f,{size:"small",type:"link"},{default:t(()=>[...e[21]||(e[21]=[d("状态 ▼",-1)])]),_:1})]),_:2},1024),a(re,{title:"注销该节点?","ok-text":"注销","cancel-text":"取消",onConfirm:z=>De(r)},{default:t(()=>[a(f,{size:"small",type:"link",danger:""},{default:t(()=>[...e[22]||(e[22]=[d("注销",-1)])]),_:1})]),_:1},8,["onConfirm"])],64)):m("",!0)]),emptyText:t(()=>[M("div",yt,[a(k(Q),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),d(" "+p(U.value?"没有符合条件的节点":'暂无节点,点"操作 → 注册节点"添加第一个'),1)])]),_:1},8,["data-source","pagination","loading"])]),_:1}),a(de,{key:"tasks",tab:"任务"},{default:t(()=>[M("div",mt,[a(J,{value:O.value,"onUpdate:value":e[1]||(e[1]=n=>O.value=n),size:"small"},{default:t(()=>[a(j,{value:""},{default:t(()=>[...e[23]||(e[23]=[d("全部状态",-1)])]),_:1}),(i(!0),c(C,null,w(k(Qe),n=>(i(),x(j,{key:n,value:n},{default:t(()=>[d(p(te(n)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),a(J,{value:D.value,"onUpdate:value":e[2]||(e[2]=n=>D.value=n),size:"small"},{default:t(()=>[a(j,{value:""},{default:t(()=>[...e[24]||(e[24]=[d("全部模式",-1)])]),_:1}),(i(!0),c(C,null,w(k(ge),n=>(i(),x(j,{key:n,value:n},{default:t(()=>[d(p(Y(n)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),a(ue,{columns:be,"data-source":Se.value,pagination:{pageSize:20,showTotal:n=>`共 ${n} 条`},size:"small",loading:u.value,style:{background:"var(--bg-card)"}},{bodyCell:t(({column:n,record:r})=>[n.key==="model"?(i(),c(C,{key:0},[M("span",vt,p(r.model),1),r.input?(i(),c("div",gt,p(ae(r.input,60)),1)):m("",!0)],64)):m("",!0),n.key==="privacyMode"?(i(),x(A,{key:1,color:he(r.privacyMode)},{default:t(()=>[d(p(Y(r.privacyMode)),1)]),_:2},1032,["color"])):m("",!0),n.key==="priority"?(i(),c("span",{key:2,style:Ye({color:Me(r.priority),fontWeight:500})},p(r.priority),5)):m("",!0),n.key==="assignedNode"?(i(),c(C,{key:3},[r.assignedNode?(i(),c("span",_t,p(Ne(r.assignedNode)),1)):(i(),c("span",kt,"—"))],64)):m("",!0),n.key==="status"?(i(),x(A,{key:4,color:ze(r.status)},{default:t(()=>[d(p(te(r.status)),1)]),_:2},1032,["color"])):m("",!0),n.key==="duration"?(i(),c(C,{key:5},[r.durationMs!=null?(i(),c("span",bt,p(r.durationMs)+" ms ",1)):(i(),c("span",xt,"—"))],64)):m("",!0),n.key==="createdAt"?(i(),c("span",St,p(k(_e)(r.createdAt)),1)):m("",!0),n.key==="action"?(i(),c(C,{key:7},[Ie(r)?(i(),x(f,{key:0,size:"small",type:"link",loading:K.value===r.id,onClick:z=>qe(r)},{default:t(()=>[...e[25]||(e[25]=[d(" 完成 ",-1)])]),_:1},8,["loading","onClick"])):m("",!0),je(r)?(i(),x(re,{key:1,title:"标记任务失败?","ok-text":"确认","cancel-text":"取消",onConfirm:z=>Fe(r)},{default:t(()=>[a(f,{size:"small",type:"link",danger:""},{default:t(()=>[...e[26]||(e[26]=[d("失败",-1)])]),_:1})]),_:1},8,["onConfirm"])):m("",!0)],64)):m("",!0)]),emptyText:t(()=>[M("div",Ct,[a(k(X),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),d(" "+p(O.value||D.value?"没有符合条件的任务":'暂无任务,点"操作 → 提交推理任务"创建第一个'),1)])]),_:1},8,["data-source","pagination","loading"])]),_:1})]),_:1},8,["activeKey"]),a(fe,{open:B.value,"onUpdate:open":e[8]||(e[8]=n=>B.value=n),title:"注册推理节点","confirm-loading":E.value,width:520,"ok-text":"注册","cancel-text":"取消",onOk:$e,onCancel:oe},{default:t(()=>[a(ce,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:t(()=>[a(I,{label:"节点 ID",required:""},{default:t(()=>[a(P,{value:g.nodeId,"onUpdate:value":e[4]||(e[4]=n=>g.nodeId=n),placeholder:"例如: gpu-host-1"},null,8,["value"])]),_:1}),a(I,{label:"端点 URL"},{default:t(()=>[a(P,{value:g.endpoint,"onUpdate:value":e[5]||(e[5]=n=>g.endpoint=n),placeholder:"https://node.example.com(可选)"},null,8,["value"])]),_:1}),a(I,{label:"能力列表"},{default:t(()=>[a(P,{value:g.capabilities,"onUpdate:value":e[6]||(e[6]=n=>g.capabilities=n),placeholder:"逗号分隔,例如: llama2,mistral,gpt-4"},null,8,["value"])]),_:1}),a(I,{label:"GPU 内存 (MB)"},{default:t(()=>[a(pe,{value:g.gpuMemory,"onUpdate:value":e[7]||(e[7]=n=>g.gpuMemory=n),min:0,max:2e5,style:{width:"100%"}},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"]),a(fe,{open:R.value,"onUpdate:open":e[13]||(e[13]=n=>R.value=n),title:"提交推理任务","confirm-loading":G.value,width:520,"ok-text":"提交","cancel-text":"取消",onOk:we,onCancel:ne},{default:t(()=>[a(ce,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:t(()=>[a(I,{label:"模型",required:""},{default:t(()=>[a(P,{value:_.model,"onUpdate:value":e[9]||(e[9]=n=>_.model=n),placeholder:"例如: llama2-7b"},null,8,["value"])]),_:1}),a(I,{label:"输入"},{default:t(()=>[a(Re,{value:_.input,"onUpdate:value":e[10]||(e[10]=n=>_.input=n),"auto-size":{minRows:3,maxRows:6}},null,8,["value"])]),_:1}),a(I,{label:"优先级"},{default:t(()=>[a(pe,{value:_.priority,"onUpdate:value":e[11]||(e[11]=n=>_.priority=n),min:1,max:10,style:{width:"100%"}},null,8,["value"])]),_:1}),a(I,{label:"隐私模式"},{default:t(()=>[a(J,{value:_.mode,"onUpdate:value":e[12]||(e[12]=n=>_.mode=n)},{default:t(()=>[(i(!0),c(C,null,w(k(ge),n=>(i(),x(j,{key:n,value:n},{default:t(()=>[d(p(Y(n)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"])])}}},qt=Pe(zt,[["__scopeId","data-v-cd24d62b"]]);export{qt as default};
1
+ import{u as He}from"./ws-Bv7YH0VB.js";import{s as Je}from"./community-parser-CO25nZFt.js";import{_ as Pe}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{a as y}from"./index-CzGZa5Ow.js";import{z as Ee,a6 as Ge,d as Q,k as X,a4 as Ve,i as Ke}from"./icons-srBCpwXl.js";import{l as We,F as c,D as M,c as a,x as t,m as x,G as m,q as v,r as S,v as i,J as d,u as k,I as p,H as C,L as w,N as Ye,j as ye,a as me}from"./vendor-BVetwVfk.js";import"./index-DlSUq1W3.js";import"./useConfigInject-DqhngD-R.js";import"./transition-D2wU6PAY.js";import"./Keyframes-C7fCrnlS.js";import"./Portal-CHsntPCQ.js";import"./index-U4Zd5IK6.js";function Z(l){const s=Je(l);if(!s)return null;try{return JSON.parse(s)}catch{}const u=s.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!u)return null;try{return JSON.parse(u[0])}catch{return null}}const ve=Object.freeze(["online","offline","busy","degraded"]),Qe=Object.freeze(["queued","dispatched","running","complete","failed"]),ge=Object.freeze(["standard","encrypted","federated"]);function h(l,s=0){return typeof l=="number"&&Number.isFinite(l)?l:s}function Xe(l){if(Array.isArray(l))return l.filter(s=>typeof s=="string");if(typeof l=="string")try{const s=JSON.parse(l);if(Array.isArray(s))return s.filter(u=>typeof u=="string")}catch{}return[]}function Ze(l,s=0){if(!l||typeof l!="object")return null;const u=l.id||"";return u?{key:u,id:u,nodeId:l.nodeId??l.node_id??"",endpoint:l.endpoint||"",capabilities:Xe(l.capabilities),gpuMemoryMb:h(l.gpuMemoryMb??l.gpu_memory_mb,0),status:String(l.status||"offline").toLowerCase(),lastHeartbeat:l.lastHeartbeat??l.last_heartbeat??null,taskCount:h(l.taskCount??l.task_count,0),createdAt:l.createdAt??l.created_at??null,_idx:s}:null}function et(l){const s=Z(l);return Array.isArray(s)?s.map(Ze).filter(Boolean):[]}function tt(l,s=0){if(!l||typeof l!="object")return null;const u=l.id||"";return u?{key:u,id:u,model:String(l.model||""),input:l.input??"",output:l.output??"",privacyMode:String(l.privacyMode??l.privacy_mode??"standard").toLowerCase(),priority:h(l.priority,5),assignedNode:l.assignedNode??l.assigned_node??null,status:String(l.status||"queued").toLowerCase(),durationMs:l.durationMs??l.duration_ms??null,createdAt:l.createdAt??l.created_at??null,completedAt:l.completedAt??l.completed_at??null,_idx:s}:null}function at(l){const s=Z(l);return Array.isArray(s)?s.map(tt).filter(Boolean):[]}const ot={nodes:{total:0,online:0,offline:0,busy:0},tasks:{total:0,queued:0,completed:0,failed:0,avgDurationMs:0}};function nt(l){const s=JSON.parse(JSON.stringify(ot)),u=Z(l);return!u||typeof u!="object"||Array.isArray(u)||(u.nodes&&typeof u.nodes=="object"&&(s.nodes.total=h(u.nodes.total,0),s.nodes.online=h(u.nodes.online,0),s.nodes.offline=h(u.nodes.offline,0),s.nodes.busy=h(u.nodes.busy,0)),u.tasks&&typeof u.tasks=="object"&&(s.tasks.total=h(u.tasks.total,0),s.tasks.queued=h(u.tasks.queued,0),s.tasks.completed=h(u.tasks.completed,0),s.tasks.failed=h(u.tasks.failed,0),s.tasks.avgDurationMs=h(u.tasks.avgDurationMs??u.tasks.avg_duration_ms,0))),s}function _e(l){if(l==null||l==="")return"—";const s=typeof l=="number"?new Date(l):new Date(String(l));return isNaN(s.getTime())?String(l):s.toLocaleString("zh-CN",{hour12:!1})}const lt={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},st={style:{color:"var(--text-secondary)","font-size":"12px","margin-left":"8px"}},it={class:"filter-bar"},rt={style:{color:"var(--text-primary)","font-family":"monospace","font-weight":"500"}},ut={key:0,style:{color:"var(--text-secondary)","font-size":"11px","margin-top":"2px"}},dt={key:1,style:{color:"var(--text-muted)"}},pt={key:0,style:{color:"var(--text-secondary)","font-family":"monospace"}},ct={key:1,style:{color:"var(--text-muted)"}},ft={key:5,style:{color:"var(--text-secondary)","font-size":"11px"}},yt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},mt={class:"filter-bar"},vt={style:{color:"var(--text-primary)","font-family":"monospace","font-weight":"500"}},gt={key:0,style:{color:"var(--text-secondary)","font-size":"11px","margin-top":"2px"}},_t={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"11px"}},kt={key:1,style:{color:"var(--text-muted)"}},bt={key:0,style:{"font-family":"monospace",color:"var(--text-secondary)","font-size":"12px"}},xt={key:1,style:{color:"var(--text-muted)"}},St={key:6,style:{color:"var(--text-secondary)","font-size":"11px"}},Ct={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},zt={__name:"Inference",setup(l){const s=He(),u=S(!1),E=S(!1),G=S(!1),V=S(""),K=S(""),L=S([]),ee=S([]),b=S({nodes:{total:0,online:0,offline:0,busy:0},tasks:{total:0,queued:0,completed:0,failed:0,avgDurationMs:0}}),W=S("nodes"),U=S(""),O=S(""),D=S(""),B=S(!1),R=S(!1),g=me({nodeId:"",endpoint:"",capabilities:"",gpuMemory:null}),_=me({model:"",input:"",priority:5,mode:"standard"}),ke=[{title:"节点 ID",key:"nodeId"},{title:"能力",key:"capabilities",width:"220px"},{title:"GPU",key:"gpu",width:"100px"},{title:"状态",key:"status",width:"100px"},{title:"任务数",key:"taskCount",width:"90px"},{title:"最近心跳",key:"lastHeartbeat",width:"160px"},{title:"操作",key:"action",width:"210px"}],be=[{title:"模型",key:"model"},{title:"隐私",key:"privacyMode",width:"110px"},{title:"优先级",key:"priority",width:"80px"},{title:"执行节点",key:"assignedNode",width:"140px"},{title:"状态",key:"status",width:"110px"},{title:"耗时",key:"duration",width:"110px"},{title:"提交时间",key:"createdAt",width:"160px"},{title:"操作",key:"action",width:"140px"}],xe=ye(()=>U.value?L.value.filter(o=>o.status===U.value):L.value),Se=ye(()=>{let o=ee.value;return O.value&&(o=o.filter(e=>e.status===O.value)),D.value&&(o=o.filter(e=>e.privacyMode===D.value)),o});function H(o){return{online:"在线",offline:"离线",busy:"忙碌",degraded:"降级"}[o]||o}function Ce(o){return{online:"green",offline:"default",busy:"orange",degraded:"red"}[o]||"default"}function te(o){return{queued:"排队中",dispatched:"已派发",running:"运行中",complete:"已完成",failed:"失败"}[o]||o}function ze(o){return{queued:"default",dispatched:"processing",running:"cyan",complete:"green",failed:"red"}[o]||"default"}function Y(o){return{standard:"标准",encrypted:"加密",federated:"联邦"}[o]||o}function he(o){return{standard:"default",encrypted:"purple",federated:"cyan"}[o]||"default"}function Me(o){return o>=8?"#ff4d4f":o>=5?"#faad14":"#52c41a"}function Ne(o){const e=L.value.find(f=>f.id===o);return e?e.nodeId:o.slice(0,8)}function ae(o,e){return o?o.length>e?o.slice(0,e)+"...":o:""}function Ae(o){return o>=1024?`${(o/1024).toFixed(1)} GB`:`${o} MB`}function Ie(o){return o.status==="queued"||o.status==="dispatched"||o.status==="running"}function je(o){return o.status!=="complete"&&o.status!=="failed"}function Te({key:o}){o==="register"?B.value=!0:o==="submit"&&(R.value=!0)}async function N(){u.value=!0;try{const[o,e,f]=await Promise.all([s.execute("inference nodes --limit 200 --json",1e4).catch(()=>({output:""})),s.execute("inference tasks --limit 200 --json",1e4).catch(()=>({output:""})),s.execute("inference stats --json",8e3).catch(()=>({output:""}))]);L.value=et(o.output),ee.value=at(e.output),b.value=nt(f.output)}catch(o){y.error("加载推理网络数据失败: "+(o?.message||o))}finally{u.value=!1}}async function $e(){const o=g.nodeId.trim();if(!o){y.warning("请填写节点 ID");return}E.value=!0;try{const e=[`inference register "${o.replace(/"/g,'\\"')}"`];if(g.endpoint.trim()&&e.push(`--endpoint "${g.endpoint.trim().replace(/"/g,'\\"')}"`),g.capabilities.trim()){const T=g.capabilities.split(/[,\s]+/).filter(Boolean).join(",");T&&e.push(`--capabilities "${T}"`)}g.gpuMemory!=null&&e.push(`--gpu ${g.gpuMemory}`),e.push("--json");const{output:f}=await s.execute(e.join(" "),1e4);if(/error|failed|失败/i.test(f)&&!/"nodeId"/.test(f)){y.error("注册失败: "+f.slice(0,120));return}y.success("节点已注册"),B.value=!1,oe(),await N()}catch(e){y.error("注册失败: "+(e?.message||e))}finally{E.value=!1}}async function we(){const o=_.model.trim();if(!o){y.warning("请填写模型名");return}G.value=!0;try{const e=[`inference submit "${o.replace(/"/g,'\\"')}"`];_.input.trim()&&e.push(`--input "${_.input.trim().replace(/"/g,'\\"')}"`),_.priority!=null&&e.push(`--priority ${_.priority}`),e.push(`--mode ${_.mode}`),e.push("--json");const{output:f}=await s.execute(e.join(" "),12e3);if(/error|failed|失败/i.test(f)&&!/"taskId"/.test(f)){y.error("提交失败: "+f.slice(0,120));return}y.success("任务已提交"),R.value=!1,ne(),W.value="tasks",await N()}catch(e){y.error("提交失败: "+(e?.message||e))}finally{G.value=!1}}async function Ue(o){V.value=o.id;try{const{output:e}=await s.execute(`inference heartbeat ${o.id} --json`,8e3);if(/error/i.test(e)&&!/"updated"/.test(e)){y.error("心跳失败: "+e.slice(0,120));return}y.success("心跳已更新"),await N()}catch(e){y.error("心跳失败: "+(e?.message||e))}finally{V.value=""}}async function Oe(o,e){if(e!==o.status)try{const{output:f}=await s.execute(`inference node-status ${o.id} ${e} --json`,8e3);if(/error|invalid/i.test(f)&&!/"updated"/.test(f)){y.error("状态转换失败: "+f.slice(0,120));return}y.success(`节点状态已更新为 ${H(e)}`),await N()}catch(f){y.error("状态转换失败: "+(f?.message||f))}}async function De(o){try{const{output:e}=await s.execute(`inference unregister ${o.id} --json`,8e3);if(/error/i.test(e)&&!/"removed"/.test(e)){y.error("注销失败: "+e.slice(0,120));return}y.success("节点已注销"),await N()}catch(e){y.error("注销失败: "+(e?.message||e))}}async function qe(o){K.value=o.id;try{const{output:e}=await s.execute(`inference complete ${o.id} --json`,1e4);if(/error|failed/i.test(e)&&!/"completed"/.test(e)){y.error("完成失败: "+e.slice(0,120));return}y.success("任务已完成"),await N()}catch(e){y.error("完成失败: "+(e?.message||e))}finally{K.value=""}}async function Fe(o){try{const{output:e}=await s.execute(`inference fail-task ${o.id} --json`,8e3);if(/error/i.test(e)&&!/"failed"/.test(e)){y.error("标记失败: "+e.slice(0,120));return}y.success("已标记为失败"),await N()}catch(e){y.error("标记失败: "+(e?.message||e))}}function oe(){g.nodeId="",g.endpoint="",g.capabilities="",g.gpuMemory=null}function ne(){_.model="",_.input="",_.priority=5,_.mode="standard"}return We(N),(o,e)=>{const f=v("a-button"),T=v("a-menu-item"),le=v("a-menu"),se=v("a-dropdown"),ie=v("a-space"),q=v("a-statistic"),$=v("a-card"),F=v("a-col"),Le=v("a-row"),A=v("a-tag"),j=v("a-radio-button"),J=v("a-radio-group"),re=v("a-popconfirm"),ue=v("a-table"),de=v("a-tab-pane"),Be=v("a-tabs"),P=v("a-input"),I=v("a-form-item"),pe=v("a-input-number"),ce=v("a-form"),fe=v("a-modal"),Re=v("a-textarea");return i(),c("div",null,[M("div",lt,[e[18]||(e[18]=M("div",null,[M("h2",{class:"page-title"},"推理网络"),M("p",{class:"page-sub"},"去中心化推理节点 · 任务调度 · 隐私模式")],-1)),a(ie,null,{default:t(()=>[a(f,{loading:u.value,onClick:N},{icon:t(()=>[a(k(Ee))]),default:t(()=>[e[14]||(e[14]=d(" 刷新 ",-1))]),_:1},8,["loading"]),a(se,{trigger:["click"]},{overlay:t(()=>[a(le,{onClick:Te},{default:t(()=>[a(T,{key:"register"},{default:t(()=>[a(k(Q)),e[16]||(e[16]=d(" 注册节点",-1))]),_:1}),a(T,{key:"submit"},{default:t(()=>[a(k(X)),e[17]||(e[17]=d(" 提交推理任务",-1))]),_:1})]),_:1})]),default:t(()=>[a(f,{type:"primary"},{icon:t(()=>[a(k(Ge))]),default:t(()=>[e[15]||(e[15]=d(" 操作 ▼ ",-1))]),_:1})]),_:1})]),_:1})]),a(Le,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:t(()=>[a(F,{xs:12,sm:8,lg:5},{default:t(()=>[a($,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(q,{title:"节点总数",value:b.value.nodes.total,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:t(()=>[a(k(Q))]),_:1},8,["value"])]),_:1})]),_:1}),a(F,{xs:12,sm:8,lg:5},{default:t(()=>[a($,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(q,{title:"在线节点",value:b.value.nodes.online,"value-style":{color:b.value.nodes.online>0?"#52c41a":"#888",fontSize:"20px"}},{prefix:t(()=>[a(k(Ve))]),_:1},8,["value","value-style"])]),_:1})]),_:1}),a(F,{xs:12,sm:8,lg:5},{default:t(()=>[a($,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(q,{title:"任务总数",value:b.value.tasks.total,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:t(()=>[a(k(X))]),_:1},8,["value"])]),_:1})]),_:1}),a(F,{xs:12,sm:8,lg:5},{default:t(()=>[a($,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(q,{title:"排队中",value:b.value.tasks.queued,"value-style":{color:b.value.tasks.queued>0?"#faad14":"#52c41a",fontSize:"20px"}},{prefix:t(()=>[a(k(Ke))]),_:1},8,["value","value-style"])]),_:1})]),_:1}),a(F,{xs:24,sm:8,lg:4},{default:t(()=>[a($,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(q,{title:"平均耗时",value:b.value.tasks.avgDurationMs,suffix:"ms","value-style":{color:"#13c2c2",fontSize:"20px"}},null,8,["value"])]),_:1})]),_:1})]),_:1}),b.value.nodes.total>0?(i(),x($,{key:0,title:"节点状态分布",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:t(()=>[a(ie,{size:[12,8],wrap:""},{default:t(()=>[a(A,{color:"green"},{default:t(()=>[d("在线 "+p(b.value.nodes.online),1)]),_:1}),a(A,{color:"orange"},{default:t(()=>[d("忙碌 "+p(b.value.nodes.busy),1)]),_:1}),a(A,{color:"default"},{default:t(()=>[d("离线 "+p(b.value.nodes.offline),1)]),_:1}),M("span",st," 完成: "+p(b.value.tasks.completed)+" · 失败: "+p(b.value.tasks.failed),1)]),_:1})]),_:1})):m("",!0),a(Be,{activeKey:W.value,"onUpdate:activeKey":e[3]||(e[3]=n=>W.value=n),class:"inference-tabs"},{default:t(()=>[a(de,{key:"nodes",tab:"节点"},{default:t(()=>[M("div",it,[a(J,{value:U.value,"onUpdate:value":e[0]||(e[0]=n=>U.value=n),size:"small","button-style":"solid"},{default:t(()=>[a(j,{value:""},{default:t(()=>[...e[19]||(e[19]=[d("全部",-1)])]),_:1}),(i(!0),c(C,null,w(k(ve),n=>(i(),x(j,{key:n,value:n},{default:t(()=>[d(p(H(n)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),a(ue,{columns:ke,"data-source":xe.value,pagination:{pageSize:20,showTotal:n=>`共 ${n} 条`},size:"small",loading:u.value,style:{background:"var(--bg-card)"}},{bodyCell:t(({column:n,record:r})=>[n.key==="nodeId"?(i(),c(C,{key:0},[M("span",rt,p(r.nodeId),1),r.endpoint?(i(),c("div",ut,p(ae(r.endpoint,50)),1)):m("",!0)],64)):m("",!0),n.key==="capabilities"?(i(),c(C,{key:1},[(i(!0),c(C,null,w(r.capabilities.slice(0,4),z=>(i(),x(A,{key:z,color:"blue",style:{"font-size":"10px",margin:"1px"}},{default:t(()=>[d(p(z),1)]),_:2},1024))),128)),r.capabilities.length>4?(i(),x(A,{key:0,color:"default",style:{"font-size":"10px"}},{default:t(()=>[d("+"+p(r.capabilities.length-4),1)]),_:2},1024)):m("",!0),r.capabilities.length?m("",!0):(i(),c("span",dt,"—"))],64)):m("",!0),n.key==="gpu"?(i(),c(C,{key:2},[r.gpuMemoryMb>0?(i(),c("span",pt,p(Ae(r.gpuMemoryMb)),1)):(i(),c("span",ct,"—"))],64)):m("",!0),n.key==="status"?(i(),x(A,{key:3,color:Ce(r.status)},{default:t(()=>[d(p(H(r.status)),1)]),_:2},1032,["color"])):m("",!0),n.key==="taskCount"?(i(),x(A,{key:4,color:"purple",style:{"font-size":"11px"}},{default:t(()=>[d(p(r.taskCount),1)]),_:2},1024)):m("",!0),n.key==="lastHeartbeat"?(i(),c("span",ft,p(k(_e)(r.lastHeartbeat)),1)):m("",!0),n.key==="action"?(i(),c(C,{key:6},[a(f,{size:"small",type:"link",loading:V.value===r.id,onClick:z=>Ue(r)},{default:t(()=>[...e[20]||(e[20]=[d("心跳",-1)])]),_:1},8,["loading","onClick"]),a(se,{trigger:["click"]},{overlay:t(()=>[a(le,{onClick:z=>Oe(r,z.key)},{default:t(()=>[(i(!0),c(C,null,w(k(ve),z=>(i(),x(T,{key:z,disabled:z===r.status},{default:t(()=>[d(p(H(z)),1)]),_:2},1032,["disabled"]))),128))]),_:2},1032,["onClick"])]),default:t(()=>[a(f,{size:"small",type:"link"},{default:t(()=>[...e[21]||(e[21]=[d("状态 ▼",-1)])]),_:1})]),_:2},1024),a(re,{title:"注销该节点?","ok-text":"注销","cancel-text":"取消",onConfirm:z=>De(r)},{default:t(()=>[a(f,{size:"small",type:"link",danger:""},{default:t(()=>[...e[22]||(e[22]=[d("注销",-1)])]),_:1})]),_:1},8,["onConfirm"])],64)):m("",!0)]),emptyText:t(()=>[M("div",yt,[a(k(Q),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),d(" "+p(U.value?"没有符合条件的节点":'暂无节点,点"操作 → 注册节点"添加第一个'),1)])]),_:1},8,["data-source","pagination","loading"])]),_:1}),a(de,{key:"tasks",tab:"任务"},{default:t(()=>[M("div",mt,[a(J,{value:O.value,"onUpdate:value":e[1]||(e[1]=n=>O.value=n),size:"small"},{default:t(()=>[a(j,{value:""},{default:t(()=>[...e[23]||(e[23]=[d("全部状态",-1)])]),_:1}),(i(!0),c(C,null,w(k(Qe),n=>(i(),x(j,{key:n,value:n},{default:t(()=>[d(p(te(n)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),a(J,{value:D.value,"onUpdate:value":e[2]||(e[2]=n=>D.value=n),size:"small"},{default:t(()=>[a(j,{value:""},{default:t(()=>[...e[24]||(e[24]=[d("全部模式",-1)])]),_:1}),(i(!0),c(C,null,w(k(ge),n=>(i(),x(j,{key:n,value:n},{default:t(()=>[d(p(Y(n)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),a(ue,{columns:be,"data-source":Se.value,pagination:{pageSize:20,showTotal:n=>`共 ${n} 条`},size:"small",loading:u.value,style:{background:"var(--bg-card)"}},{bodyCell:t(({column:n,record:r})=>[n.key==="model"?(i(),c(C,{key:0},[M("span",vt,p(r.model),1),r.input?(i(),c("div",gt,p(ae(r.input,60)),1)):m("",!0)],64)):m("",!0),n.key==="privacyMode"?(i(),x(A,{key:1,color:he(r.privacyMode)},{default:t(()=>[d(p(Y(r.privacyMode)),1)]),_:2},1032,["color"])):m("",!0),n.key==="priority"?(i(),c("span",{key:2,style:Ye({color:Me(r.priority),fontWeight:500})},p(r.priority),5)):m("",!0),n.key==="assignedNode"?(i(),c(C,{key:3},[r.assignedNode?(i(),c("span",_t,p(Ne(r.assignedNode)),1)):(i(),c("span",kt,"—"))],64)):m("",!0),n.key==="status"?(i(),x(A,{key:4,color:ze(r.status)},{default:t(()=>[d(p(te(r.status)),1)]),_:2},1032,["color"])):m("",!0),n.key==="duration"?(i(),c(C,{key:5},[r.durationMs!=null?(i(),c("span",bt,p(r.durationMs)+" ms ",1)):(i(),c("span",xt,"—"))],64)):m("",!0),n.key==="createdAt"?(i(),c("span",St,p(k(_e)(r.createdAt)),1)):m("",!0),n.key==="action"?(i(),c(C,{key:7},[Ie(r)?(i(),x(f,{key:0,size:"small",type:"link",loading:K.value===r.id,onClick:z=>qe(r)},{default:t(()=>[...e[25]||(e[25]=[d(" 完成 ",-1)])]),_:1},8,["loading","onClick"])):m("",!0),je(r)?(i(),x(re,{key:1,title:"标记任务失败?","ok-text":"确认","cancel-text":"取消",onConfirm:z=>Fe(r)},{default:t(()=>[a(f,{size:"small",type:"link",danger:""},{default:t(()=>[...e[26]||(e[26]=[d("失败",-1)])]),_:1})]),_:1},8,["onConfirm"])):m("",!0)],64)):m("",!0)]),emptyText:t(()=>[M("div",Ct,[a(k(X),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),d(" "+p(O.value||D.value?"没有符合条件的任务":'暂无任务,点"操作 → 提交推理任务"创建第一个'),1)])]),_:1},8,["data-source","pagination","loading"])]),_:1})]),_:1},8,["activeKey"]),a(fe,{open:B.value,"onUpdate:open":e[8]||(e[8]=n=>B.value=n),title:"注册推理节点","confirm-loading":E.value,width:520,"ok-text":"注册","cancel-text":"取消",onOk:$e,onCancel:oe},{default:t(()=>[a(ce,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:t(()=>[a(I,{label:"节点 ID",required:""},{default:t(()=>[a(P,{value:g.nodeId,"onUpdate:value":e[4]||(e[4]=n=>g.nodeId=n),placeholder:"例如: gpu-host-1"},null,8,["value"])]),_:1}),a(I,{label:"端点 URL"},{default:t(()=>[a(P,{value:g.endpoint,"onUpdate:value":e[5]||(e[5]=n=>g.endpoint=n),placeholder:"https://node.example.com(可选)"},null,8,["value"])]),_:1}),a(I,{label:"能力列表"},{default:t(()=>[a(P,{value:g.capabilities,"onUpdate:value":e[6]||(e[6]=n=>g.capabilities=n),placeholder:"逗号分隔,例如: llama2,mistral,gpt-4"},null,8,["value"])]),_:1}),a(I,{label:"GPU 内存 (MB)"},{default:t(()=>[a(pe,{value:g.gpuMemory,"onUpdate:value":e[7]||(e[7]=n=>g.gpuMemory=n),min:0,max:2e5,style:{width:"100%"}},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"]),a(fe,{open:R.value,"onUpdate:open":e[13]||(e[13]=n=>R.value=n),title:"提交推理任务","confirm-loading":G.value,width:520,"ok-text":"提交","cancel-text":"取消",onOk:we,onCancel:ne},{default:t(()=>[a(ce,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:t(()=>[a(I,{label:"模型",required:""},{default:t(()=>[a(P,{value:_.model,"onUpdate:value":e[9]||(e[9]=n=>_.model=n),placeholder:"例如: llama2-7b"},null,8,["value"])]),_:1}),a(I,{label:"输入"},{default:t(()=>[a(Re,{value:_.input,"onUpdate:value":e[10]||(e[10]=n=>_.input=n),"auto-size":{minRows:3,maxRows:6}},null,8,["value"])]),_:1}),a(I,{label:"优先级"},{default:t(()=>[a(pe,{value:_.priority,"onUpdate:value":e[11]||(e[11]=n=>_.priority=n),min:1,max:10,style:{width:"100%"}},null,8,["value"])]),_:1}),a(I,{label:"隐私模式"},{default:t(()=>[a(J,{value:_.mode,"onUpdate:value":e[12]||(e[12]=n=>_.mode=n)},{default:t(()=>[(i(!0),c(C,null,w(k(ge),n=>(i(),x(j,{key:n,value:n},{default:t(()=>[d(p(Y(n)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"])])}}},qt=Pe(zt,[["__scopeId","data-v-cd24d62b"]]);export{qt as default};