aitu-app 0.6.63 → 0.6.64

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 (153) hide show
  1. package/README.md +3 -3
  2. package/assets/{CanvasAudioPlayer-Du5kXrAd.js → CanvasAudioPlayer-B2W5__ni.js} +1 -1
  3. package/assets/{ChatDrawer-CqZHx7x_.js → ChatDrawer-M1q92KNU.js} +2 -2
  4. package/assets/{ChatMessagesArea-AG3RXe34.js → ChatMessagesArea-D9LNDmbK.js} +2 -2
  5. package/assets/{DeferredAIInputBar-CNAPl6C2.js → DeferredAIInputBar-CKhI8Jhd.js} +2 -2
  6. package/assets/{DrawnixDeferredFeatures-BrhbEEBa.js → DrawnixDeferredFeatures-DxyxvT2y.js} +1 -1
  7. package/assets/{KnowledgeBaseContent-3hE8vBra.js → KnowledgeBaseContent-C_JxGQXg.js} +3 -3
  8. package/assets/{MVCreator-2NIxaaSL.js → MVCreator-DOt6pxq2.js} +1 -1
  9. package/assets/{ModelBenchmarkWorkbench-CacNyFbi.js → ModelBenchmarkWorkbench-3j77ocpe.js} +1 -1
  10. package/assets/{ModelDropdown-3MjTl1AO.js → ModelDropdown-CHYgRb1r.js} +1 -1
  11. package/assets/{MusicAnalyzer-Mmu92A4Y.js → MusicAnalyzer-BTXks5oV.js} +1 -1
  12. package/assets/{MusicAnalyzer-Drf2j8jn.js → MusicAnalyzer-Dr-DPePj.js} +1 -1
  13. package/assets/{ResizableDivider-B_67th7H.js → ResizableDivider-P1jpoJ3i.js} +1 -1
  14. package/assets/{TaskQueuePanel-VfjKIooN.js → TaskQueuePanel-D6NtMAbm.js} +1 -1
  15. package/assets/{VideoAnalyzer-DNWjNcIx.js → VideoAnalyzer-BHZMqLIa.js} +1 -1
  16. package/assets/{ai-generation-preferences-service-Ch1XhjkZ.js → ai-generation-preferences-service-CabuQA69.js} +1 -1
  17. package/assets/{arc-DE4qRd9D.js → arc-BajUk0_Z.js} +1 -1
  18. package/assets/{arc-DJ5Mb9x1.js → arc-Z9PGo_2L.js} +1 -1
  19. package/assets/{batch-image-generation-Bk8HSFol.js → batch-image-generation-RKz5tz-Y.js} +1 -1
  20. package/assets/{blockDiagram-38ab4fdb-B62iB8ti.js → blockDiagram-38ab4fdb-BsEJDcLK.js} +1 -1
  21. package/assets/{blockDiagram-38ab4fdb-D2MnfN1Q.js → blockDiagram-38ab4fdb-Cfmk3_6A.js} +1 -1
  22. package/assets/{c4Diagram-3d4e48cf-CgUaipiZ.js → c4Diagram-3d4e48cf-D2OyfHpd.js} +1 -1
  23. package/assets/{c4Diagram-3d4e48cf-DHV35ltP.js → c4Diagram-3d4e48cf-K-ewbsK1.js} +1 -1
  24. package/assets/{canvas-insertion-ZEZkcXvB.js → canvas-insertion-CYbFgP4L.js} +1 -1
  25. package/assets/channel-6DAc0JPc.js +1 -0
  26. package/assets/channel-WrMsNCbC.js +1 -0
  27. package/assets/{classDiagram-70f12bd4-C6X-VZXt.js → classDiagram-70f12bd4-BGEF352u.js} +1 -1
  28. package/assets/{classDiagram-70f12bd4-OH5sF1K-.js → classDiagram-70f12bd4-Gn3MZjEL.js} +1 -1
  29. package/assets/{classDiagram-v2-f2320105-otk4V9KH.js → classDiagram-v2-f2320105-C_aAfIgL.js} +1 -1
  30. package/assets/{classDiagram-v2-f2320105-D1I5s2af.js → classDiagram-v2-f2320105-DYPMFlcT.js} +1 -1
  31. package/assets/{clipper-BWlMmsTH.js → clipper-ByL4oIbZ.js} +1 -1
  32. package/assets/clone-keJVIubx.js +1 -0
  33. package/assets/{createText-2e5e7dd3-DuiUpOXV.js → createText-2e5e7dd3-C0UgSBh5.js} +1 -1
  34. package/assets/{createText-2e5e7dd3-D78Dn_q8.js → createText-2e5e7dd3-CoA6JNKB.js} +1 -1
  35. package/assets/{edges-e0da2a9e-Br3GgeJK.js → edges-e0da2a9e-DmyL0L_b.js} +1 -1
  36. package/assets/{edges-e0da2a9e-Dio4S9-4.js → edges-e0da2a9e-qdTreft0.js} +1 -1
  37. package/assets/{erDiagram-9861fffd-BYkBBs0M.js → erDiagram-9861fffd-Bjyf78Da.js} +1 -1
  38. package/assets/{erDiagram-9861fffd-DuZccGHy.js → erDiagram-9861fffd-DYWtVkXG.js} +1 -1
  39. package/assets/{flowDb-956e92f1-BvHxN76x.js → flowDb-956e92f1-Clfuqh48.js} +1 -1
  40. package/assets/{flowDb-956e92f1-D6cTY_st.js → flowDb-956e92f1-vnfymslR.js} +1 -1
  41. package/assets/{flowDiagram-66a62f08-Bh5LanWu.js → flowDiagram-66a62f08-54OX2XOH.js} +1 -1
  42. package/assets/{flowDiagram-66a62f08-rCNbZEwY.js → flowDiagram-66a62f08-lS8fOa4T.js} +1 -1
  43. package/assets/flowDiagram-v2-96b9c2cf-Bw7qAcFu.js +1 -0
  44. package/assets/flowDiagram-v2-96b9c2cf-DGyrUMgR.js +1 -0
  45. package/assets/{flowchart-elk-definition-4a651766-llVLlxyE.js → flowchart-elk-definition-4a651766-CXdElD40.js} +1 -1
  46. package/assets/{flowchart-elk-definition-4a651766-CIShIr5E.js → flowchart-elk-definition-4a651766-D4UghemK.js} +1 -1
  47. package/assets/{ganttDiagram-c361ad54-j2pPvoOi.js → ganttDiagram-c361ad54-Bl7rQCLW.js} +1 -1
  48. package/assets/{ganttDiagram-c361ad54-CUtUP4cJ.js → ganttDiagram-c361ad54-CwAjbWcn.js} +1 -1
  49. package/assets/{gitGraphDiagram-72cf32ee-hQmVrZTT.js → gitGraphDiagram-72cf32ee-B-ykaDuR.js} +1 -1
  50. package/assets/{gitGraphDiagram-72cf32ee-BijhDF7a.js → gitGraphDiagram-72cf32ee-ChvlaDvG.js} +1 -1
  51. package/assets/{graph-CVdXivUk.js → graph-Bq1HvHkL.js} +1 -1
  52. package/assets/{graph-iERr38Mn.js → graph-DM094zt_.js} +1 -1
  53. package/assets/{index-3862675e-BCU8UapW.js → index-3862675e-CA0xjB9W.js} +1 -1
  54. package/assets/{index-3862675e-BdD6mhWW.js → index-3862675e-DGrSmeWu.js} +1 -1
  55. package/assets/{index-CxqCKbLy.js → index-AFp_qpAI.js} +1 -1
  56. package/assets/{index-q02ppfIX.js → index-B4dceFKj.js} +1 -1
  57. package/assets/{index-BmNN2uGW.js → index-B67KSDhv.js} +1 -1
  58. package/assets/{index-ByxyNkwM.js → index-BC221_MJ.js} +1 -1
  59. package/assets/{index-nPSeKWRU.js → index-BGFWA6Zt.js} +1 -1
  60. package/assets/{index-DCjrDHEd.js → index-BH3jS3gm.js} +1 -1
  61. package/assets/{index-B-bas2QJ.js → index-BKTLxghO.js} +1 -1
  62. package/assets/{index-CW9BeyEu.js → index-Bks4xBST.js} +1 -1
  63. package/assets/{index-CvlBHvN3.js → index-BmEFRKV7.js} +1 -1
  64. package/assets/{index-DuFyvKRm.js → index-C3h-b0UN.js} +1 -1
  65. package/assets/{index-CmOEsqBQ.js → index-C5Onm0uO.js} +1 -1
  66. package/assets/{index-DYtXgeSz.js → index-CGelrSXy.js} +1 -1
  67. package/assets/{index-vw8fjMik.js → index-CKBsqCzR.js} +1 -1
  68. package/assets/{index-DjGrNkrV.js → index-CKjzms_e.js} +1 -1
  69. package/assets/{index-CxUWaNUo.js → index-CMLI8gQy.js} +1 -1
  70. package/assets/{index-CkjuY786.js → index-CVEllvWf.js} +1 -1
  71. package/assets/{index-BUZUbTWS.js → index-CW_ala_3.js} +1 -1
  72. package/assets/{index-BxdH1-er.js → index-Ci5Z3DWY.js} +1 -1
  73. package/assets/{index-BeRhCeQu.js → index-CtNjfEqK.js} +1 -1
  74. package/assets/{index-BakDREx4.js → index-CvbEsbIE.js} +1 -1
  75. package/assets/{index-BnaNWg7x.js → index-DM-iV9Y8.js} +2 -2
  76. package/assets/{index-DMfHKITi.js → index-DTqVJVfv.js} +1 -1
  77. package/assets/{index-BdSFouqR.js → index-DZtf3zC8.js} +1 -1
  78. package/assets/{index-ByECpktB.js → index-D_LadtY8.js} +1 -1
  79. package/assets/{index-UeGDfQIX.js → index-DiSWR48t.js} +1 -1
  80. package/assets/{index-D0O0qYML.js → index-DsFroXrj.js} +1 -1
  81. package/assets/{index-BN7eABQE.js → index-DxqCsnoj.js} +1 -1
  82. package/assets/{index-B_eFETCZ.js → index-Jvh12pKI.js} +1 -1
  83. package/assets/{index-CMQMxwMb.js → index-gHdnUGOu.js} +3 -3
  84. package/assets/{index-CE0NChcB.js → index-kKjFXTNL.js} +1 -1
  85. package/assets/{index-D4R9cQ86.js → index-v1v0x1ci.js} +3 -3
  86. package/assets/{infoDiagram-f8f76790-Cmv7jbWa.js → infoDiagram-f8f76790-C-wYgjah.js} +1 -1
  87. package/assets/{infoDiagram-f8f76790-D0DSz5Ue.js → infoDiagram-f8f76790-Cu-3eq4R.js} +1 -1
  88. package/assets/{journeyDiagram-49397b02-D6HU8bXU.js → journeyDiagram-49397b02-BG8aYQK6.js} +1 -1
  89. package/assets/{journeyDiagram-49397b02-Db00D03K.js → journeyDiagram-49397b02-DXPaY9vn.js} +1 -1
  90. package/assets/{layout-CPj4wl_r.js → layout-DvIBYRXu.js} +1 -1
  91. package/assets/{layout-DGJFFi9s.js → layout-SoDWNnQD.js} +1 -1
  92. package/assets/{line-D_WC7vRh.js → line-Bxc-zIvZ.js} +1 -1
  93. package/assets/{line-CpXi5g86.js → line-CFFXuH78.js} +1 -1
  94. package/assets/{linear-n85WiAhX.js → linear-BF0xIQKP.js} +1 -1
  95. package/assets/{linear-UpmxQM2f.js → linear-DQ3XkjOP.js} +1 -1
  96. package/assets/{main-DX4kRYQX.js → main-8GBlYJSO.js} +8 -8
  97. package/assets/{mermaid.core-N7WwfYcf.js → mermaid.core-BGyfnsLl.js} +3 -3
  98. package/assets/{mindmap-definition-fc14e90a-C8U6pdZ2.js → mindmap-definition-fc14e90a-CrYWIUXi.js} +1 -1
  99. package/assets/{mindmap-definition-fc14e90a-D2hbUBx2.js → mindmap-definition-fc14e90a-DOkI3ebm.js} +1 -1
  100. package/assets/{model-benchmark-launcher-BrOG9Vlm.js → model-benchmark-launcher-DtJmU6Wc.js} +1 -1
  101. package/assets/{model-benchmark-service-DDklUBjC.js → model-benchmark-service-B0QCqInK.js} +1 -1
  102. package/assets/{model-selection-BaH65gMK.js → model-selection-CbzU26xQ.js} +1 -1
  103. package/assets/{photo-wall-splitter-QuaIbsZ1.js → photo-wall-splitter-BPzdMtA1.js} +1 -1
  104. package/assets/{pieDiagram-8a3498a8-BPHw5PxR.js → pieDiagram-8a3498a8-ChLZxjKv.js} +1 -1
  105. package/assets/{pieDiagram-8a3498a8-DKV5uwrs.js → pieDiagram-8a3498a8-DAWd9-jL.js} +1 -1
  106. package/assets/{quadrantDiagram-120e2f19-pe-wI-U4.js → quadrantDiagram-120e2f19-CBBovNE2.js} +1 -1
  107. package/assets/{quadrantDiagram-120e2f19-DQdaeBYM.js → quadrantDiagram-120e2f19-DSvfgE7I.js} +1 -1
  108. package/assets/{requirementDiagram-deff3bca-DYepoptc.js → requirementDiagram-deff3bca-De51fyhT.js} +1 -1
  109. package/assets/{requirementDiagram-deff3bca-QX4OaNTO.js → requirementDiagram-deff3bca-ke6SiEw1.js} +1 -1
  110. package/assets/{sankeyDiagram-04a897e0-DJkKTFXr.js → sankeyDiagram-04a897e0-BxiqkhtK.js} +1 -1
  111. package/assets/{sankeyDiagram-04a897e0-1bYf2R8i.js → sankeyDiagram-04a897e0-Clr8_HiZ.js} +1 -1
  112. package/assets/{sequenceDiagram-704730f1-B52OA1Y3.js → sequenceDiagram-704730f1-Bc8zPHLG.js} +1 -1
  113. package/assets/{sequenceDiagram-704730f1-B4QsYTCd.js → sequenceDiagram-704730f1-BfBUJmAu.js} +1 -1
  114. package/assets/{settings-dialog-Bueh6yYA.js → settings-dialog-C9BMj8Zj.js} +1 -1
  115. package/assets/{skill-dsl-parser-CPpdtdC1.js → skill-dsl-parser-BxkJ9Ixc.js} +1 -1
  116. package/assets/{stateDiagram-587899a1-D221rMST.js → stateDiagram-587899a1-DAil8S_m.js} +1 -1
  117. package/assets/{stateDiagram-587899a1-X7bhoHKe.js → stateDiagram-587899a1-Vop8VRn5.js} +1 -1
  118. package/assets/{stateDiagram-v2-d93cdb3a-D9VdRPIN.js → stateDiagram-v2-d93cdb3a-8b1lkei5.js} +1 -1
  119. package/assets/{stateDiagram-v2-d93cdb3a-CGMASaM9.js → stateDiagram-v2-d93cdb3a-BHm8pPuv.js} +1 -1
  120. package/assets/{styles-6aaf32cf-D_xcN1dm.js → styles-6aaf32cf-BlD8JxQr.js} +1 -1
  121. package/assets/{styles-6aaf32cf-DHTzglnJ.js → styles-6aaf32cf-C4CEUYqK.js} +1 -1
  122. package/assets/{styles-9a916d00-w5Yn3LRO.js → styles-9a916d00-C6tkW5rH.js} +1 -1
  123. package/assets/{styles-9a916d00-BVoYXPeR.js → styles-9a916d00-Oss0YMv5.js} +1 -1
  124. package/assets/{styles-c10674c1-xX_gtHzZ.js → styles-c10674c1-D4YQTLGD.js} +1 -1
  125. package/assets/{styles-c10674c1-C3cgfc7I.js → styles-c10674c1-D6N_fge5.js} +1 -1
  126. package/assets/{svgDrawCommon-08f97a94-DFof-iml.js → svgDrawCommon-08f97a94-BOSx1sQS.js} +1 -1
  127. package/assets/{svgDrawCommon-08f97a94-DxU2UGYh.js → svgDrawCommon-08f97a94-RZvmFGZL.js} +1 -1
  128. package/assets/{timeline-definition-85554ec2-CzV_JohE.js → timeline-definition-85554ec2-BL5y0l6c.js} +1 -1
  129. package/assets/{timeline-definition-85554ec2-FPml3o0r.js → timeline-definition-85554ec2-BY6Jx-ZP.js} +1 -1
  130. package/assets/{tool-windows-hjm6YiPY.js → tool-windows-C4D0lII2.js} +137 -137
  131. package/assets/{ttd-dialog-CqISZ7cy.js → ttd-dialog-qD0QkDID.js} +4 -4
  132. package/assets/{use-runtime-models-C0uyCfar.js → use-runtime-models-BLwgp0M1.js} +1 -1
  133. package/assets/{useCharacters-BGdX9007.js → useCharacters-945b6dqW.js} +1 -1
  134. package/assets/{useWorkflowSubmission-BmFQdWt3.js → useWorkflowSubmission-Z0u0KCNN.js} +2 -2
  135. package/assets/{video-analyze-DszumYAr.js → video-analyze-Co9na7Gr.js} +1 -1
  136. package/assets/{video-generation-DEL-kJgF.js → video-generation-x2UMMPYg.js} +1 -1
  137. package/assets/{video-recovery-service-C9y_bfU1.js → video-recovery-service-BsV5nlEP.js} +1 -1
  138. package/assets/{workflow-generation-utils-Da12qXTb.js → workflow-generation-utils-CZULSJWQ.js} +2 -2
  139. package/assets/{workflow-submission-service-BuFuRV_m.js → workflow-submission-service-C-eCWm_8.js} +1 -1
  140. package/assets/{xychartDiagram-e933f94c-C41tCiSk.js → xychartDiagram-e933f94c-CNjZprqQ.js} +1 -1
  141. package/assets/{xychartDiagram-e933f94c-HanO46iU.js → xychartDiagram-e933f94c-DjIBec-i.js} +1 -1
  142. package/changelog.json +16 -0
  143. package/idle-prefetch-manifest.json +6 -6
  144. package/manifest.json +3 -3
  145. package/package.json +1 -1
  146. package/precache-manifest.json +304 -304
  147. package/sw.js +5 -5
  148. package/version.json +7 -3
  149. package/assets/channel-B5QZCgOy.js +0 -1
  150. package/assets/channel-CU3dhzIS.js +0 -1
  151. package/assets/clone-BAOxFbud.js +0 -1
  152. package/assets/flowDiagram-v2-96b9c2cf-BEdEe3Ip.js +0 -1
  153. package/assets/flowDiagram-v2-96b9c2cf-CVItVSoD.js +0 -1
@@ -1 +1 @@
1
- import{r as o,iQ as S,hd as k,y as e,j9 as c,bV as L,kS as K,kT as B,kU as $,iN as C,iO as Y,kV as W,iX as N,kW as X}from"./tool-windows-hjm6YiPY.js";import{m as J}from"./model-benchmark-service-DDklUBjC.js";const Q="https://apistatus.tu-zi.com",w=60*1e3;class g{constructor(){this.cachedData=[],this.lastFetchTime=0,this.pendingFetch=null}static getInstance(){return g.instance||(g.instance=new g),g.instance}async fetch(a=5,r=!1){const l=Date.now();if(!r&&this.cachedData.length>0&&l-this.lastFetchTime<w)return this.cachedData;if(this.pendingFetch)return this.pendingFetch;this.pendingFetch=this.doFetch(a);try{return await this.pendingFetch}finally{this.pendingFetch=null}}async doFetch(a){const r=Math.floor(Date.now()/1e3),l=r-a*60,u=`${Q}/api/history/aggregated?start_time=${l}&end_time=${r}&interval=60`;try{const d=await fetch(u,{method:"GET",headers:{Accept:"application/json"}});if(!d.ok)return console.warn(`[ModelHealthService] API returned ${d.status}`),this.cachedData;const f=await d.json();return this.cachedData=f,this.lastFetchTime=Date.now(),f}catch(d){return console.warn("[ModelHealthService] Failed to fetch health data:",d),this.cachedData}}getCachedData(){return this.cachedData}getLastFetchTime(){return this.lastFetchTime}isCacheValid(){return this.cachedData.length>0&&Date.now()-this.lastFetchTime<w}}const V=g.getInstance(),H="default";function D(t){return(typeof t=="string"?t.trim():"")||H}function q(t){const a=t.split("|");return a.length<2?H:D(a.slice(1).join("|"))}function E(t,a){return`${t}@@${D(a)}`}function z(t){const a=new Map,r=[...t].sort((l,u)=>u.time_bucket-l.time_bucket);for(const l of r){const u=Array.isArray(l.model_name)?l.model_name:[l.model_name],d=q(l.rule_name);for(const f of u){const m=E(f,d);a.has(m)||a.set(m,{modelName:f,ruleName:l.rule_name,groupName:d,statusLabel:l.status_label,statusColor:l.status_color,errorRate:l.error_rate,isLowTraffic:l.is_low_traffic,detectSaturated:l.detect_saturated,totalCount:l.total_count,timeBucket:l.time_bucket})}}return a}function A(t){return t.includes("api.tu-zi.com")}const I=o.createContext(null),O=300*1e3;function Z(t){return t.some(a=>a.enabled&&A(a.baseUrl||""))}const N1=({children:t})=>{const[a,r]=o.useState(()=>{const v=V.getCachedData();return v.length>0?z(v):new Map}),[l,u]=o.useState(!1),[d,f]=o.useState(null),[m,M]=o.useState(!1),n=o.useRef(null),[b,_]=o.useState(()=>S.get()),j=o.useCallback(()=>{const v=k.get(),s=S.get(),h=A(v.baseUrl||"")||Z(s);return M(h),_(s),h},[]),p=o.useCallback(async(v=!1)=>{if(j()){u(!0),f(null);try{const s=await V.fetch(5,v),h=z(s);r(h)}catch(s){console.warn("[ModelHealthContext] Failed to fetch:",s);const h=s instanceof Error?s.message:"Failed to fetch health data";f(h)}finally{u(!1)}}},[j]),x=o.useCallback(async()=>{await p(!0)},[p]),R=o.useCallback((v,s)=>{const h=typeof s=="string"&&s&&b.find(T=>T.id===s)||null;if(h)return A(h.baseUrl||"")?a.get(E(v,h.pricingGroup||"default")):void 0;const y=k.get();if(A(y.baseUrl||""))return a.get(E(v,"default"))},[a,b]);return o.useEffect(()=>{j()&&(p(),n.current=setInterval(()=>{p(!0)},O));const s=()=>{const h=j();h&&!n.current?(p(),n.current=setInterval(()=>{p(!0)},O)):!h&&n.current&&(clearInterval(n.current),n.current=null,r(new Map))};return k.addListener(s),S.addListener(s),()=>{k.removeListener(s),S.removeListener(s),n.current&&clearInterval(n.current)}},[j,p]),e.jsx(I.Provider,{value:{healthMap:a,loading:l,error:d,shouldShowHealth:m,refresh:x,getHealthStatus:R},children:t})};function e1(){const t=o.useContext(I);return t||{healthMap:new Map,loading:!1,error:null,shouldShowHealth:!1,refresh:async()=>{},getHealthStatus:()=>{}}}const A1=({tabs:t,activeTab:a,onTabChange:r,middleTabs:l,activeMiddleTab:u,onMiddleTabChange:d,searchQuery:f,children:m,compact:M=!1,tabsFooter:n})=>{const b=!!(f!=null&&f.trim()),_=l&&l.length>0&&!b,j=o.useCallback(x=>{r(x)},[r]),p=o.useCallback(x=>{d==null||d(x)},[d]);return e.jsxs("div",{className:`vendor-tab-panel ${M?"vendor-tab-panel--compact":""} ${_?"vendor-tab-panel--three-col":""}`,children:[!b&&e.jsxs("div",{className:"vendor-tab-panel__tabs",children:[e.jsx("div",{className:"vendor-tab-panel__tabs-list",children:t.map(({id:x,label:R,count:v,icon:s})=>{const h=a===x;return e.jsxs("button",{className:`vendor-tab-panel__tab ${h?"vendor-tab-panel__tab--active":""}`,onClick:()=>j(x),type:"button",children:[s?e.jsx("span",{className:"vendor-tab-panel__tab-icon",children:s}):null,e.jsx("span",{className:"vendor-tab-panel__tab-label",children:R}),e.jsx("span",{className:"vendor-tab-panel__tab-count",children:v})]},x)})}),n?e.jsx("div",{className:"vendor-tab-panel__tabs-footer",children:n}):null]}),_&&e.jsx("div",{className:"vendor-tab-panel__middle-tabs",children:l.map(({id:x,label:R,count:v,icon:s})=>{const h=u===x;return e.jsxs("button",{className:`vendor-tab-panel__tab ${h?"vendor-tab-panel__tab--active":""}`,onClick:()=>p(x),type:"button",children:[s?e.jsx("span",{className:"vendor-tab-panel__tab-icon",children:s}):null,e.jsx("span",{className:"vendor-tab-panel__tab-label",children:R}),e.jsx("span",{className:"vendor-tab-panel__tab-count",children:v})]},x)})}),e.jsx("div",{className:"vendor-tab-panel__content",children:m})]})},L1=[c.DEEPSEEK,c.GPT,c.ANTHROPIC,c.GEMINI,c.GROK,c.QWEN,c.GLM,c.MINIMAX,c.MISTRAL,c.LLAMA,c.DOUBAO,c.VEO,c.KLING,c.SORA,c.RUNWAY,c.PIKA,c.HUNYUAN,c.STEPFUN,c.FLUX,c.MIDJOURNEY,c.SUNO,c.GOOGLE,c.OTHER],P={[c.DEEPSEEK]:{label:"DeepSeek",accent:"#4d6bfe",surface:"#eef2ff",border:"rgba(77, 107, 254, 0.16)"},[c.GPT]:{label:"OpenAI",accent:"#111827",surface:"#f8fafc",border:"rgba(15, 23, 42, 0.12)"},[c.GROK]:{label:"Grok",accent:"#0f172a",surface:"#f8fafc",border:"rgba(15, 23, 42, 0.12)"},[c.QWEN]:{label:"Qwen",accent:"#7c3aed",surface:"#f5f3ff",border:"rgba(124, 58, 237, 0.15)"},[c.GLM]:{label:"GLM",accent:"#0ea5a6",surface:"#ecfeff",border:"rgba(14, 165, 166, 0.14)"},[c.MINIMAX]:{label:"MiniMax",accent:"#ef4444",surface:"#fef2f2",border:"rgba(239, 68, 68, 0.14)"},[c.MISTRAL]:{label:"Mistral",accent:"#ea580c",surface:"#fff7ed",border:"rgba(234, 88, 12, 0.14)"},[c.LLAMA]:{label:"Llama",accent:"#2563eb",surface:"#eff6ff",border:"rgba(37, 99, 235, 0.14)"},[c.ANTHROPIC]:{label:"Claude",accent:"#d97757",surface:"#fdf1ea",border:"rgba(217, 119, 87, 0.16)"},[c.GEMINI]:{label:"Gemini",accent:"#5b5cf0",surface:"#eef2ff",border:"rgba(91, 92, 240, 0.16)"},[c.SORA]:{label:"Sora",accent:"#0968da",surface:"#eef6ff",border:"rgba(9, 104, 218, 0.16)"},[c.VEO]:{label:"Veo",accent:"#0891b2",surface:"#ecfeff",border:"rgba(8, 145, 178, 0.14)"},[c.RUNWAY]:{label:"Runway",accent:"#111827",surface:"#f8fafc",border:"rgba(15, 23, 42, 0.12)"},[c.PIKA]:{label:"Pika",accent:"#ec4899",surface:"#fdf2f8",border:"rgba(236, 72, 153, 0.14)"},[c.KLING]:{label:"Kling",accent:"#1b1f2a",surface:"#f8fafc",border:"rgba(15, 23, 42, 0.12)"},[c.HUNYUAN]:{label:"Hunyuan",accent:"#0f766e",surface:"#f0fdfa",border:"rgba(15, 118, 110, 0.14)"},[c.STEPFUN]:{label:"StepFun",accent:"#4f46e5",surface:"#eef2ff",border:"rgba(79, 70, 229, 0.14)"},[c.DOUBAO]:{label:"豆包",accent:"#f97316",surface:"#fff7ed",border:"rgba(249, 115, 22, 0.14)"},[c.FLUX]:{label:"Flux",accent:"#ea580c",surface:"#fff7ed",border:"rgba(234, 88, 12, 0.14)"},[c.MIDJOURNEY]:{label:"Midjourney",accent:"#0369a1",surface:"#f0f9ff",border:"rgba(3, 105, 161, 0.14)"},[c.SUNO]:{label:"Suno",accent:"#111827",surface:"#f8fafc",border:"rgba(15, 23, 42, 0.12)"},[c.GOOGLE]:{label:"Google",accent:"#2563eb",surface:"#eff6ff",border:"rgba(37, 99, 235, 0.14)"},[c.OTHER]:{label:"Other",accent:"#475569",surface:"#f8fafc",border:"rgba(71, 85, 105, 0.14)"}},i=({size:t,children:a})=>e.jsx("svg",{viewBox:"0 0 24 24",width:t,height:t,fill:"none",xmlns:"http://www.w3.org/2000/svg",children:a}),t1=({size:t})=>e.jsx(i,{size:t,children:e.jsx("path",{fill:"currentColor",fillRule:"evenodd",d:"M9.205 8.658v-2.26c0-.19.072-.333.238-.428l4.543-2.616c.619-.357 1.356-.523 2.117-.523 2.854 0 4.662 2.212 4.662 4.566 0 .167 0 .357-.024.547l-4.71-2.759a.797.797 0 00-.856 0l-5.97 3.473zm10.609 8.8V12.06c0-.333-.143-.57-.429-.737l-5.97-3.473 1.95-1.118a.433.433 0 01.476 0l4.543 2.617c1.309.76 2.189 2.378 2.189 3.948 0 1.808-1.07 3.473-2.76 4.163zM7.802 12.703l-1.95-1.142c-.167-.095-.239-.238-.239-.428V5.899c0-2.545 1.95-4.472 4.591-4.472 1 0 1.927.333 2.712.928L8.23 5.067c-.285.166-.428.404-.428.737v6.898zM12 15.128l-2.795-1.57v-3.33L12 8.658l2.795 1.57v3.33L12 15.128zm1.796 7.23c-1 0-1.927-.332-2.712-.927l4.686-2.712c.285-.166.428-.404.428-.737v-6.898l1.974 1.142c.167.095.238.238.238.428v5.233c0 2.545-1.974 4.472-4.614 4.472zm-5.637-5.303l-4.544-2.617c-1.308-.761-2.188-2.378-2.188-3.948A4.482 4.482 0 014.21 6.327v5.423c0 .333.143.571.428.738l5.947 3.449-1.95 1.118a.432.432 0 01-.476 0zm-.262 3.9c-2.688 0-4.662-2.021-4.662-4.519 0-.19.024-.38.047-.57l4.686 2.71c.286.167.571.167.856 0l5.97-3.448v2.26c0 .19-.07.333-.237.428l-4.543 2.616c-.619.357-1.356.523-2.117.523zm5.899 2.83a5.947 5.947 0 005.827-4.756C22.287 18.339 24 15.84 24 13.296c0-1.665-.713-3.282-1.998-4.448.119-.5.19-.999.19-1.498 0-3.401-2.759-5.947-5.946-5.947-.642 0-1.26.095-1.88.31A5.962 5.962 0 0010.205 0a5.947 5.947 0 00-5.827 4.757C1.713 5.447 0 7.945 0 10.49c0 1.666.713 3.283 1.998 4.448-.119.5-.19 1-.19 1.499 0 3.401 2.759 5.946 5.946 5.946.642 0 1.26-.095 1.88-.309a5.96 5.96 0 004.162 1.713z",clipRule:"evenodd"})}),a1=({size:t})=>e.jsx(i,{size:t,children:e.jsx("path",{fill:"currentColor",fillRule:"evenodd",d:"M9.27 15.29l7.978-5.897c.391-.29.95-.177 1.137.272.98 2.369.542 5.215-1.41 7.169-1.951 1.954-4.667 2.382-7.149 1.406l-2.711 1.257c3.889 2.661 8.611 2.003 11.562-.953 2.341-2.344 3.066-5.539 2.388-8.42l.006.007c-.983-4.232.242-5.924 2.75-9.383.06-.082.12-.164.179-.248l-3.301 3.305v-.01L9.267 15.292M7.623 16.723c-2.792-2.67-2.31-6.801.071-9.184 1.761-1.763 4.647-2.483 7.166-1.425l2.705-1.25a7.808 7.808 0 00-1.829-1A8.975 8.975 0 005.984 5.83c-2.533 2.536-3.33 6.436-1.962 9.764 1.022 2.487-.653 4.246-2.34 6.022-.599.63-1.199 1.259-1.682 1.925l7.62-6.815",clipRule:"evenodd"})}),c1=({size:t})=>e.jsx(i,{size:t,children:e.jsx("path",{fill:"currentColor",fillRule:"evenodd",d:"M12.604 1.34c.393.69.784 1.382 1.174 2.075a.18.18 0 00.157.091h5.552c.174 0 .322.11.446.327l1.454 2.57c.19.337.24.478.024.837-.26.43-.513.864-.76 1.3l-.367.658c-.106.196-.223.28-.04.512l2.652 4.637c.172.301.111.494-.043.77-.437.785-.882 1.564-1.335 2.34-.159.272-.352.375-.68.37-.777-.016-1.552-.01-2.327.016a.099.099 0 00-.081.05 575.097 575.097 0 01-2.705 4.74c-.169.293-.38.363-.725.364-.997.003-2.002.004-3.017.002a.537.537 0 01-.465-.271l-1.335-2.323a.09.09 0 00-.083-.049H4.982c-.285.03-.553-.001-.805-.092l-1.603-2.77a.543.543 0 01-.002-.54l1.207-2.12a.198.198 0 000-.197 550.951 550.951 0 01-1.875-3.272l-.79-1.395c-.16-.31-.173-.496.095-.965.465-.813.927-1.625 1.387-2.436.132-.234.304-.334.584-.335a338.3 338.3 0 012.589-.001.124.124 0 00.107-.063l2.806-4.895a.488.488 0 01.422-.246c.524-.001 1.053 0 1.583-.006L11.704 1c.341-.003.724.032.9.34zm-3.432.403a.06.06 0 00-.052.03L6.254 6.788a.157.157 0 01-.135.078H3.253c-.056 0-.07.025-.041.074l5.81 10.156c.025.042.013.062-.034.063l-2.795.015a.218.218 0 00-.2.116l-1.32 2.31c-.044.078-.021.118.068.118l5.716.008c.046 0 .08.02.104.061l1.403 2.454c.046.081.092.082.139 0l5.006-8.76.783-1.382a.055.055 0 01.096 0l1.424 2.53a.122.122 0 00.107.062l2.763-.02a.04.04 0 00.035-.02.041.041 0 000-.04l-2.9-5.086a.108.108 0 010-.113l.293-.507 1.12-1.977c.024-.041.012-.062-.035-.062H9.2c-.059 0-.073-.026-.043-.077l1.434-2.505a.107.107 0 000-.114L9.225 1.774a.06.06 0 00-.053-.031zm6.29 8.02c.046 0 .058.02.034.06l-.832 1.465-2.613 4.585a.056.056 0 01-.05.029.058.058 0 01-.05-.029L8.498 9.841c-.02-.034-.01-.052.028-.054l.216-.012 6.722-.012z",clipRule:"evenodd"})}),r1=({size:t})=>e.jsxs(i,{size:t,children:[e.jsx("path",{fill:"currentColor",fillRule:"evenodd",d:"M6.075 10.494C7.6 9.446 9.768 8.759 12.222 8.759c2.453 0 4.622.687 6.147 1.735.77.53 1.352 1.133 1.74 1.77C20 10 20 10 20.687 9.362a9.276 9.276 0 00-1.008-.8c-1.958-1.347-4.598-2.143-7.457-2.143-2.858 0-5.499.796-7.457 2.144-1.955 1.345-3.325 3.322-3.325 5.647 0 2.326 1.37 4.303 3.322 5.646C6.721 21.205 9.362 22 12.22 22c2.859 0 5.5-.795 7.457-2.144C21.63 18.513 23 16.538 23 14.21c0-1.48-.554-2.817-1.46-3.94-.046 1.036-.41 2.03-1.012 2.937.099.325.149.663.15 1.003 0 1.33-.782 2.664-2.313 3.717-1.524 1.048-3.692 1.735-6.146 1.735-2.453 0-4.623-.687-6.147-1.735C4.544 16.874 3.76 15.54 3.76 14.21c.003-1.33.785-2.663 2.315-3.716z",clipRule:"evenodd"}),e.jsx("path",{fill:"currentColor",d:"M3.747 11.494c-.62 1.77-.473 3.365.332 4.51.806 1.144 2.254 1.813 4.117 1.813 1.86 0 4.029-.68 6.021-2.1 1.993-1.42 3.35-3.251 3.967-5.017.62-1.769.473-3.364-.332-4.51-.806-1.143-2.254-1.812-4.117-1.812-1.86 0-4.029.68-6.021 2.099-1.993 1.42-3.35 3.252-3.967 5.017zm-2.228-.79c.8-2.28 2.487-4.498 4.83-6.167C8.691 2.866 11.33 2 13.734 2c2.4 0 4.678.874 6.045 2.817 1.366 1.943 1.431 4.394.633 6.674-.8 2.282-2.487 4.499-4.83 6.168-2.344 1.67-4.981 2.536-7.387 2.537-2.4 0-4.678-.874-6.045-2.817-1.368-1.943-1.431-4.396-.633-6.674h.002z"})]}),l1=({size:t})=>e.jsx(i,{size:t,children:e.jsx("path",{fill:"currentColor",d:"M16.278 2c1.156 0 2.093.927 2.093 2.07v12.501a.74.74 0 00.744.709.74.74 0 00.743-.709V9.099a2.06 2.06 0 012.071-2.049A2.06 2.06 0 0124 9.1v6.561a.649.649 0 01-.652.645.649.649 0 01-.653-.645V9.1a.762.762 0 00-.766-.758.762.762 0 00-.766.758v7.472a2.037 2.037 0 01-2.048 2.026 2.037 2.037 0 01-2.048-2.026v-12.5a.785.785 0 00-.788-.753.785.785 0 00-.789.752l-.001 15.904A2.037 2.037 0 0113.441 22a2.037 2.037 0 01-2.048-2.026V18.04c0-.356.292-.645.652-.645.36 0 .652.289.652.645v1.934c0 .263.142.506.372.638.23.131.514.131.744 0a.734.734 0 00.372-.638V4.07c0-1.143.937-2.07 2.093-2.07zm-5.674 0c1.156 0 2.093.927 2.093 2.07v11.523a.648.648 0 01-.652.645.648.648 0 01-.652-.645V4.07a.785.785 0 00-.789-.78.785.785 0 00-.789.78v14.013a2.06 2.06 0 01-2.07 2.048 2.06 2.06 0 01-2.071-2.048V9.1a.762.762 0 00-.766-.758.762.762 0 00-.766.758v3.8a2.06 2.06 0 01-2.071 2.049A2.06 2.06 0 010 12.9v-1.378c0-.357.292-.646.652-.646.36 0 .653.29.653.646V12.9c0 .418.343.757.766.757s.766-.339.766-.757V9.099a2.06 2.06 0 012.07-2.048 2.06 2.06 0 012.071 2.048v8.984c0 .419.343.758.767.758.423 0 .766-.339.766-.758V4.07c0-1.143.937-2.07 2.093-2.07z"})}),n1=({size:t})=>e.jsx(i,{size:t,children:e.jsx("path",{fill:"currentColor",clipRule:"evenodd",d:"M3.428 3.4h3.429v3.428h3.429v3.429h-.002 3.431V6.828h3.427V3.4h3.43v13.714H24v3.429H13.714v-3.428h-3.428v-3.429h-3.43v3.428h3.43v3.429H0v-3.429h3.428V3.4zm10.286 13.715h3.428v-3.429h-3.427v3.429z",fillRule:"evenodd"})}),s1=({size:t})=>e.jsx(i,{size:t,children:e.jsx("path",{fill:"currentColor",fillRule:"evenodd",d:"M6.897 4c1.915 0 3.516.932 5.43 3.376l.282-.373c.19-.246.383-.484.58-.71l.313-.35C14.588 4.788 15.792 4 17.225 4c1.273 0 2.469.557 3.491 1.516l.218.213c1.73 1.765 2.917 4.71 3.053 8.026l.011.392.002.25c0 1.501-.28 2.759-.818 3.7l-.14.23-.108.153c-.301.42-.664.758-1.086 1.009l-.265.142-.087.04a3.493 3.493 0 01-.302.118 4.117 4.117 0 01-1.33.208c-.524 0-.996-.067-1.438-.215-.614-.204-1.163-.56-1.726-1.116l-.227-.235c-.753-.812-1.534-1.976-2.493-3.586l-1.43-2.41-.544-.895-1.766 3.13-.343.592C7.597 19.156 6.227 20 4.356 20c-1.21 0-2.205-.42-2.936-1.182l-.168-.184c-.484-.573-.837-1.311-1.043-2.189l-.067-.32a8.69 8.69 0 01-.136-1.288L0 14.468c.002-.745.06-1.49.174-2.23l.1-.573c.298-1.53.828-2.958 1.536-4.157l.209-.34c1.177-1.83 2.789-3.053 4.615-3.16L6.897 4zm-.033 2.615l-.201.01c-.83.083-1.606.673-2.252 1.577l-.138.199-.01.018c-.67 1.017-1.185 2.378-1.456 3.845l-.004.022a12.591 12.591 0 00-.207 2.254l.002.188c.004.18.017.36.04.54l.043.291c.092.503.257.908.486 1.208l.117.137c.303.323.698.492 1.17.492 1.1 0 1.796-.676 3.696-3.641l2.175-3.4.454-.701-.139-.198C9.11 7.3 8.084 6.616 6.864 6.616zm10.196-.552l-.176.007c-.635.048-1.223.359-1.82.933l-.196.198c-.439.462-.887 1.064-1.367 1.807l.266.398c.18.274.362.56.55.858l.293.475 1.396 2.335.695 1.114c.583.926 1.03 1.6 1.408 2.082l.213.262c.282.326.529.54.777.673l.102.05c.227.1.457.138.718.138.176.002.35-.023.518-.073.338-.104.61-.32.813-.637l.095-.163.077-.162c.194-.459.29-1.06.29-1.785l-.006-.449c-.08-2.871-.938-5.372-2.2-6.798l-.176-.189c-.67-.683-1.444-1.074-2.27-1.074z",clipRule:"evenodd"})}),o1=({size:t})=>e.jsx(i,{size:t,children:e.jsx("path",{fill:"currentColor",fillRule:"evenodd",d:"M4.709 15.955l4.72-2.647.08-.23-.08-.128H9.2l-.79-.048-2.698-.073-2.339-.097-2.266-.122-.571-.121L0 11.784l.055-.352.48-.321.686.06 1.52.103 2.278.158 1.652.097 2.449.255h.389l.055-.157-.134-.098-.103-.097-2.358-1.596-2.552-1.688-1.336-.972-.724-.491-.364-.462-.158-1.008.656-.722.881.06.225.061.893.686 1.908 1.476 2.491 1.833.365.304.145-.103.019-.073-.164-.274-1.355-2.446-1.446-2.49-.644-1.032-.17-.619a2.97 2.97 0 01-.104-.729L6.283.134 6.696 0l.996.134.42.364.62 1.414 1.002 2.229 1.555 3.03.456.898.243.832.091.255h.158V9.01l.128-1.706.237-2.095.23-2.695.08-.76.376-.91.747-.492.584.28.48.685-.067.444-.286 1.851-.559 2.903-.364 1.942h.212l.243-.242.985-1.306 1.652-2.064.73-.82.85-.904.547-.431h1.033l.76 1.129-.34 1.166-1.064 1.347-.881 1.142-1.264 1.7-.79 1.36.073.11.188-.02 2.856-.606 1.543-.28 1.841-.315.833.388.091.395-.328.807-1.969.486-2.309.462-3.439.813-.042.03.049.061 1.549.146.662.036h1.622l3.02.225.79.522.474.638-.079.485-1.215.62-1.64-.389-3.829-.91-1.312-.329h-.182v.11l1.093 1.068 2.006 1.81 2.509 2.33.127.578-.322.455-.34-.049-2.205-1.657-.851-.747-1.926-1.62h-.128v.17l.444.649 2.345 3.521.122 1.08-.17.353-.608.213-.668-.122-1.374-1.925-1.415-2.167-1.143-1.943-.14.08-.674 7.254-.316.37-.729.28-.607-.461-.322-.747.322-1.476.389-1.924.315-1.53.286-1.9.17-.632-.012-.042-.14.018-1.434 1.967-2.18 2.945-1.726 1.845-.414.164-.717-.37.067-.662.401-.589 2.388-3.036 1.44-1.882.93-1.086-.006-.158h-.055L4.132 18.56l-1.13.146-.487-.456.061-.746.231-.243 1.908-1.312-.006.006z",clipRule:"evenodd"})}),i1=({size:t})=>e.jsx(i,{size:t,children:e.jsx("path",{fill:"currentColor",fillRule:"evenodd",d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",clipRule:"evenodd"})}),d1=({size:t})=>e.jsx(i,{size:t,children:e.jsx("path",{fill:"currentColor",fillRule:"evenodd",d:"M23.748 4.482c-.254-.124-.364.113-.512.234-.051.039-.094.09-.137.136-.372.397-.806.657-1.373.626-.829-.046-1.537.214-2.163.848-.133-.782-.575-1.248-1.247-1.548-.352-.156-.708-.311-.955-.65-.172-.241-.219-.51-.305-.774-.055-.16-.11-.323-.293-.35-.2-.031-.278.136-.356.276-.313.572-.434 1.202-.422 1.84.027 1.436.633 2.58 1.838 3.393.137.093.172.187.129.323-.082.28-.18.552-.266.833-.055.179-.137.217-.329.14a5.526 5.526 0 01-1.736-1.18c-.857-.828-1.631-1.742-2.597-2.458a11.365 11.365 0 00-.689-.471c-.985-.957.13-1.743.388-1.836.27-.098.093-.432-.779-.428-.872.004-1.67.295-2.687.684a3.055 3.055 0 01-.465.137 9.597 9.597 0 00-2.883-.102c-1.885.21-3.39 1.102-4.497 2.623C.082 8.606-.231 10.684.152 12.85c.403 2.284 1.569 4.175 3.36 5.653 1.858 1.533 3.997 2.284 6.438 2.14 1.482-.085 3.133-.284 4.994-1.86.47.234.962.327 1.78.397.63.059 1.236-.03 1.705-.128.735-.156.684-.837.419-.961-2.155-1.004-1.682-.595-2.113-.926 1.096-1.296 2.746-2.642 3.392-7.003.05-.347.007-.565 0-.845-.004-.17.035-.237.23-.256a4.173 4.173 0 001.545-.475c1.396-.763 1.96-2.015 2.093-3.517.02-.23-.004-.467-.247-.588zM11.581 18c-2.089-1.642-3.102-2.183-3.52-2.16-.392.024-.321.471-.235.763.09.288.207.486.371.739.114.167.192.416-.113.603-.673.416-1.842-.14-1.897-.167-1.361-.802-2.5-1.86-3.301-3.307-.774-1.393-1.224-2.887-1.298-4.482-.02-.386.093-.522.477-.592a4.696 4.696 0 011.529-.039c2.132.312 3.946 1.265 5.468 2.774.868.86 1.525 1.887 2.202 2.891.72 1.066 1.494 2.082 2.48 2.914.348.292.625.514.891.677-.802.09-2.14.11-3.054-.614zm1-6.44a.306.306 0 01.415-.287.302.302 0 01.2.288.306.306 0 01-.31.307.303.303 0 01-.304-.308zm3.11 1.596c-.2.081-.399.151-.59.16a1.245 1.245 0 01-.798-.254c-.274-.23-.47-.358-.552-.758a1.73 1.73 0 01.016-.588c.07-.327-.008-.537-.239-.727-.187-.156-.426-.199-.688-.199a.559.559 0 01-.254-.078c-.11-.054-.2-.19-.114-.358.028-.054.16-.186.192-.21.356-.202.767-.136 1.146.016.352.144.618.408 1.001.782.391.451.462.576.685.914.176.265.336.537.445.848.067.195-.019.354-.25.452z",clipRule:"evenodd"})}),u1=({size:t})=>e.jsxs(i,{size:t,children:[e.jsx("path",{fill:"currentColor",d:"M8.968 11.147a.408.408 0 110 .816.408.408 0 010-.816z"}),e.jsx("path",{fill:"currentColor",d:"M7.21 8.748c.045-.012.087.003.128.044.195.2.39.398.587.596a.15.15 0 00.061.035l.81.209c.056.014.09.043.102.088.013.046-.002.09-.043.13l-.596.585a.139.139 0 00-.021.03.134.134 0 00-.015.033c-.07.27-.14.54-.208.81-.014.055-.044.09-.09.102-.045.012-.088-.003-.128-.045-.195-.199-.39-.397-.587-.595a.158.158 0 00-.062-.035l-.81-.209c-.056-.014-.09-.044-.103-.09-.011-.044.004-.087.045-.128.2-.194.398-.39.596-.585a.12.12 0 00.022-.03.134.134 0 00.014-.032c.07-.27.14-.54.208-.81.014-.056.044-.09.09-.103z"}),e.jsx("path",{fill:"currentColor",d:"M15.827 9.31a.409.409 0 110 .817.409.409 0 010-.818z"}),e.jsx("path",{fill:"currentColor",d:"M14.071 6.915c.046-.012.09.003.13.044.194.2.388.398.583.596a.155.155 0 00.062.036l.807.21c.056.014.09.045.103.09.012.045-.003.088-.045.128l-.596.583a.168.168 0 00-.036.061l-.21.808c-.014.056-.044.09-.09.103-.045.011-.088-.004-.128-.045-.194-.2-.389-.398-.583-.596a.12.12 0 00-.03-.022.12.12 0 00-.032-.014l-.808-.21c-.056-.014-.09-.044-.102-.09-.012-.045.003-.087.044-.128.2-.194.398-.388.596-.583a.119.119 0 00.022-.03.132.132 0 00.015-.032l.21-.806c.014-.057.043-.09.088-.103z"}),e.jsx("path",{fill:"currentColor",d:"M8.086.457a6.102 6.102 0 013.046-.415c1.333.153 2.521.72 3.564 1.7a.116.116 0 00.107.029c1.409-.346 2.762-.224 4.062.366l.061.029.155.077c1.357.703 2.33 1.769 2.918 3.197.278.68.418 1.388.421 2.127a5.65 5.65 0 01-.18 1.631.164.164 0 00.04.154 5.98 5.98 0 011.577 2.892c.386 1.901-.008 3.614-1.182 5.14l-.181.22a6.062 6.062 0 01-2.936 1.85.16.16 0 00-.106.103c-.255.736-.512 1.364-.988 1.992-1.199 1.582-2.962 2.462-4.948 2.45-1.583-.007-2.986-.586-4.21-1.736a.142.142 0 00-.14-.031c-.518.167-1.04.191-1.605.185a5.923 5.923 0 01-2.594-.622 6.057 6.057 0 01-2.146-1.781c-.203-.27-.404-.522-.552-.821a7.742 7.742 0 01-.494-1.283 6.108 6.108 0 01-.017-3.065.163.163 0 00.007-.074.112.112 0 00-.036-.063 5.954 5.954 0 01-1.38-2.202 5.193 5.193 0 01-.333-1.59 6.911 6.911 0 01.188-2.13c.45-1.485 1.309-2.65 2.578-3.494.282-.188.549-.334.8-.439a8.21 8.21 0 01.862-.303.128.128 0 00.087-.087 6.014 6.014 0 011.104-2.155C6.315 1.463 7.132.846 8.086.457zm.965 7.647c-1.154-.82-2.73-.413-3.311.875-.301.666-.36 1.368-.178 2.106l.145.586.26.95c.105.533.31 1.02.612 1.462l.03.043c.16.189.335.362.524.518 1.386 1.139 3.275.379 3.652-1.323l.05-.213.012-.08c.06-.4.042-.792-.053-1.175a47.673 47.673 0 00-.546-2.024c-.217-.738-.616-1.313-1.197-1.725zm7.104-1.646c-.862-.802-2.191-.831-3.047-.026-.334.314-.566.736-.697 1.265a3.47 3.47 0 000 1.635l.014.054.055.18c.127.42.245.834.353 1.241.112.423.202.706.27.85.574 1.206 1.82 2.074 3.177 1.522 1.261-.514 1.641-2.01 1.355-3.22-.043-.183-.09-.365-.14-.546a34.426 34.426 0 00-.428-1.573c-.162-.508-.466-.968-.912-1.382z"})]}),h1=({size:t})=>e.jsxs(i,{size:t,children:[e.jsx("path",{fill:"currentColor",d:"M5.31 15.756c.172-3.75 1.883-5.999 2.549-6.739-3.26 2.058-5.425 5.658-6.358 8.308v1.12C1.501 21.513 4.226 24 7.59 24a6.59 6.59 0 002.2-.375c.353-.12.7-.248 1.039-.378.913-.899 1.65-1.91 2.243-2.992-4.877 2.431-7.974.072-7.763-4.5l.002.001z"}),e.jsx("path",{fill:"currentColor",d:"M22.57 10.283c-1.212-.901-4.109-2.404-7.397-2.8.295 3.792.093 8.766-2.1 12.773a12.782 12.782 0 01-2.244 2.992c3.764-1.448 6.746-3.457 8.596-5.219 2.82-2.683 3.353-5.178 3.361-6.66a2.737 2.737 0 00-.216-1.084v-.002zM14.303 1.867C12.955.7 11.248 0 9.39 0 7.532 0 5.883.677 4.545 1.807 2.791 3.29 1.627 5.557 1.5 8.125v9.201c.932-2.65 3.097-6.25 6.357-8.307.5-.318 1.025-.595 1.569-.829 1.883-.801 3.878-.932 5.746-.706-.222-2.83-.718-5.002-.87-5.617h.001z"}),e.jsx("path",{fill:"currentColor",d:"M17.305 4.961a199.47 199.47 0 01-1.08-1.094c-.202-.213-.398-.419-.586-.622l-1.333-1.378c.151.615.648 2.786.869 5.617 3.288.395 6.185 1.898 7.396 2.8-1.306-1.275-3.475-3.487-5.266-5.323z"})]}),f1=({size:t})=>e.jsxs(i,{size:t,children:[e.jsx("path",{fill:"#4285F4",d:"M23 12.245c0-.905-.075-1.565-.236-2.25h-10.54v4.083h6.186c-.124 1.014-.797 2.542-2.294 3.569l-.021.136 3.332 2.53.23.022C21.779 18.417 23 15.593 23 12.245z"}),e.jsx("path",{fill:"#34A853",d:"M12.225 23c3.03 0 5.574-.978 7.433-2.665l-3.542-2.688c-.948.648-2.22 1.1-3.891 1.1a6.745 6.745 0 01-6.386-4.572l-.132.011-3.465 2.628-.045.124C4.043 20.531 7.835 23 12.225 23z"}),e.jsx("path",{fill:"#FBBC05",d:"M5.84 14.175A6.65 6.65 0 015.463 12c0-.758.138-1.491.361-2.175l-.006-.147-3.508-2.67-.115.054A10.831 10.831 0 001 12c0 1.772.436 3.447 1.197 4.938l3.642-2.763z"}),e.jsx("path",{fill:"#EA4335",d:"M12.225 5.253c2.108 0 3.529.892 4.34 1.638l3.167-3.031C17.787 2.088 15.255 1 12.225 1 7.834 1 4.043 3.469 2.197 7.062l3.63 2.763a6.77 6.77 0 016.398-4.572z"})]}),b1=({size:t})=>e.jsx(i,{size:t,children:e.jsx("path",{fill:"currentColor",fillRule:"evenodd",d:"M5.493 21.234c-1.112-1.451-1.109-4.263-.081-7.459l-4.557-2.63a1.683 1.683 0 01-.85-1.304 1.505 1.505 0 01.08-.622 13.18 13.18 0 011.037-2.255c3.476-6.02 10.916-8.23 16.619-4.938.46.266.82.67 1.081 1.184.785 1.545.685 4.096-.234 6.954l4.557 2.631c.339.196.596.492.736.832a1.53 1.53 0 01.034 1.093 13.146 13.146 0 01-1.037 2.255c-3.476 6.02-10.916 8.23-16.619 4.938a2.6 2.6 0 01-.766-.68zm11.096-6.615c-2.073 3.591-5.808 5.316-8.343 3.852-1.267-.731-1.994-2.122-2.145-3.778-.095-1.035.036-2.173.4-3.32.217-.684.517-1.37.902-2.039l.008-.014c2.073-3.59 5.808-5.315 8.343-3.852.633.366 1.13.895 1.49 1.54.986 1.772.922 4.415-.285 6.914-.111.23-.232.457-.362.683l-.008.014z",clipRule:"evenodd"})}),v1=({size:t})=>e.jsx(i,{size:t,children:e.jsx("path",{fill:"currentColor",d:"M13.8 4.6 7.5 12h4.1l-1.4 7.4 6.3-7.4h-4.1z"})}),x1=({size:t})=>e.jsx(i,{size:t,children:e.jsxs("g",{stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.7",children:[e.jsx("path",{d:"M5.4 17.8h13.2"}),e.jsx("path",{d:"M8.3 17.8V8.1l7.4 5.2V17.8"}),e.jsx("path",{d:"M8.3 8.1c2.2.1 4.1.8 5.8 2.1"})]})}),M1=({size:t})=>e.jsx(i,{size:t,children:e.jsx("path",{fill:"currentColor",fillRule:"evenodd",d:"M16.5 0C20.642 0 24 5.373 24 12h-9c0 6.627-3.358 12-7.5 12C3.358 24 0 18.627 0 12h9c0-6.627 3.358-12 7.5-12z",clipRule:"evenodd"})}),p1=({size:t})=>e.jsx(i,{size:t,children:e.jsxs("g",{stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.7",children:[e.jsx("path",{d:"m7 7.4 5 9.2 5-9.2"}),e.jsx("path",{d:"M5.5 18.1h13"})]})}),m1=({size:t})=>e.jsx(i,{size:t,children:e.jsx("path",{fill:"currentColor",fillRule:"evenodd",d:"M17.86 22.992c-2.669.245-4.887-2.876-6.597-4.454C10.398 24.759 1 24.177 1 17.86V6.15c0-.921.244-1.861.733-2.65C2.635 1.977 4.383.98 6.15 1h11.71c6.316 0 6.918 9.398.677 10.243l2.97 2.951c3.252 3.064.808 8.929-3.646 8.797zm-1.428-3.721c1.842 1.898 4.774-1.034 2.876-2.876l-5.132-5.132H11.3v2.876l4.436 4.436.696.696zM4.12 17.842c-.037 2.632 4.117 2.632 4.06 0V6.132c.038-1.316-1.353-2.35-2.612-1.955-.057.019-.113.037-.15.056-.79.301-1.335 1.09-1.317 1.936v11.673h.02zm13.74-9.68c2.632.037 2.632-4.098 0-4.06h-6.973c.526 1.109.395 2.857.413 4.06h6.56z",clipRule:"evenodd"})}),j1=({size:t})=>e.jsx(i,{size:t,children:e.jsx("path",{fill:"currentColor",fillRule:"evenodd",d:"M.661 19.889h8.666c-.14-1.41-1.145-2.955-3.601-4.007v-.104c2.863.88 3.893 2.386 4.312 4.11H20.73l-1.72-1.476C20.017 15.244 24 13.747 24 13.747c-.141-2.541-1.441-4.909-5.787-6.827L8.326 3c.331 4.179 1.811 6.575 5.523 7.163v.102c-2.579-.064-4.368-1.216-5.275-3.588C.698 8.123-1.201 14.156.66 19.889z",clipRule:"evenodd"})}),g1=({size:t})=>e.jsx(i,{size:t,children:e.jsxs("g",{fill:"currentColor",children:[e.jsx("circle",{cx:"8",cy:"8",r:"2"}),e.jsx("circle",{cx:"16",cy:"8",r:"2"}),e.jsx("circle",{cx:"8",cy:"16",r:"2"}),e.jsx("circle",{cx:"16",cy:"16",r:"2"})]})}),C1=({size:t})=>e.jsx(i,{size:t,children:e.jsx("path",{fill:"currentColor",fillRule:"evenodd",d:"M12 0c6.627 0 12 5.373 12 12s-5.373 12-12 12S0 18.627 0 12 5.373 0 12 0zm1.652 1.123l-.01-.001c.533.097 1.023.233 1.41.404 6.084 2.683 7.396 9.214 1.601 14.338a3.781 3.781 0 01-5.337-.328 3.654 3.654 0 01-.884-3.044c-1.934.6-3.295 2.305-3.524 4.45-.204 1.912.324 4.044 2.056 5.634l.245.067C10.1 22.876 11.036 23 12 23c6.075 0 11-4.925 11-11 0-5.513-4.056-10.08-9.348-10.877zM2.748 6.21c-.178.269-.348.536-.51.803l-.235.394.078-.167A10.957 10.957 0 001 12c0 4.919 3.228 9.083 7.682 10.49l.214.065C3.523 18.528 2.84 14.149 6.47 8.68A2.234 2.234 0 102.748 6.21zm10.157-5.172c4.408 1.33 3.61 5.41 2.447 6.924-.86 1.117-2.922 1.46-3.708 2.238-.666.657-1.077 1.462-1.212 2.291A5.303 5.303 0 0112 12.258a5.672 5.672 0 001.404-11.169 10.51 10.51 0 00-.5-.052z",clipRule:"evenodd"})}),R1=({size:t})=>e.jsx(i,{size:t,children:e.jsx("path",{fill:"currentColor",fillRule:"evenodd",d:"M22.012 0h1.032v.927H24v.968h-.956V3.78h-1.032V1.896h-1.878v-.97h1.878V0zM2.6 12.371V1.87h.969v10.502h-.97zm10.423.66h10.95v.918h-6.208v9.579h-4.742V13.03zM5.629 3.333v12.356H0v4.51h10.386V8L20.859 8l-.003-4.668-15.227.001z",clipRule:"evenodd"})});function _1(t,a){switch(t){case c.GPT:return e.jsx(t1,{size:a});case c.GROK:return e.jsx(a1,{size:a});case c.QWEN:return e.jsx(c1,{size:a});case c.GLM:return e.jsx(r1,{size:a});case c.MINIMAX:return e.jsx(l1,{size:a});case c.MISTRAL:return e.jsx(n1,{size:a});case c.LLAMA:return e.jsx(s1,{size:a});case c.ANTHROPIC:return e.jsx(o1,{size:a});case c.GEMINI:return e.jsx(i1,{size:a});case c.DEEPSEEK:return e.jsx(d1,{size:a});case c.SORA:return e.jsx(u1,{size:a});case c.RUNWAY:return e.jsx(m1,{size:a});case c.PIKA:return e.jsx(j1,{size:a});case c.DOUBAO:return e.jsx(h1,{size:a});case c.GOOGLE:return e.jsx(f1,{size:a});case c.KLING:return e.jsx(b1,{size:a});case c.HUNYUAN:return e.jsx(C1,{size:a});case c.STEPFUN:return e.jsx(R1,{size:a});case c.FLUX:return e.jsx(v1,{size:a});case c.MIDJOURNEY:return e.jsx(x1,{size:a});case c.SUNO:return e.jsx(M1,{size:a});case c.VEO:return e.jsx(p1,{size:a});default:return e.jsx(g1,{size:a})}}function E1(t){return P[t].label}function w1(t){return P[t]}const V1=({vendor:t,size:a=20})=>_1(t,a),z1=({modelId:t,profileId:a,className:r=""})=>{const{shouldShowHealth:l,getHealthStatus:u}=e1();if(!l)return null;const d=u(t,a);if(!d)return null;const{statusLabel:f,statusColor:m,errorRate:M}=d;let n=3,b=m;return M>80?(n=1,b="#991B1B"):M>50?(n=1,b="#EF4444"):M>20?(n=2,b="#C2410C"):M>=1?(n=2,b="#F97316"):(n=3,b="#10B981"),e.jsx(L,{content:M>0?`${f} (拥挤度:${M}%)`:f,theme:"light",placement:"top",showArrow:!1,zIndex:2e4,children:e.jsxs("div",{className:`model-health-signal ${r}`,children:[e.jsx("div",{className:`model-health-signal__bar ${n>=1?"active":""}`,style:{backgroundColor:n>=1?b:void 0}}),e.jsx("div",{className:`model-health-signal__bar ${n>=2?"active":""}`,style:{backgroundColor:n>=2?b:void 0}}),e.jsx("div",{className:`model-health-signal__bar ${n>=3?"active":""}`,style:{backgroundColor:n>=3?b:void 0}})]})})},O1=({modelId:t})=>{const a=J.getModelBenchmarkSummary(t);return!a.hasFavorite&&!a.hasRejected?null:e.jsxs("span",{className:"model-benchmark-badge",children:[a.hasFavorite&&e.jsx(L,{content:"已在测试中收藏",theme:"light",showArrow:!1,zIndex:2e4,children:e.jsx(K,{size:12,className:"model-benchmark-badge__star"})}),a.hasRejected&&e.jsx(L,{content:"已在测试中淘汰",theme:"light",showArrow:!1,zIndex:2e4,children:e.jsx(B,{size:12,className:"model-benchmark-badge__reject"})})]})};function U(t,a){return o.useSyncExternalStore(r=>C.subscribe(r),()=>C.getVersion()),C.getModelPrice(t,a)}function H1(t,a){const r=U(t,a);return r?$(r):""}function D1(t){return o.useSyncExternalStore(a=>C.subscribe(a),()=>C.getVersion()),t?C.getGroups(t):[]}function I1(t,a){const r=U(t,a);return!r||!r.description&&!r.docsUrl?null:{description:r.description,docsUrl:r.docsUrl}}function F(t=Y){const[a,r]=o.useState(()=>N.getState(t));return o.useEffect(()=>(r(N.getState(t)),N.subscribe(()=>{r(N.getState(t))})),[t]),a}function G(t,a){if(t.length!==a.length)return!1;for(let r=0;r<t.length;r++)if(t[r].id!==a[r].id||t[r].selectionKey!==a[r].selectionKey)return!1;return!0}function P1(t){const a=F(),r=o.useRef([]);return o.useMemo(()=>{const l=W(t);return G(r.current,l)?r.current:(r.current=l,l)},[t,a])}function U1(t,a){const r=F(t),l=o.useRef([]);return o.useMemo(()=>{const u=X(t,a);return G(l.current,u)?l.current:(l.current=u,u)},[t,a,r])}export{L1 as D,N1 as M,A1 as V,w1 as a,V1 as b,D1 as c,F as d,U1 as e,I1 as f,E1 as g,H1 as h,z1 as i,O1 as j,P1 as u};
1
+ import{r as o,iQ as S,hd as k,y as e,j9 as c,bV as L,kS as K,kT as B,kU as $,iN as C,iO as Y,kV as W,iX as N,kW as X}from"./tool-windows-C4D0lII2.js";import{m as J}from"./model-benchmark-service-B0QCqInK.js";const Q="https://apistatus.tu-zi.com",w=60*1e3;class g{constructor(){this.cachedData=[],this.lastFetchTime=0,this.pendingFetch=null}static getInstance(){return g.instance||(g.instance=new g),g.instance}async fetch(a=5,r=!1){const l=Date.now();if(!r&&this.cachedData.length>0&&l-this.lastFetchTime<w)return this.cachedData;if(this.pendingFetch)return this.pendingFetch;this.pendingFetch=this.doFetch(a);try{return await this.pendingFetch}finally{this.pendingFetch=null}}async doFetch(a){const r=Math.floor(Date.now()/1e3),l=r-a*60,u=`${Q}/api/history/aggregated?start_time=${l}&end_time=${r}&interval=60`;try{const d=await fetch(u,{method:"GET",headers:{Accept:"application/json"}});if(!d.ok)return console.warn(`[ModelHealthService] API returned ${d.status}`),this.cachedData;const f=await d.json();return this.cachedData=f,this.lastFetchTime=Date.now(),f}catch(d){return console.warn("[ModelHealthService] Failed to fetch health data:",d),this.cachedData}}getCachedData(){return this.cachedData}getLastFetchTime(){return this.lastFetchTime}isCacheValid(){return this.cachedData.length>0&&Date.now()-this.lastFetchTime<w}}const V=g.getInstance(),H="default";function D(t){return(typeof t=="string"?t.trim():"")||H}function q(t){const a=t.split("|");return a.length<2?H:D(a.slice(1).join("|"))}function E(t,a){return`${t}@@${D(a)}`}function z(t){const a=new Map,r=[...t].sort((l,u)=>u.time_bucket-l.time_bucket);for(const l of r){const u=Array.isArray(l.model_name)?l.model_name:[l.model_name],d=q(l.rule_name);for(const f of u){const m=E(f,d);a.has(m)||a.set(m,{modelName:f,ruleName:l.rule_name,groupName:d,statusLabel:l.status_label,statusColor:l.status_color,errorRate:l.error_rate,isLowTraffic:l.is_low_traffic,detectSaturated:l.detect_saturated,totalCount:l.total_count,timeBucket:l.time_bucket})}}return a}function A(t){return t.includes("api.tu-zi.com")}const I=o.createContext(null),O=300*1e3;function Z(t){return t.some(a=>a.enabled&&A(a.baseUrl||""))}const N1=({children:t})=>{const[a,r]=o.useState(()=>{const v=V.getCachedData();return v.length>0?z(v):new Map}),[l,u]=o.useState(!1),[d,f]=o.useState(null),[m,M]=o.useState(!1),n=o.useRef(null),[b,_]=o.useState(()=>S.get()),j=o.useCallback(()=>{const v=k.get(),s=S.get(),h=A(v.baseUrl||"")||Z(s);return M(h),_(s),h},[]),p=o.useCallback(async(v=!1)=>{if(j()){u(!0),f(null);try{const s=await V.fetch(5,v),h=z(s);r(h)}catch(s){console.warn("[ModelHealthContext] Failed to fetch:",s);const h=s instanceof Error?s.message:"Failed to fetch health data";f(h)}finally{u(!1)}}},[j]),x=o.useCallback(async()=>{await p(!0)},[p]),R=o.useCallback((v,s)=>{const h=typeof s=="string"&&s&&b.find(T=>T.id===s)||null;if(h)return A(h.baseUrl||"")?a.get(E(v,h.pricingGroup||"default")):void 0;const y=k.get();if(A(y.baseUrl||""))return a.get(E(v,"default"))},[a,b]);return o.useEffect(()=>{j()&&(p(),n.current=setInterval(()=>{p(!0)},O));const s=()=>{const h=j();h&&!n.current?(p(),n.current=setInterval(()=>{p(!0)},O)):!h&&n.current&&(clearInterval(n.current),n.current=null,r(new Map))};return k.addListener(s),S.addListener(s),()=>{k.removeListener(s),S.removeListener(s),n.current&&clearInterval(n.current)}},[j,p]),e.jsx(I.Provider,{value:{healthMap:a,loading:l,error:d,shouldShowHealth:m,refresh:x,getHealthStatus:R},children:t})};function e1(){const t=o.useContext(I);return t||{healthMap:new Map,loading:!1,error:null,shouldShowHealth:!1,refresh:async()=>{},getHealthStatus:()=>{}}}const A1=({tabs:t,activeTab:a,onTabChange:r,middleTabs:l,activeMiddleTab:u,onMiddleTabChange:d,searchQuery:f,children:m,compact:M=!1,tabsFooter:n})=>{const b=!!(f!=null&&f.trim()),_=l&&l.length>0&&!b,j=o.useCallback(x=>{r(x)},[r]),p=o.useCallback(x=>{d==null||d(x)},[d]);return e.jsxs("div",{className:`vendor-tab-panel ${M?"vendor-tab-panel--compact":""} ${_?"vendor-tab-panel--three-col":""}`,children:[!b&&e.jsxs("div",{className:"vendor-tab-panel__tabs",children:[e.jsx("div",{className:"vendor-tab-panel__tabs-list",children:t.map(({id:x,label:R,count:v,icon:s})=>{const h=a===x;return e.jsxs("button",{className:`vendor-tab-panel__tab ${h?"vendor-tab-panel__tab--active":""}`,onClick:()=>j(x),type:"button",children:[s?e.jsx("span",{className:"vendor-tab-panel__tab-icon",children:s}):null,e.jsx("span",{className:"vendor-tab-panel__tab-label",children:R}),e.jsx("span",{className:"vendor-tab-panel__tab-count",children:v})]},x)})}),n?e.jsx("div",{className:"vendor-tab-panel__tabs-footer",children:n}):null]}),_&&e.jsx("div",{className:"vendor-tab-panel__middle-tabs",children:l.map(({id:x,label:R,count:v,icon:s})=>{const h=u===x;return e.jsxs("button",{className:`vendor-tab-panel__tab ${h?"vendor-tab-panel__tab--active":""}`,onClick:()=>p(x),type:"button",children:[s?e.jsx("span",{className:"vendor-tab-panel__tab-icon",children:s}):null,e.jsx("span",{className:"vendor-tab-panel__tab-label",children:R}),e.jsx("span",{className:"vendor-tab-panel__tab-count",children:v})]},x)})}),e.jsx("div",{className:"vendor-tab-panel__content",children:m})]})},L1=[c.DEEPSEEK,c.GPT,c.ANTHROPIC,c.GEMINI,c.GROK,c.QWEN,c.GLM,c.MINIMAX,c.MISTRAL,c.LLAMA,c.DOUBAO,c.VEO,c.KLING,c.SORA,c.RUNWAY,c.PIKA,c.HUNYUAN,c.STEPFUN,c.FLUX,c.MIDJOURNEY,c.SUNO,c.GOOGLE,c.OTHER],P={[c.DEEPSEEK]:{label:"DeepSeek",accent:"#4d6bfe",surface:"#eef2ff",border:"rgba(77, 107, 254, 0.16)"},[c.GPT]:{label:"OpenAI",accent:"#111827",surface:"#f8fafc",border:"rgba(15, 23, 42, 0.12)"},[c.GROK]:{label:"Grok",accent:"#0f172a",surface:"#f8fafc",border:"rgba(15, 23, 42, 0.12)"},[c.QWEN]:{label:"Qwen",accent:"#7c3aed",surface:"#f5f3ff",border:"rgba(124, 58, 237, 0.15)"},[c.GLM]:{label:"GLM",accent:"#0ea5a6",surface:"#ecfeff",border:"rgba(14, 165, 166, 0.14)"},[c.MINIMAX]:{label:"MiniMax",accent:"#ef4444",surface:"#fef2f2",border:"rgba(239, 68, 68, 0.14)"},[c.MISTRAL]:{label:"Mistral",accent:"#ea580c",surface:"#fff7ed",border:"rgba(234, 88, 12, 0.14)"},[c.LLAMA]:{label:"Llama",accent:"#2563eb",surface:"#eff6ff",border:"rgba(37, 99, 235, 0.14)"},[c.ANTHROPIC]:{label:"Claude",accent:"#d97757",surface:"#fdf1ea",border:"rgba(217, 119, 87, 0.16)"},[c.GEMINI]:{label:"Gemini",accent:"#5b5cf0",surface:"#eef2ff",border:"rgba(91, 92, 240, 0.16)"},[c.SORA]:{label:"Sora",accent:"#0968da",surface:"#eef6ff",border:"rgba(9, 104, 218, 0.16)"},[c.VEO]:{label:"Veo",accent:"#0891b2",surface:"#ecfeff",border:"rgba(8, 145, 178, 0.14)"},[c.RUNWAY]:{label:"Runway",accent:"#111827",surface:"#f8fafc",border:"rgba(15, 23, 42, 0.12)"},[c.PIKA]:{label:"Pika",accent:"#ec4899",surface:"#fdf2f8",border:"rgba(236, 72, 153, 0.14)"},[c.KLING]:{label:"Kling",accent:"#1b1f2a",surface:"#f8fafc",border:"rgba(15, 23, 42, 0.12)"},[c.HUNYUAN]:{label:"Hunyuan",accent:"#0f766e",surface:"#f0fdfa",border:"rgba(15, 118, 110, 0.14)"},[c.STEPFUN]:{label:"StepFun",accent:"#4f46e5",surface:"#eef2ff",border:"rgba(79, 70, 229, 0.14)"},[c.DOUBAO]:{label:"豆包",accent:"#f97316",surface:"#fff7ed",border:"rgba(249, 115, 22, 0.14)"},[c.FLUX]:{label:"Flux",accent:"#ea580c",surface:"#fff7ed",border:"rgba(234, 88, 12, 0.14)"},[c.MIDJOURNEY]:{label:"Midjourney",accent:"#0369a1",surface:"#f0f9ff",border:"rgba(3, 105, 161, 0.14)"},[c.SUNO]:{label:"Suno",accent:"#111827",surface:"#f8fafc",border:"rgba(15, 23, 42, 0.12)"},[c.GOOGLE]:{label:"Google",accent:"#2563eb",surface:"#eff6ff",border:"rgba(37, 99, 235, 0.14)"},[c.OTHER]:{label:"Other",accent:"#475569",surface:"#f8fafc",border:"rgba(71, 85, 105, 0.14)"}},i=({size:t,children:a})=>e.jsx("svg",{viewBox:"0 0 24 24",width:t,height:t,fill:"none",xmlns:"http://www.w3.org/2000/svg",children:a}),t1=({size:t})=>e.jsx(i,{size:t,children:e.jsx("path",{fill:"currentColor",fillRule:"evenodd",d:"M9.205 8.658v-2.26c0-.19.072-.333.238-.428l4.543-2.616c.619-.357 1.356-.523 2.117-.523 2.854 0 4.662 2.212 4.662 4.566 0 .167 0 .357-.024.547l-4.71-2.759a.797.797 0 00-.856 0l-5.97 3.473zm10.609 8.8V12.06c0-.333-.143-.57-.429-.737l-5.97-3.473 1.95-1.118a.433.433 0 01.476 0l4.543 2.617c1.309.76 2.189 2.378 2.189 3.948 0 1.808-1.07 3.473-2.76 4.163zM7.802 12.703l-1.95-1.142c-.167-.095-.239-.238-.239-.428V5.899c0-2.545 1.95-4.472 4.591-4.472 1 0 1.927.333 2.712.928L8.23 5.067c-.285.166-.428.404-.428.737v6.898zM12 15.128l-2.795-1.57v-3.33L12 8.658l2.795 1.57v3.33L12 15.128zm1.796 7.23c-1 0-1.927-.332-2.712-.927l4.686-2.712c.285-.166.428-.404.428-.737v-6.898l1.974 1.142c.167.095.238.238.238.428v5.233c0 2.545-1.974 4.472-4.614 4.472zm-5.637-5.303l-4.544-2.617c-1.308-.761-2.188-2.378-2.188-3.948A4.482 4.482 0 014.21 6.327v5.423c0 .333.143.571.428.738l5.947 3.449-1.95 1.118a.432.432 0 01-.476 0zm-.262 3.9c-2.688 0-4.662-2.021-4.662-4.519 0-.19.024-.38.047-.57l4.686 2.71c.286.167.571.167.856 0l5.97-3.448v2.26c0 .19-.07.333-.237.428l-4.543 2.616c-.619.357-1.356.523-2.117.523zm5.899 2.83a5.947 5.947 0 005.827-4.756C22.287 18.339 24 15.84 24 13.296c0-1.665-.713-3.282-1.998-4.448.119-.5.19-.999.19-1.498 0-3.401-2.759-5.947-5.946-5.947-.642 0-1.26.095-1.88.31A5.962 5.962 0 0010.205 0a5.947 5.947 0 00-5.827 4.757C1.713 5.447 0 7.945 0 10.49c0 1.666.713 3.283 1.998 4.448-.119.5-.19 1-.19 1.499 0 3.401 2.759 5.946 5.946 5.946.642 0 1.26-.095 1.88-.309a5.96 5.96 0 004.162 1.713z",clipRule:"evenodd"})}),a1=({size:t})=>e.jsx(i,{size:t,children:e.jsx("path",{fill:"currentColor",fillRule:"evenodd",d:"M9.27 15.29l7.978-5.897c.391-.29.95-.177 1.137.272.98 2.369.542 5.215-1.41 7.169-1.951 1.954-4.667 2.382-7.149 1.406l-2.711 1.257c3.889 2.661 8.611 2.003 11.562-.953 2.341-2.344 3.066-5.539 2.388-8.42l.006.007c-.983-4.232.242-5.924 2.75-9.383.06-.082.12-.164.179-.248l-3.301 3.305v-.01L9.267 15.292M7.623 16.723c-2.792-2.67-2.31-6.801.071-9.184 1.761-1.763 4.647-2.483 7.166-1.425l2.705-1.25a7.808 7.808 0 00-1.829-1A8.975 8.975 0 005.984 5.83c-2.533 2.536-3.33 6.436-1.962 9.764 1.022 2.487-.653 4.246-2.34 6.022-.599.63-1.199 1.259-1.682 1.925l7.62-6.815",clipRule:"evenodd"})}),c1=({size:t})=>e.jsx(i,{size:t,children:e.jsx("path",{fill:"currentColor",fillRule:"evenodd",d:"M12.604 1.34c.393.69.784 1.382 1.174 2.075a.18.18 0 00.157.091h5.552c.174 0 .322.11.446.327l1.454 2.57c.19.337.24.478.024.837-.26.43-.513.864-.76 1.3l-.367.658c-.106.196-.223.28-.04.512l2.652 4.637c.172.301.111.494-.043.77-.437.785-.882 1.564-1.335 2.34-.159.272-.352.375-.68.37-.777-.016-1.552-.01-2.327.016a.099.099 0 00-.081.05 575.097 575.097 0 01-2.705 4.74c-.169.293-.38.363-.725.364-.997.003-2.002.004-3.017.002a.537.537 0 01-.465-.271l-1.335-2.323a.09.09 0 00-.083-.049H4.982c-.285.03-.553-.001-.805-.092l-1.603-2.77a.543.543 0 01-.002-.54l1.207-2.12a.198.198 0 000-.197 550.951 550.951 0 01-1.875-3.272l-.79-1.395c-.16-.31-.173-.496.095-.965.465-.813.927-1.625 1.387-2.436.132-.234.304-.334.584-.335a338.3 338.3 0 012.589-.001.124.124 0 00.107-.063l2.806-4.895a.488.488 0 01.422-.246c.524-.001 1.053 0 1.583-.006L11.704 1c.341-.003.724.032.9.34zm-3.432.403a.06.06 0 00-.052.03L6.254 6.788a.157.157 0 01-.135.078H3.253c-.056 0-.07.025-.041.074l5.81 10.156c.025.042.013.062-.034.063l-2.795.015a.218.218 0 00-.2.116l-1.32 2.31c-.044.078-.021.118.068.118l5.716.008c.046 0 .08.02.104.061l1.403 2.454c.046.081.092.082.139 0l5.006-8.76.783-1.382a.055.055 0 01.096 0l1.424 2.53a.122.122 0 00.107.062l2.763-.02a.04.04 0 00.035-.02.041.041 0 000-.04l-2.9-5.086a.108.108 0 010-.113l.293-.507 1.12-1.977c.024-.041.012-.062-.035-.062H9.2c-.059 0-.073-.026-.043-.077l1.434-2.505a.107.107 0 000-.114L9.225 1.774a.06.06 0 00-.053-.031zm6.29 8.02c.046 0 .058.02.034.06l-.832 1.465-2.613 4.585a.056.056 0 01-.05.029.058.058 0 01-.05-.029L8.498 9.841c-.02-.034-.01-.052.028-.054l.216-.012 6.722-.012z",clipRule:"evenodd"})}),r1=({size:t})=>e.jsxs(i,{size:t,children:[e.jsx("path",{fill:"currentColor",fillRule:"evenodd",d:"M6.075 10.494C7.6 9.446 9.768 8.759 12.222 8.759c2.453 0 4.622.687 6.147 1.735.77.53 1.352 1.133 1.74 1.77C20 10 20 10 20.687 9.362a9.276 9.276 0 00-1.008-.8c-1.958-1.347-4.598-2.143-7.457-2.143-2.858 0-5.499.796-7.457 2.144-1.955 1.345-3.325 3.322-3.325 5.647 0 2.326 1.37 4.303 3.322 5.646C6.721 21.205 9.362 22 12.22 22c2.859 0 5.5-.795 7.457-2.144C21.63 18.513 23 16.538 23 14.21c0-1.48-.554-2.817-1.46-3.94-.046 1.036-.41 2.03-1.012 2.937.099.325.149.663.15 1.003 0 1.33-.782 2.664-2.313 3.717-1.524 1.048-3.692 1.735-6.146 1.735-2.453 0-4.623-.687-6.147-1.735C4.544 16.874 3.76 15.54 3.76 14.21c.003-1.33.785-2.663 2.315-3.716z",clipRule:"evenodd"}),e.jsx("path",{fill:"currentColor",d:"M3.747 11.494c-.62 1.77-.473 3.365.332 4.51.806 1.144 2.254 1.813 4.117 1.813 1.86 0 4.029-.68 6.021-2.1 1.993-1.42 3.35-3.251 3.967-5.017.62-1.769.473-3.364-.332-4.51-.806-1.143-2.254-1.812-4.117-1.812-1.86 0-4.029.68-6.021 2.099-1.993 1.42-3.35 3.252-3.967 5.017zm-2.228-.79c.8-2.28 2.487-4.498 4.83-6.167C8.691 2.866 11.33 2 13.734 2c2.4 0 4.678.874 6.045 2.817 1.366 1.943 1.431 4.394.633 6.674-.8 2.282-2.487 4.499-4.83 6.168-2.344 1.67-4.981 2.536-7.387 2.537-2.4 0-4.678-.874-6.045-2.817-1.368-1.943-1.431-4.396-.633-6.674h.002z"})]}),l1=({size:t})=>e.jsx(i,{size:t,children:e.jsx("path",{fill:"currentColor",d:"M16.278 2c1.156 0 2.093.927 2.093 2.07v12.501a.74.74 0 00.744.709.74.74 0 00.743-.709V9.099a2.06 2.06 0 012.071-2.049A2.06 2.06 0 0124 9.1v6.561a.649.649 0 01-.652.645.649.649 0 01-.653-.645V9.1a.762.762 0 00-.766-.758.762.762 0 00-.766.758v7.472a2.037 2.037 0 01-2.048 2.026 2.037 2.037 0 01-2.048-2.026v-12.5a.785.785 0 00-.788-.753.785.785 0 00-.789.752l-.001 15.904A2.037 2.037 0 0113.441 22a2.037 2.037 0 01-2.048-2.026V18.04c0-.356.292-.645.652-.645.36 0 .652.289.652.645v1.934c0 .263.142.506.372.638.23.131.514.131.744 0a.734.734 0 00.372-.638V4.07c0-1.143.937-2.07 2.093-2.07zm-5.674 0c1.156 0 2.093.927 2.093 2.07v11.523a.648.648 0 01-.652.645.648.648 0 01-.652-.645V4.07a.785.785 0 00-.789-.78.785.785 0 00-.789.78v14.013a2.06 2.06 0 01-2.07 2.048 2.06 2.06 0 01-2.071-2.048V9.1a.762.762 0 00-.766-.758.762.762 0 00-.766.758v3.8a2.06 2.06 0 01-2.071 2.049A2.06 2.06 0 010 12.9v-1.378c0-.357.292-.646.652-.646.36 0 .653.29.653.646V12.9c0 .418.343.757.766.757s.766-.339.766-.757V9.099a2.06 2.06 0 012.07-2.048 2.06 2.06 0 012.071 2.048v8.984c0 .419.343.758.767.758.423 0 .766-.339.766-.758V4.07c0-1.143.937-2.07 2.093-2.07z"})}),n1=({size:t})=>e.jsx(i,{size:t,children:e.jsx("path",{fill:"currentColor",clipRule:"evenodd",d:"M3.428 3.4h3.429v3.428h3.429v3.429h-.002 3.431V6.828h3.427V3.4h3.43v13.714H24v3.429H13.714v-3.428h-3.428v-3.429h-3.43v3.428h3.43v3.429H0v-3.429h3.428V3.4zm10.286 13.715h3.428v-3.429h-3.427v3.429z",fillRule:"evenodd"})}),s1=({size:t})=>e.jsx(i,{size:t,children:e.jsx("path",{fill:"currentColor",fillRule:"evenodd",d:"M6.897 4c1.915 0 3.516.932 5.43 3.376l.282-.373c.19-.246.383-.484.58-.71l.313-.35C14.588 4.788 15.792 4 17.225 4c1.273 0 2.469.557 3.491 1.516l.218.213c1.73 1.765 2.917 4.71 3.053 8.026l.011.392.002.25c0 1.501-.28 2.759-.818 3.7l-.14.23-.108.153c-.301.42-.664.758-1.086 1.009l-.265.142-.087.04a3.493 3.493 0 01-.302.118 4.117 4.117 0 01-1.33.208c-.524 0-.996-.067-1.438-.215-.614-.204-1.163-.56-1.726-1.116l-.227-.235c-.753-.812-1.534-1.976-2.493-3.586l-1.43-2.41-.544-.895-1.766 3.13-.343.592C7.597 19.156 6.227 20 4.356 20c-1.21 0-2.205-.42-2.936-1.182l-.168-.184c-.484-.573-.837-1.311-1.043-2.189l-.067-.32a8.69 8.69 0 01-.136-1.288L0 14.468c.002-.745.06-1.49.174-2.23l.1-.573c.298-1.53.828-2.958 1.536-4.157l.209-.34c1.177-1.83 2.789-3.053 4.615-3.16L6.897 4zm-.033 2.615l-.201.01c-.83.083-1.606.673-2.252 1.577l-.138.199-.01.018c-.67 1.017-1.185 2.378-1.456 3.845l-.004.022a12.591 12.591 0 00-.207 2.254l.002.188c.004.18.017.36.04.54l.043.291c.092.503.257.908.486 1.208l.117.137c.303.323.698.492 1.17.492 1.1 0 1.796-.676 3.696-3.641l2.175-3.4.454-.701-.139-.198C9.11 7.3 8.084 6.616 6.864 6.616zm10.196-.552l-.176.007c-.635.048-1.223.359-1.82.933l-.196.198c-.439.462-.887 1.064-1.367 1.807l.266.398c.18.274.362.56.55.858l.293.475 1.396 2.335.695 1.114c.583.926 1.03 1.6 1.408 2.082l.213.262c.282.326.529.54.777.673l.102.05c.227.1.457.138.718.138.176.002.35-.023.518-.073.338-.104.61-.32.813-.637l.095-.163.077-.162c.194-.459.29-1.06.29-1.785l-.006-.449c-.08-2.871-.938-5.372-2.2-6.798l-.176-.189c-.67-.683-1.444-1.074-2.27-1.074z",clipRule:"evenodd"})}),o1=({size:t})=>e.jsx(i,{size:t,children:e.jsx("path",{fill:"currentColor",fillRule:"evenodd",d:"M4.709 15.955l4.72-2.647.08-.23-.08-.128H9.2l-.79-.048-2.698-.073-2.339-.097-2.266-.122-.571-.121L0 11.784l.055-.352.48-.321.686.06 1.52.103 2.278.158 1.652.097 2.449.255h.389l.055-.157-.134-.098-.103-.097-2.358-1.596-2.552-1.688-1.336-.972-.724-.491-.364-.462-.158-1.008.656-.722.881.06.225.061.893.686 1.908 1.476 2.491 1.833.365.304.145-.103.019-.073-.164-.274-1.355-2.446-1.446-2.49-.644-1.032-.17-.619a2.97 2.97 0 01-.104-.729L6.283.134 6.696 0l.996.134.42.364.62 1.414 1.002 2.229 1.555 3.03.456.898.243.832.091.255h.158V9.01l.128-1.706.237-2.095.23-2.695.08-.76.376-.91.747-.492.584.28.48.685-.067.444-.286 1.851-.559 2.903-.364 1.942h.212l.243-.242.985-1.306 1.652-2.064.73-.82.85-.904.547-.431h1.033l.76 1.129-.34 1.166-1.064 1.347-.881 1.142-1.264 1.7-.79 1.36.073.11.188-.02 2.856-.606 1.543-.28 1.841-.315.833.388.091.395-.328.807-1.969.486-2.309.462-3.439.813-.042.03.049.061 1.549.146.662.036h1.622l3.02.225.79.522.474.638-.079.485-1.215.62-1.64-.389-3.829-.91-1.312-.329h-.182v.11l1.093 1.068 2.006 1.81 2.509 2.33.127.578-.322.455-.34-.049-2.205-1.657-.851-.747-1.926-1.62h-.128v.17l.444.649 2.345 3.521.122 1.08-.17.353-.608.213-.668-.122-1.374-1.925-1.415-2.167-1.143-1.943-.14.08-.674 7.254-.316.37-.729.28-.607-.461-.322-.747.322-1.476.389-1.924.315-1.53.286-1.9.17-.632-.012-.042-.14.018-1.434 1.967-2.18 2.945-1.726 1.845-.414.164-.717-.37.067-.662.401-.589 2.388-3.036 1.44-1.882.93-1.086-.006-.158h-.055L4.132 18.56l-1.13.146-.487-.456.061-.746.231-.243 1.908-1.312-.006.006z",clipRule:"evenodd"})}),i1=({size:t})=>e.jsx(i,{size:t,children:e.jsx("path",{fill:"currentColor",fillRule:"evenodd",d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",clipRule:"evenodd"})}),d1=({size:t})=>e.jsx(i,{size:t,children:e.jsx("path",{fill:"currentColor",fillRule:"evenodd",d:"M23.748 4.482c-.254-.124-.364.113-.512.234-.051.039-.094.09-.137.136-.372.397-.806.657-1.373.626-.829-.046-1.537.214-2.163.848-.133-.782-.575-1.248-1.247-1.548-.352-.156-.708-.311-.955-.65-.172-.241-.219-.51-.305-.774-.055-.16-.11-.323-.293-.35-.2-.031-.278.136-.356.276-.313.572-.434 1.202-.422 1.84.027 1.436.633 2.58 1.838 3.393.137.093.172.187.129.323-.082.28-.18.552-.266.833-.055.179-.137.217-.329.14a5.526 5.526 0 01-1.736-1.18c-.857-.828-1.631-1.742-2.597-2.458a11.365 11.365 0 00-.689-.471c-.985-.957.13-1.743.388-1.836.27-.098.093-.432-.779-.428-.872.004-1.67.295-2.687.684a3.055 3.055 0 01-.465.137 9.597 9.597 0 00-2.883-.102c-1.885.21-3.39 1.102-4.497 2.623C.082 8.606-.231 10.684.152 12.85c.403 2.284 1.569 4.175 3.36 5.653 1.858 1.533 3.997 2.284 6.438 2.14 1.482-.085 3.133-.284 4.994-1.86.47.234.962.327 1.78.397.63.059 1.236-.03 1.705-.128.735-.156.684-.837.419-.961-2.155-1.004-1.682-.595-2.113-.926 1.096-1.296 2.746-2.642 3.392-7.003.05-.347.007-.565 0-.845-.004-.17.035-.237.23-.256a4.173 4.173 0 001.545-.475c1.396-.763 1.96-2.015 2.093-3.517.02-.23-.004-.467-.247-.588zM11.581 18c-2.089-1.642-3.102-2.183-3.52-2.16-.392.024-.321.471-.235.763.09.288.207.486.371.739.114.167.192.416-.113.603-.673.416-1.842-.14-1.897-.167-1.361-.802-2.5-1.86-3.301-3.307-.774-1.393-1.224-2.887-1.298-4.482-.02-.386.093-.522.477-.592a4.696 4.696 0 011.529-.039c2.132.312 3.946 1.265 5.468 2.774.868.86 1.525 1.887 2.202 2.891.72 1.066 1.494 2.082 2.48 2.914.348.292.625.514.891.677-.802.09-2.14.11-3.054-.614zm1-6.44a.306.306 0 01.415-.287.302.302 0 01.2.288.306.306 0 01-.31.307.303.303 0 01-.304-.308zm3.11 1.596c-.2.081-.399.151-.59.16a1.245 1.245 0 01-.798-.254c-.274-.23-.47-.358-.552-.758a1.73 1.73 0 01.016-.588c.07-.327-.008-.537-.239-.727-.187-.156-.426-.199-.688-.199a.559.559 0 01-.254-.078c-.11-.054-.2-.19-.114-.358.028-.054.16-.186.192-.21.356-.202.767-.136 1.146.016.352.144.618.408 1.001.782.391.451.462.576.685.914.176.265.336.537.445.848.067.195-.019.354-.25.452z",clipRule:"evenodd"})}),u1=({size:t})=>e.jsxs(i,{size:t,children:[e.jsx("path",{fill:"currentColor",d:"M8.968 11.147a.408.408 0 110 .816.408.408 0 010-.816z"}),e.jsx("path",{fill:"currentColor",d:"M7.21 8.748c.045-.012.087.003.128.044.195.2.39.398.587.596a.15.15 0 00.061.035l.81.209c.056.014.09.043.102.088.013.046-.002.09-.043.13l-.596.585a.139.139 0 00-.021.03.134.134 0 00-.015.033c-.07.27-.14.54-.208.81-.014.055-.044.09-.09.102-.045.012-.088-.003-.128-.045-.195-.199-.39-.397-.587-.595a.158.158 0 00-.062-.035l-.81-.209c-.056-.014-.09-.044-.103-.09-.011-.044.004-.087.045-.128.2-.194.398-.39.596-.585a.12.12 0 00.022-.03.134.134 0 00.014-.032c.07-.27.14-.54.208-.81.014-.056.044-.09.09-.103z"}),e.jsx("path",{fill:"currentColor",d:"M15.827 9.31a.409.409 0 110 .817.409.409 0 010-.818z"}),e.jsx("path",{fill:"currentColor",d:"M14.071 6.915c.046-.012.09.003.13.044.194.2.388.398.583.596a.155.155 0 00.062.036l.807.21c.056.014.09.045.103.09.012.045-.003.088-.045.128l-.596.583a.168.168 0 00-.036.061l-.21.808c-.014.056-.044.09-.09.103-.045.011-.088-.004-.128-.045-.194-.2-.389-.398-.583-.596a.12.12 0 00-.03-.022.12.12 0 00-.032-.014l-.808-.21c-.056-.014-.09-.044-.102-.09-.012-.045.003-.087.044-.128.2-.194.398-.388.596-.583a.119.119 0 00.022-.03.132.132 0 00.015-.032l.21-.806c.014-.057.043-.09.088-.103z"}),e.jsx("path",{fill:"currentColor",d:"M8.086.457a6.102 6.102 0 013.046-.415c1.333.153 2.521.72 3.564 1.7a.116.116 0 00.107.029c1.409-.346 2.762-.224 4.062.366l.061.029.155.077c1.357.703 2.33 1.769 2.918 3.197.278.68.418 1.388.421 2.127a5.65 5.65 0 01-.18 1.631.164.164 0 00.04.154 5.98 5.98 0 011.577 2.892c.386 1.901-.008 3.614-1.182 5.14l-.181.22a6.062 6.062 0 01-2.936 1.85.16.16 0 00-.106.103c-.255.736-.512 1.364-.988 1.992-1.199 1.582-2.962 2.462-4.948 2.45-1.583-.007-2.986-.586-4.21-1.736a.142.142 0 00-.14-.031c-.518.167-1.04.191-1.605.185a5.923 5.923 0 01-2.594-.622 6.057 6.057 0 01-2.146-1.781c-.203-.27-.404-.522-.552-.821a7.742 7.742 0 01-.494-1.283 6.108 6.108 0 01-.017-3.065.163.163 0 00.007-.074.112.112 0 00-.036-.063 5.954 5.954 0 01-1.38-2.202 5.193 5.193 0 01-.333-1.59 6.911 6.911 0 01.188-2.13c.45-1.485 1.309-2.65 2.578-3.494.282-.188.549-.334.8-.439a8.21 8.21 0 01.862-.303.128.128 0 00.087-.087 6.014 6.014 0 011.104-2.155C6.315 1.463 7.132.846 8.086.457zm.965 7.647c-1.154-.82-2.73-.413-3.311.875-.301.666-.36 1.368-.178 2.106l.145.586.26.95c.105.533.31 1.02.612 1.462l.03.043c.16.189.335.362.524.518 1.386 1.139 3.275.379 3.652-1.323l.05-.213.012-.08c.06-.4.042-.792-.053-1.175a47.673 47.673 0 00-.546-2.024c-.217-.738-.616-1.313-1.197-1.725zm7.104-1.646c-.862-.802-2.191-.831-3.047-.026-.334.314-.566.736-.697 1.265a3.47 3.47 0 000 1.635l.014.054.055.18c.127.42.245.834.353 1.241.112.423.202.706.27.85.574 1.206 1.82 2.074 3.177 1.522 1.261-.514 1.641-2.01 1.355-3.22-.043-.183-.09-.365-.14-.546a34.426 34.426 0 00-.428-1.573c-.162-.508-.466-.968-.912-1.382z"})]}),h1=({size:t})=>e.jsxs(i,{size:t,children:[e.jsx("path",{fill:"currentColor",d:"M5.31 15.756c.172-3.75 1.883-5.999 2.549-6.739-3.26 2.058-5.425 5.658-6.358 8.308v1.12C1.501 21.513 4.226 24 7.59 24a6.59 6.59 0 002.2-.375c.353-.12.7-.248 1.039-.378.913-.899 1.65-1.91 2.243-2.992-4.877 2.431-7.974.072-7.763-4.5l.002.001z"}),e.jsx("path",{fill:"currentColor",d:"M22.57 10.283c-1.212-.901-4.109-2.404-7.397-2.8.295 3.792.093 8.766-2.1 12.773a12.782 12.782 0 01-2.244 2.992c3.764-1.448 6.746-3.457 8.596-5.219 2.82-2.683 3.353-5.178 3.361-6.66a2.737 2.737 0 00-.216-1.084v-.002zM14.303 1.867C12.955.7 11.248 0 9.39 0 7.532 0 5.883.677 4.545 1.807 2.791 3.29 1.627 5.557 1.5 8.125v9.201c.932-2.65 3.097-6.25 6.357-8.307.5-.318 1.025-.595 1.569-.829 1.883-.801 3.878-.932 5.746-.706-.222-2.83-.718-5.002-.87-5.617h.001z"}),e.jsx("path",{fill:"currentColor",d:"M17.305 4.961a199.47 199.47 0 01-1.08-1.094c-.202-.213-.398-.419-.586-.622l-1.333-1.378c.151.615.648 2.786.869 5.617 3.288.395 6.185 1.898 7.396 2.8-1.306-1.275-3.475-3.487-5.266-5.323z"})]}),f1=({size:t})=>e.jsxs(i,{size:t,children:[e.jsx("path",{fill:"#4285F4",d:"M23 12.245c0-.905-.075-1.565-.236-2.25h-10.54v4.083h6.186c-.124 1.014-.797 2.542-2.294 3.569l-.021.136 3.332 2.53.23.022C21.779 18.417 23 15.593 23 12.245z"}),e.jsx("path",{fill:"#34A853",d:"M12.225 23c3.03 0 5.574-.978 7.433-2.665l-3.542-2.688c-.948.648-2.22 1.1-3.891 1.1a6.745 6.745 0 01-6.386-4.572l-.132.011-3.465 2.628-.045.124C4.043 20.531 7.835 23 12.225 23z"}),e.jsx("path",{fill:"#FBBC05",d:"M5.84 14.175A6.65 6.65 0 015.463 12c0-.758.138-1.491.361-2.175l-.006-.147-3.508-2.67-.115.054A10.831 10.831 0 001 12c0 1.772.436 3.447 1.197 4.938l3.642-2.763z"}),e.jsx("path",{fill:"#EA4335",d:"M12.225 5.253c2.108 0 3.529.892 4.34 1.638l3.167-3.031C17.787 2.088 15.255 1 12.225 1 7.834 1 4.043 3.469 2.197 7.062l3.63 2.763a6.77 6.77 0 016.398-4.572z"})]}),b1=({size:t})=>e.jsx(i,{size:t,children:e.jsx("path",{fill:"currentColor",fillRule:"evenodd",d:"M5.493 21.234c-1.112-1.451-1.109-4.263-.081-7.459l-4.557-2.63a1.683 1.683 0 01-.85-1.304 1.505 1.505 0 01.08-.622 13.18 13.18 0 011.037-2.255c3.476-6.02 10.916-8.23 16.619-4.938.46.266.82.67 1.081 1.184.785 1.545.685 4.096-.234 6.954l4.557 2.631c.339.196.596.492.736.832a1.53 1.53 0 01.034 1.093 13.146 13.146 0 01-1.037 2.255c-3.476 6.02-10.916 8.23-16.619 4.938a2.6 2.6 0 01-.766-.68zm11.096-6.615c-2.073 3.591-5.808 5.316-8.343 3.852-1.267-.731-1.994-2.122-2.145-3.778-.095-1.035.036-2.173.4-3.32.217-.684.517-1.37.902-2.039l.008-.014c2.073-3.59 5.808-5.315 8.343-3.852.633.366 1.13.895 1.49 1.54.986 1.772.922 4.415-.285 6.914-.111.23-.232.457-.362.683l-.008.014z",clipRule:"evenodd"})}),v1=({size:t})=>e.jsx(i,{size:t,children:e.jsx("path",{fill:"currentColor",d:"M13.8 4.6 7.5 12h4.1l-1.4 7.4 6.3-7.4h-4.1z"})}),x1=({size:t})=>e.jsx(i,{size:t,children:e.jsxs("g",{stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.7",children:[e.jsx("path",{d:"M5.4 17.8h13.2"}),e.jsx("path",{d:"M8.3 17.8V8.1l7.4 5.2V17.8"}),e.jsx("path",{d:"M8.3 8.1c2.2.1 4.1.8 5.8 2.1"})]})}),M1=({size:t})=>e.jsx(i,{size:t,children:e.jsx("path",{fill:"currentColor",fillRule:"evenodd",d:"M16.5 0C20.642 0 24 5.373 24 12h-9c0 6.627-3.358 12-7.5 12C3.358 24 0 18.627 0 12h9c0-6.627 3.358-12 7.5-12z",clipRule:"evenodd"})}),p1=({size:t})=>e.jsx(i,{size:t,children:e.jsxs("g",{stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.7",children:[e.jsx("path",{d:"m7 7.4 5 9.2 5-9.2"}),e.jsx("path",{d:"M5.5 18.1h13"})]})}),m1=({size:t})=>e.jsx(i,{size:t,children:e.jsx("path",{fill:"currentColor",fillRule:"evenodd",d:"M17.86 22.992c-2.669.245-4.887-2.876-6.597-4.454C10.398 24.759 1 24.177 1 17.86V6.15c0-.921.244-1.861.733-2.65C2.635 1.977 4.383.98 6.15 1h11.71c6.316 0 6.918 9.398.677 10.243l2.97 2.951c3.252 3.064.808 8.929-3.646 8.797zm-1.428-3.721c1.842 1.898 4.774-1.034 2.876-2.876l-5.132-5.132H11.3v2.876l4.436 4.436.696.696zM4.12 17.842c-.037 2.632 4.117 2.632 4.06 0V6.132c.038-1.316-1.353-2.35-2.612-1.955-.057.019-.113.037-.15.056-.79.301-1.335 1.09-1.317 1.936v11.673h.02zm13.74-9.68c2.632.037 2.632-4.098 0-4.06h-6.973c.526 1.109.395 2.857.413 4.06h6.56z",clipRule:"evenodd"})}),j1=({size:t})=>e.jsx(i,{size:t,children:e.jsx("path",{fill:"currentColor",fillRule:"evenodd",d:"M.661 19.889h8.666c-.14-1.41-1.145-2.955-3.601-4.007v-.104c2.863.88 3.893 2.386 4.312 4.11H20.73l-1.72-1.476C20.017 15.244 24 13.747 24 13.747c-.141-2.541-1.441-4.909-5.787-6.827L8.326 3c.331 4.179 1.811 6.575 5.523 7.163v.102c-2.579-.064-4.368-1.216-5.275-3.588C.698 8.123-1.201 14.156.66 19.889z",clipRule:"evenodd"})}),g1=({size:t})=>e.jsx(i,{size:t,children:e.jsxs("g",{fill:"currentColor",children:[e.jsx("circle",{cx:"8",cy:"8",r:"2"}),e.jsx("circle",{cx:"16",cy:"8",r:"2"}),e.jsx("circle",{cx:"8",cy:"16",r:"2"}),e.jsx("circle",{cx:"16",cy:"16",r:"2"})]})}),C1=({size:t})=>e.jsx(i,{size:t,children:e.jsx("path",{fill:"currentColor",fillRule:"evenodd",d:"M12 0c6.627 0 12 5.373 12 12s-5.373 12-12 12S0 18.627 0 12 5.373 0 12 0zm1.652 1.123l-.01-.001c.533.097 1.023.233 1.41.404 6.084 2.683 7.396 9.214 1.601 14.338a3.781 3.781 0 01-5.337-.328 3.654 3.654 0 01-.884-3.044c-1.934.6-3.295 2.305-3.524 4.45-.204 1.912.324 4.044 2.056 5.634l.245.067C10.1 22.876 11.036 23 12 23c6.075 0 11-4.925 11-11 0-5.513-4.056-10.08-9.348-10.877zM2.748 6.21c-.178.269-.348.536-.51.803l-.235.394.078-.167A10.957 10.957 0 001 12c0 4.919 3.228 9.083 7.682 10.49l.214.065C3.523 18.528 2.84 14.149 6.47 8.68A2.234 2.234 0 102.748 6.21zm10.157-5.172c4.408 1.33 3.61 5.41 2.447 6.924-.86 1.117-2.922 1.46-3.708 2.238-.666.657-1.077 1.462-1.212 2.291A5.303 5.303 0 0112 12.258a5.672 5.672 0 001.404-11.169 10.51 10.51 0 00-.5-.052z",clipRule:"evenodd"})}),R1=({size:t})=>e.jsx(i,{size:t,children:e.jsx("path",{fill:"currentColor",fillRule:"evenodd",d:"M22.012 0h1.032v.927H24v.968h-.956V3.78h-1.032V1.896h-1.878v-.97h1.878V0zM2.6 12.371V1.87h.969v10.502h-.97zm10.423.66h10.95v.918h-6.208v9.579h-4.742V13.03zM5.629 3.333v12.356H0v4.51h10.386V8L20.859 8l-.003-4.668-15.227.001z",clipRule:"evenodd"})});function _1(t,a){switch(t){case c.GPT:return e.jsx(t1,{size:a});case c.GROK:return e.jsx(a1,{size:a});case c.QWEN:return e.jsx(c1,{size:a});case c.GLM:return e.jsx(r1,{size:a});case c.MINIMAX:return e.jsx(l1,{size:a});case c.MISTRAL:return e.jsx(n1,{size:a});case c.LLAMA:return e.jsx(s1,{size:a});case c.ANTHROPIC:return e.jsx(o1,{size:a});case c.GEMINI:return e.jsx(i1,{size:a});case c.DEEPSEEK:return e.jsx(d1,{size:a});case c.SORA:return e.jsx(u1,{size:a});case c.RUNWAY:return e.jsx(m1,{size:a});case c.PIKA:return e.jsx(j1,{size:a});case c.DOUBAO:return e.jsx(h1,{size:a});case c.GOOGLE:return e.jsx(f1,{size:a});case c.KLING:return e.jsx(b1,{size:a});case c.HUNYUAN:return e.jsx(C1,{size:a});case c.STEPFUN:return e.jsx(R1,{size:a});case c.FLUX:return e.jsx(v1,{size:a});case c.MIDJOURNEY:return e.jsx(x1,{size:a});case c.SUNO:return e.jsx(M1,{size:a});case c.VEO:return e.jsx(p1,{size:a});default:return e.jsx(g1,{size:a})}}function E1(t){return P[t].label}function w1(t){return P[t]}const V1=({vendor:t,size:a=20})=>_1(t,a),z1=({modelId:t,profileId:a,className:r=""})=>{const{shouldShowHealth:l,getHealthStatus:u}=e1();if(!l)return null;const d=u(t,a);if(!d)return null;const{statusLabel:f,statusColor:m,errorRate:M}=d;let n=3,b=m;return M>80?(n=1,b="#991B1B"):M>50?(n=1,b="#EF4444"):M>20?(n=2,b="#C2410C"):M>=1?(n=2,b="#F97316"):(n=3,b="#10B981"),e.jsx(L,{content:M>0?`${f} (拥挤度:${M}%)`:f,theme:"light",placement:"top",showArrow:!1,zIndex:2e4,children:e.jsxs("div",{className:`model-health-signal ${r}`,children:[e.jsx("div",{className:`model-health-signal__bar ${n>=1?"active":""}`,style:{backgroundColor:n>=1?b:void 0}}),e.jsx("div",{className:`model-health-signal__bar ${n>=2?"active":""}`,style:{backgroundColor:n>=2?b:void 0}}),e.jsx("div",{className:`model-health-signal__bar ${n>=3?"active":""}`,style:{backgroundColor:n>=3?b:void 0}})]})})},O1=({modelId:t})=>{const a=J.getModelBenchmarkSummary(t);return!a.hasFavorite&&!a.hasRejected?null:e.jsxs("span",{className:"model-benchmark-badge",children:[a.hasFavorite&&e.jsx(L,{content:"已在测试中收藏",theme:"light",showArrow:!1,zIndex:2e4,children:e.jsx(K,{size:12,className:"model-benchmark-badge__star"})}),a.hasRejected&&e.jsx(L,{content:"已在测试中淘汰",theme:"light",showArrow:!1,zIndex:2e4,children:e.jsx(B,{size:12,className:"model-benchmark-badge__reject"})})]})};function U(t,a){return o.useSyncExternalStore(r=>C.subscribe(r),()=>C.getVersion()),C.getModelPrice(t,a)}function H1(t,a){const r=U(t,a);return r?$(r):""}function D1(t){return o.useSyncExternalStore(a=>C.subscribe(a),()=>C.getVersion()),t?C.getGroups(t):[]}function I1(t,a){const r=U(t,a);return!r||!r.description&&!r.docsUrl?null:{description:r.description,docsUrl:r.docsUrl}}function F(t=Y){const[a,r]=o.useState(()=>N.getState(t));return o.useEffect(()=>(r(N.getState(t)),N.subscribe(()=>{r(N.getState(t))})),[t]),a}function G(t,a){if(t.length!==a.length)return!1;for(let r=0;r<t.length;r++)if(t[r].id!==a[r].id||t[r].selectionKey!==a[r].selectionKey)return!1;return!0}function P1(t){const a=F(),r=o.useRef([]);return o.useMemo(()=>{const l=W(t);return G(r.current,l)?r.current:(r.current=l,l)},[t,a])}function U1(t,a){const r=F(t),l=o.useRef([]);return o.useMemo(()=>{const u=X(t,a);return G(l.current,u)?l.current:(l.current=u,u)},[t,a,r])}export{L1 as D,N1 as M,A1 as V,w1 as a,V1 as b,D1 as c,F as d,U1 as e,I1 as f,E1 as g,H1 as h,z1 as i,O1 as j,P1 as u};
@@ -1,4 +1,4 @@
1
- import{r,h8 as Qe,at as ge,y as t,j_ as qe,h0 as O,h1 as b,j$ as et,k0 as tt,k1 as st,aI as rt,k2 as at,k3 as nt,k4 as ct,k5 as it,jV as lt,k6 as ot,jW as ut,k7 as dt,ia as mt,k8 as ht,k9 as je,jD as Fe,jF as Ne,ka as ft,jK as pt,jL as gt,bV as oe,kb as Z,kc as vt,kd as _t,fF as ae,ke as xt,kf as jt,i9 as yt,kg as bt,kh as Be,eK as Tt,al as be,ki as Ct,kj as St,cr as Et,kk as Te,kl as te,km as Ce,fR as Se}from"./tool-windows-hjm6YiPY.js";import{d as wt}from"./main-DX4kRYQX.js";/* empty css */const Nt=({className:e,style:s})=>t.jsx("div",{className:e,style:{...s,background:"linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%)",backgroundSize:"200% 100%",animation:"shimmer 1.5s infinite",borderRadius:"8px",minHeight:"100px",width:"100%"},children:t.jsx("style",{children:`
1
+ import{r,h8 as Qe,at as ge,y as t,j_ as qe,h0 as O,h1 as b,j$ as et,k0 as tt,k1 as st,aI as rt,k2 as at,k3 as nt,k4 as ct,k5 as it,jV as lt,k6 as ot,jW as ut,k7 as dt,ia as mt,k8 as ht,k9 as je,jD as Fe,jF as Ne,ka as ft,jK as pt,jL as gt,bV as oe,kb as Z,kc as vt,kd as _t,fF as ae,ke as xt,kf as jt,i9 as yt,kg as bt,kh as Be,eK as Tt,al as be,ki as Ct,kj as St,cr as Et,kk as Te,kl as te,km as Ce,fR as Se}from"./tool-windows-C4D0lII2.js";import{d as wt}from"./main-8GBlYJSO.js";/* empty css */const Nt=({className:e,style:s})=>t.jsx("div",{className:e,style:{...s,background:"linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%)",backgroundSize:"200% 100%",animation:"shimmer 1.5s infinite",borderRadius:"8px",minHeight:"100px",width:"100%"},children:t.jsx("style",{children:`
2
2
  @keyframes shimmer {
3
3
  0% { background-position: 200% 0; }
4
4
  100% { background-position: -200% 0; }
@@ -1,5 +1,5 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./tool-windows-Cos6lOhr.css"])))=>i.map(i=>d[i]);
2
- import{hK as K,kN as Q,kO as re,kP as H,kQ as pe,kR as fe,r as S,y as ge,g$ as X,h0 as G,h1 as oe,hC as E,cx as me,hd as ee,_ as N}from"./tool-windows-hjm6YiPY.js";import{w as F}from"./workflow-submission-service-BuFuRV_m.js";import{S as ke,d as te}from"./skill-dsl-parser-CPpdtdC1.js";import{a as we}from"./main-DX4kRYQX.js";function Se(s){if(!s||typeof s!="string")return console.warn("[ExternalSkillParser] SKILL.md 内容为空"),null;const e=s.trim();if(!e.startsWith("---"))return console.warn("[ExternalSkillParser] SKILL.md 缺少 YAML front matter(未以 --- 开头)"),null;const t=e.indexOf("---",3);if(t===-1)return console.warn("[ExternalSkillParser] SKILL.md YAML front matter 未闭合(缺少结束 ---)"),null;const r=e.substring(3,t).trim(),o=e.substring(t+3).trim(),i=ye(r),n=i.name,p=i.description||"";return n?{name:n,description:p,body:o}:(console.warn("[ExternalSkillParser] SKILL.md 缺少必填字段 name"),null)}function ye(s){const e={},t=s.split(`
2
+ import{hK as K,kN as Q,kO as re,kP as H,kQ as pe,kR as fe,r as S,y as ge,g$ as X,h0 as G,h1 as oe,hC as E,cx as me,hd as ee,_ as N}from"./tool-windows-C4D0lII2.js";import{w as F}from"./workflow-submission-service-C-eCWm_8.js";import{S as ke,d as te}from"./skill-dsl-parser-BxkJ9Ixc.js";import{a as we}from"./main-8GBlYJSO.js";function Se(s){if(!s||typeof s!="string")return console.warn("[ExternalSkillParser] SKILL.md 内容为空"),null;const e=s.trim();if(!e.startsWith("---"))return console.warn("[ExternalSkillParser] SKILL.md 缺少 YAML front matter(未以 --- 开头)"),null;const t=e.indexOf("---",3);if(t===-1)return console.warn("[ExternalSkillParser] SKILL.md YAML front matter 未闭合(缺少结束 ---)"),null;const r=e.substring(3,t).trim(),o=e.substring(t+3).trim(),i=ye(r),n=i.name,p=i.description||"";return n?{name:n,description:p,body:o}:(console.warn("[ExternalSkillParser] SKILL.md 缺少必填字段 name"),null)}function ye(s){const e={},t=s.split(`
3
3
  `);for(const r of t){const o=r.trim();if(!o||o.startsWith("#"))continue;const i=o.indexOf(":");if(i===-1)continue;const n=o.substring(0,i).trim();let p=o.substring(i+1).trim();(p.startsWith('"')&&p.endsWith('"')||p.startsWith("'")&&p.endsWith("'"))&&(p=p.slice(1,-1)),n&&(e[n]=p)}return e}function Ke(s){try{const e=JSON.parse(s);if(!e.plugins||!Array.isArray(e.plugins))return console.warn("[ExternalSkillParser] marketplace.json 缺少 plugins 数组"),null;const t=new Map,r=[];for(const o of e.plugins){const i={name:o.name||"",description:o.description||"",skills:[]};if(Array.isArray(o.skills))for(const n of o.skills){const p=he(n);i.skills.push(p),t.set(p,o.name||"")}r.push(i)}return{name:e.name||"",metadata:e.metadata?{description:e.metadata.description,version:e.metadata.version}:void 0,plugins:r,skillCategoryMap:t}}catch(e){return console.warn("[ExternalSkillParser] marketplace.json 解析失败:",e),null}}function he(s){let e=s.trim();return e.startsWith("./")&&(e=e.substring(2)),e.startsWith("skills/")&&(e=e.substring(7)),e.endsWith("/")&&(e=e.slice(0,-1)),e}function We(s,e){if(!e||e.size===0)return s;let t=s;for(const[r,o]of e){const i=new RegExp("`"+be(r)+"`","g");t=t.replace(i,`\`${r}\`
4
4
 
5
5
  <details><summary>${r}</summary>
@@ -67,4 +67,4 @@ ${z}`),w.length>0&&(P+=Q(w.length,d.imageDimensions)),P+=`
67
67
  请基于以上 Skill 指令构建详细的图片描述 prompt,并使用以下 JSON 格式回复以调用图片生成工具:
68
68
  {"content": "你的分析", "next": [{"mcp": "generate_image", "args": {"prompt": "你构建的完整 prompt"}}]}
69
69
 
70
- 你必须实际调用 generate_image 工具生成图片,不要仅输出文字描述。`);const U=[{role:"system",content:L},{role:"user",content:T}],j=[{id:`${f}-step-analyze`,mcp:"ai_analyze",args:{context:x,messages:U,referenceImages:w.length>0?w:void 0,textModel:n,modelRef:i},options:{mode:"async"},description:`AI 以「${W}」角色回复`,status:"pending"}];return{id:f,name:W,description:`使用「${W}」Skill 生成内容`,scenarioType:"skill_flow",skillId:b,generationType:o,steps:j,metadata:{prompt:k,userInstruction:c,rawInput:g,modelId:n,modelRef:i,isModelExplicit:p,count:_,size:a,duration:l,referenceImages:t.length>0?t:void 0,selection:d,parseMethod:"agent_fallback"},createdAt:Date.now()}}function Ae(s,e=[]){return s.scenario==="direct_generation"?Te(s,e):_e(s,e)}function Me(s,e=0){try{let t=H(s);if(!t){const i=pe(s),n=i.indexOf("{"),p=i.lastIndexOf("}");n>=0&&p>n&&(t=H(i.slice(n,p+1)))}if(!t)return{content:"",steps:[]};const r=typeof t.content=="string"?t.content:"";if(!Array.isArray(t.next)||t.next.length===0)return{content:r,steps:[]};const o=t.next.filter(i=>typeof i.mcp=="string"&&typeof i.args=="object").map((i,n)=>({id:`step-${e+n+1}`,mcp:i.mcp,args:i.args,description:$e(i.mcp,i.args),status:"pending"}));return{content:r,steps:o}}catch{return{content:"",steps:[]}}}function $e(s,e){var t,r,o,i;switch(s){case"generate_image":return`生成图片: ${((t=e.prompt)==null?void 0:t.substring(0,30))||""}...`;case"generate_video":return`生成视频: ${((r=e.prompt)==null?void 0:r.substring(0,30))||""}...`;case"generate_audio":return`生成音频: ${((o=e.prompt)==null?void 0:o.substring(0,30))||""}...`;case"generate_text":return`生成文本: ${((i=e.prompt)==null?void 0:i.substring(0,30))||""}...`;case"ai_analyze":return"AI 分析用户意图";case"format_markdown":return"格式化输出";case"show_result":return"展示结果";default:return`执行 ${s}`}}function Re(s,e,t,r,o,i){return{...s,steps:s.steps.map(n=>n.id===e?{...n,status:t,result:r!==void 0?r:n.result,error:o,duration:i}:n)}}function Ee(s,e){const t=new Set(s.steps.map(o=>o.id)),r=e.filter(o=>!t.has(o.id));return r.length===0?s:{...s,steps:[...s.steps,...r]}}function Z(s){const e=s.steps.filter(n=>n.status==="completed").length,t=s.steps.filter(n=>n.status==="failed").length,r=s.steps.find(n=>n.status==="running"),o=s.steps.filter(n=>n.status==="pending").length;let i;return t>0?i="failed":r?i="running":o===0&&e>0?i="completed":i="pending",{status:i,completedSteps:e,totalSteps:s.steps.length,currentStep:r||s.steps.find(n=>n.status==="pending")}}const se={workflow:null,status:"idle",currentStep:null,completedSteps:0,totalSteps:0,error:null};function Ce(){const[s,e]=S.useState(se),t=S.useRef(null),r=S.useRef(!1),o=S.useCallback(l=>{t.current=l,r.current=!1;const d=Z(l);e({workflow:l,status:"running",currentStep:d.currentStep||null,completedSteps:d.completedSteps,totalSteps:d.totalSteps,error:null})},[]),i=S.useCallback(l=>{t.current=l,r.current=!1;const d=Z(l);let f="running";l.status==="completed"?f="completed":(l.status==="failed"||l.status==="cancelled")&&(f="failed"),e({workflow:l,status:f,currentStep:d.currentStep||null,completedSteps:d.completedSteps,totalSteps:d.totalSteps,error:l.error||null})},[]),n=S.useCallback((l,d,f,b,W)=>{if(r.current)return;const u=t.current;if(!u)return;const T=Re(u,l,d,f,b,W);t.current=T,e(y=>{const m=Z(T);let w="running";return m.status==="completed"?w="completed":m.status==="failed"&&(w="failed"),{...y,workflow:T,status:w,currentStep:m.currentStep||null,completedSteps:m.completedSteps,totalSteps:m.totalSteps,error:b||y.error}})},[]),p=S.useCallback(l=>{if(r.current||l.length===0)return;const d=t.current;if(!d)return;const f=Ee(d,l);t.current=f,e(b=>{const W=Z(f);return{...b,workflow:f,currentStep:W.currentStep||b.currentStep,totalSteps:W.totalSteps}})},[]),k=S.useCallback(l=>{const d=t.current;if(!d||r.current)return{content:"",steps:[]};const f=d.steps.length,{content:b,steps:W}=Me(l,f);return b&&!d.aiAnalysis&&(t.current={...d,aiAnalysis:b}),W.length>0&&p(W),{content:b,steps:W}},[p]),c=S.useCallback(()=>{t.current=null,r.current=!1,e(se)},[]),g=S.useCallback(()=>{r.current=!0,e(l=>({...l,status:"failed",error:"工作流已中止"}))},[]),_=S.useCallback(()=>{r.current=!1,e(l=>({...l,status:"running",error:null}))},[]),a=S.useCallback(()=>t.current,[]);return{state:s,startWorkflow:o,restoreWorkflow:i,updateStep:n,addSteps:p,addStepsFromAIResponse:k,resetWorkflow:c,abortWorkflow:g,resumeWorkflow:_,getWorkflow:a}}const ie=S.createContext(null),Ye=({children:s})=>{const e=Ce(),t=S.useMemo(()=>({state:e.state,startWorkflow:e.startWorkflow,restoreWorkflow:e.restoreWorkflow,updateStep:e.updateStep,addSteps:e.addSteps,addStepsFromAIResponse:e.addStepsFromAIResponse,resetWorkflow:e.resetWorkflow,abortWorkflow:e.abortWorkflow,resumeWorkflow:e.resumeWorkflow,getWorkflow:e.getWorkflow}),[e.state,e.startWorkflow,e.restoreWorkflow,e.updateStep,e.addSteps,e.addStepsFromAIResponse,e.resetWorkflow,e.abortWorkflow,e.resumeWorkflow,e.getWorkflow]);return ge.jsx(ie.Provider,{value:t,children:s})};function Pe(){const s=S.useContext(ie);if(!s)throw new Error("useWorkflowContext must be used within a WorkflowProvider");return s}function De(){const s=Pe();return{startWorkflow:s.startWorkflow,restoreWorkflow:s.restoreWorkflow,updateStep:s.updateStep,addSteps:s.addSteps,addStepsFromAIResponse:s.addStepsFromAIResponse,resetWorkflow:s.resetWorkflow,abortWorkflow:s.abortWorkflow,resumeWorkflow:s.resumeWorkflow,getWorkflow:s.getWorkflow}}const Le=20,ne=2e3,ze=3e4;function ae(s){const e=new Map;if(!s)return e;for(const t of s){const r=t.result;r!=null&&r.taskId&&e.set(r.taskId,t.id)}return e}function le(s){var e;return s.status===G.PROCESSING?{status:"running"}:s.status===G.COMPLETED&&s.result?{status:"completed",result:{...s.result,taskId:s.id}}:s.status===G.FAILED?{status:"failed",error:typeof s.error=="string"?s.error:((e=s.error)==null?void 0:e.message)||"Task failed"}:null}function Fe(s,e,t,r,o,i){const n=t.getWorkflow(),k=ae(n==null?void 0:n.steps).get(s.id);if(!k)return!1;const c=s.type!==oe.IMAGE&&(n==null?void 0:n.generationType)!=="image";e.status==="running"&&t.resumeWorkflow(),t.updateStep(k,e.status,e.result,e.error);const g=t.getWorkflow();if(g){const _=D(g);r.current(_);const a=o.current,l=i.current;c&&a&&l&&E.updateWorkflow(a,l,_)}return!0}function Oe(s,e,t,r,o,i){var p;const n=o.current;if(!n||s.type===oe.IMAGE)return!1;for(const k of n.children){if(!me(k))continue;const c=k;if(c.workflow.generationType==="image")continue;const _=ae((p=c.workflow)==null?void 0:p.steps).get(s.id);if(!_)continue;const a=c.workflow.steps.map(d=>d.id!==_?d:{...d,status:e.status,...e.result!==void 0&&{result:e.result},...e.error!==void 0&&{error:e.error}}),l={...c.workflow,steps:a};if(e.status==="running"&&delete l.error,E.updateWorkflow(n,c.id,l),i.current=c.id,r.current(l),t.restoreWorkflow){const d={id:l.id,name:l.name||"",description:"",scenarioType:"direct_generation",generationType:l.generationType,status:e.status==="running"?"running":"failed",steps:a.map(f=>({id:f.id,mcp:f.mcp||"",args:f.args||{},description:f.description||"",status:f.status,result:f.result,error:f.error,duration:f.duration,options:f.options})),createdAt:l.createdAt||Date.now(),metadata:{prompt:l.prompt||"",userInstruction:"",rawInput:"",modelId:"",isModelExplicit:!1,count:l.count||1,selection:{texts:[],images:[],videos:[],graphics:[]}},aiAnalysis:l.aiAnalysis};t.restoreWorkflow(d)}return!0}return!1}function q(s,e,t,r,o,i){const n=s.task,p=le(n);return p?((i==null?void 0:i.logProcessing)!==!1&&console.debug(`[useTaskWorkflowSync] Processing task ${n.id} → ${p.status}`),Fe(n,p,e,t,r,o)?(console.debug(`[useTaskWorkflowSync] Task ${n.id} handled via WorkflowContext`),!0):Oe(n,p,e,t,r,o)?(console.debug(`[useTaskWorkflowSync] Task ${n.id} handled via WorkZone fallback`),!0):((i==null?void 0:i.logUnmatched)!==!1&&console.debug(`[useTaskWorkflowSync] Task ${n.id} not matched to any workflow step (buffering)`),!1)):!1}function Ne(s){const{workflowControl:e,boardRef:t,workZoneIdRef:r}=s,o=S.useRef(s.updateWorkflowMessage);S.useEffect(()=>{o.current=s.updateWorkflowMessage},[s.updateWorkflowMessage]);const i=S.useRef(new Map),n=S.useRef(null),p=S.useRef(0),k=S.useRef(!1);S.useEffect(()=>{const c=a=>{const l=i.current;if(!l.has(a.task.id)&&l.size>=Le){const d=l.keys().next().value;d&&l.delete(d)}l.set(a.task.id,a)},g=()=>{const a=new Map;for(const[l,d]of i.current.entries())q(d,e,o,t,r,{logProcessing:!1,logUnmatched:!1})||a.set(l,d);i.current=a,(a.size===0||Date.now()-p.current>ze)&&(n.current&&(clearInterval(n.current),n.current=null),i.current=new Map)};if(!k.current){k.current=!0;const a=X.getAllTasks();for(const l of a){const d=le(l);d&&(d.status==="completed"||d.status==="failed")&&q({task:l},e,o,t,r)}}const _=X.observeTaskUpdates().subscribe(a=>{if(a.type!=="taskUpdated")return;if(a.task.status===G.PROCESSING&&i.current.has(a.task.id)){c(a),n.current||(p.current=Date.now(),n.current=setInterval(g,ne));return}q(a,e,o,t,r)?i.current.delete(a.task.id):(c(a),n.current||(p.current=Date.now(),n.current=setInterval(g,ne)))});return()=>{_.unsubscribe(),n.current&&(clearInterval(n.current),n.current=null),i.current=new Map}},[e,t,r])}let V=null;const Ue=new Promise(s=>{V=s});function D(s,e,t,r){var i;const o=s.metadata||{};return{id:s.id,name:s.name,generationType:s.generationType,prompt:o.prompt||((i=e==null?void 0:e.aiContext)==null?void 0:i.finalPrompt)||"",aiAnalysis:s.aiAnalysis,count:o.count,createdAt:s.createdAt,steps:s.steps.map(n=>({id:n.id,description:n.description,status:n.status,mcp:n.mcp,args:n.args,result:n.result,error:n.error,duration:n.duration,options:n.options})),retryContext:e,postProcessingStatus:t,insertedCount:r}}async function je(s,e){const{operation:t,params:r}=e;try{const{insertImageFromUrl:o}=await N(async()=>{const{insertImageFromUrl:c}=await import("./tool-windows-hjm6YiPY.js").then(g=>g.oK);return{insertImageFromUrl:c}},__vite__mapDeps([0]),import.meta.url),{insertVideoFromUrl:i}=await N(async()=>{const{insertVideoFromUrl:c}=await import("./tool-windows-hjm6YiPY.js").then(g=>g.oS);return{insertVideoFromUrl:c}},__vite__mapDeps([0]),import.meta.url),{insertAudioFromUrl:n}=await N(async()=>{const{insertAudioFromUrl:c}=await import("./tool-windows-hjm6YiPY.js").then(g=>g.oL);return{insertAudioFromUrl:c}},__vite__mapDeps([0]),import.meta.url),{getSmartInsertionPoint:p}=await N(async()=>{const{getSmartInsertionPoint:c}=await import("./tool-windows-hjm6YiPY.js").then(g=>g.oJ);return{getSmartInsertionPoint:c}},__vite__mapDeps([0]),import.meta.url),k=r.position?[r.position.x,r.position.y]:p(s)||[100,100];if(t==="canvas_insert"&&r.items)for(const c of r.items)c.type==="image"&&c.url?await o(s,c.url,k):c.type==="video"&&c.url?await i(s,c.url,k):c.type==="audio"&&c.url&&await n(s,c.url,c,k);else t==="insert_image"&&r.url?await o(s,r.url,k):t==="insert_video"&&r.url?await i(s,r.url,k):t==="insert_audio"&&r.url&&await n(s,r.url,r,k)}catch(o){console.error("[useWorkflowSubmission] Failed to insert to canvas:",o)}}function Ze(s){const{boardRef:e,workZoneIdRef:t}=s,r=De(),o=we(),i=S.useRef(o.sendWorkflowMessage),n=S.useRef(o.updateWorkflowMessage);S.useEffect(()=>{i.current=o.sendWorkflowMessage,n.current=o.updateWorkflowMessage},[o.sendWorkflowMessage,o.updateWorkflowMessage]),Ne({workflowControl:r,updateWorkflowMessage:o.updateWorkflowMessage,boardRef:e,workZoneIdRef:t});const p=S.useRef(null),k=S.useRef([]),c=S.useRef(!1),g=S.useRef(null),_=S.useCallback(u=>u!=="image",[]),a=S.useCallback(async()=>{if(!c.current){c.current=!0;try{await F.recoverWorkflows()}catch(u){console.warn("[useWorkflowSubmission] Failed to recover workflows:",u)}finally{V==null||V()}}},[]);S.useEffect(()=>{F.init(),F.registerCanvasHandler(async(T,y)=>({success:!0}));const u=F.subscribeToAllEvents(T=>{var y,m,w,x,I,v,A,M,C;if(T.type==="recovered"&&T.workflow){const h=T.workflow,O=h.status==="running"||h.status==="pending",R=h.status==="failed"&&h.updatedAt&&Date.now()-h.updatedAt<300*1e3;if(!O&&!R)return;(y=r.restoreWorkflow)==null||y.call(r,h);const $=ee.get(),L={aiContext:{rawInput:((m=h.context)==null?void 0:m.userInput)||"",userInstruction:((w=h.context)==null?void 0:w.userInput)||"",model:{id:((x=h.context)==null?void 0:x.model)||"",type:h.generationType==="video"?"video":h.generationType==="audio"?"audio":"image",isExplicit:!0},defaultModels:{image:$.imageModelName||"gemini-3-pro-image-preview-vip",video:$.videoModelName||"veo3.1",audio:$.audioModelName||"suno_music"},params:{count:(I=h.metadata)==null?void 0:I.count,size:(v=h.metadata)==null?void 0:v.size,duration:(A=h.metadata)==null?void 0:A.duration},selection:{texts:[],images:[],videos:[],graphics:[]},finalPrompt:((M=h.metadata)==null?void 0:M.prompt)||""},referenceImages:((C=h.context)==null?void 0:C.referenceImages)||[],textModel:$.textModelName},B=D(h,L);n.current(B);const U=e.current,j=t.current;_(h.generationType)&&j&&U&&E.updateWorkflow(U,j,B);const z=F.subscribeToWorkflow(h.id,async Y=>{var P;await((P=g.current)==null?void 0:P.call(g,Y,h,L))});k.current.push(z)}});return k.current.push(u),a(),()=>{k.current.forEach(T=>T.unsubscribe()),k.current=[]}},[]);const l=S.useCallback(async(u,T,y)=>{const m=e.current,w=t.current,x=_(T.generationType);switch(u.type){case"step":{r.updateStep(u.stepId,u.status,u.result,u.error,u.duration);const I=r.getWorkflow();if(I){const v=D(I,y);n.current(v),x&&w&&m&&E.updateWorkflow(m,w,v)}break}case"completed":{const I=r.getWorkflow();let v=!1;I&&I.steps.forEach(M=>{const C=M.result,h=C==null?void 0:C.taskId;h&&(v=!0),(M.status==="running"||M.status==="pending")&&!h&&r.updateStep(M.id,"completed")});const A=r.getWorkflow();if(A){const M=D(A,y);if(n.current(M),x&&w&&m){if(E.updateWorkflow(m,w,M),A.steps.some(h=>h.status==="pending"||h.status==="running"))break;if(!v)setTimeout(()=>{E.removeWorkZone(m,w)},1500);else{const{workflowCompletionService:h}=await N(async()=>{const{workflowCompletionService:R}=await import("./tool-windows-hjm6YiPY.js").then($=>$.oT);return{workflowCompletionService:R}},__vite__mapDeps([0]),import.meta.url);A.steps.every(R=>{const $=R.result;return $!=null&&$.taskId?h.isPostProcessingCompleted($.taskId):!0})&&setTimeout(()=>{E.removeWorkZone(m,w)},1500)}}}break}case"failed":{r.abortWorkflow();const I=r.getWorkflow();if(I){const v=D(I,y);n.current(v),x&&w&&m&&E.updateWorkflow(m,w,v)}break}case"steps_added":{const I=u;r.addSteps(I.steps.map(A=>({id:A.id,mcp:A.mcp,args:A.args,description:A.description,status:A.status})));const v=r.getWorkflow();if(v){const A=D(v,y);n.current(A),x&&w&&m&&E.updateWorkflow(m,w,A)}break}case"canvas_insert":{m&&je(m,u);break}}},[r,e,t,_]);S.useEffect(()=>{g.current=l},[l]);const d=S.useCallback(async(u,T,y,m)=>{const w=m||Ae(u,T);r.startWorkflow(w);const x=ee.get(),I=x.textModelName,v=y||{aiContext:{rawInput:u.rawInput||u.userInstruction,userInstruction:u.userInstruction,model:{id:u.modelId,type:u.generationType,isExplicit:u.isModelExplicit},defaultModels:{image:x.imageModelName||"gemini-3-pro-image-preview-vip",video:x.videoModelName||"veo3.1",audio:x.audioModelName||"suno_music"},params:{count:u.count,size:u.size,duration:u.duration},selection:u.selection||{texts:[],images:[],videos:[],graphics:[]},finalPrompt:u.prompt},referenceImages:T,textModel:I};p.current=v;const A=D(w,v);return await i.current({context:v.aiContext,workflow:A,textModel:I,autoOpen:!1}),{workflowId:w.id,usedSW:!1}},[r]),f=S.useCallback(async u=>{await F.cancel(u),r.abortWorkflow()},[r]),b=S.useCallback(async(u,T)=>{const y=u.retryContext;if(!y){console.error("[useWorkflowSubmission] No retry context available");return}const m={prompt:u.prompt,userInstruction:y.aiContext.userInstruction,rawInput:y.aiContext.rawInput,modelId:y.aiContext.model.id,isModelExplicit:y.aiContext.model.isExplicit,generationType:y.aiContext.model.type,count:u.count||1,size:y.aiContext.params.size,duration:y.aiContext.params.duration,scenario:y.aiContext.model.type==="agent"?"agent_flow":"direct_generation",selection:y.aiContext.selection,parseResult:{},hasExtraContent:!1};await d(m,y.referenceImages||[],y)},[d]),W=S.useCallback(()=>p.current,[]);return{submitWorkflow:d,cancelWorkflow:f,retryWorkflow:b,getRetryContext:W}}const He=Object.freeze(Object.defineProperty({__proto__:null,toWorkflowMessageData:D,useWorkflowSubmission:Ze,workflowRecoveryPromise:Ue},Symbol.toStringTag,{value:"Module"}));export{Ye as W,Ke as a,Qe as b,Ze as c,Je as d,Ae as e,He as f,Se as p,De as u};
70
+ 你必须实际调用 generate_image 工具生成图片,不要仅输出文字描述。`);const U=[{role:"system",content:L},{role:"user",content:T}],j=[{id:`${f}-step-analyze`,mcp:"ai_analyze",args:{context:x,messages:U,referenceImages:w.length>0?w:void 0,textModel:n,modelRef:i},options:{mode:"async"},description:`AI 以「${W}」角色回复`,status:"pending"}];return{id:f,name:W,description:`使用「${W}」Skill 生成内容`,scenarioType:"skill_flow",skillId:b,generationType:o,steps:j,metadata:{prompt:k,userInstruction:c,rawInput:g,modelId:n,modelRef:i,isModelExplicit:p,count:_,size:a,duration:l,referenceImages:t.length>0?t:void 0,selection:d,parseMethod:"agent_fallback"},createdAt:Date.now()}}function Ae(s,e=[]){return s.scenario==="direct_generation"?Te(s,e):_e(s,e)}function Me(s,e=0){try{let t=H(s);if(!t){const i=pe(s),n=i.indexOf("{"),p=i.lastIndexOf("}");n>=0&&p>n&&(t=H(i.slice(n,p+1)))}if(!t)return{content:"",steps:[]};const r=typeof t.content=="string"?t.content:"";if(!Array.isArray(t.next)||t.next.length===0)return{content:r,steps:[]};const o=t.next.filter(i=>typeof i.mcp=="string"&&typeof i.args=="object").map((i,n)=>({id:`step-${e+n+1}`,mcp:i.mcp,args:i.args,description:$e(i.mcp,i.args),status:"pending"}));return{content:r,steps:o}}catch{return{content:"",steps:[]}}}function $e(s,e){var t,r,o,i;switch(s){case"generate_image":return`生成图片: ${((t=e.prompt)==null?void 0:t.substring(0,30))||""}...`;case"generate_video":return`生成视频: ${((r=e.prompt)==null?void 0:r.substring(0,30))||""}...`;case"generate_audio":return`生成音频: ${((o=e.prompt)==null?void 0:o.substring(0,30))||""}...`;case"generate_text":return`生成文本: ${((i=e.prompt)==null?void 0:i.substring(0,30))||""}...`;case"ai_analyze":return"AI 分析用户意图";case"format_markdown":return"格式化输出";case"show_result":return"展示结果";default:return`执行 ${s}`}}function Re(s,e,t,r,o,i){return{...s,steps:s.steps.map(n=>n.id===e?{...n,status:t,result:r!==void 0?r:n.result,error:o,duration:i}:n)}}function Ee(s,e){const t=new Set(s.steps.map(o=>o.id)),r=e.filter(o=>!t.has(o.id));return r.length===0?s:{...s,steps:[...s.steps,...r]}}function Z(s){const e=s.steps.filter(n=>n.status==="completed").length,t=s.steps.filter(n=>n.status==="failed").length,r=s.steps.find(n=>n.status==="running"),o=s.steps.filter(n=>n.status==="pending").length;let i;return t>0?i="failed":r?i="running":o===0&&e>0?i="completed":i="pending",{status:i,completedSteps:e,totalSteps:s.steps.length,currentStep:r||s.steps.find(n=>n.status==="pending")}}const se={workflow:null,status:"idle",currentStep:null,completedSteps:0,totalSteps:0,error:null};function Ce(){const[s,e]=S.useState(se),t=S.useRef(null),r=S.useRef(!1),o=S.useCallback(l=>{t.current=l,r.current=!1;const d=Z(l);e({workflow:l,status:"running",currentStep:d.currentStep||null,completedSteps:d.completedSteps,totalSteps:d.totalSteps,error:null})},[]),i=S.useCallback(l=>{t.current=l,r.current=!1;const d=Z(l);let f="running";l.status==="completed"?f="completed":(l.status==="failed"||l.status==="cancelled")&&(f="failed"),e({workflow:l,status:f,currentStep:d.currentStep||null,completedSteps:d.completedSteps,totalSteps:d.totalSteps,error:l.error||null})},[]),n=S.useCallback((l,d,f,b,W)=>{if(r.current)return;const u=t.current;if(!u)return;const T=Re(u,l,d,f,b,W);t.current=T,e(y=>{const m=Z(T);let w="running";return m.status==="completed"?w="completed":m.status==="failed"&&(w="failed"),{...y,workflow:T,status:w,currentStep:m.currentStep||null,completedSteps:m.completedSteps,totalSteps:m.totalSteps,error:b||y.error}})},[]),p=S.useCallback(l=>{if(r.current||l.length===0)return;const d=t.current;if(!d)return;const f=Ee(d,l);t.current=f,e(b=>{const W=Z(f);return{...b,workflow:f,currentStep:W.currentStep||b.currentStep,totalSteps:W.totalSteps}})},[]),k=S.useCallback(l=>{const d=t.current;if(!d||r.current)return{content:"",steps:[]};const f=d.steps.length,{content:b,steps:W}=Me(l,f);return b&&!d.aiAnalysis&&(t.current={...d,aiAnalysis:b}),W.length>0&&p(W),{content:b,steps:W}},[p]),c=S.useCallback(()=>{t.current=null,r.current=!1,e(se)},[]),g=S.useCallback(()=>{r.current=!0,e(l=>({...l,status:"failed",error:"工作流已中止"}))},[]),_=S.useCallback(()=>{r.current=!1,e(l=>({...l,status:"running",error:null}))},[]),a=S.useCallback(()=>t.current,[]);return{state:s,startWorkflow:o,restoreWorkflow:i,updateStep:n,addSteps:p,addStepsFromAIResponse:k,resetWorkflow:c,abortWorkflow:g,resumeWorkflow:_,getWorkflow:a}}const ie=S.createContext(null),Ye=({children:s})=>{const e=Ce(),t=S.useMemo(()=>({state:e.state,startWorkflow:e.startWorkflow,restoreWorkflow:e.restoreWorkflow,updateStep:e.updateStep,addSteps:e.addSteps,addStepsFromAIResponse:e.addStepsFromAIResponse,resetWorkflow:e.resetWorkflow,abortWorkflow:e.abortWorkflow,resumeWorkflow:e.resumeWorkflow,getWorkflow:e.getWorkflow}),[e.state,e.startWorkflow,e.restoreWorkflow,e.updateStep,e.addSteps,e.addStepsFromAIResponse,e.resetWorkflow,e.abortWorkflow,e.resumeWorkflow,e.getWorkflow]);return ge.jsx(ie.Provider,{value:t,children:s})};function Pe(){const s=S.useContext(ie);if(!s)throw new Error("useWorkflowContext must be used within a WorkflowProvider");return s}function De(){const s=Pe();return{startWorkflow:s.startWorkflow,restoreWorkflow:s.restoreWorkflow,updateStep:s.updateStep,addSteps:s.addSteps,addStepsFromAIResponse:s.addStepsFromAIResponse,resetWorkflow:s.resetWorkflow,abortWorkflow:s.abortWorkflow,resumeWorkflow:s.resumeWorkflow,getWorkflow:s.getWorkflow}}const Le=20,ne=2e3,ze=3e4;function ae(s){const e=new Map;if(!s)return e;for(const t of s){const r=t.result;r!=null&&r.taskId&&e.set(r.taskId,t.id)}return e}function le(s){var e;return s.status===G.PROCESSING?{status:"running"}:s.status===G.COMPLETED&&s.result?{status:"completed",result:{...s.result,taskId:s.id}}:s.status===G.FAILED?{status:"failed",error:typeof s.error=="string"?s.error:((e=s.error)==null?void 0:e.message)||"Task failed"}:null}function Fe(s,e,t,r,o,i){const n=t.getWorkflow(),k=ae(n==null?void 0:n.steps).get(s.id);if(!k)return!1;const c=s.type!==oe.IMAGE&&(n==null?void 0:n.generationType)!=="image";e.status==="running"&&t.resumeWorkflow(),t.updateStep(k,e.status,e.result,e.error);const g=t.getWorkflow();if(g){const _=D(g);r.current(_);const a=o.current,l=i.current;c&&a&&l&&E.updateWorkflow(a,l,_)}return!0}function Oe(s,e,t,r,o,i){var p;const n=o.current;if(!n||s.type===oe.IMAGE)return!1;for(const k of n.children){if(!me(k))continue;const c=k;if(c.workflow.generationType==="image")continue;const _=ae((p=c.workflow)==null?void 0:p.steps).get(s.id);if(!_)continue;const a=c.workflow.steps.map(d=>d.id!==_?d:{...d,status:e.status,...e.result!==void 0&&{result:e.result},...e.error!==void 0&&{error:e.error}}),l={...c.workflow,steps:a};if(e.status==="running"&&delete l.error,E.updateWorkflow(n,c.id,l),i.current=c.id,r.current(l),t.restoreWorkflow){const d={id:l.id,name:l.name||"",description:"",scenarioType:"direct_generation",generationType:l.generationType,status:e.status==="running"?"running":"failed",steps:a.map(f=>({id:f.id,mcp:f.mcp||"",args:f.args||{},description:f.description||"",status:f.status,result:f.result,error:f.error,duration:f.duration,options:f.options})),createdAt:l.createdAt||Date.now(),metadata:{prompt:l.prompt||"",userInstruction:"",rawInput:"",modelId:"",isModelExplicit:!1,count:l.count||1,selection:{texts:[],images:[],videos:[],graphics:[]}},aiAnalysis:l.aiAnalysis};t.restoreWorkflow(d)}return!0}return!1}function q(s,e,t,r,o,i){const n=s.task,p=le(n);return p?((i==null?void 0:i.logProcessing)!==!1&&console.debug(`[useTaskWorkflowSync] Processing task ${n.id} → ${p.status}`),Fe(n,p,e,t,r,o)?(console.debug(`[useTaskWorkflowSync] Task ${n.id} handled via WorkflowContext`),!0):Oe(n,p,e,t,r,o)?(console.debug(`[useTaskWorkflowSync] Task ${n.id} handled via WorkZone fallback`),!0):((i==null?void 0:i.logUnmatched)!==!1&&console.debug(`[useTaskWorkflowSync] Task ${n.id} not matched to any workflow step (buffering)`),!1)):!1}function Ne(s){const{workflowControl:e,boardRef:t,workZoneIdRef:r}=s,o=S.useRef(s.updateWorkflowMessage);S.useEffect(()=>{o.current=s.updateWorkflowMessage},[s.updateWorkflowMessage]);const i=S.useRef(new Map),n=S.useRef(null),p=S.useRef(0),k=S.useRef(!1);S.useEffect(()=>{const c=a=>{const l=i.current;if(!l.has(a.task.id)&&l.size>=Le){const d=l.keys().next().value;d&&l.delete(d)}l.set(a.task.id,a)},g=()=>{const a=new Map;for(const[l,d]of i.current.entries())q(d,e,o,t,r,{logProcessing:!1,logUnmatched:!1})||a.set(l,d);i.current=a,(a.size===0||Date.now()-p.current>ze)&&(n.current&&(clearInterval(n.current),n.current=null),i.current=new Map)};if(!k.current){k.current=!0;const a=X.getAllTasks();for(const l of a){const d=le(l);d&&(d.status==="completed"||d.status==="failed")&&q({task:l},e,o,t,r)}}const _=X.observeTaskUpdates().subscribe(a=>{if(a.type!=="taskUpdated")return;if(a.task.status===G.PROCESSING&&i.current.has(a.task.id)){c(a),n.current||(p.current=Date.now(),n.current=setInterval(g,ne));return}q(a,e,o,t,r)?i.current.delete(a.task.id):(c(a),n.current||(p.current=Date.now(),n.current=setInterval(g,ne)))});return()=>{_.unsubscribe(),n.current&&(clearInterval(n.current),n.current=null),i.current=new Map}},[e,t,r])}let V=null;const Ue=new Promise(s=>{V=s});function D(s,e,t,r){var i;const o=s.metadata||{};return{id:s.id,name:s.name,generationType:s.generationType,prompt:o.prompt||((i=e==null?void 0:e.aiContext)==null?void 0:i.finalPrompt)||"",aiAnalysis:s.aiAnalysis,count:o.count,createdAt:s.createdAt,steps:s.steps.map(n=>({id:n.id,description:n.description,status:n.status,mcp:n.mcp,args:n.args,result:n.result,error:n.error,duration:n.duration,options:n.options})),retryContext:e,postProcessingStatus:t,insertedCount:r}}async function je(s,e){const{operation:t,params:r}=e;try{const{insertImageFromUrl:o}=await N(async()=>{const{insertImageFromUrl:c}=await import("./tool-windows-C4D0lII2.js").then(g=>g.oK);return{insertImageFromUrl:c}},__vite__mapDeps([0]),import.meta.url),{insertVideoFromUrl:i}=await N(async()=>{const{insertVideoFromUrl:c}=await import("./tool-windows-C4D0lII2.js").then(g=>g.oS);return{insertVideoFromUrl:c}},__vite__mapDeps([0]),import.meta.url),{insertAudioFromUrl:n}=await N(async()=>{const{insertAudioFromUrl:c}=await import("./tool-windows-C4D0lII2.js").then(g=>g.oL);return{insertAudioFromUrl:c}},__vite__mapDeps([0]),import.meta.url),{getSmartInsertionPoint:p}=await N(async()=>{const{getSmartInsertionPoint:c}=await import("./tool-windows-C4D0lII2.js").then(g=>g.oJ);return{getSmartInsertionPoint:c}},__vite__mapDeps([0]),import.meta.url),k=r.position?[r.position.x,r.position.y]:p(s)||[100,100];if(t==="canvas_insert"&&r.items)for(const c of r.items)c.type==="image"&&c.url?await o(s,c.url,k):c.type==="video"&&c.url?await i(s,c.url,k):c.type==="audio"&&c.url&&await n(s,c.url,c,k);else t==="insert_image"&&r.url?await o(s,r.url,k):t==="insert_video"&&r.url?await i(s,r.url,k):t==="insert_audio"&&r.url&&await n(s,r.url,r,k)}catch(o){console.error("[useWorkflowSubmission] Failed to insert to canvas:",o)}}function Ze(s){const{boardRef:e,workZoneIdRef:t}=s,r=De(),o=we(),i=S.useRef(o.sendWorkflowMessage),n=S.useRef(o.updateWorkflowMessage);S.useEffect(()=>{i.current=o.sendWorkflowMessage,n.current=o.updateWorkflowMessage},[o.sendWorkflowMessage,o.updateWorkflowMessage]),Ne({workflowControl:r,updateWorkflowMessage:o.updateWorkflowMessage,boardRef:e,workZoneIdRef:t});const p=S.useRef(null),k=S.useRef([]),c=S.useRef(!1),g=S.useRef(null),_=S.useCallback(u=>u!=="image",[]),a=S.useCallback(async()=>{if(!c.current){c.current=!0;try{await F.recoverWorkflows()}catch(u){console.warn("[useWorkflowSubmission] Failed to recover workflows:",u)}finally{V==null||V()}}},[]);S.useEffect(()=>{F.init(),F.registerCanvasHandler(async(T,y)=>({success:!0}));const u=F.subscribeToAllEvents(T=>{var y,m,w,x,I,v,A,M,C;if(T.type==="recovered"&&T.workflow){const h=T.workflow,O=h.status==="running"||h.status==="pending",R=h.status==="failed"&&h.updatedAt&&Date.now()-h.updatedAt<300*1e3;if(!O&&!R)return;(y=r.restoreWorkflow)==null||y.call(r,h);const $=ee.get(),L={aiContext:{rawInput:((m=h.context)==null?void 0:m.userInput)||"",userInstruction:((w=h.context)==null?void 0:w.userInput)||"",model:{id:((x=h.context)==null?void 0:x.model)||"",type:h.generationType==="video"?"video":h.generationType==="audio"?"audio":"image",isExplicit:!0},defaultModels:{image:$.imageModelName||"gemini-3-pro-image-preview-vip",video:$.videoModelName||"veo3.1",audio:$.audioModelName||"suno_music"},params:{count:(I=h.metadata)==null?void 0:I.count,size:(v=h.metadata)==null?void 0:v.size,duration:(A=h.metadata)==null?void 0:A.duration},selection:{texts:[],images:[],videos:[],graphics:[]},finalPrompt:((M=h.metadata)==null?void 0:M.prompt)||""},referenceImages:((C=h.context)==null?void 0:C.referenceImages)||[],textModel:$.textModelName},B=D(h,L);n.current(B);const U=e.current,j=t.current;_(h.generationType)&&j&&U&&E.updateWorkflow(U,j,B);const z=F.subscribeToWorkflow(h.id,async Y=>{var P;await((P=g.current)==null?void 0:P.call(g,Y,h,L))});k.current.push(z)}});return k.current.push(u),a(),()=>{k.current.forEach(T=>T.unsubscribe()),k.current=[]}},[]);const l=S.useCallback(async(u,T,y)=>{const m=e.current,w=t.current,x=_(T.generationType);switch(u.type){case"step":{r.updateStep(u.stepId,u.status,u.result,u.error,u.duration);const I=r.getWorkflow();if(I){const v=D(I,y);n.current(v),x&&w&&m&&E.updateWorkflow(m,w,v)}break}case"completed":{const I=r.getWorkflow();let v=!1;I&&I.steps.forEach(M=>{const C=M.result,h=C==null?void 0:C.taskId;h&&(v=!0),(M.status==="running"||M.status==="pending")&&!h&&r.updateStep(M.id,"completed")});const A=r.getWorkflow();if(A){const M=D(A,y);if(n.current(M),x&&w&&m){if(E.updateWorkflow(m,w,M),A.steps.some(h=>h.status==="pending"||h.status==="running"))break;if(!v)setTimeout(()=>{E.removeWorkZone(m,w)},1500);else{const{workflowCompletionService:h}=await N(async()=>{const{workflowCompletionService:R}=await import("./tool-windows-C4D0lII2.js").then($=>$.oT);return{workflowCompletionService:R}},__vite__mapDeps([0]),import.meta.url);A.steps.every(R=>{const $=R.result;return $!=null&&$.taskId?h.isPostProcessingCompleted($.taskId):!0})&&setTimeout(()=>{E.removeWorkZone(m,w)},1500)}}}break}case"failed":{r.abortWorkflow();const I=r.getWorkflow();if(I){const v=D(I,y);n.current(v),x&&w&&m&&E.updateWorkflow(m,w,v)}break}case"steps_added":{const I=u;r.addSteps(I.steps.map(A=>({id:A.id,mcp:A.mcp,args:A.args,description:A.description,status:A.status})));const v=r.getWorkflow();if(v){const A=D(v,y);n.current(A),x&&w&&m&&E.updateWorkflow(m,w,A)}break}case"canvas_insert":{m&&je(m,u);break}}},[r,e,t,_]);S.useEffect(()=>{g.current=l},[l]);const d=S.useCallback(async(u,T,y,m)=>{const w=m||Ae(u,T);r.startWorkflow(w);const x=ee.get(),I=x.textModelName,v=y||{aiContext:{rawInput:u.rawInput||u.userInstruction,userInstruction:u.userInstruction,model:{id:u.modelId,type:u.generationType,isExplicit:u.isModelExplicit},defaultModels:{image:x.imageModelName||"gemini-3-pro-image-preview-vip",video:x.videoModelName||"veo3.1",audio:x.audioModelName||"suno_music"},params:{count:u.count,size:u.size,duration:u.duration},selection:u.selection||{texts:[],images:[],videos:[],graphics:[]},finalPrompt:u.prompt},referenceImages:T,textModel:I};p.current=v;const A=D(w,v);return await i.current({context:v.aiContext,workflow:A,textModel:I,autoOpen:!1}),{workflowId:w.id,usedSW:!1}},[r]),f=S.useCallback(async u=>{await F.cancel(u),r.abortWorkflow()},[r]),b=S.useCallback(async(u,T)=>{const y=u.retryContext;if(!y){console.error("[useWorkflowSubmission] No retry context available");return}const m={prompt:u.prompt,userInstruction:y.aiContext.userInstruction,rawInput:y.aiContext.rawInput,modelId:y.aiContext.model.id,isModelExplicit:y.aiContext.model.isExplicit,generationType:y.aiContext.model.type,count:u.count||1,size:y.aiContext.params.size,duration:y.aiContext.params.duration,scenario:y.aiContext.model.type==="agent"?"agent_flow":"direct_generation",selection:y.aiContext.selection,parseResult:{},hasExtraContent:!1};await d(m,y.referenceImages||[],y)},[d]),W=S.useCallback(()=>p.current,[]);return{submitWorkflow:d,cancelWorkflow:f,retryWorkflow:b,getRetryContext:W}}const He=Object.freeze(Object.defineProperty({__proto__:null,toWorkflowMessageData:D,useWorkflowSubmission:Ze,workflowRecoveryPromise:Ue},Symbol.toStringTag,{value:"Module"}));export{Ye as W,Ke as a,Qe as b,Ze as c,Je as d,Ae as e,He as f,Se as p,De as u};
@@ -1 +1 @@
1
- import{lC as i,lD as r,g$ as d,h1 as u}from"./tool-windows-hjm6YiPY.js";function l(e){const o=e.prompt||r;if(!e.videoData&&!e.youtubeUrl&&!e.videoCacheUrl)return{success:!1,error:"需要提供 videoData、videoCacheUrl 或 youtubeUrl",type:"error"};const t=d.createTask({prompt:e.taskLabel||"视频分析",model:e.model,modelRef:e.modelRef||null,mimeType:e.mimeType||"video/mp4",youtubeUrl:e.youtubeUrl,videoData:e.videoData,videoCacheUrl:e.videoCacheUrl,videoAnalyzerAction:"analyze",videoAnalyzerPrompt:o,videoAnalyzerSource:e.videoAnalyzerSource,videoAnalyzerSourceLabel:e.videoAnalyzerSourceLabel,videoAnalyzerSourceSnapshot:e.videoAnalyzerSourceSnapshot,autoInsertToCanvas:!1},u.CHAT);return{success:!0,data:{taskId:t.id,prompt:e.taskLabel||"视频分析",model:e.model},type:"text",taskId:t.id,task:t}}const c={name:"video_analyze",description:"分析视频内容,返回结构化的镜头拆解、脚本提取、风格分析等数据",supportedModes:["async","queue"],inputSchema:{type:"object",properties:{videoData:{type:"string",description:"base64 编码的视频数据(不含 data: 前缀),≤20MB"},mimeType:{type:"string",description:"视频 MIME 类型,默认 video/mp4",default:"video/mp4"},youtubeUrl:{type:"string",description:"YouTube 视频 URL"},videoCacheUrl:{type:"string",description:"本地缓存的视频 URL(队列模式)"},prompt:{type:"string",description:"自定义分析 prompt(可选,有内置默认值)"},model:{type:"string",description:"模型 ID,默认使用当前文本模型"}},required:[]},execute:async(e,o)=>(o==null?void 0:o.mode)==="queue"?l(e):i(e)};export{c as v};
1
+ import{lC as i,lD as r,g$ as d,h1 as u}from"./tool-windows-C4D0lII2.js";function l(e){const o=e.prompt||r;if(!e.videoData&&!e.youtubeUrl&&!e.videoCacheUrl)return{success:!1,error:"需要提供 videoData、videoCacheUrl 或 youtubeUrl",type:"error"};const t=d.createTask({prompt:e.taskLabel||"视频分析",model:e.model,modelRef:e.modelRef||null,mimeType:e.mimeType||"video/mp4",youtubeUrl:e.youtubeUrl,videoData:e.videoData,videoCacheUrl:e.videoCacheUrl,videoAnalyzerAction:"analyze",videoAnalyzerPrompt:o,videoAnalyzerSource:e.videoAnalyzerSource,videoAnalyzerSourceLabel:e.videoAnalyzerSourceLabel,videoAnalyzerSourceSnapshot:e.videoAnalyzerSourceSnapshot,autoInsertToCanvas:!1},u.CHAT);return{success:!0,data:{taskId:t.id,prompt:e.taskLabel||"视频分析",model:e.model},type:"text",taskId:t.id,task:t}}const c={name:"video_analyze",description:"分析视频内容,返回结构化的镜头拆解、脚本提取、风格分析等数据",supportedModes:["async","queue"],inputSchema:{type:"object",properties:{videoData:{type:"string",description:"base64 编码的视频数据(不含 data: 前缀),≤20MB"},mimeType:{type:"string",description:"视频 MIME 类型,默认 video/mp4",default:"video/mp4"},youtubeUrl:{type:"string",description:"YouTube 视频 URL"},videoCacheUrl:{type:"string",description:"本地缓存的视频 URL(队列模式)"},prompt:{type:"string",description:"自定义分析 prompt(可选,有内置默认值)"},model:{type:"string",description:"模型 ID,默认使用当前文本模型"}},required:[]},execute:async(e,o)=>(o==null?void 0:o.mode)==="queue"?l(e):i(e)};export{c as v};
@@ -1,4 +1,4 @@
1
- import{he as u,l7 as s,lx as h,kZ as v,hd as z,ly as k,h1 as w,k_ as x,lz as I,lA as _,lB as b}from"./tool-windows-hjm6YiPY.js";function y(){const e=z.get();return(e==null?void 0:e.videoModelName)||u()}function T(){const e=new Set;return Object.values(s).forEach(t=>{t.durationOptions.forEach(o=>e.add(o.value))}),Array.from(e).sort((t,o)=>parseInt(t)-parseInt(o))}function V(){const e=new Set;return Object.values(s).forEach(t=>{t.sizeOptions.forEach(o=>e.add(o.value))}),Array.from(e)}async function A(e){const{prompt:t,model:o="veo3",modelRef:n,seconds:i="8",size:a="1280x720",referenceImages:d,params:c}=e,l=x(t);if(l)return l;try{const r=o,m=I("video",r,n||null);if(!m||m.kind!=="video")return{success:!1,error:`未找到可用的视频适配器: ${r}`,type:"error"};const p=i?Number(i):void 0,g=await m.generateVideo(_("video",n||r),{prompt:t,size:a,model:r,modelRef:n||null,duration:Number.isFinite(p)?p:void 0,referenceImages:d,params:c}),f=g.url;return f?{success:!0,data:{url:f,format:g.format||"mp4",prompt:t,model:o,seconds:i,size:a},type:"video"}:{success:!1,error:"API 未返回有效的视频 URL",type:"error"}}catch(r){return console.error("[VideoGenerationTool] Generation failed:",r),b(r,"视频生成失败")}}function O(e){const t=e.model||"veo3",o=s[t]||s.veo3,n=k(e.referenceImages);return{taskType:w.VIDEO,resultType:"video",getDefaultModel:y,logPrefix:"VideoGenerationTool",buildTaskPayload:()=>({prompt:e.prompt,size:e.size||"16x9",duration:parseInt(e.seconds||o.defaultDuration,10),model:t,modelRef:e.modelRef||null,uploadedImages:n&&n.length>0?n:void 0,referenceImages:e.referenceImages&&e.referenceImages.length>0?e.referenceImages:void 0,params:e.params}),buildResultData:()=>({size:e.size||"16x9",duration:parseInt(e.seconds||o.defaultDuration,10)})}}const S={name:"generate_video",description:`生成视频工具。根据用户的文字描述生成视频。
1
+ import{he as u,l7 as s,lx as h,kZ as v,hd as z,ly as k,h1 as w,k_ as x,lz as I,lA as _,lB as b}from"./tool-windows-C4D0lII2.js";function y(){const e=z.get();return(e==null?void 0:e.videoModelName)||u()}function T(){const e=new Set;return Object.values(s).forEach(t=>{t.durationOptions.forEach(o=>e.add(o.value))}),Array.from(e).sort((t,o)=>parseInt(t)-parseInt(o))}function V(){const e=new Set;return Object.values(s).forEach(t=>{t.sizeOptions.forEach(o=>e.add(o.value))}),Array.from(e)}async function A(e){const{prompt:t,model:o="veo3",modelRef:n,seconds:i="8",size:a="1280x720",referenceImages:d,params:c}=e,l=x(t);if(l)return l;try{const r=o,m=I("video",r,n||null);if(!m||m.kind!=="video")return{success:!1,error:`未找到可用的视频适配器: ${r}`,type:"error"};const p=i?Number(i):void 0,g=await m.generateVideo(_("video",n||r),{prompt:t,size:a,model:r,modelRef:n||null,duration:Number.isFinite(p)?p:void 0,referenceImages:d,params:c}),f=g.url;return f?{success:!0,data:{url:f,format:g.format||"mp4",prompt:t,model:o,seconds:i,size:a},type:"video"}:{success:!1,error:"API 未返回有效的视频 URL",type:"error"}}catch(r){return console.error("[VideoGenerationTool] Generation failed:",r),b(r,"视频生成失败")}}function O(e){const t=e.model||"veo3",o=s[t]||s.veo3,n=k(e.referenceImages);return{taskType:w.VIDEO,resultType:"video",getDefaultModel:y,logPrefix:"VideoGenerationTool",buildTaskPayload:()=>({prompt:e.prompt,size:e.size||"16x9",duration:parseInt(e.seconds||o.defaultDuration,10),model:t,modelRef:e.modelRef||null,uploadedImages:n&&n.length>0?n:void 0,referenceImages:e.referenceImages&&e.referenceImages.length>0?e.referenceImages:void 0,params:e.params}),buildResultData:()=>({size:e.size||"16x9",duration:parseInt(e.seconds||o.defaultDuration,10)})}}const S={name:"generate_video",description:`生成视频工具。根据用户的文字描述生成视频。
2
2
 
3
3
  使用场景:
4
4
  - 用户想要创建、生成视频
@@ -1 +1 @@
1
- import{at as f,aP as u}from"./tool-windows-hjm6YiPY.js";async function h(e){if(!e||!e.children)return 0;let n=0;for(const c of e.children){const r=c.url;if(r&&r.startsWith("blob:")&&r.includes("#merged-video-")){const s=r.indexOf("#merged-video-");if(s===-1)continue;const i=r.substring(s+1),d=i.indexOf("#",1),o=d>0?i.substring(0,d):i;try{const t=await f.getCachedBlob(o);if(t){const a=`${URL.createObjectURL(t)}#${o}`,l=e.children.indexOf(c);u.setNode(e,{url:a},[l]),n++}else console.warn("[VideoRecovery] Cache not found for taskId:",o)}catch(t){console.error("[VideoRecovery] Failed to recover video:",o,t)}}}return n}function x(e){e&&requestAnimationFrame(async()=>{try{await h(e)}catch(n){console.error("[VideoRecovery] Initialization failed:",n)}})}export{x as initVideoRecoveryService,h as recoverExpiredVideoUrls};
1
+ import{at as f,aP as u}from"./tool-windows-C4D0lII2.js";async function h(e){if(!e||!e.children)return 0;let n=0;for(const c of e.children){const r=c.url;if(r&&r.startsWith("blob:")&&r.includes("#merged-video-")){const s=r.indexOf("#merged-video-");if(s===-1)continue;const i=r.substring(s+1),d=i.indexOf("#",1),o=d>0?i.substring(0,d):i;try{const t=await f.getCachedBlob(o);if(t){const a=`${URL.createObjectURL(t)}#${o}`,l=e.children.indexOf(c);u.setNode(e,{url:a},[l]),n++}else console.warn("[VideoRecovery] Cache not found for taskId:",o)}catch(t){console.error("[VideoRecovery] Failed to recover video:",o,t)}}}return n}function x(e){e&&requestAnimationFrame(async()=>{try{await h(e)}catch(n){console.error("[VideoRecovery] Initialization failed:",n)}})}export{x as initVideoRecoveryService,h as recoverExpiredVideoUrls};
@@ -1,3 +1,3 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./tool-windows-Cos6lOhr.css"])))=>i.map(i=>d[i]);
2
- import{at as z,kJ as A,i1 as D,_ as b}from"./tool-windows-hjm6YiPY.js";async function O(t,e,i){if(t.size===0)throw new Error("Invalid frame blob: size is 0");const l=`/__aitu_cache__/video-frame_${e}_${i}`;return await z.cacheMediaFromBlob(l,t,"image",{metadata:{source:"video-frame",shotId:e,frameType:i}}),l}async function H(t,e,i){const l=URL.createObjectURL(t),c=document.createElement("video");c.muted=!0,c.preload="auto";try{await new Promise((m,h)=>{c.onloadedmetadata=()=>m(),c.onerror=()=>h(new Error("Failed to load video")),c.src=l});const a=document.createElement("canvas"),d=a.getContext("2d"),r=Math.min(1,320/c.videoWidth);a.width=Math.round(c.videoWidth*r),a.height=Math.round(c.videoHeight*r);const n=[];for(let m=0;m<e.length;m++){i==null||i(m,e.length);try{const h=await S(c,a,d,e[m]);n.push(h)}catch{n.push(null)}}return i==null||i(e.length,e.length),n}finally{URL.revokeObjectURL(l),c.src=""}}async function Z(t,e,i,l){const c=l||i,a=document.createElement("video");a.muted=!0,a.preload="auto",a.crossOrigin="anonymous";try{await new Promise((E,v)=>{a.onloadedmetadata=()=>E(),a.onerror=()=>v(new Error("Failed to load video")),a.src=t});const d=document.createElement("canvas"),s=d.getContext("2d"),n=Math.min(1,1280/a.videoWidth);d.width=Math.round(a.videoWidth*n),d.height=Math.round(a.videoHeight*n);const m=c==="first"?Math.min(.1,a.duration):Math.max(0,a.duration-.1),h=await S(a,d,s,m);return await O(h,e,i)}catch(d){return console.debug("[video-frame-cache] extractFrameFromUrl failed:",d),null}finally{a.src=""}}function S(t,e,i,l){return new Promise((c,a)=>{const d=Math.min(Math.max(0,l),t.duration||0);t.currentTime=d;const s=()=>{t.removeEventListener("seeked",s),i.drawImage(t,0,0,e.width,e.height),e.toBlob(r=>{r&&r.size>0?c(r):a(new Error("toBlob returned empty"))},"image/jpeg",.85)};t.addEventListener("seeked",s)})}function G(t){const{model:e,firstFrameUrl:i,lastFrameUrl:l,extraReferenceUrls:c=[],characterReferenceUrls:a=[]}=t,d=D(e),s=[],r=n=>{!n||s.includes(n)||s.push(n)};if(d.imageUpload.mode==="frames"){r(i),r(l);const n=s.length>0?s.slice(0,d.imageUpload.maxCount):void 0,m=a.length>0?a:void 0;return{referenceImages:n,unusedCharacterReferenceUrls:m}}for(const n of a)if(r(n),s.length>=d.imageUpload.maxCount)break;r(i);for(const n of c)if(r(n),s.length>=d.imageUpload.maxCount)break;return{referenceImages:s.length>0?s:void 0}}async function Y(t,e){return A(t,{interval:1e3,timeout:1800*1e3,signal:e})}function j(t){return Math.max(2,String(Math.max(t,0)).length)}function T(t,e){return String(t).padStart(e,"0")}function M(t,e,i){const l=T(t+1,i);return e==="first"?`${l}.首帧`:e==="last"?`${l}.尾帧`:`${l}.视频`}function P(t){return["#!/bin/sh","set -eu","",'cd "$(dirname "$0")"',"",`MANIFEST_FILE=${JSON.stringify(t)}`,"",'if [ ! -f "$MANIFEST_FILE" ]; then',' echo "未找到 $MANIFEST_FILE"'," exit 1","fi","","download_if_missing() {",' file_name="$1"',' source_url="$2"',' if [ -s "$file_name" ]; then',' echo "[skip] $file_name"'," return 0"," fi",' echo "[download] $file_name"',' curl -L --fail --retry 3 --retry-delay 1 --output "$file_name.part" "$source_url"',' mv "$file_name.part" "$file_name"',"}","","emit_entries() {"," if command -v node >/dev/null 2>&1; then",` node -e 'const fs=require("fs"); const manifest=JSON.parse(fs.readFileSync(process.argv[1],"utf8")); for (const entry of manifest.downloadEntries||[]) { if (entry?.fileName && entry?.url) process.stdout.write(String(entry.fileName)+"\\t"+String(entry.url)+"\\n"); }' "$MANIFEST_FILE"`," return 0"," fi",""," if command -v python3 >/dev/null 2>&1; then",` python3 - "$MANIFEST_FILE" <<'PY'`,"import json, sys","with open(sys.argv[1], 'r', encoding='utf-8') as fh:"," manifest = json.load(fh)","for entry in manifest.get('downloadEntries', []):"," file_name = entry.get('fileName')"," url = entry.get('url')"," if file_name and url:",' print(f"{file_name}\\t{url}")',"PY"," return 0"," fi","",' echo "需要 node 或 python3 来解析 $MANIFEST_FILE" >&2'," return 1","}","",'TMP_ENTRIES_FILE="$(mktemp -t workflow-download-entries.XXXXXX)"',`trap 'rm -f "$TMP_ENTRIES_FILE"' EXIT INT TERM`,"",'emit_entries > "$TMP_ENTRIES_FILE"',"","while IFS=' ' read -r file_name source_url; do",' [ -n "${file_name:-}" ] || continue',' [ -n "${source_url:-}" ] || continue',' download_if_missing "$file_name" "$source_url"','done < "$TMP_ENTRIES_FILE"',"",'echo "下载完成"',""].join(`
3
- `)}function X(t){return t.map(e=>({...e,generated_first_frame_url:void 0,generated_last_frame_url:void 0,generated_video_url:void 0,suppressed_generated_urls:void 0}))}function J(t){return t.map(e=>({...e,referenceImageUrl:void 0}))}function q(t,e){return{shots:X(t),characters:J(e)}}function K(t){return t.flatMap((e,i)=>{const l=[];return e.generated_first_frame_url&&l.push({url:e.generated_first_frame_url,type:"image",kind:"first",shotIndex:i}),e.generated_last_frame_url&&l.push({url:e.generated_last_frame_url,type:"image",kind:"last",shotIndex:i}),e.generated_video_url&&l.push({url:e.generated_video_url,type:"video",kind:"video",shotIndex:i}),l})}async function Q(t){const{recordId:e,fileNamePrefix:i,zipBaseName:l,scriptMarkdown:c,recordMeta:a,shots:d,assets:s,audioAsset:r,onProgress:n}=t,m=new Date().toISOString(),h=j(d.length),E=T(0,h),{default:v}=await b(async()=>{const{default:o}=await import("./tool-windows-hjm6YiPY.js").then(u=>u.j);return{default:o}},__vite__mapDeps([0]),import.meta.url),{downloadFromBlob:N,getFileExtension:F,normalizeImageDataUrl:U,processBatchWithConcurrency:L}=await b(async()=>{const{downloadFromBlob:o,getFileExtension:u,normalizeImageDataUrl:p,processBatchWithConcurrency:_}=await import("./tool-windows-hjm6YiPY.js").then(w=>w.oF);return{downloadFromBlob:o,getFileExtension:u,normalizeImageDataUrl:p,processBatchWithConcurrency:_}},__vite__mapDeps([0]),import.meta.url),$=new v,f={exportedAt:m,record:a,files:{script:`${E}.脚本.md`,music:null,manifest:`${E}.manifest.json`,downloadScript:`${E}.补全下载.sh`},shots:d.map((o,u)=>({index:u+1,id:o.id,label:o.label||`镜头 ${u+1}`,startTime:o.startTime,endTime:o.endTime,files:{first:null,last:null,video:null}})),errors:[],downloadEntries:[]};if($.file(f.files.script,c),n==null||n(s.length>0||r?8:40),r!=null&&r.url){const o=r.plannedFileName||`${E}.音乐.mp3`;f.downloadEntries.push({fileName:o,url:r.url});try{const u=await fetch(r.url,{referrerPolicy:"no-referrer"});if(!u.ok)throw new Error(`HTTP ${u.status}`);const p=await u.blob(),_=F(r.url,p.type)||r.fallbackExtension||"mp3",w=o.replace(/\.[^.]+$/,`.${_}`);$.file(w,p),f.files.music=w,w!==o&&(f.downloadEntries[f.downloadEntries.length-1].fileName=w)}catch(u){f.files.music=o,f.errors.push(r.downloadErrorMessage||"音乐下载失败"),console.error("[workflow-export] Failed to export audio asset:",r.url,u)}}else r!=null&&r.missingErrorMessage&&f.errors.push(r.missingErrorMessage);await L(s,async(o,u)=>{const p=o.type==="image"?U(o.url):o.url,_=f.shots[o.shotIndex],w=o.type==="image"?"png":"mp4",I=`${M(o.shotIndex,o.kind,h)}.${w}`;f.downloadEntries.push({fileName:I,url:p});try{const g=await fetch(p,{referrerPolicy:"no-referrer"});if(!g.ok)throw new Error(`HTTP ${g.status}`);const x=await g.blob(),B=F(p,x.type)||w,y=`${M(o.shotIndex,o.kind,h)}.${B}`;$.file(y,x),_.files[o.kind]=y,y!==I&&(f.downloadEntries[f.downloadEntries.length-1].fileName=y)}catch(g){const x=(_==null?void 0:_.label)||`镜头 ${o.shotIndex+1}`;f.errors.push(`${x} ${o.kind} 下载失败`),_.files[o.kind]=I,console.error("[workflow-export] Failed to export asset:",p,g)}finally{const g=u+1,x=s.length>0?Math.round(g/s.length*62):62;n==null||n(8+x)}},3),$.file(f.files.downloadScript,P(f.files.manifest),{unixPermissions:493}),$.file(f.files.manifest,JSON.stringify(f,null,2));const W=await $.generateAsync({type:"blob"},o=>n==null?void 0:n(70+Math.round(o.percent*.3))),R=e.replace(/[^a-zA-Z0-9_-]/g,""),C=m.slice(0,19).replace(/[:T]/g,"-"),k=`${l}_${R||i}_${C}.zip`;return N(W,k),n==null||n(100),{assetCount:s.length,zipFileName:k}}export{K as a,Z as b,O as c,G as d,H as e,Q as f,q as r,Y as w};
2
+ import{at as z,kJ as A,i1 as D,_ as b}from"./tool-windows-C4D0lII2.js";async function O(t,e,i){if(t.size===0)throw new Error("Invalid frame blob: size is 0");const l=`/__aitu_cache__/video-frame_${e}_${i}`;return await z.cacheMediaFromBlob(l,t,"image",{metadata:{source:"video-frame",shotId:e,frameType:i}}),l}async function H(t,e,i){const l=URL.createObjectURL(t),c=document.createElement("video");c.muted=!0,c.preload="auto";try{await new Promise((m,h)=>{c.onloadedmetadata=()=>m(),c.onerror=()=>h(new Error("Failed to load video")),c.src=l});const a=document.createElement("canvas"),d=a.getContext("2d"),r=Math.min(1,320/c.videoWidth);a.width=Math.round(c.videoWidth*r),a.height=Math.round(c.videoHeight*r);const n=[];for(let m=0;m<e.length;m++){i==null||i(m,e.length);try{const h=await S(c,a,d,e[m]);n.push(h)}catch{n.push(null)}}return i==null||i(e.length,e.length),n}finally{URL.revokeObjectURL(l),c.src=""}}async function Z(t,e,i,l){const c=l||i,a=document.createElement("video");a.muted=!0,a.preload="auto",a.crossOrigin="anonymous";try{await new Promise((E,v)=>{a.onloadedmetadata=()=>E(),a.onerror=()=>v(new Error("Failed to load video")),a.src=t});const d=document.createElement("canvas"),s=d.getContext("2d"),n=Math.min(1,1280/a.videoWidth);d.width=Math.round(a.videoWidth*n),d.height=Math.round(a.videoHeight*n);const m=c==="first"?Math.min(.1,a.duration):Math.max(0,a.duration-.1),h=await S(a,d,s,m);return await O(h,e,i)}catch(d){return console.debug("[video-frame-cache] extractFrameFromUrl failed:",d),null}finally{a.src=""}}function S(t,e,i,l){return new Promise((c,a)=>{const d=Math.min(Math.max(0,l),t.duration||0);t.currentTime=d;const s=()=>{t.removeEventListener("seeked",s),i.drawImage(t,0,0,e.width,e.height),e.toBlob(r=>{r&&r.size>0?c(r):a(new Error("toBlob returned empty"))},"image/jpeg",.85)};t.addEventListener("seeked",s)})}function G(t){const{model:e,firstFrameUrl:i,lastFrameUrl:l,extraReferenceUrls:c=[],characterReferenceUrls:a=[]}=t,d=D(e),s=[],r=n=>{!n||s.includes(n)||s.push(n)};if(d.imageUpload.mode==="frames"){r(i),r(l);const n=s.length>0?s.slice(0,d.imageUpload.maxCount):void 0,m=a.length>0?a:void 0;return{referenceImages:n,unusedCharacterReferenceUrls:m}}for(const n of a)if(r(n),s.length>=d.imageUpload.maxCount)break;r(i);for(const n of c)if(r(n),s.length>=d.imageUpload.maxCount)break;return{referenceImages:s.length>0?s:void 0}}async function Y(t,e){return A(t,{interval:1e3,timeout:1800*1e3,signal:e})}function j(t){return Math.max(2,String(Math.max(t,0)).length)}function T(t,e){return String(t).padStart(e,"0")}function M(t,e,i){const l=T(t+1,i);return e==="first"?`${l}.首帧`:e==="last"?`${l}.尾帧`:`${l}.视频`}function P(t){return["#!/bin/sh","set -eu","",'cd "$(dirname "$0")"',"",`MANIFEST_FILE=${JSON.stringify(t)}`,"",'if [ ! -f "$MANIFEST_FILE" ]; then',' echo "未找到 $MANIFEST_FILE"'," exit 1","fi","","download_if_missing() {",' file_name="$1"',' source_url="$2"',' if [ -s "$file_name" ]; then',' echo "[skip] $file_name"'," return 0"," fi",' echo "[download] $file_name"',' curl -L --fail --retry 3 --retry-delay 1 --output "$file_name.part" "$source_url"',' mv "$file_name.part" "$file_name"',"}","","emit_entries() {"," if command -v node >/dev/null 2>&1; then",` node -e 'const fs=require("fs"); const manifest=JSON.parse(fs.readFileSync(process.argv[1],"utf8")); for (const entry of manifest.downloadEntries||[]) { if (entry?.fileName && entry?.url) process.stdout.write(String(entry.fileName)+"\\t"+String(entry.url)+"\\n"); }' "$MANIFEST_FILE"`," return 0"," fi",""," if command -v python3 >/dev/null 2>&1; then",` python3 - "$MANIFEST_FILE" <<'PY'`,"import json, sys","with open(sys.argv[1], 'r', encoding='utf-8') as fh:"," manifest = json.load(fh)","for entry in manifest.get('downloadEntries', []):"," file_name = entry.get('fileName')"," url = entry.get('url')"," if file_name and url:",' print(f"{file_name}\\t{url}")',"PY"," return 0"," fi","",' echo "需要 node 或 python3 来解析 $MANIFEST_FILE" >&2'," return 1","}","",'TMP_ENTRIES_FILE="$(mktemp -t workflow-download-entries.XXXXXX)"',`trap 'rm -f "$TMP_ENTRIES_FILE"' EXIT INT TERM`,"",'emit_entries > "$TMP_ENTRIES_FILE"',"","while IFS=' ' read -r file_name source_url; do",' [ -n "${file_name:-}" ] || continue',' [ -n "${source_url:-}" ] || continue',' download_if_missing "$file_name" "$source_url"','done < "$TMP_ENTRIES_FILE"',"",'echo "下载完成"',""].join(`
3
+ `)}function X(t){return t.map(e=>({...e,generated_first_frame_url:void 0,generated_last_frame_url:void 0,generated_video_url:void 0,suppressed_generated_urls:void 0}))}function J(t){return t.map(e=>({...e,referenceImageUrl:void 0}))}function q(t,e){return{shots:X(t),characters:J(e)}}function K(t){return t.flatMap((e,i)=>{const l=[];return e.generated_first_frame_url&&l.push({url:e.generated_first_frame_url,type:"image",kind:"first",shotIndex:i}),e.generated_last_frame_url&&l.push({url:e.generated_last_frame_url,type:"image",kind:"last",shotIndex:i}),e.generated_video_url&&l.push({url:e.generated_video_url,type:"video",kind:"video",shotIndex:i}),l})}async function Q(t){const{recordId:e,fileNamePrefix:i,zipBaseName:l,scriptMarkdown:c,recordMeta:a,shots:d,assets:s,audioAsset:r,onProgress:n}=t,m=new Date().toISOString(),h=j(d.length),E=T(0,h),{default:v}=await b(async()=>{const{default:o}=await import("./tool-windows-C4D0lII2.js").then(u=>u.j);return{default:o}},__vite__mapDeps([0]),import.meta.url),{downloadFromBlob:N,getFileExtension:F,normalizeImageDataUrl:U,processBatchWithConcurrency:L}=await b(async()=>{const{downloadFromBlob:o,getFileExtension:u,normalizeImageDataUrl:p,processBatchWithConcurrency:_}=await import("./tool-windows-C4D0lII2.js").then(w=>w.oF);return{downloadFromBlob:o,getFileExtension:u,normalizeImageDataUrl:p,processBatchWithConcurrency:_}},__vite__mapDeps([0]),import.meta.url),$=new v,f={exportedAt:m,record:a,files:{script:`${E}.脚本.md`,music:null,manifest:`${E}.manifest.json`,downloadScript:`${E}.补全下载.sh`},shots:d.map((o,u)=>({index:u+1,id:o.id,label:o.label||`镜头 ${u+1}`,startTime:o.startTime,endTime:o.endTime,files:{first:null,last:null,video:null}})),errors:[],downloadEntries:[]};if($.file(f.files.script,c),n==null||n(s.length>0||r?8:40),r!=null&&r.url){const o=r.plannedFileName||`${E}.音乐.mp3`;f.downloadEntries.push({fileName:o,url:r.url});try{const u=await fetch(r.url,{referrerPolicy:"no-referrer"});if(!u.ok)throw new Error(`HTTP ${u.status}`);const p=await u.blob(),_=F(r.url,p.type)||r.fallbackExtension||"mp3",w=o.replace(/\.[^.]+$/,`.${_}`);$.file(w,p),f.files.music=w,w!==o&&(f.downloadEntries[f.downloadEntries.length-1].fileName=w)}catch(u){f.files.music=o,f.errors.push(r.downloadErrorMessage||"音乐下载失败"),console.error("[workflow-export] Failed to export audio asset:",r.url,u)}}else r!=null&&r.missingErrorMessage&&f.errors.push(r.missingErrorMessage);await L(s,async(o,u)=>{const p=o.type==="image"?U(o.url):o.url,_=f.shots[o.shotIndex],w=o.type==="image"?"png":"mp4",I=`${M(o.shotIndex,o.kind,h)}.${w}`;f.downloadEntries.push({fileName:I,url:p});try{const g=await fetch(p,{referrerPolicy:"no-referrer"});if(!g.ok)throw new Error(`HTTP ${g.status}`);const x=await g.blob(),B=F(p,x.type)||w,y=`${M(o.shotIndex,o.kind,h)}.${B}`;$.file(y,x),_.files[o.kind]=y,y!==I&&(f.downloadEntries[f.downloadEntries.length-1].fileName=y)}catch(g){const x=(_==null?void 0:_.label)||`镜头 ${o.shotIndex+1}`;f.errors.push(`${x} ${o.kind} 下载失败`),_.files[o.kind]=I,console.error("[workflow-export] Failed to export asset:",p,g)}finally{const g=u+1,x=s.length>0?Math.round(g/s.length*62):62;n==null||n(8+x)}},3),$.file(f.files.downloadScript,P(f.files.manifest),{unixPermissions:493}),$.file(f.files.manifest,JSON.stringify(f,null,2));const W=await $.generateAsync({type:"blob"},o=>n==null?void 0:n(70+Math.round(o.percent*.3))),R=e.replace(/[^a-zA-Z0-9_-]/g,""),C=m.slice(0,19).replace(/[:T]/g,"-"),k=`${l}_${R||i}_${C}.zip`;return N(W,k),n==null||n(100),{assetCount:s.length,zipFileName:k}}export{K as a,Z as b,O as c,G as d,H as e,Q as f,q as r,Y as w};
@@ -1,4 +1,4 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./tool-windows-Cos6lOhr.css"])))=>i.map(i=>d[i]);
2
- import{hC as T,_ as h,aH as I,aw as R,eI as M,dj as P,ge as _,bE as C,W as D,P as F,G as X,l as J,kB as $,kC as K,kD as B,h1 as b,kE as G,kF as U,hH as L,kG as N,kH as q,g$ as S,kI as Z,h0 as x,iD as E,kJ as j,kK as H,kL as p,kM as z}from"./tool-windows-hjm6YiPY.js";let v=null;function ce(f){v=f}class Q{async execute(e){const{operation:t,args:r}=e;switch(t){case"canvas_insert":return this.handleCanvasInsert(r);case"insert_to_canvas":return this.handleInsertToCanvas(r);case"insert_mermaid":return this.handleMermaid(r);case"insert_mindmap":return this.handleMindmap(r);case"insert_svg":return this.handleSvg(r);case"generate_grid_image":return this.handleGridImage(r);case"generate_inspiration_board":return this.handleInspirationBoard(r);case"split_image":return this.handleSplitImage(r);case"generate_long_video":return this.handleLongVideo(r);case"ai_analyze":return this.handleAIAnalyze(r);case"generate_image":return this.handleGenerateImage(r);case"generate_video":return this.handleGenerateVideo(r);case"generate_audio":return this.handleGenerateAudio(r);default:return{success:!1,error:`Unknown operation: ${t}`,type:"error"}}}async handleGenerateAudio(e){return{success:!1,error:"SW 暂不支持直接处理音频生成,请回退到主线程执行",type:"audio"}}findWorkZoneForMCP(e,t){var a;const r=T.getAllWorkZones(e);if(r.length===0)return null;for(const n of r)if((a=n.workflow.steps)==null?void 0:a.some(i=>i.mcp===t))return n;return r.sort((n,o)=>(o.createdAt||0)-(n.createdAt||0))[0]||null}async handleInsertToCanvas(e){const t=v;if(!t)return{success:!1,error:"画布未初始化",type:"error"};const{items:r,startPoint:s,verticalGap:a=50}=e;if(!r||r.length===0)return{success:!1,error:"没有要插入的内容",type:"error"};try{const{parseMarkdownToCards:n}=await h(async()=>{const{parseMarkdownToCards:d}=await import("./tool-windows-hjm6YiPY.js").then(m=>m.oM);return{parseMarkdownToCards:d}},__vite__mapDeps([0]),import.meta.url),{insertCardsToCanvas:o}=await h(async()=>{const{insertCardsToCanvas:d}=await import("./tool-windows-hjm6YiPY.js").then(m=>m.oN);return{insertCardsToCanvas:d}},__vite__mapDeps([0]),import.meta.url);let i=s||this.getInsertionPoint(t),c=0;for(const d of r){const{type:m,content:u,metadata:y}=d;switch(m){case"text":{const w=n(u);if(w&&w.length>0){const W=Math.round(window.innerWidth*.5);o(t,w,i,W);const A=Math.min(w.length,3),Y=Math.ceil(w.length/3);i=[i[0],i[1]+Y*140+a]}else I.insertText(t,i,u),i=[i[0],i[1]+100+a];c++;break}case"image":await P(t,u,i,!1,{width:400,height:400},!1,!0),i=[i[0],i[1]+400+a],c++;break;case"video":await M(t,u,i),i=[i[0],i[1]+300+a],c++;break;case"audio":await R(t,u,y,i,!1,!0),i=[i[0],i[1]+160+a],c++;break;case"svg":{const W={url:this.svgToDataUrl(u),width:400,height:400};I.insertImage(t,W,i),i=[i[0],i[1]+400+a],c++;break}}}const l=s||this.getInsertionPoint(t);return requestAnimationFrame(()=>{_(t,l)}),window.dispatchEvent(new CustomEvent("ai-generation-complete",{detail:{type:"text",success:!0}})),{success:!0,data:{insertedCount:c},type:"canvas"}}catch(n){return{success:!1,error:n.message||"插入失败",type:"error"}}}async handleCanvasInsert(e){const t=v;if(!t)return{success:!1,error:"画布未初始化",type:"error"};const{items:r,startPoint:s,verticalGap:a=50,horizontalGap:n=20}=e;if(!r||r.length===0)return{success:!1,error:"没有要插入的内容",type:"error"};try{let o=s||this.getInsertionPoint(t),i=0;for(const c of r){const{type:l,content:d,metadata:m}=c;switch(l){case"image":await P(t,d,o,!1,{width:400,height:400},!1,!0),o=[o[0],o[1]+400+a],i++;break;case"video":await M(t,d,o),o=[o[0],o[1]+300+a],i++;break;case"audio":await R(t,d,m,o,!1,!0),o=[o[0],o[1]+160+a],i++;break;case"text":I.insertText(t,o,d),o=[o[0],o[1]+100+a],i++;break;case"svg":const y={url:this.svgToDataUrl(d),width:400,height:400};I.insertImage(t,y,o),o=[o[0],o[1]+400+a],i++;break}}return{success:!0,data:{insertedCount:i},type:"canvas"}}catch(o){return{success:!1,error:o.message||"插入失败",type:"error"}}}async handleMermaid(e){const t=v;if(!t)return{success:!1,error:"画布未初始化",type:"error"};const{mermaid:r}=e;if(!r)return{success:!1,error:"缺少 mermaid 参数",type:"error"};try{const{parseMermaidToDrawnix:s}=await h(async()=>{const{parseMermaidToDrawnix:d}=await import("./index-CMQMxwMb.js").then(m=>m.aq);return{parseMermaidToDrawnix:d}},__vite__mapDeps([0]),import.meta.url),a=this.extractCodeBlock(r,"mermaid");let n;try{n=await s(a)}catch{n=await s(a.replace(/"/g,"'"))}const{elements:o}=n;if(!o||o.length===0)return{success:!1,error:"Mermaid 解析未生成元素",type:"error"};const i=this.findWorkZoneForMCP(t,"insert_mermaid"),c=this.getViewportCenter(t),l=this.insertElementsToCanvasAtPoint(t,o,c);return l.success&&(requestAnimationFrame(()=>{this.centerInsertedElementsInViewport(t,o.length)}),i&&setTimeout(()=>{T.removeWorkZone(t,i.id),window.dispatchEvent(new CustomEvent("ai-generation-complete",{detail:{type:"mermaid",success:!0}}))},100)),{success:l.success,data:{elementsCount:l.elementsCount},type:"canvas",error:l.error}}catch(s){return console.error("[SWCapabilities] Mermaid conversion failed:",s),{success:!1,error:`Mermaid 转换失败: ${s.message}`,type:"error"}}}async handleMindmap(e){const t=v;if(!t)return console.error("[SWCapabilities] ❌ handleMindmap: 画布未初始化"),{success:!1,error:"画布未初始化",type:"error"};const{markdown:r}=e;if(!r)return console.error("[SWCapabilities] ❌ handleMindmap: 缺少 markdown 参数"),{success:!1,error:"缺少 markdown 参数",type:"error"};try{const{parseMarkdownToDrawnix:s}=await h(async()=>{const{parseMarkdownToDrawnix:l}=await import("./index-BmNN2uGW.js");return{parseMarkdownToDrawnix:l}},__vite__mapDeps([0]),import.meta.url),a=this.extractCodeBlock(r,"markdown");let n;try{n=await s(a)}catch{n=await s(a.replace(/"/g,"'"))}if(!n)return{success:!1,error:"Markdown 解析未生成元素",type:"error"};n.points=[[0,0]];const o=this.findWorkZoneForMCP(t,"insert_mindmap"),i=this.getViewportCenter(t),c=this.insertElementsToCanvasAtPoint(t,[n],i);return c.success?(requestAnimationFrame(()=>{this.centerInsertedElementsInViewport(t,1)}),o&&setTimeout(()=>{T.removeWorkZone(t,o.id),window.dispatchEvent(new CustomEvent("ai-generation-complete",{detail:{type:"mindmap",success:!0}}))},100)):console.error("[SWCapabilities] ❌ Mindmap insert failed:",c.error),{success:c.success,data:{type:"mindmap",elementsCount:c.elementsCount},type:"canvas",error:c.error}}catch(s){return console.error("[SWCapabilities] ❌ Mindmap conversion failed:",s),{success:!1,error:`思维导图转换失败: ${s.message}`,type:"error"}}}async handleSvg(e){const t=v;if(!t)return{success:!1,error:"画布未初始化",type:"error"};const{svg:r,width:s=400,startPoint:a}=e;if(!r)return{success:!1,error:"缺少 svg 参数",type:"error"};try{const n=this.extractSvgCode(r),o=this.normalizeSvg(n),i=this.parseSvgDimensions(o),c=Math.min(Math.max(s,100),800),l=i.height/i.width,d=c*l,m=this.svgToDataUrl(o);let u=a||this.getInsertionPoint(t);u=[u[0]-c/2,u[1]];const y={url:m,width:c,height:d};I.insertImage(t,y,u);const w=[u[0]+c/2,u[1]+d/2];return requestAnimationFrame(()=>{_(t,w)}),{success:!0,data:{width:c,height:d},type:"canvas"}}catch(n){return{success:!1,error:`SVG 插入失败: ${n.message}`,type:"error"}}}async handleGridImage(e){try{const{createGridImageTask:t}=await h(async()=>{const{createGridImageTask:s}=await import("./tool-windows-hjm6YiPY.js").then(a=>a.oV);return{createGridImageTask:s}},__vite__mapDeps([0]),import.meta.url),r=await t(e);return{success:r.success,data:r.data,type:r.type,taskId:r.taskId,error:r.error}}catch(t){return{success:!1,error:`宫格图生成失败: ${t.message}`,type:"error"}}}async handleInspirationBoard(e){try{const{createInspirationBoardTask:t}=await h(async()=>{const{createInspirationBoardTask:s}=await import("./tool-windows-hjm6YiPY.js").then(a=>a.oW);return{createInspirationBoardTask:s}},__vite__mapDeps([0]),import.meta.url),r=await t(e);return{success:r.success,data:r.data,type:r.type,taskId:r.taskId,error:r.error}}catch(t){return{success:!1,error:`灵感图生成失败: ${t.message}`,type:"error"}}}async handleSplitImage(e){const t=v;if(!t)return{success:!1,error:"画布未初始化",type:"error"};const{imageUrl:r}=e;if(!r)return{success:!1,error:"缺少 imageUrl 参数",type:"error"};try{const{splitAndInsertImages:s}=await h(async()=>{const{splitAndInsertImages:n}=await import("./tool-windows-hjm6YiPY.js").then(o=>o.oQ);return{splitAndInsertImages:n}},__vite__mapDeps([0]),import.meta.url),a=await s(t,r,{scrollToResult:!0});return{success:a.success,data:{count:a.count},type:"canvas",error:a.error}}catch(s){return{success:!1,error:`图片拆分失败: ${s.message}`,type:"error"}}}async handleLongVideo(e){try{const{createLongVideoTask:t}=await h(async()=>{const{createLongVideoTask:s}=await import("./tool-windows-hjm6YiPY.js").then(a=>a.oY);return{createLongVideoTask:s}},__vite__mapDeps([0]),import.meta.url),r=await t(e);return{success:r.success,data:r.data,type:r.type,taskId:r.taskId,error:r.error}}catch(t){return{success:!1,error:`长视频生成失败: ${t.message}`,type:"error"}}}async handleAIAnalyze(e){var t;try{const{analyzeWithAI:r}=await h(async()=>{const{analyzeWithAI:a}=await import("./tool-windows-hjm6YiPY.js").then(n=>n.oX);return{analyzeWithAI:a}},__vite__mapDeps([0]),import.meta.url),s=await r(e.context,{onChunk:a=>{},onAddSteps:a=>{}},e.modelRef||null);return{success:s.success,data:{response:s.response},type:"text",addSteps:(t=s.generatedSteps)==null?void 0:t.map(a=>({id:a.id,mcp:a.mcp,args:a.args,description:a.description,status:a.status})),error:s.error}}catch(r){return{success:!1,error:`AI 分析失败: ${r.message}`,type:"error"}}}async handleGenerateImage(e){var t;try{const{createImageTask:r}=await h(async()=>{const{createImageTask:a}=await import("./tool-windows-hjm6YiPY.js").then(n=>n.oH);return{createImageTask:a}},__vite__mapDeps([0]),import.meta.url),s=await r(e);return s.success?{success:!0,data:s.data,type:"image",taskId:s.taskId,taskIds:(t=s.data)==null?void 0:t.taskIds}:(console.error("[SWCapabilities] Image task creation failed:",s.error),{success:!1,error:s.error||"图片生成任务创建失败",type:"error"})}catch(r){return console.error("[SWCapabilities] Image generation error:",r),{success:!1,error:`图片生成失败: ${r.message}`,type:"error"}}}async handleGenerateVideo(e){var t;try{const{createVideoTask:r}=await h(async()=>{const{createVideoTask:a}=await import("./video-generation-DEL-kJgF.js");return{createVideoTask:a}},__vite__mapDeps([0]),import.meta.url),s=await r(e);return s.success?{success:!0,data:s.data,type:"video",taskId:s.taskId,taskIds:(t=s.data)==null?void 0:t.taskIds}:(console.error("[SWCapabilities] Video task creation failed:",s.error),{success:!1,error:s.error||"视频生成任务创建失败",type:"error"})}catch(r){return console.error("[SWCapabilities] Video generation error:",r),{success:!1,error:`视频生成失败: ${r.message}`,type:"error"}}}getInsertionPoint(e){const t=e.appState,r=(t==null?void 0:t.lastSelectedElementIds)||[];if(r.length>0){const s=r.map(a=>e.children.find(n=>n.id===a)).filter(Boolean);if(s.length>0)try{const a=C(e,s,!1);return[a.x+a.width/2,a.y+a.height+50]}catch{}}if(e.children&&e.children.length>0){let s=0,a=100;for(const n of e.children)try{const o=C(e,[n],!1),i=o.y+o.height;i>s&&(s=i,a=o.x+o.width/2)}catch{}return[a,s+50]}return[100,100]}insertElementsToCanvas(e,t){try{const r=this.getInsertionPoint(e);return e.insertFragment({elements:JSON.parse(JSON.stringify(t))},r,D.paste),requestAnimationFrame(()=>{_(e,r)}),{success:!0,elementsCount:t.length}}catch(r){return{success:!1,error:r.message}}}insertElementsToCanvasAtPoint(e,t,r){try{return e.insertFragment({elements:JSON.parse(JSON.stringify(t))},r,D.paste),requestAnimationFrame(()=>{_(e,r)}),{success:!0,elementsCount:t.length}}catch(s){return console.error("[SWCapabilities] insertElementsToCanvasAtPoint failed:",s),{success:!1,error:s.message}}}getViewportCenter(e){try{const r=F.getBoardContainer(e).getBoundingClientRect(),s=e.viewport.zoom,a=X(e);if(!a)return[0,0];const n=a[0]+r.width/(2*s),o=a[1]+r.height/(2*s);return[n,o]}catch(t){return console.warn("[SWCapabilities] Error getting viewport center:",t),[0,0]}}centerInsertedElementsInViewport(e,t){try{const s=e.children.slice(-t);if(s.length===0){console.warn("[SWCapabilities] No inserted elements found to center");return}const a=C(e,s,!1),o=F.getBoardContainer(e).getBoundingClientRect(),i=80,c=o.width-i*2,l=o.height-i*2,d=c/a.width,m=l/a.height;let u=Math.min(d,m);u=Math.min(Math.max(u,.2),1.5);const y=a.x+a.width/2,w=a.y+a.height/2,W=y-o.width/(2*u),A=w-o.height/(2*u);J.updateViewport(e,[W,A],u)}catch(r){console.warn("[SWCapabilities] Error centering inserted elements:",r)}}extractCodeBlock(e,t){const r=new RegExp(`\`\`\`${t}\\s*\\n([\\s\\S]*?)\\n\\s*\`\`\``,"i"),s=e.match(r);if(s)return s[1].trim();const a=new RegExp(`\`\`\`${t}\\s*([\\s\\S]*?)\\s*\`\`\``,"i"),n=e.match(a);if(n)return n[1].trim();const o=new RegExp(`^${t}\\s*\\n`,"i");return o.test(e.trim())?e.trim().replace(o,"").trim():e.trim()}extractSvgCode(e){let t=this.extractCodeBlock(e,"svg");if(t===e&&(t=this.extractCodeBlock(e,"xml")),t===e&&!t.trim().startsWith("<svg")){const r=t.match(/<svg[\s\S]*?<\/svg>/i);r&&(t=r[0])}return t.trim()}normalizeSvg(e){let t=e.trim();return t.includes("xmlns=")||(t=t.replace("<svg",'<svg xmlns="http://www.w3.org/2000/svg"')),t}parseSvgDimensions(e){const t=e.match(/viewBox=["']([^"']+)["']/i);if(t){const[,,a,n]=t[1].split(/\s+/).map(Number);if(a&&n)return{width:a,height:n}}const r=e.match(/width=["'](\d+)(?:px)?["']/i),s=e.match(/height=["'](\d+)(?:px)?["']/i);return r&&s?{width:parseInt(r[1]),height:parseInt(s[1])}:{width:400,height:400}}svgToDataUrl(e){return`data:image/svg+xml,${encodeURIComponent(e).replace(/'/g,"%27").replace(/"/g,"%22")}`}}const O=new Q,k=K.WORKFLOWS;class ee{async isAvailable(){try{return(await $()).objectStoreNames.contains(k)}catch{return!1}}async getDB(){return $()}async saveWorkflow(e){try{const t=await this.getDB();if(!t.objectStoreNames.contains(k))return;await new Promise((r,s)=>{const o=t.transaction(k,"readwrite").objectStore(k).put(e);o.onerror=()=>{r()},o.onsuccess=()=>r()})}catch{}}async getWorkflow(e){if(!e)return null;const t=await this.getDB();return new Promise((r,s)=>{const o=t.transaction(k,"readonly").objectStore(k).get(e);o.onerror=()=>s(o.error),o.onsuccess=()=>r(o.result||null)})}async deleteWorkflow(e){if(!e)return;const t=await this.getDB();return new Promise((r,s)=>{const o=t.transaction(k,"readwrite").objectStore(k).delete(e);o.onerror=()=>s(o.error),o.onsuccess=()=>r()})}close(){}}const g=new ee;function te(f){const e=f.steps.find(t=>t.status==="failed");return(e==null?void 0:e.error)||"Unknown error"}function re(f){return f.steps.filter(e=>e.status!=="pending"?!1:e.dependsOn&&e.dependsOn.length>0?e.dependsOn.every(t=>{const r=f.steps.find(s=>s.id===t);return(r==null?void 0:r.status)==="completed"}):!0)}async function se(f,e={}){var l,d;const t={prompt:f,...e},r=B(t,b.IMAGE);if(!r.valid)throw new Error(r.errors.join(", "));const s=G(t);if(await U.waitForInitialization(),!L("image",e.modelRef||e.model))throw new Error("未配置 API Key,请在设置中配置");const a=N(),n=Date.now();await q.createTask(a,"image",{prompt:s.prompt,model:e.model,modelRef:e.modelRef||null,size:e.size}),S.trackExternalTask({id:a,type:b.IMAGE,status:x.PROCESSING,params:{prompt:s.prompt,model:e.model,modelRef:e.modelRef||null,size:e.size},createdAt:n,updatedAt:n,startedAt:n,executionPhase:Z.SUBMITTING}),(l=e.onTaskCreated)==null||l.call(e,a);const o={taskId:a,prompt:s.prompt,model:e.model,modelRef:e.modelRef||null,size:e.size,quality:e.quality,referenceImages:e.referenceImages,uploadedImages:e.uploadedImages,count:e.count,params:e.params};await(e.forceMainThread?E.getFallbackExecutor():await E.getExecutor()).generateImage(o,{signal:e.signal});const c=await j(a,{signal:e.signal,onProgress:m=>{S.syncTaskFromStorage(a,m)}});return!c.success||!c.task?{task:c.task||{id:a,type:b.IMAGE,status:x.FAILED,params:{prompt:f},createdAt:Date.now(),updatedAt:Date.now(),error:{code:"GENERATION_ERROR",message:c.error||"图片生成失败"}}}:{task:c.task,url:(d=c.task.result)==null?void 0:d.url}}async function ae(f,e={}){var l,d,m;const t={prompt:f,...e},r=B(t,b.VIDEO);if(!r.valid)throw new Error(r.errors.join(", "));const s=G(t);if(await U.waitForInitialization(),!L("video",e.modelRef||e.model))throw new Error("未配置 API Key,请在设置中配置");const a=N(),n=Date.now();await q.createTask(a,"video",{prompt:s.prompt,model:e.model||"veo3",modelRef:e.modelRef||null,duration:typeof e.duration=="string"?parseInt(e.duration,10):e.duration,size:e.size,params:e.params}),S.trackExternalTask({id:a,type:b.VIDEO,status:x.PROCESSING,params:{prompt:s.prompt,model:e.model||"veo3",modelRef:e.modelRef||null,size:e.size,params:e.params},createdAt:n,updatedAt:n,startedAt:n,executionPhase:Z.SUBMITTING,progress:0}),(l=e.onTaskCreated)==null||l.call(e,a);const o={taskId:a,prompt:s.prompt,model:e.model||"veo3",modelRef:e.modelRef||null,duration:(d=e.duration)==null?void 0:d.toString(),size:e.size||"1280x720",inputReference:e.inputReference,inputReferences:e.inputReferences,referenceImages:e.referenceImages,params:e.params};await(e.forceMainThread?E.getFallbackExecutor():await E.getExecutor()).generateVideo(o,{signal:e.signal});const c=await j(a,{signal:e.signal,onProgress:u=>{S.syncTaskFromStorage(a,u)}});return!c.success||!c.task?{task:c.task||{id:a,type:b.VIDEO,status:x.FAILED,params:{prompt:f},createdAt:Date.now(),updatedAt:Date.now(),error:{code:"GENERATION_ERROR",message:c.error||"视频生成失败"}}}:{task:c.task,url:(m=c.task.result)==null?void 0:m.url}}class V{constructor(e={}){this.workflows=new Map,this.abortControllers=new Map,this.events$=new H,this.options={stepTimeout:e.stepTimeout??600*1e3,continueOnError:e.continueOnError??!1,onEvent:e.onEvent??(()=>{}),executeMainThreadTool:e.executeMainThreadTool,forceFallbackExecutor:e.forceFallbackExecutor??!1},this.events$.subscribe(t=>{this.options.onEvent(t)})}async submitWorkflow(e){console.log("[WorkflowEngine] submitWorkflow 入口, id:",e.id,"steps:",e.steps.length),this.workflows.set(e.id,e);try{await g.saveWorkflow(e),console.log("[WorkflowEngine] submitWorkflow: IDB 保存完成")}catch(r){console.warn("[WorkflowEngine] submitWorkflow: IDB 保存失败,继续执行:",r)}const t=new AbortController;this.abortControllers.set(e.id,t),console.log("[WorkflowEngine] submitWorkflow: 开始异步执行工作流"),this.executeWorkflow(e.id).catch(r=>{console.error(`[WorkflowEngine] Workflow ${e.id} execution error:`,r)})}async cancelWorkflow(e){const t=this.workflows.get(e);if(!t)return;const r=this.abortControllers.get(e);r==null||r.abort(),t.status="cancelled",t.updatedAt=Date.now(),await g.saveWorkflow(t),this.emitEvent({type:"status",workflowId:e,status:"cancelled"})}getWorkflow(e){return this.workflows.get(e)}async resumeWorkflow(e){if(this.workflows.has(e))return;const t=await g.getWorkflow(e);if(!t)return;const r=t.steps.some(o=>o.status==="pending"),s=t.steps.some(o=>o.status==="running"),a=t.steps.some(o=>o.status==="pending_main_thread");if(!r&&!s&&!a)return;t.steps.forEach(o=>{o.status==="running"&&(o.status="pending")}),this.workflows.set(e,t);const n=new AbortController;this.abortControllers.set(e,n),this.executeWorkflow(e).catch(o=>{console.error("[WorkflowEngine] Resume workflow failed:",e,o)})}async executeWorkflow(e){console.log("[WorkflowEngine] executeWorkflow 开始, id:",e);const t=this.workflows.get(e);if(!t){console.warn("[WorkflowEngine] executeWorkflow: 工作流不存在:",e);return}const r=this.abortControllers.get(e);try{t.status="running",t.updatedAt=Date.now();try{await g.saveWorkflow(t)}catch(n){console.warn("[WorkflowEngine] executeWorkflow: IDB 保存失败,继续:",n)}console.log("[WorkflowEngine] executeWorkflow: 状态已更新为 running"),this.emitEvent({type:"status",workflowId:e,status:"running"}),await this.executeSteps(t,r==null?void 0:r.signal);const s=t.steps.every(n=>n.status==="completed"||n.status==="skipped");t.steps.some(n=>n.status==="failed")&&!this.options.continueOnError?(t.status="failed",t.error=te(t)):s&&(t.status="completed",t.completedAt=Date.now()),t.updatedAt=Date.now(),await g.saveWorkflow(t),t.status==="completed"?this.emitEvent({type:"completed",workflowId:e,workflow:t}):t.status==="failed"&&this.emitEvent({type:"failed",workflowId:e,error:t.error||"Unknown error"})}catch(s){t.status="failed",t.error=s.message||"Workflow execution failed",t.updatedAt=Date.now(),await g.saveWorkflow(t),this.emitEvent({type:"failed",workflowId:e,error:t.error||"Workflow execution failed"})}finally{this.abortControllers.delete(e)}}async executeSteps(e,t){for(;;){if(t!=null&&t.aborted)throw new Error("Workflow cancelled");const r=re(e);if(r.length===0)break;await Promise.all(r.map(s=>this.executeStep(e,s,t)))}}async executeStep(e,t,r){console.log("[WorkflowEngine] executeStep 开始:",t.mcp,"stepId:",t.id);const s=Date.now();t.status="running",e.updatedAt=Date.now(),await g.saveWorkflow(e),this.emitEvent({type:"step",workflowId:e.id,stepId:t.id,status:"running"});try{await this.executeToolStep(e,t,r),t.status="completed",t.duration=Date.now()-s,e.updatedAt=Date.now(),await g.saveWorkflow(e),this.emitEvent({type:"step",workflowId:e.id,stepId:t.id,status:"completed",result:t.result,duration:t.duration})}catch(a){if(t.status="failed",t.error=a.message||"Step execution failed",t.duration=Date.now()-s,e.updatedAt=Date.now(),await g.saveWorkflow(e),this.emitEvent({type:"step",workflowId:e.id,stepId:t.id,status:"failed",error:t.error,duration:t.duration}),!this.options.continueOnError)throw a}}async executeToolStep(e,t,r){var s,a,n;switch(console.log("[WorkflowEngine] executeToolStep:",t.mcp,"stepId:",t.id,"forceFallback:",this.options.forceFallbackExecutor),t.mcp){case"generate_image":{const o=await se(t.args.prompt,{model:t.args.model,modelRef:t.args.modelRef||null,size:t.args.size,referenceImages:t.args.referenceImages,count:t.args.count,params:t.args.params,forceMainThread:this.options.forceFallbackExecutor,signal:r,onTaskCreated:i=>{t.result={taskId:i},g.saveWorkflow(e)}});if(o.task.status===x.FAILED)throw new Error(((s=o.task.error)==null?void 0:s.message)||"Image generation failed");t.result={...o.task.result,taskId:o.task.id};break}case"generate_video":{const o=await ae(t.args.prompt,{model:t.args.model,modelRef:t.args.modelRef||null,duration:t.args.seconds??t.args.duration,size:t.args.size,referenceImages:t.args.referenceImages,params:t.args.params,forceMainThread:this.options.forceFallbackExecutor,signal:r,onTaskCreated:i=>{t.result={taskId:i},g.saveWorkflow(e)}});if(o.task.status===x.FAILED)throw new Error(((a=o.task.error)==null?void 0:a.message)||"Video generation failed");t.result={...o.task.result,taskId:o.task.id};break}case"generate_text":{const c=(await E.getFallbackExecutor().generateText({prompt:t.args.prompt,model:t.args.model,modelRef:t.args.modelRef||null,referenceImages:t.args.referenceImages,params:t.args.params},{signal:r})).content;t.result={content:c};const l=`${t.id}-insert-text`;if(!e.steps.find(d=>d.id===l)){const d={id:l,mcp:"insert_to_canvas",args:{items:[{type:"text",content:c}]},description:"将生成文本插入画布",status:"pending"};e.steps.push(d),await g.saveWorkflow(e),this.emitEvent({type:"steps_added",workflowId:e.id,steps:[d]})}break}case"ai_analyze":{const o=E.getFallbackExecutor(),i=t.id,c=await o.aiAnalyze({taskId:i,messages:t.args.messages,prompt:t.args.prompt,referenceImages:t.args.referenceImages,images:t.args.images,textModel:t.args.textModel,model:t.args.model,modelRef:t.args.modelRef||null},{signal:r});if(t.result={content:c.content},c.addSteps&&c.addSteps.length>0){for(const l of c.addSteps)e.steps.find(d=>d.id===l.id)||e.steps.push({id:l.id,mcp:l.mcp,args:l.args,description:l.description,status:l.status});await g.saveWorkflow(e),this.emitEvent({type:"steps_added",workflowId:e.id,steps:e.steps.filter(l=>l.status==="pending")})}else if(c.content&&c.content.trim()){const l=`${t.id}-insert-text`;if(!e.steps.find(d=>d.id===l)){const d=((n=e.metadata)==null?void 0:n.rawInput)||"",m=d.trim()?`# ${d.trim()}
2
+ import{hC as T,_ as h,aH as I,aw as R,eI as M,dj as P,ge as _,bE as C,W as D,P as F,G as X,l as J,kB as $,kC as K,kD as B,h1 as b,kE as G,kF as U,hH as L,kG as N,kH as q,g$ as S,kI as Z,h0 as x,iD as E,kJ as j,kK as H,kL as p,kM as z}from"./tool-windows-C4D0lII2.js";let v=null;function ce(f){v=f}class Q{async execute(e){const{operation:t,args:r}=e;switch(t){case"canvas_insert":return this.handleCanvasInsert(r);case"insert_to_canvas":return this.handleInsertToCanvas(r);case"insert_mermaid":return this.handleMermaid(r);case"insert_mindmap":return this.handleMindmap(r);case"insert_svg":return this.handleSvg(r);case"generate_grid_image":return this.handleGridImage(r);case"generate_inspiration_board":return this.handleInspirationBoard(r);case"split_image":return this.handleSplitImage(r);case"generate_long_video":return this.handleLongVideo(r);case"ai_analyze":return this.handleAIAnalyze(r);case"generate_image":return this.handleGenerateImage(r);case"generate_video":return this.handleGenerateVideo(r);case"generate_audio":return this.handleGenerateAudio(r);default:return{success:!1,error:`Unknown operation: ${t}`,type:"error"}}}async handleGenerateAudio(e){return{success:!1,error:"SW 暂不支持直接处理音频生成,请回退到主线程执行",type:"audio"}}findWorkZoneForMCP(e,t){var a;const r=T.getAllWorkZones(e);if(r.length===0)return null;for(const n of r)if((a=n.workflow.steps)==null?void 0:a.some(i=>i.mcp===t))return n;return r.sort((n,o)=>(o.createdAt||0)-(n.createdAt||0))[0]||null}async handleInsertToCanvas(e){const t=v;if(!t)return{success:!1,error:"画布未初始化",type:"error"};const{items:r,startPoint:s,verticalGap:a=50}=e;if(!r||r.length===0)return{success:!1,error:"没有要插入的内容",type:"error"};try{const{parseMarkdownToCards:n}=await h(async()=>{const{parseMarkdownToCards:d}=await import("./tool-windows-C4D0lII2.js").then(m=>m.oM);return{parseMarkdownToCards:d}},__vite__mapDeps([0]),import.meta.url),{insertCardsToCanvas:o}=await h(async()=>{const{insertCardsToCanvas:d}=await import("./tool-windows-C4D0lII2.js").then(m=>m.oN);return{insertCardsToCanvas:d}},__vite__mapDeps([0]),import.meta.url);let i=s||this.getInsertionPoint(t),c=0;for(const d of r){const{type:m,content:u,metadata:y}=d;switch(m){case"text":{const w=n(u);if(w&&w.length>0){const W=Math.round(window.innerWidth*.5);o(t,w,i,W);const A=Math.min(w.length,3),Y=Math.ceil(w.length/3);i=[i[0],i[1]+Y*140+a]}else I.insertText(t,i,u),i=[i[0],i[1]+100+a];c++;break}case"image":await P(t,u,i,!1,{width:400,height:400},!1,!0),i=[i[0],i[1]+400+a],c++;break;case"video":await M(t,u,i),i=[i[0],i[1]+300+a],c++;break;case"audio":await R(t,u,y,i,!1,!0),i=[i[0],i[1]+160+a],c++;break;case"svg":{const W={url:this.svgToDataUrl(u),width:400,height:400};I.insertImage(t,W,i),i=[i[0],i[1]+400+a],c++;break}}}const l=s||this.getInsertionPoint(t);return requestAnimationFrame(()=>{_(t,l)}),window.dispatchEvent(new CustomEvent("ai-generation-complete",{detail:{type:"text",success:!0}})),{success:!0,data:{insertedCount:c},type:"canvas"}}catch(n){return{success:!1,error:n.message||"插入失败",type:"error"}}}async handleCanvasInsert(e){const t=v;if(!t)return{success:!1,error:"画布未初始化",type:"error"};const{items:r,startPoint:s,verticalGap:a=50,horizontalGap:n=20}=e;if(!r||r.length===0)return{success:!1,error:"没有要插入的内容",type:"error"};try{let o=s||this.getInsertionPoint(t),i=0;for(const c of r){const{type:l,content:d,metadata:m}=c;switch(l){case"image":await P(t,d,o,!1,{width:400,height:400},!1,!0),o=[o[0],o[1]+400+a],i++;break;case"video":await M(t,d,o),o=[o[0],o[1]+300+a],i++;break;case"audio":await R(t,d,m,o,!1,!0),o=[o[0],o[1]+160+a],i++;break;case"text":I.insertText(t,o,d),o=[o[0],o[1]+100+a],i++;break;case"svg":const y={url:this.svgToDataUrl(d),width:400,height:400};I.insertImage(t,y,o),o=[o[0],o[1]+400+a],i++;break}}return{success:!0,data:{insertedCount:i},type:"canvas"}}catch(o){return{success:!1,error:o.message||"插入失败",type:"error"}}}async handleMermaid(e){const t=v;if(!t)return{success:!1,error:"画布未初始化",type:"error"};const{mermaid:r}=e;if(!r)return{success:!1,error:"缺少 mermaid 参数",type:"error"};try{const{parseMermaidToDrawnix:s}=await h(async()=>{const{parseMermaidToDrawnix:d}=await import("./index-gHdnUGOu.js").then(m=>m.aq);return{parseMermaidToDrawnix:d}},__vite__mapDeps([0]),import.meta.url),a=this.extractCodeBlock(r,"mermaid");let n;try{n=await s(a)}catch{n=await s(a.replace(/"/g,"'"))}const{elements:o}=n;if(!o||o.length===0)return{success:!1,error:"Mermaid 解析未生成元素",type:"error"};const i=this.findWorkZoneForMCP(t,"insert_mermaid"),c=this.getViewportCenter(t),l=this.insertElementsToCanvasAtPoint(t,o,c);return l.success&&(requestAnimationFrame(()=>{this.centerInsertedElementsInViewport(t,o.length)}),i&&setTimeout(()=>{T.removeWorkZone(t,i.id),window.dispatchEvent(new CustomEvent("ai-generation-complete",{detail:{type:"mermaid",success:!0}}))},100)),{success:l.success,data:{elementsCount:l.elementsCount},type:"canvas",error:l.error}}catch(s){return console.error("[SWCapabilities] Mermaid conversion failed:",s),{success:!1,error:`Mermaid 转换失败: ${s.message}`,type:"error"}}}async handleMindmap(e){const t=v;if(!t)return console.error("[SWCapabilities] ❌ handleMindmap: 画布未初始化"),{success:!1,error:"画布未初始化",type:"error"};const{markdown:r}=e;if(!r)return console.error("[SWCapabilities] ❌ handleMindmap: 缺少 markdown 参数"),{success:!1,error:"缺少 markdown 参数",type:"error"};try{const{parseMarkdownToDrawnix:s}=await h(async()=>{const{parseMarkdownToDrawnix:l}=await import("./index-B67KSDhv.js");return{parseMarkdownToDrawnix:l}},__vite__mapDeps([0]),import.meta.url),a=this.extractCodeBlock(r,"markdown");let n;try{n=await s(a)}catch{n=await s(a.replace(/"/g,"'"))}if(!n)return{success:!1,error:"Markdown 解析未生成元素",type:"error"};n.points=[[0,0]];const o=this.findWorkZoneForMCP(t,"insert_mindmap"),i=this.getViewportCenter(t),c=this.insertElementsToCanvasAtPoint(t,[n],i);return c.success?(requestAnimationFrame(()=>{this.centerInsertedElementsInViewport(t,1)}),o&&setTimeout(()=>{T.removeWorkZone(t,o.id),window.dispatchEvent(new CustomEvent("ai-generation-complete",{detail:{type:"mindmap",success:!0}}))},100)):console.error("[SWCapabilities] ❌ Mindmap insert failed:",c.error),{success:c.success,data:{type:"mindmap",elementsCount:c.elementsCount},type:"canvas",error:c.error}}catch(s){return console.error("[SWCapabilities] ❌ Mindmap conversion failed:",s),{success:!1,error:`思维导图转换失败: ${s.message}`,type:"error"}}}async handleSvg(e){const t=v;if(!t)return{success:!1,error:"画布未初始化",type:"error"};const{svg:r,width:s=400,startPoint:a}=e;if(!r)return{success:!1,error:"缺少 svg 参数",type:"error"};try{const n=this.extractSvgCode(r),o=this.normalizeSvg(n),i=this.parseSvgDimensions(o),c=Math.min(Math.max(s,100),800),l=i.height/i.width,d=c*l,m=this.svgToDataUrl(o);let u=a||this.getInsertionPoint(t);u=[u[0]-c/2,u[1]];const y={url:m,width:c,height:d};I.insertImage(t,y,u);const w=[u[0]+c/2,u[1]+d/2];return requestAnimationFrame(()=>{_(t,w)}),{success:!0,data:{width:c,height:d},type:"canvas"}}catch(n){return{success:!1,error:`SVG 插入失败: ${n.message}`,type:"error"}}}async handleGridImage(e){try{const{createGridImageTask:t}=await h(async()=>{const{createGridImageTask:s}=await import("./tool-windows-C4D0lII2.js").then(a=>a.oV);return{createGridImageTask:s}},__vite__mapDeps([0]),import.meta.url),r=await t(e);return{success:r.success,data:r.data,type:r.type,taskId:r.taskId,error:r.error}}catch(t){return{success:!1,error:`宫格图生成失败: ${t.message}`,type:"error"}}}async handleInspirationBoard(e){try{const{createInspirationBoardTask:t}=await h(async()=>{const{createInspirationBoardTask:s}=await import("./tool-windows-C4D0lII2.js").then(a=>a.oW);return{createInspirationBoardTask:s}},__vite__mapDeps([0]),import.meta.url),r=await t(e);return{success:r.success,data:r.data,type:r.type,taskId:r.taskId,error:r.error}}catch(t){return{success:!1,error:`灵感图生成失败: ${t.message}`,type:"error"}}}async handleSplitImage(e){const t=v;if(!t)return{success:!1,error:"画布未初始化",type:"error"};const{imageUrl:r}=e;if(!r)return{success:!1,error:"缺少 imageUrl 参数",type:"error"};try{const{splitAndInsertImages:s}=await h(async()=>{const{splitAndInsertImages:n}=await import("./tool-windows-C4D0lII2.js").then(o=>o.oQ);return{splitAndInsertImages:n}},__vite__mapDeps([0]),import.meta.url),a=await s(t,r,{scrollToResult:!0});return{success:a.success,data:{count:a.count},type:"canvas",error:a.error}}catch(s){return{success:!1,error:`图片拆分失败: ${s.message}`,type:"error"}}}async handleLongVideo(e){try{const{createLongVideoTask:t}=await h(async()=>{const{createLongVideoTask:s}=await import("./tool-windows-C4D0lII2.js").then(a=>a.oY);return{createLongVideoTask:s}},__vite__mapDeps([0]),import.meta.url),r=await t(e);return{success:r.success,data:r.data,type:r.type,taskId:r.taskId,error:r.error}}catch(t){return{success:!1,error:`长视频生成失败: ${t.message}`,type:"error"}}}async handleAIAnalyze(e){var t;try{const{analyzeWithAI:r}=await h(async()=>{const{analyzeWithAI:a}=await import("./tool-windows-C4D0lII2.js").then(n=>n.oX);return{analyzeWithAI:a}},__vite__mapDeps([0]),import.meta.url),s=await r(e.context,{onChunk:a=>{},onAddSteps:a=>{}},e.modelRef||null);return{success:s.success,data:{response:s.response},type:"text",addSteps:(t=s.generatedSteps)==null?void 0:t.map(a=>({id:a.id,mcp:a.mcp,args:a.args,description:a.description,status:a.status})),error:s.error}}catch(r){return{success:!1,error:`AI 分析失败: ${r.message}`,type:"error"}}}async handleGenerateImage(e){var t;try{const{createImageTask:r}=await h(async()=>{const{createImageTask:a}=await import("./tool-windows-C4D0lII2.js").then(n=>n.oH);return{createImageTask:a}},__vite__mapDeps([0]),import.meta.url),s=await r(e);return s.success?{success:!0,data:s.data,type:"image",taskId:s.taskId,taskIds:(t=s.data)==null?void 0:t.taskIds}:(console.error("[SWCapabilities] Image task creation failed:",s.error),{success:!1,error:s.error||"图片生成任务创建失败",type:"error"})}catch(r){return console.error("[SWCapabilities] Image generation error:",r),{success:!1,error:`图片生成失败: ${r.message}`,type:"error"}}}async handleGenerateVideo(e){var t;try{const{createVideoTask:r}=await h(async()=>{const{createVideoTask:a}=await import("./video-generation-x2UMMPYg.js");return{createVideoTask:a}},__vite__mapDeps([0]),import.meta.url),s=await r(e);return s.success?{success:!0,data:s.data,type:"video",taskId:s.taskId,taskIds:(t=s.data)==null?void 0:t.taskIds}:(console.error("[SWCapabilities] Video task creation failed:",s.error),{success:!1,error:s.error||"视频生成任务创建失败",type:"error"})}catch(r){return console.error("[SWCapabilities] Video generation error:",r),{success:!1,error:`视频生成失败: ${r.message}`,type:"error"}}}getInsertionPoint(e){const t=e.appState,r=(t==null?void 0:t.lastSelectedElementIds)||[];if(r.length>0){const s=r.map(a=>e.children.find(n=>n.id===a)).filter(Boolean);if(s.length>0)try{const a=C(e,s,!1);return[a.x+a.width/2,a.y+a.height+50]}catch{}}if(e.children&&e.children.length>0){let s=0,a=100;for(const n of e.children)try{const o=C(e,[n],!1),i=o.y+o.height;i>s&&(s=i,a=o.x+o.width/2)}catch{}return[a,s+50]}return[100,100]}insertElementsToCanvas(e,t){try{const r=this.getInsertionPoint(e);return e.insertFragment({elements:JSON.parse(JSON.stringify(t))},r,D.paste),requestAnimationFrame(()=>{_(e,r)}),{success:!0,elementsCount:t.length}}catch(r){return{success:!1,error:r.message}}}insertElementsToCanvasAtPoint(e,t,r){try{return e.insertFragment({elements:JSON.parse(JSON.stringify(t))},r,D.paste),requestAnimationFrame(()=>{_(e,r)}),{success:!0,elementsCount:t.length}}catch(s){return console.error("[SWCapabilities] insertElementsToCanvasAtPoint failed:",s),{success:!1,error:s.message}}}getViewportCenter(e){try{const r=F.getBoardContainer(e).getBoundingClientRect(),s=e.viewport.zoom,a=X(e);if(!a)return[0,0];const n=a[0]+r.width/(2*s),o=a[1]+r.height/(2*s);return[n,o]}catch(t){return console.warn("[SWCapabilities] Error getting viewport center:",t),[0,0]}}centerInsertedElementsInViewport(e,t){try{const s=e.children.slice(-t);if(s.length===0){console.warn("[SWCapabilities] No inserted elements found to center");return}const a=C(e,s,!1),o=F.getBoardContainer(e).getBoundingClientRect(),i=80,c=o.width-i*2,l=o.height-i*2,d=c/a.width,m=l/a.height;let u=Math.min(d,m);u=Math.min(Math.max(u,.2),1.5);const y=a.x+a.width/2,w=a.y+a.height/2,W=y-o.width/(2*u),A=w-o.height/(2*u);J.updateViewport(e,[W,A],u)}catch(r){console.warn("[SWCapabilities] Error centering inserted elements:",r)}}extractCodeBlock(e,t){const r=new RegExp(`\`\`\`${t}\\s*\\n([\\s\\S]*?)\\n\\s*\`\`\``,"i"),s=e.match(r);if(s)return s[1].trim();const a=new RegExp(`\`\`\`${t}\\s*([\\s\\S]*?)\\s*\`\`\``,"i"),n=e.match(a);if(n)return n[1].trim();const o=new RegExp(`^${t}\\s*\\n`,"i");return o.test(e.trim())?e.trim().replace(o,"").trim():e.trim()}extractSvgCode(e){let t=this.extractCodeBlock(e,"svg");if(t===e&&(t=this.extractCodeBlock(e,"xml")),t===e&&!t.trim().startsWith("<svg")){const r=t.match(/<svg[\s\S]*?<\/svg>/i);r&&(t=r[0])}return t.trim()}normalizeSvg(e){let t=e.trim();return t.includes("xmlns=")||(t=t.replace("<svg",'<svg xmlns="http://www.w3.org/2000/svg"')),t}parseSvgDimensions(e){const t=e.match(/viewBox=["']([^"']+)["']/i);if(t){const[,,a,n]=t[1].split(/\s+/).map(Number);if(a&&n)return{width:a,height:n}}const r=e.match(/width=["'](\d+)(?:px)?["']/i),s=e.match(/height=["'](\d+)(?:px)?["']/i);return r&&s?{width:parseInt(r[1]),height:parseInt(s[1])}:{width:400,height:400}}svgToDataUrl(e){return`data:image/svg+xml,${encodeURIComponent(e).replace(/'/g,"%27").replace(/"/g,"%22")}`}}const O=new Q,k=K.WORKFLOWS;class ee{async isAvailable(){try{return(await $()).objectStoreNames.contains(k)}catch{return!1}}async getDB(){return $()}async saveWorkflow(e){try{const t=await this.getDB();if(!t.objectStoreNames.contains(k))return;await new Promise((r,s)=>{const o=t.transaction(k,"readwrite").objectStore(k).put(e);o.onerror=()=>{r()},o.onsuccess=()=>r()})}catch{}}async getWorkflow(e){if(!e)return null;const t=await this.getDB();return new Promise((r,s)=>{const o=t.transaction(k,"readonly").objectStore(k).get(e);o.onerror=()=>s(o.error),o.onsuccess=()=>r(o.result||null)})}async deleteWorkflow(e){if(!e)return;const t=await this.getDB();return new Promise((r,s)=>{const o=t.transaction(k,"readwrite").objectStore(k).delete(e);o.onerror=()=>s(o.error),o.onsuccess=()=>r()})}close(){}}const g=new ee;function te(f){const e=f.steps.find(t=>t.status==="failed");return(e==null?void 0:e.error)||"Unknown error"}function re(f){return f.steps.filter(e=>e.status!=="pending"?!1:e.dependsOn&&e.dependsOn.length>0?e.dependsOn.every(t=>{const r=f.steps.find(s=>s.id===t);return(r==null?void 0:r.status)==="completed"}):!0)}async function se(f,e={}){var l,d;const t={prompt:f,...e},r=B(t,b.IMAGE);if(!r.valid)throw new Error(r.errors.join(", "));const s=G(t);if(await U.waitForInitialization(),!L("image",e.modelRef||e.model))throw new Error("未配置 API Key,请在设置中配置");const a=N(),n=Date.now();await q.createTask(a,"image",{prompt:s.prompt,model:e.model,modelRef:e.modelRef||null,size:e.size}),S.trackExternalTask({id:a,type:b.IMAGE,status:x.PROCESSING,params:{prompt:s.prompt,model:e.model,modelRef:e.modelRef||null,size:e.size},createdAt:n,updatedAt:n,startedAt:n,executionPhase:Z.SUBMITTING}),(l=e.onTaskCreated)==null||l.call(e,a);const o={taskId:a,prompt:s.prompt,model:e.model,modelRef:e.modelRef||null,size:e.size,quality:e.quality,referenceImages:e.referenceImages,uploadedImages:e.uploadedImages,count:e.count,params:e.params};await(e.forceMainThread?E.getFallbackExecutor():await E.getExecutor()).generateImage(o,{signal:e.signal});const c=await j(a,{signal:e.signal,onProgress:m=>{S.syncTaskFromStorage(a,m)}});return!c.success||!c.task?{task:c.task||{id:a,type:b.IMAGE,status:x.FAILED,params:{prompt:f},createdAt:Date.now(),updatedAt:Date.now(),error:{code:"GENERATION_ERROR",message:c.error||"图片生成失败"}}}:{task:c.task,url:(d=c.task.result)==null?void 0:d.url}}async function ae(f,e={}){var l,d,m;const t={prompt:f,...e},r=B(t,b.VIDEO);if(!r.valid)throw new Error(r.errors.join(", "));const s=G(t);if(await U.waitForInitialization(),!L("video",e.modelRef||e.model))throw new Error("未配置 API Key,请在设置中配置");const a=N(),n=Date.now();await q.createTask(a,"video",{prompt:s.prompt,model:e.model||"veo3",modelRef:e.modelRef||null,duration:typeof e.duration=="string"?parseInt(e.duration,10):e.duration,size:e.size,params:e.params}),S.trackExternalTask({id:a,type:b.VIDEO,status:x.PROCESSING,params:{prompt:s.prompt,model:e.model||"veo3",modelRef:e.modelRef||null,size:e.size,params:e.params},createdAt:n,updatedAt:n,startedAt:n,executionPhase:Z.SUBMITTING,progress:0}),(l=e.onTaskCreated)==null||l.call(e,a);const o={taskId:a,prompt:s.prompt,model:e.model||"veo3",modelRef:e.modelRef||null,duration:(d=e.duration)==null?void 0:d.toString(),size:e.size||"1280x720",inputReference:e.inputReference,inputReferences:e.inputReferences,referenceImages:e.referenceImages,params:e.params};await(e.forceMainThread?E.getFallbackExecutor():await E.getExecutor()).generateVideo(o,{signal:e.signal});const c=await j(a,{signal:e.signal,onProgress:u=>{S.syncTaskFromStorage(a,u)}});return!c.success||!c.task?{task:c.task||{id:a,type:b.VIDEO,status:x.FAILED,params:{prompt:f},createdAt:Date.now(),updatedAt:Date.now(),error:{code:"GENERATION_ERROR",message:c.error||"视频生成失败"}}}:{task:c.task,url:(m=c.task.result)==null?void 0:m.url}}class V{constructor(e={}){this.workflows=new Map,this.abortControllers=new Map,this.events$=new H,this.options={stepTimeout:e.stepTimeout??600*1e3,continueOnError:e.continueOnError??!1,onEvent:e.onEvent??(()=>{}),executeMainThreadTool:e.executeMainThreadTool,forceFallbackExecutor:e.forceFallbackExecutor??!1},this.events$.subscribe(t=>{this.options.onEvent(t)})}async submitWorkflow(e){console.log("[WorkflowEngine] submitWorkflow 入口, id:",e.id,"steps:",e.steps.length),this.workflows.set(e.id,e);try{await g.saveWorkflow(e),console.log("[WorkflowEngine] submitWorkflow: IDB 保存完成")}catch(r){console.warn("[WorkflowEngine] submitWorkflow: IDB 保存失败,继续执行:",r)}const t=new AbortController;this.abortControllers.set(e.id,t),console.log("[WorkflowEngine] submitWorkflow: 开始异步执行工作流"),this.executeWorkflow(e.id).catch(r=>{console.error(`[WorkflowEngine] Workflow ${e.id} execution error:`,r)})}async cancelWorkflow(e){const t=this.workflows.get(e);if(!t)return;const r=this.abortControllers.get(e);r==null||r.abort(),t.status="cancelled",t.updatedAt=Date.now(),await g.saveWorkflow(t),this.emitEvent({type:"status",workflowId:e,status:"cancelled"})}getWorkflow(e){return this.workflows.get(e)}async resumeWorkflow(e){if(this.workflows.has(e))return;const t=await g.getWorkflow(e);if(!t)return;const r=t.steps.some(o=>o.status==="pending"),s=t.steps.some(o=>o.status==="running"),a=t.steps.some(o=>o.status==="pending_main_thread");if(!r&&!s&&!a)return;t.steps.forEach(o=>{o.status==="running"&&(o.status="pending")}),this.workflows.set(e,t);const n=new AbortController;this.abortControllers.set(e,n),this.executeWorkflow(e).catch(o=>{console.error("[WorkflowEngine] Resume workflow failed:",e,o)})}async executeWorkflow(e){console.log("[WorkflowEngine] executeWorkflow 开始, id:",e);const t=this.workflows.get(e);if(!t){console.warn("[WorkflowEngine] executeWorkflow: 工作流不存在:",e);return}const r=this.abortControllers.get(e);try{t.status="running",t.updatedAt=Date.now();try{await g.saveWorkflow(t)}catch(n){console.warn("[WorkflowEngine] executeWorkflow: IDB 保存失败,继续:",n)}console.log("[WorkflowEngine] executeWorkflow: 状态已更新为 running"),this.emitEvent({type:"status",workflowId:e,status:"running"}),await this.executeSteps(t,r==null?void 0:r.signal);const s=t.steps.every(n=>n.status==="completed"||n.status==="skipped");t.steps.some(n=>n.status==="failed")&&!this.options.continueOnError?(t.status="failed",t.error=te(t)):s&&(t.status="completed",t.completedAt=Date.now()),t.updatedAt=Date.now(),await g.saveWorkflow(t),t.status==="completed"?this.emitEvent({type:"completed",workflowId:e,workflow:t}):t.status==="failed"&&this.emitEvent({type:"failed",workflowId:e,error:t.error||"Unknown error"})}catch(s){t.status="failed",t.error=s.message||"Workflow execution failed",t.updatedAt=Date.now(),await g.saveWorkflow(t),this.emitEvent({type:"failed",workflowId:e,error:t.error||"Workflow execution failed"})}finally{this.abortControllers.delete(e)}}async executeSteps(e,t){for(;;){if(t!=null&&t.aborted)throw new Error("Workflow cancelled");const r=re(e);if(r.length===0)break;await Promise.all(r.map(s=>this.executeStep(e,s,t)))}}async executeStep(e,t,r){console.log("[WorkflowEngine] executeStep 开始:",t.mcp,"stepId:",t.id);const s=Date.now();t.status="running",e.updatedAt=Date.now(),await g.saveWorkflow(e),this.emitEvent({type:"step",workflowId:e.id,stepId:t.id,status:"running"});try{await this.executeToolStep(e,t,r),t.status="completed",t.duration=Date.now()-s,e.updatedAt=Date.now(),await g.saveWorkflow(e),this.emitEvent({type:"step",workflowId:e.id,stepId:t.id,status:"completed",result:t.result,duration:t.duration})}catch(a){if(t.status="failed",t.error=a.message||"Step execution failed",t.duration=Date.now()-s,e.updatedAt=Date.now(),await g.saveWorkflow(e),this.emitEvent({type:"step",workflowId:e.id,stepId:t.id,status:"failed",error:t.error,duration:t.duration}),!this.options.continueOnError)throw a}}async executeToolStep(e,t,r){var s,a,n;switch(console.log("[WorkflowEngine] executeToolStep:",t.mcp,"stepId:",t.id,"forceFallback:",this.options.forceFallbackExecutor),t.mcp){case"generate_image":{const o=await se(t.args.prompt,{model:t.args.model,modelRef:t.args.modelRef||null,size:t.args.size,referenceImages:t.args.referenceImages,count:t.args.count,params:t.args.params,forceMainThread:this.options.forceFallbackExecutor,signal:r,onTaskCreated:i=>{t.result={taskId:i},g.saveWorkflow(e)}});if(o.task.status===x.FAILED)throw new Error(((s=o.task.error)==null?void 0:s.message)||"Image generation failed");t.result={...o.task.result,taskId:o.task.id};break}case"generate_video":{const o=await ae(t.args.prompt,{model:t.args.model,modelRef:t.args.modelRef||null,duration:t.args.seconds??t.args.duration,size:t.args.size,referenceImages:t.args.referenceImages,params:t.args.params,forceMainThread:this.options.forceFallbackExecutor,signal:r,onTaskCreated:i=>{t.result={taskId:i},g.saveWorkflow(e)}});if(o.task.status===x.FAILED)throw new Error(((a=o.task.error)==null?void 0:a.message)||"Video generation failed");t.result={...o.task.result,taskId:o.task.id};break}case"generate_text":{const c=(await E.getFallbackExecutor().generateText({prompt:t.args.prompt,model:t.args.model,modelRef:t.args.modelRef||null,referenceImages:t.args.referenceImages,params:t.args.params},{signal:r})).content;t.result={content:c};const l=`${t.id}-insert-text`;if(!e.steps.find(d=>d.id===l)){const d={id:l,mcp:"insert_to_canvas",args:{items:[{type:"text",content:c}]},description:"将生成文本插入画布",status:"pending"};e.steps.push(d),await g.saveWorkflow(e),this.emitEvent({type:"steps_added",workflowId:e.id,steps:[d]})}break}case"ai_analyze":{const o=E.getFallbackExecutor(),i=t.id,c=await o.aiAnalyze({taskId:i,messages:t.args.messages,prompt:t.args.prompt,referenceImages:t.args.referenceImages,images:t.args.images,textModel:t.args.textModel,model:t.args.model,modelRef:t.args.modelRef||null},{signal:r});if(t.result={content:c.content},c.addSteps&&c.addSteps.length>0){for(const l of c.addSteps)e.steps.find(d=>d.id===l.id)||e.steps.push({id:l.id,mcp:l.mcp,args:l.args,description:l.description,status:l.status});await g.saveWorkflow(e),this.emitEvent({type:"steps_added",workflowId:e.id,steps:e.steps.filter(l=>l.status==="pending")})}else if(c.content&&c.content.trim()){const l=`${t.id}-insert-text`;if(!e.steps.find(d=>d.id===l)){const d=((n=e.metadata)==null?void 0:n.rawInput)||"",m=d.trim()?`# ${d.trim()}
3
3
 
4
4
  `:"",u={id:l,mcp:"insert_to_canvas",args:{items:[{type:"text",content:m+c.content}]},description:"将 AI 回复插入画布",status:"pending"};e.steps.push(u),await g.saveWorkflow(e),this.emitEvent({type:"steps_added",workflowId:e.id,steps:[u]})}}break}case"generate_grid_image":case"generate_inspiration_board":case"split_image":case"generate_long_video":case"insert_mermaid":case"insert_mindmap":case"insert_svg":case"canvas_insert":case"insert_to_canvas":{if(!this.options.executeMainThreadTool)throw new Error(`No main thread tool executor configured for: ${t.mcp}`);const o=await this.options.executeMainThreadTool(t.mcp,t.args);if(!o.success)throw new Error(o.error||`${t.mcp} failed`);t.result=o.result;break}default:throw new Error(`Unknown tool: ${t.mcp}`)}}emitEvent(e){this.events$.next(e)}destroy(){for(const[e,t]of this.abortControllers)t.abort();this.abortControllers.clear(),this.workflows.clear(),this.events$.complete()}}class oe{constructor(){this.events$=new H,this.workflows=new Map,this.initialized=!1,this.fallbackEngine=null,this.pendingCanvasHandler=null}init(){this.initialized||(this.initialized=!0)}destroy(){this.events$.complete(),this.initialized=!1}async recoverWorkflows(){try{let e=[];if(await p.isAvailable()&&(e=await p.getAllWorkflows()),e.length===0)return[];for(const t of e){const r=this.workflows.get(t.id);(!r||t.updatedAt>(r.updatedAt||0))&&(this.workflows.set(t.id,t),t.status==="failed"&&(r==null?void 0:r.status)!=="failed"&&this.events$&&this.events$.next({type:"failed",workflowId:t.id,error:t.error||"Unknown error"}))}return e.filter(t=>t.status==="running"||t.status==="pending")}catch(e){return console.warn("[WorkflowSubmissionService] Failed to recover workflows:",e),[]}}getRunningWorkflows(){return Array.from(this.workflows.values()).filter(e=>e.status==="running"||e.status==="pending")}notifyStepUpdate(e,t,r,s,a,n){const o=this.workflows.get(e);if(o){const i=o.steps.find(c=>c.id===t);i&&(i.status=r,i.result=s,i.error=a,i.duration=n)}this.events$.next({type:"step",workflowId:e,stepId:t,status:r,result:s,error:a,duration:n})}notifyWorkflowCompleted(e,t){this.workflows.set(e,t),this.events$.next({type:"completed",workflowId:e,workflow:t})}notifyWorkflowFailed(e,t){const r=this.workflows.get(e);r&&(r.status="failed",r.error=t),this.events$.next({type:"failed",workflowId:e,error:t})}isWorkflowManagedByFallback(e){return this.fallbackEngine?this.fallbackEngine.getWorkflow(e)!==void 0:!1}getWorkflowFromFallback(e){if(!this.fallbackEngine)return;const t=this.fallbackEngine.getWorkflow(e);if(t)return{id:t.id,name:t.name,steps:t.steps.map(r=>({id:r.id,mcp:r.mcp,args:r.args,description:r.description,status:r.status,result:r.result,error:r.error,duration:r.duration,options:r.options})),status:t.status,createdAt:t.createdAt,updatedAt:t.updatedAt,completedAt:t.completedAt,error:t.error,context:t.context}}async resumeWorkflowWithFallback(e){return this.fallbackEngine||(this.fallbackEngine=new V({onEvent:t=>this.handleFallbackEngineEvent(t),executeMainThreadTool:async(t,r)=>{try{const s=await O.execute({operation:t,args:r});return{success:s.success,error:s.error}}catch(s){return{success:!1,error:s.message||"Main thread tool execution failed"}}}})),await this.fallbackEngine.resumeWorkflow(e),this.fallbackEngine.getWorkflow(e)!==void 0}createWorkflow(e,t=[]){const r=`wf_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,s=Date.now(),a=e.generationType==="video"?"generate_video":"generate_image",n={prompt:e.prompt,model:e.modelId,modelRef:e.modelRef||null};e.size&&(n.size=e.size),e.count&&e.count>1&&(n.count=e.count),e.duration&&(n.seconds=e.duration),t.length>0&&(n.referenceImages=t),e.extraParams&&(n.params=e.extraParams);const o=[],i=e.count||1;for(let l=0;l<i;l++)o.push({id:`step_${l}_${Math.random().toString(36).substr(2,9)}`,mcp:a,args:{...n,count:1},description:e.generationType==="video"?`生成视频 ${l+1}/${i}`:`生成图片 ${l+1}/${i}`,status:"pending"});return{id:r,name:e.generationType==="video"?"视频生成":"图片生成",steps:o,status:"pending",createdAt:s,updatedAt:s,context:{userInput:e.userInstruction,model:e.modelId,modelRef:e.modelRef||null,params:{count:e.count,size:e.size,duration:e.duration},referenceImages:t}}}async submit(e){if(console.log("[WorkflowSubmissionService][submit] 入口 workflowId:",e.id),this.workflows.set(e.id,e),p.invalidateCache(),!await this.tryFallbackEngine(e))throw this.workflows.delete(e.id),new Error("Submit workflow failed")}async tryFallbackEngine(e){try{if(!E.getFallbackExecutor())return console.warn("[WorkflowSubmissionService] tryFallbackEngine: fallback executor 不可用"),!1;console.log("[WorkflowSubmissionService] tryFallbackEngine: 使用降级执行器"),this.fallbackEngine||(this.fallbackEngine=new V({onEvent:s=>this.handleFallbackEngineEvent(s),forceFallbackExecutor:!0,executeMainThreadTool:async(s,a)=>{try{const n=await O.execute({operation:s,args:a});return{success:n.success,result:n.data,error:n.error}}catch(n){return{success:!1,error:n.message||"Main thread tool execution failed"}}}}));const r={id:e.id,name:e.name,steps:e.steps.map(s=>({id:s.id,mcp:s.mcp,args:s.args,description:s.description,status:s.status,result:s.result,error:s.error,duration:s.duration,options:s.options})),status:e.status,createdAt:e.createdAt,updatedAt:e.updatedAt,completedAt:e.completedAt,error:e.error,context:e.context};return console.log("[WorkflowSubmissionService] tryFallbackEngine: 提交到主线程引擎, steps:",r.steps.length),await this.fallbackEngine.submitWorkflow(r),console.log("[WorkflowSubmissionService] tryFallbackEngine: 引擎已启动"),!0}catch(t){return console.error("[WorkflowSubmissionService] Fallback engine error:",t),!1}}handleFallbackEngineEvent(e){switch(e.type){case"status":this.events$.next({type:"status",workflowId:e.workflowId,status:e.status});break;case"step":this.events$.next({type:"step",workflowId:e.workflowId,stepId:e.stepId,status:e.status,result:e.result,error:e.error,duration:e.duration});const t=this.workflows.get(e.workflowId);if(t){const s=t.steps.find(a=>a.id===e.stepId);s&&(s.status=e.status,s.result=e.result,s.error=e.error,s.duration=e.duration),t.updatedAt=Date.now()}break;case"completed":this.events$.next({type:"completed",workflowId:e.workflowId,workflow:e.workflow}),this.workflows.set(e.workflowId,e.workflow);break;case"failed":this.events$.next({type:"failed",workflowId:e.workflowId,error:e.error});const r=this.workflows.get(e.workflowId);r&&(r.status="failed",r.error=e.error,r.updatedAt=Date.now());break;case"steps_added":this.events$.next({type:"steps_added",workflowId:e.workflowId,steps:e.steps.map(s=>({id:s.id,mcp:s.mcp,args:s.args,description:s.description,status:s.status}))});break}}async cancel(e){p.invalidateCache(),this.fallbackEngine&&await this.fallbackEngine.cancelWorkflow(e)}getWorkflow(e){return this.workflows.get(e)}async queryWorkflowStatus(e){try{if(await p.isAvailable()){const t=await p.getWorkflow(e);if(t)return this.workflows.set(e,t),t}}catch(t){console.warn("[WorkflowSubmissionService] Failed to query workflow status:",t)}return this.workflows.get(e)||null}async queryAllWorkflows(){try{if(await p.isAvailable()){const e=await p.getAllWorkflows();for(const t of e)this.workflows.set(t.id,t);return e}}catch(e){console.warn("[WorkflowSubmissionService] Failed to query all workflows:",e)}return Array.from(this.workflows.values())}get events(){return this.events$.asObservable()}subscribeToWorkflow(e,t){return this.events$.pipe(z(r=>r.type==="canvas_insert"?!1:r.workflowId===e)).subscribe(t)}registerCanvasHandler(e){this.pendingCanvasHandler=e}subscribeToToolRequests(e){return this.events$.pipe(z(t=>t.type==="main_thread_tool_request")).subscribe(e)}subscribeToAllEvents(e){return this.events$.subscribe(e)}}const ne=new oe,le=Object.freeze(Object.defineProperty({__proto__:null,workflowSubmissionService:ne},Symbol.toStringTag,{value:"Module"}));export{le as a,ce as s,ne as w};
@@ -1,4 +1,4 @@
1
- import{s as zt,a as Ft,v as wt,x as Nt,b as Xt,c as Yt,l as St,$ as Ht,e as $t,z as Ut,ah as ot,a1 as Ct,a3 as qt,ag as jt,i as Gt}from"./index-CMQMxwMb.js";import{a as Qt}from"./createText-2e5e7dd3-DuiUpOXV.js";import{i as Kt}from"./init-Gi6I4Gst.js";import{o as Zt}from"./ordinal-Cboi1Yqb.js";import{l as ft}from"./linear-n85WiAhX.js";import{l as pt}from"./line-D_WC7vRh.js";import"./tool-windows-hjm6YiPY.js";import"./index-DI_5V2-m.js";import"./index.dom-C3-224fz.js";import"./array-BKyUJesY.js";import"./path-CbwjOpE9.js";function Jt(e,t,i){e=+e,t=+t,i=(n=arguments.length)<2?(t=e,e=0,1):n<3?1:+i;for(var s=-1,n=Math.max(0,Math.ceil((t-e)/i))|0,o=new Array(n);++s<n;)o[s]=e+s*i;return o}function st(){var e=Zt().unknown(void 0),t=e.domain,i=e.range,s=0,n=1,o,c,f=!1,d=0,R=0,_=.5;delete e.unknown;function A(){var m=t().length,T=n<s,S=T?n:s,P=T?s:n;o=(P-S)/Math.max(1,m-d+R*2),f&&(o=Math.floor(o)),S+=(P-S-o*(m-d))*_,c=o*(1-d),f&&(S=Math.round(S),c=Math.round(c));var p=Jt(m).map(function(C){return S+o*C});return i(T?p.reverse():p)}return e.domain=function(m){return arguments.length?(t(m),A()):t()},e.range=function(m){return arguments.length?([s,n]=m,s=+s,n=+n,A()):[s,n]},e.rangeRound=function(m){return[s,n]=m,s=+s,n=+n,f=!0,A()},e.bandwidth=function(){return c},e.step=function(){return o},e.round=function(m){return arguments.length?(f=!!m,A()):f},e.padding=function(m){return arguments.length?(d=Math.min(1,R=+m),A()):d},e.paddingInner=function(m){return arguments.length?(d=Math.min(1,m),A()):d},e.paddingOuter=function(m){return arguments.length?(R=+m,A()):R},e.align=function(m){return arguments.length?(_=Math.max(0,Math.min(1,m)),A()):_},e.copy=function(){return st(t(),[s,n]).round(f).paddingInner(d).paddingOuter(R).align(_)},Kt.apply(A(),arguments)}var nt=(function(){var e=function(V,r,l,u){for(l=l||{},u=V.length;u--;l[V[u]]=r);return l},t=[1,10,12,14,16,18,19,21,23],i=[2,6],s=[1,3],n=[1,5],o=[1,6],c=[1,7],f=[1,5,10,12,14,16,18,19,21,23,34,35,36],d=[1,25],R=[1,26],_=[1,28],A=[1,29],m=[1,30],T=[1,31],S=[1,32],P=[1,33],p=[1,34],C=[1,35],h=[1,36],L=[1,37],z=[1,43],lt=[1,42],ct=[1,47],$=[1,50],w=[1,10,12,14,16,18,19,21,23,34,35,36],Q=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],v=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36,41,42,43,44,45,46,47,48,49,50],ut=[1,64],K={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,XYCHART:5,chartConfig:6,document:7,CHART_ORIENTATION:8,statement:9,title:10,text:11,X_AXIS:12,parseXAxis:13,Y_AXIS:14,parseYAxis:15,LINE:16,plotData:17,BAR:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,SQUARE_BRACES_START:24,commaSeparatedNumbers:25,SQUARE_BRACES_END:26,NUMBER_WITH_DECIMAL:27,COMMA:28,xAxisData:29,bandData:30,ARROW_DELIMITER:31,commaSeparatedTexts:32,yAxisData:33,NEWLINE:34,SEMI:35,EOF:36,alphaNum:37,STR:38,MD_STR:39,alphaNumToken:40,AMP:41,NUM:42,ALPHA:43,PLUS:44,EQUALS:45,MULT:46,DOT:47,BRKT:48,MINUS:49,UNDERSCORE:50,$accept:0,$end:1},terminals_:{2:"error",5:"XYCHART",8:"CHART_ORIENTATION",10:"title",12:"X_AXIS",14:"Y_AXIS",16:"LINE",18:"BAR",19:"acc_title",20:"acc_title_value",21:"acc_descr",22:"acc_descr_value",23:"acc_descr_multiline_value",24:"SQUARE_BRACES_START",26:"SQUARE_BRACES_END",27:"NUMBER_WITH_DECIMAL",28:"COMMA",31:"ARROW_DELIMITER",34:"NEWLINE",35:"SEMI",36:"EOF",38:"STR",39:"MD_STR",41:"AMP",42:"NUM",43:"ALPHA",44:"PLUS",45:"EQUALS",46:"MULT",47:"DOT",48:"BRKT",49:"MINUS",50:"UNDERSCORE"},productions_:[0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[13,1],[13,2],[13,1],[29,1],[29,3],[30,3],[32,3],[32,1],[15,1],[15,2],[15,1],[33,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[37,1],[37,2],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1]],performAction:function(r,l,u,g,b,a,F){var x=a.length-1;switch(b){case 5:g.setOrientation(a[x]);break;case 9:g.setDiagramTitle(a[x].text.trim());break;case 12:g.setLineData({text:"",type:"text"},a[x]);break;case 13:g.setLineData(a[x-1],a[x]);break;case 14:g.setBarData({text:"",type:"text"},a[x]);break;case 15:g.setBarData(a[x-1],a[x]);break;case 16:this.$=a[x].trim(),g.setAccTitle(this.$);break;case 17:case 18:this.$=a[x].trim(),g.setAccDescription(this.$);break;case 19:this.$=a[x-1];break;case 20:this.$=[Number(a[x-2]),...a[x]];break;case 21:this.$=[Number(a[x])];break;case 22:g.setXAxisTitle(a[x]);break;case 23:g.setXAxisTitle(a[x-1]);break;case 24:g.setXAxisTitle({type:"text",text:""});break;case 25:g.setXAxisBand(a[x]);break;case 26:g.setXAxisRangeData(Number(a[x-2]),Number(a[x]));break;case 27:this.$=a[x-1];break;case 28:this.$=[a[x-2],...a[x]];break;case 29:this.$=[a[x]];break;case 30:g.setYAxisTitle(a[x]);break;case 31:g.setYAxisTitle(a[x-1]);break;case 32:g.setYAxisTitle({type:"text",text:""});break;case 33:g.setYAxisRangeData(Number(a[x-2]),Number(a[x]));break;case 37:this.$={text:a[x],type:"text"};break;case 38:this.$={text:a[x],type:"text"};break;case 39:this.$={text:a[x],type:"markdown"};break;case 40:this.$=a[x];break;case 41:this.$=a[x-1]+""+a[x];break}},table:[e(t,i,{3:1,4:2,7:4,5:s,34:n,35:o,36:c}),{1:[3]},e(t,i,{4:2,7:4,3:8,5:s,34:n,35:o,36:c}),e(t,i,{4:2,7:4,6:9,3:10,5:s,8:[1,11],34:n,35:o,36:c}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},e(f,[2,34]),e(f,[2,35]),e(f,[2,36]),{1:[2,1]},e(t,i,{4:2,7:4,3:21,5:s,34:n,35:o,36:c}),{1:[2,3]},e(f,[2,5]),e(t,[2,7],{4:22,34:n,35:o,36:c}),{11:23,37:24,38:d,39:R,40:27,41:_,42:A,43:m,44:T,45:S,46:P,47:p,48:C,49:h,50:L},{11:39,13:38,24:z,27:lt,29:40,30:41,37:24,38:d,39:R,40:27,41:_,42:A,43:m,44:T,45:S,46:P,47:p,48:C,49:h,50:L},{11:45,15:44,27:ct,33:46,37:24,38:d,39:R,40:27,41:_,42:A,43:m,44:T,45:S,46:P,47:p,48:C,49:h,50:L},{11:49,17:48,24:$,37:24,38:d,39:R,40:27,41:_,42:A,43:m,44:T,45:S,46:P,47:p,48:C,49:h,50:L},{11:52,17:51,24:$,37:24,38:d,39:R,40:27,41:_,42:A,43:m,44:T,45:S,46:P,47:p,48:C,49:h,50:L},{20:[1,53]},{22:[1,54]},e(w,[2,18]),{1:[2,2]},e(w,[2,8]),e(w,[2,9]),e(Q,[2,37],{40:55,41:_,42:A,43:m,44:T,45:S,46:P,47:p,48:C,49:h,50:L}),e(Q,[2,38]),e(Q,[2,39]),e(v,[2,40]),e(v,[2,42]),e(v,[2,43]),e(v,[2,44]),e(v,[2,45]),e(v,[2,46]),e(v,[2,47]),e(v,[2,48]),e(v,[2,49]),e(v,[2,50]),e(v,[2,51]),e(w,[2,10]),e(w,[2,22],{30:41,29:56,24:z,27:lt}),e(w,[2,24]),e(w,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:d,39:R,40:27,41:_,42:A,43:m,44:T,45:S,46:P,47:p,48:C,49:h,50:L},e(w,[2,11]),e(w,[2,30],{33:60,27:ct}),e(w,[2,32]),{31:[1,61]},e(w,[2,12]),{17:62,24:$},{25:63,27:ut},e(w,[2,14]),{17:65,24:$},e(w,[2,16]),e(w,[2,17]),e(v,[2,41]),e(w,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},e(w,[2,31]),{27:[1,69]},e(w,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},e(w,[2,15]),e(w,[2,26]),e(w,[2,27]),{11:59,32:72,37:24,38:d,39:R,40:27,41:_,42:A,43:m,44:T,45:S,46:P,47:p,48:C,49:h,50:L},e(w,[2,33]),e(w,[2,19]),{25:73,27:ut},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:function(r,l){if(l.recoverable)this.trace(r);else{var u=new Error(r);throw u.hash=l,u}},parse:function(r){var l=this,u=[0],g=[],b=[null],a=[],F=this.table,x="",U=0,gt=0,Vt=2,xt=1,Bt=a.slice.call(arguments,1),k=Object.create(this.lexer),B={yy:{}};for(var J in this.yy)Object.prototype.hasOwnProperty.call(this.yy,J)&&(B.yy[J]=this.yy[J]);k.setInput(r,B.yy),B.yy.lexer=k,B.yy.parser=this,typeof k.yylloc>"u"&&(k.yylloc={});var tt=k.yylloc;a.push(tt);var Wt=k.options&&k.options.ranges;typeof B.yy.parseError=="function"?this.parseError=B.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Ot(){var I;return I=g.pop()||k.lex()||xt,typeof I!="number"&&(I instanceof Array&&(g=I,I=g.pop()),I=l.symbols_[I]||I),I}for(var D,W,E,it,O={},q,M,dt,j;;){if(W=u[u.length-1],this.defaultActions[W]?E=this.defaultActions[W]:((D===null||typeof D>"u")&&(D=Ot()),E=F[W]&&F[W][D]),typeof E>"u"||!E.length||!E[0]){var et="";j=[];for(q in F[W])this.terminals_[q]&&q>Vt&&j.push("'"+this.terminals_[q]+"'");k.showPosition?et="Parse error on line "+(U+1)+`:
1
+ import{s as zt,a as Ft,v as wt,x as Nt,b as Xt,c as Yt,l as St,$ as Ht,e as $t,z as Ut,ah as ot,a1 as Ct,a3 as qt,ag as jt,i as Gt}from"./index-gHdnUGOu.js";import{a as Qt}from"./createText-2e5e7dd3-C0UgSBh5.js";import{i as Kt}from"./init-Gi6I4Gst.js";import{o as Zt}from"./ordinal-Cboi1Yqb.js";import{l as ft}from"./linear-BF0xIQKP.js";import{l as pt}from"./line-Bxc-zIvZ.js";import"./tool-windows-C4D0lII2.js";import"./index-DI_5V2-m.js";import"./index.dom-C3-224fz.js";import"./array-BKyUJesY.js";import"./path-CbwjOpE9.js";function Jt(e,t,i){e=+e,t=+t,i=(n=arguments.length)<2?(t=e,e=0,1):n<3?1:+i;for(var s=-1,n=Math.max(0,Math.ceil((t-e)/i))|0,o=new Array(n);++s<n;)o[s]=e+s*i;return o}function st(){var e=Zt().unknown(void 0),t=e.domain,i=e.range,s=0,n=1,o,c,f=!1,d=0,R=0,_=.5;delete e.unknown;function A(){var m=t().length,T=n<s,S=T?n:s,P=T?s:n;o=(P-S)/Math.max(1,m-d+R*2),f&&(o=Math.floor(o)),S+=(P-S-o*(m-d))*_,c=o*(1-d),f&&(S=Math.round(S),c=Math.round(c));var p=Jt(m).map(function(C){return S+o*C});return i(T?p.reverse():p)}return e.domain=function(m){return arguments.length?(t(m),A()):t()},e.range=function(m){return arguments.length?([s,n]=m,s=+s,n=+n,A()):[s,n]},e.rangeRound=function(m){return[s,n]=m,s=+s,n=+n,f=!0,A()},e.bandwidth=function(){return c},e.step=function(){return o},e.round=function(m){return arguments.length?(f=!!m,A()):f},e.padding=function(m){return arguments.length?(d=Math.min(1,R=+m),A()):d},e.paddingInner=function(m){return arguments.length?(d=Math.min(1,m),A()):d},e.paddingOuter=function(m){return arguments.length?(R=+m,A()):R},e.align=function(m){return arguments.length?(_=Math.max(0,Math.min(1,m)),A()):_},e.copy=function(){return st(t(),[s,n]).round(f).paddingInner(d).paddingOuter(R).align(_)},Kt.apply(A(),arguments)}var nt=(function(){var e=function(V,r,l,u){for(l=l||{},u=V.length;u--;l[V[u]]=r);return l},t=[1,10,12,14,16,18,19,21,23],i=[2,6],s=[1,3],n=[1,5],o=[1,6],c=[1,7],f=[1,5,10,12,14,16,18,19,21,23,34,35,36],d=[1,25],R=[1,26],_=[1,28],A=[1,29],m=[1,30],T=[1,31],S=[1,32],P=[1,33],p=[1,34],C=[1,35],h=[1,36],L=[1,37],z=[1,43],lt=[1,42],ct=[1,47],$=[1,50],w=[1,10,12,14,16,18,19,21,23,34,35,36],Q=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],v=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36,41,42,43,44,45,46,47,48,49,50],ut=[1,64],K={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,XYCHART:5,chartConfig:6,document:7,CHART_ORIENTATION:8,statement:9,title:10,text:11,X_AXIS:12,parseXAxis:13,Y_AXIS:14,parseYAxis:15,LINE:16,plotData:17,BAR:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,SQUARE_BRACES_START:24,commaSeparatedNumbers:25,SQUARE_BRACES_END:26,NUMBER_WITH_DECIMAL:27,COMMA:28,xAxisData:29,bandData:30,ARROW_DELIMITER:31,commaSeparatedTexts:32,yAxisData:33,NEWLINE:34,SEMI:35,EOF:36,alphaNum:37,STR:38,MD_STR:39,alphaNumToken:40,AMP:41,NUM:42,ALPHA:43,PLUS:44,EQUALS:45,MULT:46,DOT:47,BRKT:48,MINUS:49,UNDERSCORE:50,$accept:0,$end:1},terminals_:{2:"error",5:"XYCHART",8:"CHART_ORIENTATION",10:"title",12:"X_AXIS",14:"Y_AXIS",16:"LINE",18:"BAR",19:"acc_title",20:"acc_title_value",21:"acc_descr",22:"acc_descr_value",23:"acc_descr_multiline_value",24:"SQUARE_BRACES_START",26:"SQUARE_BRACES_END",27:"NUMBER_WITH_DECIMAL",28:"COMMA",31:"ARROW_DELIMITER",34:"NEWLINE",35:"SEMI",36:"EOF",38:"STR",39:"MD_STR",41:"AMP",42:"NUM",43:"ALPHA",44:"PLUS",45:"EQUALS",46:"MULT",47:"DOT",48:"BRKT",49:"MINUS",50:"UNDERSCORE"},productions_:[0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[13,1],[13,2],[13,1],[29,1],[29,3],[30,3],[32,3],[32,1],[15,1],[15,2],[15,1],[33,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[37,1],[37,2],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1]],performAction:function(r,l,u,g,b,a,F){var x=a.length-1;switch(b){case 5:g.setOrientation(a[x]);break;case 9:g.setDiagramTitle(a[x].text.trim());break;case 12:g.setLineData({text:"",type:"text"},a[x]);break;case 13:g.setLineData(a[x-1],a[x]);break;case 14:g.setBarData({text:"",type:"text"},a[x]);break;case 15:g.setBarData(a[x-1],a[x]);break;case 16:this.$=a[x].trim(),g.setAccTitle(this.$);break;case 17:case 18:this.$=a[x].trim(),g.setAccDescription(this.$);break;case 19:this.$=a[x-1];break;case 20:this.$=[Number(a[x-2]),...a[x]];break;case 21:this.$=[Number(a[x])];break;case 22:g.setXAxisTitle(a[x]);break;case 23:g.setXAxisTitle(a[x-1]);break;case 24:g.setXAxisTitle({type:"text",text:""});break;case 25:g.setXAxisBand(a[x]);break;case 26:g.setXAxisRangeData(Number(a[x-2]),Number(a[x]));break;case 27:this.$=a[x-1];break;case 28:this.$=[a[x-2],...a[x]];break;case 29:this.$=[a[x]];break;case 30:g.setYAxisTitle(a[x]);break;case 31:g.setYAxisTitle(a[x-1]);break;case 32:g.setYAxisTitle({type:"text",text:""});break;case 33:g.setYAxisRangeData(Number(a[x-2]),Number(a[x]));break;case 37:this.$={text:a[x],type:"text"};break;case 38:this.$={text:a[x],type:"text"};break;case 39:this.$={text:a[x],type:"markdown"};break;case 40:this.$=a[x];break;case 41:this.$=a[x-1]+""+a[x];break}},table:[e(t,i,{3:1,4:2,7:4,5:s,34:n,35:o,36:c}),{1:[3]},e(t,i,{4:2,7:4,3:8,5:s,34:n,35:o,36:c}),e(t,i,{4:2,7:4,6:9,3:10,5:s,8:[1,11],34:n,35:o,36:c}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},e(f,[2,34]),e(f,[2,35]),e(f,[2,36]),{1:[2,1]},e(t,i,{4:2,7:4,3:21,5:s,34:n,35:o,36:c}),{1:[2,3]},e(f,[2,5]),e(t,[2,7],{4:22,34:n,35:o,36:c}),{11:23,37:24,38:d,39:R,40:27,41:_,42:A,43:m,44:T,45:S,46:P,47:p,48:C,49:h,50:L},{11:39,13:38,24:z,27:lt,29:40,30:41,37:24,38:d,39:R,40:27,41:_,42:A,43:m,44:T,45:S,46:P,47:p,48:C,49:h,50:L},{11:45,15:44,27:ct,33:46,37:24,38:d,39:R,40:27,41:_,42:A,43:m,44:T,45:S,46:P,47:p,48:C,49:h,50:L},{11:49,17:48,24:$,37:24,38:d,39:R,40:27,41:_,42:A,43:m,44:T,45:S,46:P,47:p,48:C,49:h,50:L},{11:52,17:51,24:$,37:24,38:d,39:R,40:27,41:_,42:A,43:m,44:T,45:S,46:P,47:p,48:C,49:h,50:L},{20:[1,53]},{22:[1,54]},e(w,[2,18]),{1:[2,2]},e(w,[2,8]),e(w,[2,9]),e(Q,[2,37],{40:55,41:_,42:A,43:m,44:T,45:S,46:P,47:p,48:C,49:h,50:L}),e(Q,[2,38]),e(Q,[2,39]),e(v,[2,40]),e(v,[2,42]),e(v,[2,43]),e(v,[2,44]),e(v,[2,45]),e(v,[2,46]),e(v,[2,47]),e(v,[2,48]),e(v,[2,49]),e(v,[2,50]),e(v,[2,51]),e(w,[2,10]),e(w,[2,22],{30:41,29:56,24:z,27:lt}),e(w,[2,24]),e(w,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:d,39:R,40:27,41:_,42:A,43:m,44:T,45:S,46:P,47:p,48:C,49:h,50:L},e(w,[2,11]),e(w,[2,30],{33:60,27:ct}),e(w,[2,32]),{31:[1,61]},e(w,[2,12]),{17:62,24:$},{25:63,27:ut},e(w,[2,14]),{17:65,24:$},e(w,[2,16]),e(w,[2,17]),e(v,[2,41]),e(w,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},e(w,[2,31]),{27:[1,69]},e(w,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},e(w,[2,15]),e(w,[2,26]),e(w,[2,27]),{11:59,32:72,37:24,38:d,39:R,40:27,41:_,42:A,43:m,44:T,45:S,46:P,47:p,48:C,49:h,50:L},e(w,[2,33]),e(w,[2,19]),{25:73,27:ut},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:function(r,l){if(l.recoverable)this.trace(r);else{var u=new Error(r);throw u.hash=l,u}},parse:function(r){var l=this,u=[0],g=[],b=[null],a=[],F=this.table,x="",U=0,gt=0,Vt=2,xt=1,Bt=a.slice.call(arguments,1),k=Object.create(this.lexer),B={yy:{}};for(var J in this.yy)Object.prototype.hasOwnProperty.call(this.yy,J)&&(B.yy[J]=this.yy[J]);k.setInput(r,B.yy),B.yy.lexer=k,B.yy.parser=this,typeof k.yylloc>"u"&&(k.yylloc={});var tt=k.yylloc;a.push(tt);var Wt=k.options&&k.options.ranges;typeof B.yy.parseError=="function"?this.parseError=B.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Ot(){var I;return I=g.pop()||k.lex()||xt,typeof I!="number"&&(I instanceof Array&&(g=I,I=g.pop()),I=l.symbols_[I]||I),I}for(var D,W,E,it,O={},q,M,dt,j;;){if(W=u[u.length-1],this.defaultActions[W]?E=this.defaultActions[W]:((D===null||typeof D>"u")&&(D=Ot()),E=F[W]&&F[W][D]),typeof E>"u"||!E.length||!E[0]){var et="";j=[];for(q in F[W])this.terminals_[q]&&q>Vt&&j.push("'"+this.terminals_[q]+"'");k.showPosition?et="Parse error on line "+(U+1)+`:
2
2
  `+k.showPosition()+`
3
3
  Expecting `+j.join(", ")+", got '"+(this.terminals_[D]||D)+"'":et="Parse error on line "+(U+1)+": Unexpected "+(D==xt?"end of input":"'"+(this.terminals_[D]||D)+"'"),this.parseError(et,{text:k.match,token:this.terminals_[D]||D,line:k.yylineno,loc:tt,expected:j})}if(E[0]instanceof Array&&E.length>1)throw new Error("Parse Error: multiple actions possible at state: "+W+", token: "+D);switch(E[0]){case 1:u.push(D),b.push(k.yytext),a.push(k.yylloc),u.push(E[1]),D=null,gt=k.yyleng,x=k.yytext,U=k.yylineno,tt=k.yylloc;break;case 2:if(M=this.productions_[E[1]][1],O.$=b[b.length-M],O._$={first_line:a[a.length-(M||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(M||1)].first_column,last_column:a[a.length-1].last_column},Wt&&(O._$.range=[a[a.length-(M||1)].range[0],a[a.length-1].range[1]]),it=this.performAction.apply(O,[x,gt,U,B.yy,E[1],b,a].concat(Bt)),typeof it<"u")return it;M&&(u=u.slice(0,-1*M*2),b=b.slice(0,-1*M),a=a.slice(0,-1*M)),u.push(this.productions_[E[1]][0]),b.push(O.$),a.push(O._$),dt=F[u[u.length-2]][u[u.length-1]],u.push(dt);break;case 3:return!0}}return!0}},It=(function(){var V={EOF:1,parseError:function(l,u){if(this.yy.parser)this.yy.parser.parseError(l,u);else throw new Error(l)},setInput:function(r,l){return this.yy=l||this.yy||{},this._input=r,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var r=this._input[0];this.yytext+=r,this.yyleng++,this.offset++,this.match+=r,this.matched+=r;var l=r.match(/(?:\r\n?|\n).*/g);return l?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),r},unput:function(r){var l=r.length,u=r.split(/(?:\r\n?|\n)/g);this._input=r+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-l),this.offset-=l;var g=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),u.length-1&&(this.yylineno-=u.length-1);var b=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:u?(u.length===g.length?this.yylloc.first_column:0)+g[g.length-u.length].length-u[0].length:this.yylloc.first_column-l},this.options.ranges&&(this.yylloc.range=[b[0],b[0]+this.yyleng-l]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
4
4
  `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(r){this.unput(this.match.slice(r))},pastInput:function(){var r=this.matched.substr(0,this.matched.length-this.match.length);return(r.length>20?"...":"")+r.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var r=this.match;return r.length<20&&(r+=this._input.substr(0,20-r.length)),(r.substr(0,20)+(r.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var r=this.pastInput(),l=new Array(r.length+1).join("-");return r+this.upcomingInput()+`