aitu-app 0.6.71 → 0.6.72

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/README.md +3 -3
  2. package/assets/{CanvasAudioPlayer-BxZowfRq.js → CanvasAudioPlayer-C4pqPNnG.js} +1 -1
  3. package/assets/{ChatDrawer-BGK5A7Rf.js → ChatDrawer-9XDg_01o.js} +2 -2
  4. package/assets/{ChatMessagesArea-CuPP1K-H.js → ChatMessagesArea-MrSlzXfd.js} +2 -2
  5. package/assets/{DeferredAIInputBar-jZEz3pqU.js → DeferredAIInputBar-rlzvr9H5.js} +2 -2
  6. package/assets/{DrawnixDeferredFeatures-DRggo5l2.js → DrawnixDeferredFeatures-6BN6HsXW.js} +1 -1
  7. package/assets/{KnowledgeBaseContent-C1xFBdX9.js → KnowledgeBaseContent-DJnJZh6i.js} +3 -3
  8. package/assets/{MVCreator-D3rDT4pv.js → MVCreator-BVXIEkng.js} +1 -1
  9. package/assets/{ModelBenchmarkWorkbench-DrHfXMOC.js → ModelBenchmarkWorkbench-DV6h0r-O.js} +1 -1
  10. package/assets/{ModelDropdown-CErXiJel.js → ModelDropdown-iU3c5Z_N.js} +1 -1
  11. package/assets/{MusicAnalyzer-DNVsOB04.js → MusicAnalyzer-D9rIcu4x.js} +1 -1
  12. package/assets/{MusicAnalyzer-q0eIxKqJ.js → MusicAnalyzer-ghn7zFIt.js} +1 -1
  13. package/assets/{ResizableDivider-XFJLfAwc.js → ResizableDivider-C6Z5EQJ_.js} +1 -1
  14. package/assets/{TaskQueuePanel-zmK3r_Sy.js → TaskQueuePanel-NAYUh8lN.js} +1 -1
  15. package/assets/{VideoAnalyzer-IiMRyspL.js → VideoAnalyzer-VjFOqpZU.js} +1 -1
  16. package/assets/{ai-generation-preferences-service-DheS7yb2.js → ai-generation-preferences-service-BuQhsO32.js} +1 -1
  17. package/assets/{arc-AunKa7Be.js → arc-CCorIawr.js} +1 -1
  18. package/assets/{arc-CxS0h6XE.js → arc-OsezXT79.js} +1 -1
  19. package/assets/{batch-image-generation-BTo-Hh2f.js → batch-image-generation-BM3dGGpo.js} +1 -1
  20. package/assets/{blockDiagram-38ab4fdb-BOwTTQqR.js → blockDiagram-38ab4fdb-DUFnN1Ei.js} +1 -1
  21. package/assets/{blockDiagram-38ab4fdb-B9BxtRcE.js → blockDiagram-38ab4fdb-DWGlT04d.js} +1 -1
  22. package/assets/{browser-CK6xKVG3.js → browser-BlDolpRT.js} +1 -1
  23. package/assets/{c4Diagram-3d4e48cf-l1vuEfws.js → c4Diagram-3d4e48cf-D4FViX2F.js} +1 -1
  24. package/assets/{c4Diagram-3d4e48cf-B7o3_NGM.js → c4Diagram-3d4e48cf-D6HbI2bj.js} +1 -1
  25. package/assets/{canvas-insertion-6qsJRfKC.js → canvas-insertion-BZAyMFnR.js} +1 -1
  26. package/assets/channel-DHHHwu9d.js +1 -0
  27. package/assets/channel-DbaY041U.js +1 -0
  28. package/assets/{classDiagram-70f12bd4-BxdM_ZFq.js → classDiagram-70f12bd4-BJiXLgfR.js} +1 -1
  29. package/assets/{classDiagram-70f12bd4-C5PI5m3K.js → classDiagram-70f12bd4-P5-MZZHm.js} +1 -1
  30. package/assets/{classDiagram-v2-f2320105-D2WGupMF.js → classDiagram-v2-f2320105-BckUVKrQ.js} +1 -1
  31. package/assets/{classDiagram-v2-f2320105-CRLBLeIT.js → classDiagram-v2-f2320105-BlMVbuKh.js} +1 -1
  32. package/assets/{clipper-D9tfnKC1.js → clipper-BkGBD2Ma.js} +1 -1
  33. package/assets/clone-B9352qPQ.js +1 -0
  34. package/assets/{createText-2e5e7dd3-B8mv8HgF.js → createText-2e5e7dd3-BLEzJgyq.js} +1 -1
  35. package/assets/{createText-2e5e7dd3-CWQBEaI7.js → createText-2e5e7dd3-_0asARpb.js} +1 -1
  36. package/assets/{edges-e0da2a9e-CW611sej.js → edges-e0da2a9e-BvNEeRN2.js} +1 -1
  37. package/assets/{edges-e0da2a9e-CiSIgajX.js → edges-e0da2a9e-Su9We6Oe.js} +1 -1
  38. package/assets/{erDiagram-9861fffd-B60hPtiy.js → erDiagram-9861fffd-B-TnweRY.js} +1 -1
  39. package/assets/{erDiagram-9861fffd-Bq-lh9QY.js → erDiagram-9861fffd-ChF_4VVA.js} +1 -1
  40. package/assets/{flowDb-956e92f1-Bz6i22S1.js → flowDb-956e92f1-BklqjU-F.js} +1 -1
  41. package/assets/{flowDb-956e92f1-CVT7Imrs.js → flowDb-956e92f1-CpHT5-s-.js} +1 -1
  42. package/assets/{flowDiagram-66a62f08-e10-kMn8.js → flowDiagram-66a62f08-BW0lq2iO.js} +1 -1
  43. package/assets/{flowDiagram-66a62f08-CRiWeGax.js → flowDiagram-66a62f08-CM-ufoRy.js} +1 -1
  44. package/assets/flowDiagram-v2-96b9c2cf-CXd4cAmC.js +1 -0
  45. package/assets/flowDiagram-v2-96b9c2cf-WaERXGrn.js +1 -0
  46. package/assets/{flowchart-elk-definition-4a651766-CBnyqo_M.js → flowchart-elk-definition-4a651766-BHXMQM8F.js} +1 -1
  47. package/assets/{flowchart-elk-definition-4a651766-DKGRcOAx.js → flowchart-elk-definition-4a651766-BNNCQnvT.js} +1 -1
  48. package/assets/{ganttDiagram-c361ad54-mhde3_of.js → ganttDiagram-c361ad54-BMznP5js.js} +1 -1
  49. package/assets/{ganttDiagram-c361ad54-D19CTSCa.js → ganttDiagram-c361ad54-Cn_w4SQu.js} +1 -1
  50. package/assets/{gitGraphDiagram-72cf32ee-BTRFRUeL.js → gitGraphDiagram-72cf32ee-CcqxYifa.js} +1 -1
  51. package/assets/{gitGraphDiagram-72cf32ee-BPmLlXIw.js → gitGraphDiagram-72cf32ee-HNSkomMm.js} +1 -1
  52. package/assets/{graph-DIg8rY1E.js → graph-2O9SKVX0.js} +1 -1
  53. package/assets/{graph-B1ieZuJT.js → graph-D24U5F9b.js} +1 -1
  54. package/assets/{index-3862675e-CAW4PMyX.js → index-3862675e-kPXP30L6.js} +1 -1
  55. package/assets/{index-3862675e-BFVjQZrI.js → index-3862675e-wtTLssRq.js} +1 -1
  56. package/assets/{index-o4MkHJtB.js → index-7Yy5taJZ.js} +1 -1
  57. package/assets/{index-D0pBPzvH.js → index-9lQYp-F3.js} +1 -1
  58. package/assets/{index-cFN27HDb.js → index-BCZHTjCF.js} +1 -1
  59. package/assets/{index-zNq6WR1M.js → index-BELf2XK1.js} +1 -1
  60. package/assets/{index-CAmlVCIf.js → index-BJiKHIU5.js} +1 -1
  61. package/assets/{index-sZWFW1o8.js → index-BfJrMjzE.js} +1 -1
  62. package/assets/{index-Dszi0QdY.js → index-BgTSdPjs.js} +1 -1
  63. package/assets/{index-A3FZLzj3.js → index-BnBH1zrC.js} +1 -1
  64. package/assets/{index-Byg7B0_b.js → index-BnuBC6-d.js} +1 -1
  65. package/assets/{index-DLYbtrPe.js → index-BvjfhvDI.js} +1 -1
  66. package/assets/{index-BVd4ZdJq.js → index-C66Oc7kp.js} +1 -1
  67. package/assets/{index-B5h3vVYf.js → index-C8BMcDy_.js} +1 -1
  68. package/assets/{index-O1yzWoAv.js → index-CD0uXSEJ.js} +1 -1
  69. package/assets/{index-Dsn0zIY5.js → index-CDI7kJJr.js} +1 -1
  70. package/assets/{index-Cxhc7DpJ.js → index-CHYWTMjD.js} +1 -1
  71. package/assets/{index-BnOaEPvW.js → index-CIR5517N.js} +1 -1
  72. package/assets/{index-DsQmr35F.js → index-CSh9cI-m.js} +1 -1
  73. package/assets/{index-sq_FndL-.js → index-Cdm1s3zH.js} +1 -1
  74. package/assets/{index-Cs7bP6R-.js → index-Ce_zjJd0.js} +1 -1
  75. package/assets/{index-DXVriIPX.js → index-Cf-6nhZx.js} +3 -3
  76. package/assets/{index-DCn6TEiD.js → index-CszzzzlU.js} +3 -3
  77. package/assets/{index-LfJyON59.js → index-D057A5AW.js} +1 -1
  78. package/assets/{index-BwMXzWpM.js → index-D0nupp1L.js} +1 -1
  79. package/assets/{index-BYfSEJIM.js → index-D5ni4ZMT.js} +2 -2
  80. package/assets/{index-BRccxBUA.js → index-DKZkufa4.js} +1 -1
  81. package/assets/{index-WDtJA1fY.js → index-Duz4qBVw.js} +1 -1
  82. package/assets/{index-Dtw21-1a.js → index-DxlqWfyM.js} +1 -1
  83. package/assets/{index-DUi1yiuN.js → index-DzSyiFE3.js} +1 -1
  84. package/assets/{index-Cgt6J1qz.js → index-ESZ1UttR.js} +1 -1
  85. package/assets/{index-CysE-UTz.js → index-oiyTGfuR.js} +1 -1
  86. package/assets/{index-u7vr_P_s.js → index-q9Vudaup.js} +1 -1
  87. package/assets/{index-C3HRC3b5.js → index-te4VWNfY.js} +1 -1
  88. package/assets/{infoDiagram-f8f76790-Dmv1egEN.js → infoDiagram-f8f76790-CQWNDm6d.js} +1 -1
  89. package/assets/{infoDiagram-f8f76790-C9LQ9jd5.js → infoDiagram-f8f76790-D4GOLEO3.js} +1 -1
  90. package/assets/{journeyDiagram-49397b02-8CnesQvB.js → journeyDiagram-49397b02-2ir0vod-.js} +1 -1
  91. package/assets/{journeyDiagram-49397b02-LV1k8ByA.js → journeyDiagram-49397b02-BIR-UXT9.js} +1 -1
  92. package/assets/{layout-3nkAix10.js → layout-CYzCl7YP.js} +1 -1
  93. package/assets/{layout-BW8C-Xw4.js → layout-Cjlcubqs.js} +1 -1
  94. package/assets/{line-DDWqaSCo.js → line-B6TatEZ8.js} +1 -1
  95. package/assets/{line-U1joDaO1.js → line-qfwz7WRO.js} +1 -1
  96. package/assets/{linear-D8frs5RT.js → linear-GuBoF0OP.js} +1 -1
  97. package/assets/{linear-3k1Xl9ve.js → linear-ssbBIRl5.js} +1 -1
  98. package/assets/{main-hjIskWwz.js → main-B6qbLicq.js} +8 -8
  99. package/assets/{mermaid.core-BlObAm7H.js → mermaid.core-DOJyKoHR.js} +3 -3
  100. package/assets/{mindmap-definition-fc14e90a-go-0aDNp.js → mindmap-definition-fc14e90a-BN4fqdNM.js} +1 -1
  101. package/assets/{mindmap-definition-fc14e90a-DRTqIBGi.js → mindmap-definition-fc14e90a-qPR072_x.js} +1 -1
  102. package/assets/{model-benchmark-launcher-Dhybe1Ps.js → model-benchmark-launcher-CUPxnAZr.js} +1 -1
  103. package/assets/{model-benchmark-service-BlgtfJ25.js → model-benchmark-service-C3taFBGp.js} +1 -1
  104. package/assets/{model-selection-C9DVcl8A.js → model-selection-Da4xzp54.js} +1 -1
  105. package/assets/{photo-wall-splitter-BSRMMrLk.js → photo-wall-splitter-DN8Hms8E.js} +1 -1
  106. package/assets/{pieDiagram-8a3498a8-OgnCNkdZ.js → pieDiagram-8a3498a8-6gjBTuiK.js} +1 -1
  107. package/assets/{pieDiagram-8a3498a8-DsU04FDA.js → pieDiagram-8a3498a8-B_B-oMBm.js} +1 -1
  108. package/assets/{quadrantDiagram-120e2f19-CAKix819.js → quadrantDiagram-120e2f19-CGIYsVeK.js} +1 -1
  109. package/assets/{quadrantDiagram-120e2f19-B-qdqCsc.js → quadrantDiagram-120e2f19-DQlP5fyR.js} +1 -1
  110. package/assets/{requirementDiagram-deff3bca-BFiAHorQ.js → requirementDiagram-deff3bca-BhadGJas.js} +1 -1
  111. package/assets/{requirementDiagram-deff3bca-DCvuwhP4.js → requirementDiagram-deff3bca-CZrZs6WH.js} +1 -1
  112. package/assets/{sankeyDiagram-04a897e0-CW0FxDIH.js → sankeyDiagram-04a897e0-CYbsYQIC.js} +1 -1
  113. package/assets/{sankeyDiagram-04a897e0-DynB_N5t.js → sankeyDiagram-04a897e0-DLMtKqV7.js} +1 -1
  114. package/assets/{sequenceDiagram-704730f1-C3kzvK6i.js → sequenceDiagram-704730f1-CnMi1-vV.js} +1 -1
  115. package/assets/{sequenceDiagram-704730f1-iLPkDpBi.js → sequenceDiagram-704730f1-D5_Tbq78.js} +1 -1
  116. package/assets/{settings-dialog-CcLfJFr_.js → settings-dialog-BVG80WDy.js} +1 -1
  117. package/assets/{skill-dsl-parser-DrFEUbDY.js → skill-dsl-parser-C252Shcy.js} +1 -1
  118. package/assets/{stateDiagram-587899a1-fLTDppNO.js → stateDiagram-587899a1-BStwFkNh.js} +1 -1
  119. package/assets/{stateDiagram-587899a1-DbwUO5DV.js → stateDiagram-587899a1-DYdXq59h.js} +1 -1
  120. package/assets/{stateDiagram-v2-d93cdb3a-DzR2PasK.js → stateDiagram-v2-d93cdb3a--y2o64Ew.js} +1 -1
  121. package/assets/{stateDiagram-v2-d93cdb3a-aZJTxhK8.js → stateDiagram-v2-d93cdb3a-IdPKDi36.js} +1 -1
  122. package/assets/{styles-6aaf32cf-C_VEAaHX.js → styles-6aaf32cf-4WFibVVF.js} +1 -1
  123. package/assets/{styles-6aaf32cf-C5JfMGYv.js → styles-6aaf32cf-Cm63YNOe.js} +1 -1
  124. package/assets/{styles-9a916d00-BYSJ54L0.js → styles-9a916d00-B49ieQxk.js} +1 -1
  125. package/assets/{styles-9a916d00-C3gY_lFJ.js → styles-9a916d00-D3LwlgPD.js} +1 -1
  126. package/assets/{styles-c10674c1-ANPmaoE9.js → styles-c10674c1-DJhcCs3x.js} +1 -1
  127. package/assets/{styles-c10674c1-DXxQEnvg.js → styles-c10674c1-cbwmIB4x.js} +1 -1
  128. package/assets/{svgDrawCommon-08f97a94-c2dOJxSO.js → svgDrawCommon-08f97a94-C5ek8a-c.js} +1 -1
  129. package/assets/{svgDrawCommon-08f97a94-BVjA84-b.js → svgDrawCommon-08f97a94-c77e0hhb.js} +1 -1
  130. package/assets/{timeline-definition-85554ec2-6QIdYNFS.js → timeline-definition-85554ec2-7ZMOJP7x.js} +1 -1
  131. package/assets/{timeline-definition-85554ec2-BST8-Dw9.js → timeline-definition-85554ec2-BIhOlyVe.js} +1 -1
  132. package/assets/{tool-windows-Bd5iqcJh.js → tool-windows-BTXOQvEU.js} +10 -10
  133. package/assets/{ttd-dialog-Chz4Dc5q.js → ttd-dialog-CMzq1PeM.js} +4 -4
  134. package/assets/{use-runtime-models-NPMCne8X.js → use-runtime-models-C_YMetmY.js} +1 -1
  135. package/assets/{useCharacters-Yt_yZunw.js → useCharacters-6F7LfBD2.js} +1 -1
  136. package/assets/{useWorkflowSubmission-DNz90nBd.js → useWorkflowSubmission-B-0oH5Q6.js} +2 -2
  137. package/assets/{video-analyze-cG43kQp7.js → video-analyze-gJnLIFVx.js} +1 -1
  138. package/assets/{video-generation-CY32Hcvy.js → video-generation-D0RudPQ8.js} +1 -1
  139. package/assets/{video-recovery-service-DqRVY2GL.js → video-recovery-service-CRZVLLWA.js} +1 -1
  140. package/assets/{workflow-generation-utils-CqQgPCFy.js → workflow-generation-utils-5aqKk8qR.js} +2 -2
  141. package/assets/{workflow-submission-service-C55NPNuz.js → workflow-submission-service-C9Ph3Y2w.js} +1 -1
  142. package/assets/{xychartDiagram-e933f94c-DY34Q03N.js → xychartDiagram-e933f94c-9bdjNrcG.js} +1 -1
  143. package/assets/{xychartDiagram-e933f94c-DD9JQg-b.js → xychartDiagram-e933f94c-D6a2PcvQ.js} +1 -1
  144. package/changelog.json +15 -0
  145. package/idle-prefetch-manifest.json +302 -302
  146. package/manifest.json +3 -3
  147. package/package.json +1 -1
  148. package/precache-manifest.json +6 -6
  149. package/sw.js +5 -5
  150. package/version.json +6 -3
  151. package/assets/channel-Dx9ePqRL.js +0 -1
  152. package/assets/channel-YfSSwDXj.js +0 -1
  153. package/assets/clone-DSiLnhfM.js +0 -1
  154. package/assets/flowDiagram-v2-96b9c2cf-Bqr3L3y4.js +0 -1
  155. package/assets/flowDiagram-v2-96b9c2cf-gCWf76DS.js +0 -1
@@ -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 W,aw as R,eI as F,dj as M,ge as _,bE as C,W as P,P as D,G as J,l as X,kC as $,kD as K,kE as B,h1 as E,kF as G,kG as q,hH as U,kH as L,kI as N,g$ as S,kJ as Z,h0 as I,iD as b,kK as j,kL as H,kM as p,kN as z}from"./tool-windows-Bd5iqcJh.js";let v=null;function de(m){v=m}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 o of r)if((a=o.workflow.steps)==null?void 0:a.some(i=>i.mcp===t))return o;return r.sort((o,n)=>(n.createdAt||0)-(o.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:o}=await h(async()=>{const{parseMarkdownToCards:d}=await import("./tool-windows-Bd5iqcJh.js").then(g=>g.oO);return{parseMarkdownToCards:d}},__vite__mapDeps([0]),import.meta.url),{insertCardsToCanvas:n}=await h(async()=>{const{insertCardsToCanvas:d}=await import("./tool-windows-Bd5iqcJh.js").then(g=>g.oP);return{insertCardsToCanvas:d}},__vite__mapDeps([0]),import.meta.url);let i=s||this.getInsertionPoint(t),c=0;for(const d of r){const{type:g,content:u,metadata:y}=d;switch(g){case"text":{const w=o(u);if(w&&w.length>0){const x=Math.round(window.innerWidth*.5);n(t,w,i,x);const A=Math.min(w.length,3),Y=Math.ceil(w.length/3);i=[i[0],i[1]+Y*140+a]}else W.insertText(t,i,u),i=[i[0],i[1]+100+a];c++;break}case"image":await M(t,u,i,!1,{width:400,height:400},!1,!0),i=[i[0],i[1]+400+a],c++;break;case"video":await F(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 x={url:this.svgToDataUrl(u),width:400,height:400};W.insertImage(t,x,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(o){return{success:!1,error:o.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:o=20}=e;if(!r||r.length===0)return{success:!1,error:"没有要插入的内容",type:"error"};try{let n=s||this.getInsertionPoint(t),i=0;for(const c of r){const{type:l,content:d,metadata:g}=c;switch(l){case"image":await M(t,d,n,!1,{width:400,height:400},!1,!0),n=[n[0],n[1]+400+a],i++;break;case"video":await F(t,d,n),n=[n[0],n[1]+300+a],i++;break;case"audio":await R(t,d,g,n,!1,!0),n=[n[0],n[1]+160+a],i++;break;case"text":W.insertText(t,n,d),n=[n[0],n[1]+100+a],i++;break;case"svg":const y={url:this.svgToDataUrl(d),width:400,height:400};W.insertImage(t,y,n),n=[n[0],n[1]+400+a],i++;break}}return{success:!0,data:{insertedCount:i},type:"canvas"}}catch(n){return{success:!1,error:n.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-DCn6TEiD.js").then(g=>g.aq);return{parseMermaidToDrawnix:d}},__vite__mapDeps([0]),import.meta.url),a=this.extractCodeBlock(r,"mermaid");let o;try{o=await s(a)}catch{o=await s(a.replace(/"/g,"'"))}const{elements:n}=o;if(!n||n.length===0)return{success:!1,error:"Mermaid 解析未生成元素",type:"error"};const i=this.findWorkZoneForMCP(t,"insert_mermaid"),c=this.getViewportCenter(t),l=this.insertElementsToCanvasAtPoint(t,n,c);return l.success&&(requestAnimationFrame(()=>{this.centerInsertedElementsInViewport(t,n.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-Dszi0QdY.js");return{parseMarkdownToDrawnix:l}},__vite__mapDeps([0]),import.meta.url),a=this.extractCodeBlock(r,"markdown");let o;try{o=await s(a)}catch{o=await s(a.replace(/"/g,"'"))}if(!o)return{success:!1,error:"Markdown 解析未生成元素",type:"error"};o.points=[[0,0]];const n=this.findWorkZoneForMCP(t,"insert_mindmap"),i=this.getViewportCenter(t),c=this.insertElementsToCanvasAtPoint(t,[o],i);return c.success?(requestAnimationFrame(()=>{this.centerInsertedElementsInViewport(t,1)}),n&&setTimeout(()=>{T.removeWorkZone(t,n.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 o=this.extractSvgCode(r),n=this.normalizeSvg(o),i=this.parseSvgDimensions(n),c=Math.min(Math.max(s,100),800),l=i.height/i.width,d=c*l,g=this.svgToDataUrl(n);let u=a||this.getInsertionPoint(t);u=[u[0]-c/2,u[1]];const y={url:g,width:c,height:d};W.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(o){return{success:!1,error:`SVG 插入失败: ${o.message}`,type:"error"}}}async handleGridImage(e){try{const{createGridImageTask:t}=await h(async()=>{const{createGridImageTask:s}=await import("./tool-windows-Bd5iqcJh.js").then(a=>a.oX);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-Bd5iqcJh.js").then(a=>a.oY);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:o}=await import("./tool-windows-Bd5iqcJh.js").then(n=>n.oS);return{splitAndInsertImages:o}},__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-Bd5iqcJh.js").then(a=>a.o_);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-Bd5iqcJh.js").then(o=>o.oZ);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-Bd5iqcJh.js").then(o=>o.oJ);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-CY32Hcvy.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(o=>o.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 o of e.children)try{const n=C(e,[o],!1),i=n.y+n.height;i>s&&(s=i,a=n.x+n.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,P.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,P.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=D.getBoardContainer(e).getBoundingClientRect(),s=e.viewport.zoom,a=J(e);if(!a)return[0,0];const o=a[0]+r.width/(2*s),n=a[1]+r.height/(2*s);return[o,n]}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),n=D.getBoardContainer(e).getBoundingClientRect(),i=80,c=n.width-i*2,l=n.height-i*2,d=c/a.width,g=l/a.height;let u=Math.min(d,g);u=Math.min(Math.max(u,.2),1.5);const y=a.x+a.width/2,w=a.y+a.height/2,x=y-n.width/(2*u),A=w-n.height/(2*u);X.updateViewport(e,[x,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"),o=e.match(a);if(o)return o[1].trim();const n=new RegExp(`^${t}\\s*\\n`,"i");return n.test(e.trim())?e.trim().replace(n,"").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,o]=t[1].split(/\s+/).map(Number);if(a&&o)return{width:a,height:o}}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 n=t.transaction(k,"readwrite").objectStore(k).put(e);n.onerror=()=>{r()},n.onsuccess=()=>r()})}catch{}}async getWorkflow(e){if(!e)return null;const t=await this.getDB();return new Promise((r,s)=>{const n=t.transaction(k,"readonly").objectStore(k).get(e);n.onerror=()=>s(n.error),n.onsuccess=()=>r(n.result||null)})}async deleteWorkflow(e){if(!e)return;const t=await this.getDB();return new Promise((r,s)=>{const n=t.transaction(k,"readwrite").objectStore(k).delete(e);n.onerror=()=>s(n.error),n.onsuccess=()=>r()})}close(){}}const f=new ee;function te(m){const e=m.steps.find(t=>t.status==="failed");return(e==null?void 0:e.error)||"Unknown error"}function re(m){return m.steps.filter(e=>e.status!=="pending"?!1:e.dependsOn&&e.dependsOn.length>0?e.dependsOn.every(t=>{const r=m.steps.find(s=>s.id===t);return(r==null?void 0:r.status)==="completed"}):!0)}function se(m){const e={...m.params||{}};return m.resolution!==void 0&&e.resolution===void 0&&(e.resolution=m.resolution),m.quality!==void 0&&e.quality===void 0&&(e.quality=m.quality),typeof m.count=="number"&&Number.isFinite(m.count)&&e.n===void 0&&(e.n=m.count),Object.keys(e).length>0?e:void 0}function ae(m,e){return{prompt:m,model:e.model,modelRef:e.modelRef||null,size:e.size,resolution:e.resolution,quality:e.quality,generationMode:e.generationMode,referenceImages:e.referenceImages&&e.referenceImages.length>0?e.referenceImages:void 0,maskImage:e.maskImage,inputFidelity:e.inputFidelity,background:e.background,outputFormat:e.outputFormat,outputCompression:e.outputCompression,uploadedImages:e.uploadedImages&&e.uploadedImages.length>0?e.uploadedImages:void 0,count:e.count,params:se(e)}}async function ne(m,e={}){var d,g;const t={prompt:m,...e},r=B(t,E.IMAGE);if(!r.valid)throw new Error(r.errors.join(", "));const s=G(t);if(await q.waitForInitialization(),!U("image",e.modelRef||e.model))throw new Error("未配置 API Key,请在设置中配置");const a=L(),o=Date.now(),n=ae(s.prompt,e);await N.createTask(a,"image",n),S.trackExternalTask({id:a,type:E.IMAGE,status:I.PROCESSING,params:n,createdAt:o,updatedAt:o,startedAt:o,executionPhase:Z.SUBMITTING}),(d=e.onTaskCreated)==null||d.call(e,a);const i={taskId:a,prompt:s.prompt,model:e.model,modelRef:e.modelRef||null,size:e.size,resolution:e.resolution,generationMode:e.generationMode,quality:e.quality,referenceImages:e.referenceImages,maskImage:e.maskImage,inputFidelity:e.inputFidelity,background:e.background,outputFormat:e.outputFormat,outputCompression:e.outputCompression,uploadedImages:e.uploadedImages,count:e.count,params:e.params};await(e.forceMainThread?b.getFallbackExecutor():await b.getExecutor()).generateImage(i,{signal:e.signal});const l=await j(a,{signal:e.signal,onProgress:u=>{S.syncTaskFromStorage(a,u)}});return!l.success||!l.task?{task:l.task||{id:a,type:E.IMAGE,status:I.FAILED,params:{prompt:m},createdAt:Date.now(),updatedAt:Date.now(),error:{code:"GENERATION_ERROR",message:l.error||"图片生成失败"}}}:{task:l.task,url:(g=l.task.result)==null?void 0:g.url}}async function oe(m,e={}){var l,d,g;const t={prompt:m,...e},r=B(t,E.VIDEO);if(!r.valid)throw new Error(r.errors.join(", "));const s=G(t);if(await q.waitForInitialization(),!U("video",e.modelRef||e.model))throw new Error("未配置 API Key,请在设置中配置");const a=L(),o=Date.now();await N.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:E.VIDEO,status:I.PROCESSING,params:{prompt:s.prompt,model:e.model||"veo3",modelRef:e.modelRef||null,size:e.size,params:e.params},createdAt:o,updatedAt:o,startedAt:o,executionPhase:Z.SUBMITTING,progress:0}),(l=e.onTaskCreated)==null||l.call(e,a);const n={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?b.getFallbackExecutor():await b.getExecutor()).generateVideo(n,{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:E.VIDEO,status:I.FAILED,params:{prompt:m},createdAt:Date.now(),updatedAt:Date.now(),error:{code:"GENERATION_ERROR",message:c.error||"视频生成失败"}}}:{task:c.task,url:(g=c.task.result)==null?void 0:g.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 f.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 f.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 f.getWorkflow(e);if(!t)return;const r=t.steps.some(n=>n.status==="pending"),s=t.steps.some(n=>n.status==="running"),a=t.steps.some(n=>n.status==="pending_main_thread");if(!r&&!s&&!a)return;t.steps.forEach(n=>{n.status==="running"&&(n.status="pending")}),this.workflows.set(e,t);const o=new AbortController;this.abortControllers.set(e,o),this.executeWorkflow(e).catch(n=>{console.error("[WorkflowEngine] Resume workflow failed:",e,n)})}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 f.saveWorkflow(t)}catch(o){console.warn("[WorkflowEngine] executeWorkflow: IDB 保存失败,继续:",o)}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(o=>o.status==="completed"||o.status==="skipped");t.steps.some(o=>o.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 f.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 f.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 f.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 f.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 f.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,o;switch(console.log("[WorkflowEngine] executeToolStep:",t.mcp,"stepId:",t.id,"forceFallback:",this.options.forceFallbackExecutor),t.mcp){case"generate_image":{const n=await ne(t.args.prompt,{model:t.args.model,modelRef:t.args.modelRef||null,size:t.args.size,referenceImages:t.args.referenceImages,generationMode:t.args.generationMode,maskImage:t.args.maskImage,inputFidelity:t.args.inputFidelity,background:t.args.background,outputFormat:t.args.outputFormat,outputCompression:t.args.outputCompression,count:t.args.count,params:t.args.params,forceMainThread:this.options.forceFallbackExecutor,signal:r,onTaskCreated:i=>{t.result={taskId:i},f.saveWorkflow(e)}});if(n.task.status===I.FAILED)throw new Error(((s=n.task.error)==null?void 0:s.message)||"Image generation failed");t.result={...n.task.result,taskId:n.task.id};break}case"generate_video":{const n=await oe(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},f.saveWorkflow(e)}});if(n.task.status===I.FAILED)throw new Error(((a=n.task.error)==null?void 0:a.message)||"Video generation failed");t.result={...n.task.result,taskId:n.task.id};break}case"generate_text":{const c=(await b.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 f.saveWorkflow(e),this.emitEvent({type:"steps_added",workflowId:e.id,steps:[d]})}break}case"ai_analyze":{const n=b.getFallbackExecutor(),i=t.id,c=await n.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 f.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=((o=e.metadata)==null?void 0:o.rawInput)||"",g=d.trim()?`# ${d.trim()}
2
+ import{hC as T,_ as h,aH as W,aw as R,eI as F,dj as M,ge as _,bE as C,W as P,P as D,G as J,l as X,kC as $,kD as K,kE as B,h1 as E,kF as G,kG as q,hH as U,kH as L,kI as N,g$ as S,kJ as Z,h0 as I,iD as b,kK as j,kL as H,kM as p,kN as z}from"./tool-windows-BTXOQvEU.js";let v=null;function de(m){v=m}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 o of r)if((a=o.workflow.steps)==null?void 0:a.some(i=>i.mcp===t))return o;return r.sort((o,n)=>(n.createdAt||0)-(o.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:o}=await h(async()=>{const{parseMarkdownToCards:d}=await import("./tool-windows-BTXOQvEU.js").then(g=>g.oO);return{parseMarkdownToCards:d}},__vite__mapDeps([0]),import.meta.url),{insertCardsToCanvas:n}=await h(async()=>{const{insertCardsToCanvas:d}=await import("./tool-windows-BTXOQvEU.js").then(g=>g.oP);return{insertCardsToCanvas:d}},__vite__mapDeps([0]),import.meta.url);let i=s||this.getInsertionPoint(t),c=0;for(const d of r){const{type:g,content:u,metadata:y}=d;switch(g){case"text":{const w=o(u);if(w&&w.length>0){const x=Math.round(window.innerWidth*.5);n(t,w,i,x);const A=Math.min(w.length,3),Y=Math.ceil(w.length/3);i=[i[0],i[1]+Y*140+a]}else W.insertText(t,i,u),i=[i[0],i[1]+100+a];c++;break}case"image":await M(t,u,i,!1,{width:400,height:400},!1,!0),i=[i[0],i[1]+400+a],c++;break;case"video":await F(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 x={url:this.svgToDataUrl(u),width:400,height:400};W.insertImage(t,x,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(o){return{success:!1,error:o.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:o=20}=e;if(!r||r.length===0)return{success:!1,error:"没有要插入的内容",type:"error"};try{let n=s||this.getInsertionPoint(t),i=0;for(const c of r){const{type:l,content:d,metadata:g}=c;switch(l){case"image":await M(t,d,n,!1,{width:400,height:400},!1,!0),n=[n[0],n[1]+400+a],i++;break;case"video":await F(t,d,n),n=[n[0],n[1]+300+a],i++;break;case"audio":await R(t,d,g,n,!1,!0),n=[n[0],n[1]+160+a],i++;break;case"text":W.insertText(t,n,d),n=[n[0],n[1]+100+a],i++;break;case"svg":const y={url:this.svgToDataUrl(d),width:400,height:400};W.insertImage(t,y,n),n=[n[0],n[1]+400+a],i++;break}}return{success:!0,data:{insertedCount:i},type:"canvas"}}catch(n){return{success:!1,error:n.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-CszzzzlU.js").then(g=>g.aq);return{parseMermaidToDrawnix:d}},__vite__mapDeps([0]),import.meta.url),a=this.extractCodeBlock(r,"mermaid");let o;try{o=await s(a)}catch{o=await s(a.replace(/"/g,"'"))}const{elements:n}=o;if(!n||n.length===0)return{success:!1,error:"Mermaid 解析未生成元素",type:"error"};const i=this.findWorkZoneForMCP(t,"insert_mermaid"),c=this.getViewportCenter(t),l=this.insertElementsToCanvasAtPoint(t,n,c);return l.success&&(requestAnimationFrame(()=>{this.centerInsertedElementsInViewport(t,n.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-BgTSdPjs.js");return{parseMarkdownToDrawnix:l}},__vite__mapDeps([0]),import.meta.url),a=this.extractCodeBlock(r,"markdown");let o;try{o=await s(a)}catch{o=await s(a.replace(/"/g,"'"))}if(!o)return{success:!1,error:"Markdown 解析未生成元素",type:"error"};o.points=[[0,0]];const n=this.findWorkZoneForMCP(t,"insert_mindmap"),i=this.getViewportCenter(t),c=this.insertElementsToCanvasAtPoint(t,[o],i);return c.success?(requestAnimationFrame(()=>{this.centerInsertedElementsInViewport(t,1)}),n&&setTimeout(()=>{T.removeWorkZone(t,n.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 o=this.extractSvgCode(r),n=this.normalizeSvg(o),i=this.parseSvgDimensions(n),c=Math.min(Math.max(s,100),800),l=i.height/i.width,d=c*l,g=this.svgToDataUrl(n);let u=a||this.getInsertionPoint(t);u=[u[0]-c/2,u[1]];const y={url:g,width:c,height:d};W.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(o){return{success:!1,error:`SVG 插入失败: ${o.message}`,type:"error"}}}async handleGridImage(e){try{const{createGridImageTask:t}=await h(async()=>{const{createGridImageTask:s}=await import("./tool-windows-BTXOQvEU.js").then(a=>a.oX);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-BTXOQvEU.js").then(a=>a.oY);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:o}=await import("./tool-windows-BTXOQvEU.js").then(n=>n.oS);return{splitAndInsertImages:o}},__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-BTXOQvEU.js").then(a=>a.o_);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-BTXOQvEU.js").then(o=>o.oZ);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-BTXOQvEU.js").then(o=>o.oJ);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-D0RudPQ8.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(o=>o.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 o of e.children)try{const n=C(e,[o],!1),i=n.y+n.height;i>s&&(s=i,a=n.x+n.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,P.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,P.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=D.getBoardContainer(e).getBoundingClientRect(),s=e.viewport.zoom,a=J(e);if(!a)return[0,0];const o=a[0]+r.width/(2*s),n=a[1]+r.height/(2*s);return[o,n]}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),n=D.getBoardContainer(e).getBoundingClientRect(),i=80,c=n.width-i*2,l=n.height-i*2,d=c/a.width,g=l/a.height;let u=Math.min(d,g);u=Math.min(Math.max(u,.2),1.5);const y=a.x+a.width/2,w=a.y+a.height/2,x=y-n.width/(2*u),A=w-n.height/(2*u);X.updateViewport(e,[x,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"),o=e.match(a);if(o)return o[1].trim();const n=new RegExp(`^${t}\\s*\\n`,"i");return n.test(e.trim())?e.trim().replace(n,"").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,o]=t[1].split(/\s+/).map(Number);if(a&&o)return{width:a,height:o}}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 n=t.transaction(k,"readwrite").objectStore(k).put(e);n.onerror=()=>{r()},n.onsuccess=()=>r()})}catch{}}async getWorkflow(e){if(!e)return null;const t=await this.getDB();return new Promise((r,s)=>{const n=t.transaction(k,"readonly").objectStore(k).get(e);n.onerror=()=>s(n.error),n.onsuccess=()=>r(n.result||null)})}async deleteWorkflow(e){if(!e)return;const t=await this.getDB();return new Promise((r,s)=>{const n=t.transaction(k,"readwrite").objectStore(k).delete(e);n.onerror=()=>s(n.error),n.onsuccess=()=>r()})}close(){}}const f=new ee;function te(m){const e=m.steps.find(t=>t.status==="failed");return(e==null?void 0:e.error)||"Unknown error"}function re(m){return m.steps.filter(e=>e.status!=="pending"?!1:e.dependsOn&&e.dependsOn.length>0?e.dependsOn.every(t=>{const r=m.steps.find(s=>s.id===t);return(r==null?void 0:r.status)==="completed"}):!0)}function se(m){const e={...m.params||{}};return m.resolution!==void 0&&e.resolution===void 0&&(e.resolution=m.resolution),m.quality!==void 0&&e.quality===void 0&&(e.quality=m.quality),typeof m.count=="number"&&Number.isFinite(m.count)&&e.n===void 0&&(e.n=m.count),Object.keys(e).length>0?e:void 0}function ae(m,e){return{prompt:m,model:e.model,modelRef:e.modelRef||null,size:e.size,resolution:e.resolution,quality:e.quality,generationMode:e.generationMode,referenceImages:e.referenceImages&&e.referenceImages.length>0?e.referenceImages:void 0,maskImage:e.maskImage,inputFidelity:e.inputFidelity,background:e.background,outputFormat:e.outputFormat,outputCompression:e.outputCompression,uploadedImages:e.uploadedImages&&e.uploadedImages.length>0?e.uploadedImages:void 0,count:e.count,params:se(e)}}async function ne(m,e={}){var d,g;const t={prompt:m,...e},r=B(t,E.IMAGE);if(!r.valid)throw new Error(r.errors.join(", "));const s=G(t);if(await q.waitForInitialization(),!U("image",e.modelRef||e.model))throw new Error("未配置 API Key,请在设置中配置");const a=L(),o=Date.now(),n=ae(s.prompt,e);await N.createTask(a,"image",n),S.trackExternalTask({id:a,type:E.IMAGE,status:I.PROCESSING,params:n,createdAt:o,updatedAt:o,startedAt:o,executionPhase:Z.SUBMITTING}),(d=e.onTaskCreated)==null||d.call(e,a);const i={taskId:a,prompt:s.prompt,model:e.model,modelRef:e.modelRef||null,size:e.size,resolution:e.resolution,generationMode:e.generationMode,quality:e.quality,referenceImages:e.referenceImages,maskImage:e.maskImage,inputFidelity:e.inputFidelity,background:e.background,outputFormat:e.outputFormat,outputCompression:e.outputCompression,uploadedImages:e.uploadedImages,count:e.count,params:e.params};await(e.forceMainThread?b.getFallbackExecutor():await b.getExecutor()).generateImage(i,{signal:e.signal});const l=await j(a,{signal:e.signal,onProgress:u=>{S.syncTaskFromStorage(a,u)}});return!l.success||!l.task?{task:l.task||{id:a,type:E.IMAGE,status:I.FAILED,params:{prompt:m},createdAt:Date.now(),updatedAt:Date.now(),error:{code:"GENERATION_ERROR",message:l.error||"图片生成失败"}}}:{task:l.task,url:(g=l.task.result)==null?void 0:g.url}}async function oe(m,e={}){var l,d,g;const t={prompt:m,...e},r=B(t,E.VIDEO);if(!r.valid)throw new Error(r.errors.join(", "));const s=G(t);if(await q.waitForInitialization(),!U("video",e.modelRef||e.model))throw new Error("未配置 API Key,请在设置中配置");const a=L(),o=Date.now();await N.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:E.VIDEO,status:I.PROCESSING,params:{prompt:s.prompt,model:e.model||"veo3",modelRef:e.modelRef||null,size:e.size,params:e.params},createdAt:o,updatedAt:o,startedAt:o,executionPhase:Z.SUBMITTING,progress:0}),(l=e.onTaskCreated)==null||l.call(e,a);const n={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?b.getFallbackExecutor():await b.getExecutor()).generateVideo(n,{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:E.VIDEO,status:I.FAILED,params:{prompt:m},createdAt:Date.now(),updatedAt:Date.now(),error:{code:"GENERATION_ERROR",message:c.error||"视频生成失败"}}}:{task:c.task,url:(g=c.task.result)==null?void 0:g.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 f.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 f.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 f.getWorkflow(e);if(!t)return;const r=t.steps.some(n=>n.status==="pending"),s=t.steps.some(n=>n.status==="running"),a=t.steps.some(n=>n.status==="pending_main_thread");if(!r&&!s&&!a)return;t.steps.forEach(n=>{n.status==="running"&&(n.status="pending")}),this.workflows.set(e,t);const o=new AbortController;this.abortControllers.set(e,o),this.executeWorkflow(e).catch(n=>{console.error("[WorkflowEngine] Resume workflow failed:",e,n)})}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 f.saveWorkflow(t)}catch(o){console.warn("[WorkflowEngine] executeWorkflow: IDB 保存失败,继续:",o)}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(o=>o.status==="completed"||o.status==="skipped");t.steps.some(o=>o.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 f.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 f.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 f.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 f.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 f.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,o;switch(console.log("[WorkflowEngine] executeToolStep:",t.mcp,"stepId:",t.id,"forceFallback:",this.options.forceFallbackExecutor),t.mcp){case"generate_image":{const n=await ne(t.args.prompt,{model:t.args.model,modelRef:t.args.modelRef||null,size:t.args.size,referenceImages:t.args.referenceImages,generationMode:t.args.generationMode,maskImage:t.args.maskImage,inputFidelity:t.args.inputFidelity,background:t.args.background,outputFormat:t.args.outputFormat,outputCompression:t.args.outputCompression,count:t.args.count,params:t.args.params,forceMainThread:this.options.forceFallbackExecutor,signal:r,onTaskCreated:i=>{t.result={taskId:i},f.saveWorkflow(e)}});if(n.task.status===I.FAILED)throw new Error(((s=n.task.error)==null?void 0:s.message)||"Image generation failed");t.result={...n.task.result,taskId:n.task.id};break}case"generate_video":{const n=await oe(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},f.saveWorkflow(e)}});if(n.task.status===I.FAILED)throw new Error(((a=n.task.error)==null?void 0:a.message)||"Video generation failed");t.result={...n.task.result,taskId:n.task.id};break}case"generate_text":{const c=(await b.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 f.saveWorkflow(e),this.emitEvent({type:"steps_added",workflowId:e.id,steps:[d]})}break}case"ai_analyze":{const n=b.getFallbackExecutor(),i=t.id,c=await n.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 f.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=((o=e.metadata)==null?void 0:o.rawInput)||"",g=d.trim()?`# ${d.trim()}
3
3
 
4
4
  `:"",u={id:l,mcp:"insert_to_canvas",args:{items:[{type:"text",content:g+c.content}]},description:"将 AI 回复插入画布",status:"pending"};e.steps.push(u),await f.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 n=await this.options.executeMainThreadTool(t.mcp,t.args);if(!n.success)throw new Error(n.error||`${t.mcp} failed`);t.result=n.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 ie{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,o){const n=this.workflows.get(e);if(n){const i=n.steps.find(c=>c.id===t);i&&(i.status=r,i.result=s,i.error=a,i.duration=o)}this.events$.next({type:"step",workflowId:e,stepId:t,status:r,result:s,error:a,duration:o})}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",o={prompt:e.prompt,model:e.modelId,modelRef:e.modelRef||null};e.size&&(o.size=e.size),e.count&&e.count>1&&(o.count=e.count),e.duration&&(o.seconds=e.duration),t.length>0&&(o.referenceImages=t),e.extraParams&&(o.params=e.extraParams);const n=[],i=e.count||1;for(let l=0;l<i;l++)n.push({id:`step_${l}_${Math.random().toString(36).substr(2,9)}`,mcp:a,args:{...o,count:1},description:e.generationType==="video"?`生成视频 ${l+1}/${i}`:`生成图片 ${l+1}/${i}`,status:"pending"});return{id:r,name:e.generationType==="video"?"视频生成":"图片生成",steps:n,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(!b.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 o=await O.execute({operation:s,args:a});return{success:o.success,result:o.data,error:o.error}}catch(o){return{success:!1,error:o.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 ce=new ie,ue=Object.freeze(Object.defineProperty({__proto__:null,workflowSubmissionService:ce},Symbol.toStringTag,{value:"Module"}));export{ue as a,de as s,ce 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-DCn6TEiD.js";import{a as Qt}from"./createText-2e5e7dd3-B8mv8HgF.js";import{i as Kt}from"./init-Gi6I4Gst.js";import{o as Zt}from"./ordinal-Cboi1Yqb.js";import{l as ft}from"./linear-D8frs5RT.js";import{l as pt}from"./line-U1joDaO1.js";import"./tool-windows-Bd5iqcJh.js";import"./index-Cxhc7DpJ.js";import"./browser-CK6xKVG3.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-CszzzzlU.js";import{a as Qt}from"./createText-2e5e7dd3-BLEzJgyq.js";import{i as Kt}from"./init-Gi6I4Gst.js";import{o as Zt}from"./ordinal-Cboi1Yqb.js";import{l as ft}from"./linear-GuBoF0OP.js";import{l as pt}from"./line-qfwz7WRO.js";import"./tool-windows-BTXOQvEU.js";import"./index-CHYWTMjD.js";import"./browser-BlDolpRT.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()+`
@@ -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,aH as Ht,e as $t,z as Ut,aZ as ot,aJ as Ct,aL as qt,aY as jt,i as Gt}from"./mermaid.core-BlObAm7H.js";import{a as Qt}from"./createText-2e5e7dd3-CWQBEaI7.js";import{i as Kt}from"./init-A0kIFD9x.js";import{o as Zt}from"./ordinal-BRr1uYdk.js";import{l as ft}from"./linear-3k1Xl9ve.js";import{l as pt}from"./line-DDWqaSCo.js";import"./tool-windows-Bd5iqcJh.js";import"./array-B5oSNiGi.js";import"./path-CY0bYimO.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,aH as Ht,e as $t,z as Ut,aZ as ot,aJ as Ct,aL as qt,aY as jt,i as Gt}from"./mermaid.core-DOJyKoHR.js";import{a as Qt}from"./createText-2e5e7dd3-_0asARpb.js";import{i as Kt}from"./init-A0kIFD9x.js";import{o as Zt}from"./ordinal-BRr1uYdk.js";import{l as ft}from"./linear-ssbBIRl5.js";import{l as pt}from"./line-B6TatEZ8.js";import"./tool-windows-BTXOQvEU.js";import"./array-B5oSNiGi.js";import"./path-CY0bYimO.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()+`
package/changelog.json CHANGED
@@ -1,5 +1,20 @@
1
1
  {
2
2
  "versions": [
3
+ {
4
+ "version": "0.6.72",
5
+ "date": "2026-04-24",
6
+ "changes": {
7
+ "features": [],
8
+ "fixes": [
9
+ "确保更新安装时所有预缓存资源就绪后再提示升级"
10
+ ],
11
+ "improvements": [
12
+ "perf(sw): 优化空闲预取机制并移除调试日志"
13
+ ]
14
+ },
15
+ "type": "patch",
16
+ "highlights": "确保更新安装时所有预缓存资源就绪后再提示升级"
17
+ },
3
18
  {
4
19
  "version": "0.6.70",
5
20
  "date": "2026-04-24",