aitu-app 0.6.78 → 0.6.80

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 (203) hide show
  1. package/README.md +3 -3
  2. package/assets/CanvasAudioPlayer-CSFENxi6.js +2 -0
  3. package/assets/ChatDrawer-CWZQP5R5.css +1 -0
  4. package/assets/ChatDrawer-sVEVW11M.js +11 -0
  5. package/assets/ChatMessagesArea-Cnb94V8-.js +7 -0
  6. package/assets/ChatMessagesArea-PlF5AwzD.css +1 -0
  7. package/assets/DeferredAIInputBar-D99l6sBS.js +8 -0
  8. package/assets/DrawnixDeferredFeatures-78cIu-ev.js +2 -0
  9. package/assets/{KnowledgeBaseContent-DcX5Jofx.js → KnowledgeBaseContent-DZ-1fPZa.js} +10 -10
  10. package/assets/{MVCreator-DllHozYg.js → MVCreator-BV8KDR6E.js} +8 -8
  11. package/assets/ModelBenchmarkWorkbench-DL6r0Z_5.js +2 -0
  12. package/assets/MusicAnalyzer-D9Bpmhym.css +1 -0
  13. package/assets/{MusicAnalyzer-DDeT6g3c.js → MusicAnalyzer-DQtjf36o.js} +2 -2
  14. package/assets/{MusicAnalyzer-CHcQ5t4P.js → MusicAnalyzer-u_5sy56T.js} +1 -1
  15. package/assets/PromptHistoryTool-B-ktaOpK.js +2 -0
  16. package/assets/PromptHistoryTool-BH7hq916.css +1 -0
  17. package/assets/ResizableDivider-BpUFdkte.js +1 -0
  18. package/assets/TaskQueuePanel-BLD1r7_I.js +1 -0
  19. package/assets/{VideoAnalyzer-BSLz1FaI.js → VideoAnalyzer-Bjv9pyDs.js} +2 -2
  20. package/assets/ai-generation-preferences-service-BSpgVCHz.js +1 -0
  21. package/assets/arc-CnA_FoJK.js +1 -0
  22. package/assets/{arc-BU2KKCa_.js → arc-DDvk_-VM.js} +1 -1
  23. package/assets/{batch-image-generation-Bg68r_Ql.js → batch-image-generation-N-lwbjRE.js} +3 -3
  24. package/assets/{blockDiagram-38ab4fdb-BCGEnMME.js → blockDiagram-38ab4fdb-B2G4wjZe.js} +6 -6
  25. package/assets/{blockDiagram-38ab4fdb-CsZR5uC5.js → blockDiagram-38ab4fdb-DBkZWrKk.js} +1 -1
  26. package/assets/{browser-DpICcNby.js → browser-ZXTF4AKv.js} +1 -1
  27. package/assets/{c4Diagram-3d4e48cf-9fuiuFdV.js → c4Diagram-3d4e48cf-BFg-wccg.js} +1 -1
  28. package/assets/{c4Diagram-3d4e48cf-WM4wd_GR.js → c4Diagram-3d4e48cf-CmyNnfip.js} +1 -1
  29. package/assets/{canvas-insertion-CdUQF7IV.js → canvas-insertion-CKIoVZ9a.js} +1 -1
  30. package/assets/channel-BQh3J7kz.js +1 -0
  31. package/assets/channel-CPsF_uSp.js +1 -0
  32. package/assets/{classDiagram-70f12bd4-DcYDedz1.js → classDiagram-70f12bd4-BoP-e23u.js} +2 -2
  33. package/assets/{classDiagram-70f12bd4-CBVHTwQu.js → classDiagram-70f12bd4-UTHJc2XA.js} +1 -1
  34. package/assets/classDiagram-v2-f2320105-BeBc2H-D.js +2 -0
  35. package/assets/{classDiagram-v2-f2320105-jpCwaHEd.js → classDiagram-v2-f2320105-Bjwz5ljW.js} +1 -1
  36. package/assets/{clipper-jvd5rF5a.js → clipper-NoHaeWV4.js} +1 -1
  37. package/assets/clone-CA2KqVCK.js +1 -0
  38. package/assets/createText-2e5e7dd3-Bsu7vT-L.js +8 -0
  39. package/assets/{createText-2e5e7dd3-x5lOIwut.js → createText-2e5e7dd3-DrWUfa-s.js} +1 -1
  40. package/assets/{edges-e0da2a9e-CbrF4nbD.js → edges-e0da2a9e-B9sYOHRt.js} +1 -1
  41. package/assets/{edges-e0da2a9e-Ch6PBwWs.js → edges-e0da2a9e-DX4IQMED.js} +1 -1
  42. package/assets/{erDiagram-9861fffd-DSlNVuAZ.js → erDiagram-9861fffd-B-LfsIMf.js} +1 -1
  43. package/assets/{erDiagram-9861fffd-Bq07elcI.js → erDiagram-9861fffd-DPdud_LA.js} +1 -1
  44. package/assets/{flowDb-956e92f1-Ti5YC4Vv.js → flowDb-956e92f1-C3xKlizM.js} +1 -1
  45. package/assets/{flowDb-956e92f1-BqPCJlZp.js → flowDb-956e92f1-Ck5oiEta.js} +1 -1
  46. package/assets/{flowDiagram-66a62f08-CPDuG3rY.js → flowDiagram-66a62f08-Bkt2NoHM.js} +4 -4
  47. package/assets/{flowDiagram-66a62f08-D3GSABFi.js → flowDiagram-66a62f08-CJnxo6dI.js} +1 -1
  48. package/assets/flowDiagram-v2-96b9c2cf-MnwxRDMO.js +1 -0
  49. package/assets/flowDiagram-v2-96b9c2cf-U7nNPvdl.js +1 -0
  50. package/assets/{flowchart-elk-definition-4a651766-BH09NeLA.js → flowchart-elk-definition-4a651766-2XkrsdKI.js} +2 -2
  51. package/assets/{flowchart-elk-definition-4a651766-BLaLPCDV.js → flowchart-elk-definition-4a651766-ec8y1a8S.js} +1 -1
  52. package/assets/{ganttDiagram-c361ad54-DL9ZeaEc.js → ganttDiagram-c361ad54-1TA0mZY_.js} +3 -3
  53. package/assets/{ganttDiagram-c361ad54-Sp9M1KHP.js → ganttDiagram-c361ad54-D-OrVtXV.js} +3 -3
  54. package/assets/{gitGraphDiagram-72cf32ee-BWwmRKo-.js → gitGraphDiagram-72cf32ee-Blt3RsBD.js} +1 -1
  55. package/assets/{gitGraphDiagram-72cf32ee-BSf1fsDV.js → gitGraphDiagram-72cf32ee-CKf6xgO1.js} +1 -1
  56. package/assets/{graph-g-2U7grQ.js → graph-CUYgHJmb.js} +1 -1
  57. package/assets/{graph--nPw8zXQ.js → graph-WeSRtsZO.js} +1 -1
  58. package/assets/{index-ZrVeQUWo.js → index--MqiaN5t.js} +1 -1
  59. package/assets/{index-C5eu4uSl.js → index-0b_TeH8L.js} +11 -11
  60. package/assets/{index-3862675e-BXwbZ2pz.js → index-3862675e-C2ipEQC8.js} +1 -1
  61. package/assets/{index-3862675e-D6Zy95zZ.js → index-3862675e-CeX6VlsU.js} +1 -1
  62. package/assets/{index-CLJUfzvO.js → index-B-J0JJak.js} +1 -1
  63. package/assets/{index-TkfyNewx.js → index-B7Hj7g41.js} +1 -1
  64. package/assets/{index-eZfwJ9bV.js → index-BS_v5cOh.js} +1 -1
  65. package/assets/index-Btk31p7r.js +1 -0
  66. package/assets/{index-DH12_HTj.js → index-C-Samsu3.js} +2 -2
  67. package/assets/index-C-llNX01.js +1 -0
  68. package/assets/index-C8c9icsH.js +2 -0
  69. package/assets/{index-D7b5fX1d.js → index-CAn2jfNg.js} +1 -1
  70. package/assets/{index-Dz8sghkK.js → index-CK2zt94U.js} +1 -1
  71. package/assets/{index-CfgvFFx3.js → index-CP51k4n6.js} +17 -17
  72. package/assets/{index-DI0OV6F8.js → index-CXBhIy30.js} +1 -1
  73. package/assets/index-C_Mj1wbj.js +2 -0
  74. package/assets/{index-BwSnJN93.js → index-CbfE0MBd.js} +1 -1
  75. package/assets/{index-C3qD42ws.js → index-CjeDxq0c.js} +1 -1
  76. package/assets/{index-DqMndQiP.js → index-Ct7OFnWK.js} +1 -1
  77. package/assets/{index-BaCHOxhI.js → index-CxxUIkx1.js} +1 -1
  78. package/assets/{index-B2dttXd7.js → index-D2Kc-3MO.js} +1 -1
  79. package/assets/{index-Bq8mPedC.js → index-DK0XEByD.js} +1 -1
  80. package/assets/{index-DllL1sx1.js → index-DQcV2DYj.js} +1 -1
  81. package/assets/{index-BP77pG9S.js → index-DSKRBuhn.js} +73 -73
  82. package/assets/{index-BXzGHPXz.js → index-DXqL8NRE.js} +2 -2
  83. package/assets/{index-B7V7-Vxz.js → index-DcLrRIlS.js} +1 -1
  84. package/assets/{index-D4pIkh3S.js → index-DdA-dF0D.js} +1 -1
  85. package/assets/{index-QkP3EC02.js → index-DdxTnVj5.js} +1 -1
  86. package/assets/{index-CmyOpFTN.js → index-DmrnShhc.js} +1 -1
  87. package/assets/{index-Bti3m-iW.js → index-QO0uGVDP.js} +1 -1
  88. package/assets/{index-BPR_DyGD.js → index-aIKXDB1M.js} +1 -1
  89. package/assets/{index-DIiIUyb-.js → index-n6JhNACm.js} +1 -1
  90. package/assets/{index-BWrcsh8u.js → index-qbS_W7PW.js} +1 -1
  91. package/assets/index-v7iKPBEu.css +1 -0
  92. package/assets/{infoDiagram-f8f76790-DpFqCCNv.js → infoDiagram-f8f76790-DEWQ3NXc.js} +1 -1
  93. package/assets/{infoDiagram-f8f76790-G2JpJJP7.js → infoDiagram-f8f76790-u_qjHFCm.js} +3 -3
  94. package/assets/{journeyDiagram-49397b02-DLLTobRM.js → journeyDiagram-49397b02-C8A30CBr.js} +1 -1
  95. package/assets/{journeyDiagram-49397b02-BdESGMrv.js → journeyDiagram-49397b02-hQJfqZih.js} +1 -1
  96. package/assets/{layout-WSR0vNPO.js → layout-CFKTKeqQ.js} +1 -1
  97. package/assets/{layout-CVkuImk4.js → layout-DvRyabpG.js} +1 -1
  98. package/assets/{line-D3bnG227.js → line-C72F34Po.js} +1 -1
  99. package/assets/{line-DQuMJveY.js → line-W5R41tQ1.js} +1 -1
  100. package/assets/{linear-CciP-97N.js → linear-7FXykgHM.js} +1 -1
  101. package/assets/{linear-Z6vFvuwc.js → linear-CVyOPUvz.js} +1 -1
  102. package/assets/main-BO0HWBB1.js +42 -0
  103. package/assets/{main-8DNjLY6L.css → main-DAuE07rf.css} +1 -1
  104. package/assets/{mermaid.core-CwZQb0ud.js → mermaid.core-2VcXhn43.js} +4 -4
  105. package/assets/{mindmap-definition-fc14e90a-BnJ8OOTI.js → mindmap-definition-fc14e90a-CcVXKGg4.js} +1 -1
  106. package/assets/{mindmap-definition-fc14e90a-CxQMydCW.js → mindmap-definition-fc14e90a-DRDYXe84.js} +2 -2
  107. package/assets/model-benchmark-launcher-C2qBiDlM.js +1 -0
  108. package/assets/{photo-wall-splitter-BZ88W5Zy.js → photo-wall-splitter-CFntSOdS.js} +1 -1
  109. package/assets/{pieDiagram-8a3498a8-BSDdkTeu.js → pieDiagram-8a3498a8-Be9dl9pU.js} +1 -1
  110. package/assets/{pieDiagram-8a3498a8-D6VtAoja.js → pieDiagram-8a3498a8-DXZOJYBv.js} +5 -5
  111. package/assets/ppt-generation-B5fKT_by.js +48 -0
  112. package/assets/{quadrantDiagram-120e2f19-C8k2xuBd.js → quadrantDiagram-120e2f19-DoU7aQSp.js} +3 -3
  113. package/assets/{quadrantDiagram-120e2f19-BbFV0VXY.js → quadrantDiagram-120e2f19-l5K9mx26.js} +1 -1
  114. package/assets/{requirementDiagram-deff3bca-C3xMdzJV.js → requirementDiagram-deff3bca-DN_87Wxe.js} +1 -1
  115. package/assets/{requirementDiagram-deff3bca-CpjqKjYZ.js → requirementDiagram-deff3bca-DOooq7kx.js} +1 -1
  116. package/assets/retry-image-BmIVuAVu.js +6 -0
  117. package/assets/{sankeyDiagram-04a897e0-Bjvig9bW.js → sankeyDiagram-04a897e0-BB33nO6_.js} +1 -1
  118. package/assets/{sankeyDiagram-04a897e0-BBJJgsFv.js → sankeyDiagram-04a897e0-CCa0hwml.js} +2 -2
  119. package/assets/{sequenceDiagram-704730f1-PFC_9IFI.js → sequenceDiagram-704730f1-CNhXZiix.js} +1 -1
  120. package/assets/{sequenceDiagram-704730f1-DX1MmBN_.js → sequenceDiagram-704730f1-ZqQ1QrY-.js} +1 -1
  121. package/assets/settings-dialog-BFuWTeQR.js +1 -0
  122. package/assets/{skill-dsl-parser-syNWYxFu.js → skill-dsl-parser-b-aB3P5u.js} +1 -1
  123. package/assets/{stateDiagram-587899a1-Dc3mI_B_.js → stateDiagram-587899a1-BBlOIJr7.js} +1 -1
  124. package/assets/{stateDiagram-587899a1-SFMUVAam.js → stateDiagram-587899a1-BhomZ0AN.js} +1 -1
  125. package/assets/{stateDiagram-v2-d93cdb3a-P4Yt2p_j.js → stateDiagram-v2-d93cdb3a-BpJsgMa0.js} +1 -1
  126. package/assets/stateDiagram-v2-d93cdb3a-CuOn9du2.js +1 -0
  127. package/assets/{styles-6aaf32cf-C3jnr3hV.js → styles-6aaf32cf-C2WEewoA.js} +1 -1
  128. package/assets/{styles-6aaf32cf-b6AdP7fu.js → styles-6aaf32cf-CTtf8moq.js} +1 -1
  129. package/assets/{styles-9a916d00-BUiD9iBe.js → styles-9a916d00-44Xi2-39.js} +1 -1
  130. package/assets/{styles-9a916d00-ii0XTdIm.js → styles-9a916d00-DUU3VgNe.js} +4 -4
  131. package/assets/{styles-c10674c1-DbTSpy3W.js → styles-c10674c1--AhWSGg7.js} +1 -1
  132. package/assets/styles-c10674c1-DS-wE3tK.js +116 -0
  133. package/assets/{svgDrawCommon-08f97a94-D4gIV05W.js → svgDrawCommon-08f97a94-CXcvtSSy.js} +1 -1
  134. package/assets/{svgDrawCommon-08f97a94-BK6lD4D6.js → svgDrawCommon-08f97a94-Dyqh4V2s.js} +1 -1
  135. package/assets/{timeline-definition-85554ec2-Bl2y548G.js → timeline-definition-85554ec2-k788753O.js} +1 -1
  136. package/assets/{timeline-definition-85554ec2-CWKg_JxG.js → timeline-definition-85554ec2-sw6-UuBe.js} +1 -1
  137. package/assets/tool-windows-BEnZdJqF.js +2948 -0
  138. package/assets/{tool-windows-CUNbW1Tz.css → tool-windows-D61Le6TE.css} +1 -1
  139. package/assets/ttd-dialog-BJzXAZ0l.js +99 -0
  140. package/assets/useCharacters-DRBoWvvj.css +1 -0
  141. package/assets/useCharacters-gsV4K8Hn.js +2 -0
  142. package/assets/{useWorkflowSubmission-BizuDmuw.js → useWorkflowSubmission-XRR21P6Y.js} +10 -10
  143. package/assets/{video-analyze-6v3Y-rUE.js → video-analyze-CpbnpSiI.js} +1 -1
  144. package/assets/{video-generation-DnmTlWnm.js → video-generation-BXhS7x-a.js} +2 -2
  145. package/assets/video-recovery-service-6G2lkWcu.js +1 -0
  146. package/assets/workflow-generation-utils-CYxtSHl0.js +3 -0
  147. package/assets/workflow-submission-service-DygSzydV.js +4 -0
  148. package/assets/{xychartDiagram-e933f94c-CJX9_9WF.js → xychartDiagram-e933f94c-CvTTDwPb.js} +3 -3
  149. package/assets/{xychartDiagram-e933f94c-Cep8CQEH.js → xychartDiagram-e933f94c-Ga9zi9ha.js} +1 -1
  150. package/changelog.json +45 -0
  151. package/idle-prefetch-manifest.json +310 -306
  152. package/manifest.json +3 -3
  153. package/package.json +1 -1
  154. package/precache-manifest.json +10 -10
  155. package/sitemap.xml +37 -0
  156. package/sw-debug/app.js +269 -156
  157. package/sw-debug/backup-restore.js +235 -103
  158. package/sw-debug/crypto-helper.js +116 -120
  159. package/sw-debug/duplex-client.js +33 -19
  160. package/sw-debug/gist-management.js +938 -655
  161. package/sw-debug/sw-communication.js +87 -50
  162. package/sw.js +5 -5
  163. package/version.json +7 -17
  164. package/assets/CanvasAudioPlayer-DutgwdiU.js +0 -2
  165. package/assets/ChatDrawer-0jNvKIoI.css +0 -1
  166. package/assets/ChatDrawer-E6Fog16I.js +0 -11
  167. package/assets/ChatMessagesArea-Bgwiz_XP.js +0 -250
  168. package/assets/ChatMessagesArea-DyR_wHFQ.css +0 -1
  169. package/assets/DeferredAIInputBar-CPkD8Cv9.js +0 -8
  170. package/assets/DrawnixDeferredFeatures-Cul76-88.js +0 -2
  171. package/assets/ModelBenchmarkWorkbench-Dv9SNYTi.js +0 -2
  172. package/assets/MusicAnalyzer-DhtRGpAp.css +0 -1
  173. package/assets/ResizableDivider-CaG9JQbJ.js +0 -1
  174. package/assets/TaskQueuePanel-BNhNzGp5.js +0 -1
  175. package/assets/ai-generation-preferences-service-BF7QkuJp.js +0 -1
  176. package/assets/arc-DmGoDCEL.js +0 -1
  177. package/assets/channel-CZjE-WNp.js +0 -1
  178. package/assets/channel-SXZD6bG3.js +0 -1
  179. package/assets/classDiagram-v2-f2320105-CsxWGkSy.js +0 -2
  180. package/assets/clone-C4mvvMDb.js +0 -1
  181. package/assets/createText-2e5e7dd3-CkXS3l7I.js +0 -5
  182. package/assets/flowDiagram-v2-96b9c2cf-BCcJ-cre.js +0 -1
  183. package/assets/flowDiagram-v2-96b9c2cf-DCVaFEgV.js +0 -1
  184. package/assets/index-3eqA7Bag.js +0 -1
  185. package/assets/index-7Q-aiwln.js +0 -4
  186. package/assets/index-B1XP5g7P.css +0 -1
  187. package/assets/index-BHPTfCZM.js +0 -1
  188. package/assets/index-BqHZCcen.js +0 -2
  189. package/assets/index-DcZrElEK.js +0 -2
  190. package/assets/index-gQ7LgvSv.js +0 -12
  191. package/assets/main-BFEkxCOK.js +0 -56
  192. package/assets/model-benchmark-launcher-Ct3lYXVq.js +0 -1
  193. package/assets/ppt-generation-FzjP_rp0.js +0 -48
  194. package/assets/settings-dialog-CQM4v791.js +0 -1
  195. package/assets/stateDiagram-v2-d93cdb3a-DmnBjHpC.js +0 -1
  196. package/assets/styles-c10674c1-Bt89Yy8Q.js +0 -116
  197. package/assets/tool-windows-DOIu9TAD.js +0 -2975
  198. package/assets/ttd-dialog-DI4kQSg8.js +0 -99
  199. package/assets/useCharacters-Chv4Ky7x.js +0 -7
  200. package/assets/useCharacters-OrDbG69o.css +0 -1
  201. package/assets/video-recovery-service-BeRoh0s2.js +0 -1
  202. package/assets/workflow-generation-utils-me381Cax.js +0 -3
  203. package/assets/workflow-submission-service-YOpo7g37.js +0 -4
@@ -1 +0,0 @@
1
- @charset "UTF-8";.task-progress-overlay{position:relative;width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;--task-progress-accent: #f39c12;background:radial-gradient(circle at 18% 18%,rgba(245,184,73,.16),transparent 24%),radial-gradient(circle at 76% 78%,rgba(179,144,122,.14),transparent 32%),linear-gradient(135deg,#ffffffe0,#ece6e0bd);border-radius:inherit;overflow:hidden}.task-progress-overlay__backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(140deg,#ffffff94,#ffffff1a),radial-gradient(circle at 50% 60%,rgba(255,255,255,.18),transparent 60%);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.task-progress-overlay__pulse,.task-progress-overlay__dots{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.task-progress-overlay__pulse{background:radial-gradient(circle at 16% 18%,rgba(243,156,18,.14),transparent 22%),radial-gradient(circle at 72% 70%,rgba(168,133,112,.12),transparent 34%);mix-blend-mode:multiply;animation:task-progress-overlay-pulse 3.6s ease-in-out infinite}.task-progress-overlay__dots{top:18%;right:20%;bottom:18%;left:20%;opacity:.32;background-image:radial-gradient(circle,rgba(255,255,255,.7) 0 1.2px,transparent 1.8px);background-size:28px 28px;-webkit-mask-image:linear-gradient(180deg,rgba(0,0,0,.8),transparent 92%);mask-image:linear-gradient(180deg,rgba(0,0,0,.8),transparent 92%)}.task-progress-overlay__content{position:relative;z-index:1;transform-origin:center center;transition:transform .15s ease-out}.task-progress-overlay__progress{--image-generation-progress-accent: var(--task-progress-accent);--image-generation-progress-accent-soft: rgba(243, 156, 18, .14);--image-generation-progress-ring-bg: rgba(148, 163, 184, .24);--image-generation-progress-text: rgba(55, 65, 81, .9)}.task-progress-overlay__bar{position:absolute;bottom:0;left:0;right:0;height:3px;background:#94a3b82e;z-index:1}.task-progress-overlay__bar-fill{height:100%;background:linear-gradient(90deg,#f39c12,#e67e22);transition:width .3s ease;box-shadow:0 0 8px #f39c1280}.task-progress-overlay--video{--task-progress-accent: #5a4fcf;background:radial-gradient(circle at 18% 18%,rgba(105,91,224,.18),transparent 24%),radial-gradient(circle at 72% 74%,rgba(90,79,207,.1),transparent 32%),linear-gradient(135deg,#faf9ffe0,#e8e5f7c7)}.task-progress-overlay--video .task-progress-overlay__pulse{background:radial-gradient(circle at 18% 22%,rgba(123,104,238,.16),transparent 22%),radial-gradient(circle at 72% 70%,rgba(90,79,207,.14),transparent 34%)}.task-progress-overlay--video .task-progress-overlay__bar-fill{background:linear-gradient(90deg,#5a4fcf,#7b68ee);box-shadow:0 0 8px #5a4fcf80}.task-progress-overlay--loading{--task-progress-accent: #00a870}.task-progress-overlay--loading .task-progress-overlay__pulse{background:radial-gradient(circle at 18% 18%,rgba(0,168,112,.12),transparent 22%),radial-gradient(circle at 76% 72%,rgba(132,204,166,.12),transparent 34%)}.task-progress-overlay--loading .task-progress-overlay__bar-fill{background:linear-gradient(90deg,#00a870,#00c48c);box-shadow:0 0 8px #00a87080}@keyframes task-progress-overlay-pulse{0%,to{opacity:.48;transform:scale(.98)}50%{opacity:.82;transform:scale(1.04)}}.task-queue-panel__filters-container{display:flex;flex-direction:column;gap:12px}.task-queue-panel__filters-container .t-tabs__nav-container.t-is-top:after{display:none}.task-queue-panel__filters{display:flex;align-items:center;gap:8px;flex-wrap:nowrap;width:100%}.task-queue-panel__type-filters{display:flex;align-items:center;gap:4px;padding:3px;background:var(--td-bg-color-secondarycontainer, #f3f3f3);border-radius:10px;flex-shrink:0}.task-queue-panel__type-filters .t-button{position:relative;color:var(--td-text-color-secondary, #666);border:none!important;background:transparent!important;height:32px!important;min-width:32px!important;padding:0!important;transition:all .25s cubic-bezier(.4,0,.2,1);display:flex!important;align-items:center!important;justify-content:center!important;border-radius:8px!important}.task-queue-panel__type-filters .t-button:hover{color:var(--td-text-color-primary, #333);background:#0000000a!important}.task-queue-panel__filter-btn--active{color:#f39c12!important;background:#f39c121f!important;box-shadow:inset 0 0 0 1px #f39c122e}.task-queue-panel__filter-btn--active svg,.task-queue-panel__filter-btn--active .t-icon,.task-queue-panel__filter-btn--active span{color:currentColor!important}.task-queue-panel__search-row{display:flex;align-items:center;gap:8px;flex:1;min-width:0}.task-queue-panel__filter-actions{display:flex;align-items:center;gap:4px;flex-shrink:0}.task-queue-panel__search-input{flex:1;min-width:100px}.task-queue-panel__search-input .t-input{border-radius:8px;height:32px;background:var(--td-bg-color-container, #fff)!important;border:1.5px solid #dcdcdc!important;transition:all .25s ease}.task-queue-panel__search-input .t-input:hover{border-color:#f39c12!important}.task-queue-panel__search-input .t-input--focused{border-color:#f39c12!important;box-shadow:0 0 0 3px #f39c1226!important}.task-queue-panel__clear-btn{flex-shrink:0}.task-queue-panel__clear-text{display:inline}@media(max-width:480px){.task-queue-panel__clear-text{display:none}}.task-queue-panel__actions{display:flex;gap:8px;flex-shrink:0}.task-queue-panel__batch-actions{display:flex;align-items:center;justify-content:space-between}.task-queue-panel__batch-select{display:flex;align-items:center;gap:8px;margin-left:12px}.task-queue-panel__batch-select :global(.t-checkbox).t-is-checked .t-checkbox__input{background-color:#f39c12;border-color:#f39c12}.task-queue-panel__batch-select :global(.t-checkbox).t-is-indeterminate .t-checkbox__input{background-color:#f39c12;border-color:#f39c12}.task-queue-panel__batch-select :global(.t-checkbox):hover .t-checkbox__input{border-color:#f39c12}.task-queue-panel__batch-count{font-size:13px;color:var(--td-text-color-secondary, #757575)}.task-queue-panel__batch-buttons{display:flex;align-items:center;gap:8px}.task-queue-panel__content{padding:12px 0 12px 24px}.task-queue-panel__list{display:flex;flex-direction:column;gap:12px}.task-queue-panel__empty{text-align:center;padding:48px 24px;color:var(--td-text-color-placeholder, #bbbbbb)}.task-queue-panel__empty-icon{font-size:48px;margin-bottom:16px;opacity:.5}.task-queue-panel__empty-text{font-size:14px}.virtual-task-list__back-to-top{position:absolute!important;bottom:16px!important;left:50%!important;transform:translate(-50%)!important;z-index:10;box-shadow:0 4px 12px #0000001f;border:1px solid var(--td-component-border, #e7e7e7);background:var(--td-bg-color-container, #fff)!important;color:var(--td-text-color-secondary, #757575)!important;width:32px!important;height:32px!important;padding:0!important;display:flex!important;align-items:center;justify-content:center;flex-shrink:0}.virtual-task-list__back-to-top:hover{background:var(--td-bg-color-secondarycontainer, #f3f3f3)!important;color:var(--td-text-color-primary, #333)!important}.virtual-task-list__back-to-top .t-icon{font-size:16px}.task-item{display:grid;gap:4px 12px;background:transparent;border-bottom:1px solid var(--td-component-border, #e7e7e7);padding:16px 24px 16px 0;transition:background-color .2s ease;position:relative;cursor:pointer}.task-item:hover{background-color:var(--td-bg-color-secondarycontainer, #f3f3f3)}.task-item--selected{border-color:#f39c12;background:#f39c120a}.task-item--processing .task-item__status-tag{background-color:#5a4fcf14!important;color:#5a4fcf!important;border:1px solid rgba(90,79,207,.15)!important}.task-item--wide{grid-template-columns:120px 1fr;grid-template-areas:"preview body"}.task-item--wide .task-item__preview-wrapper{grid-area:preview}.task-item--wide .task-item__body{grid-area:body}.task-item--wide.task-item--selection-mode{grid-template-columns:auto 120px 1fr;grid-template-areas:"checkbox preview body"}.task-item--wide.task-item--selection-mode .task-item__checkbox{grid-area:checkbox}.task-item--compact{grid-template-columns:100px 1fr;grid-template-areas:"preview prompt" "info info"}.task-item--compact .task-item__preview-wrapper{grid-area:preview;width:100px;height:75px}.task-item--compact .task-item__body{display:contents}.task-item--compact .task-item__prompt-area{grid-area:prompt}.task-item--compact .task-item__info-area{grid-area:info;margin-top:4px}.task-item--compact .task-item__content-row{align-items:center}.task-item--compact.task-item--selection-mode{grid-template-columns:auto 100px 1fr;grid-template-areas:"checkbox preview prompt" "info info info"}.task-item--compact.task-item--selection-mode .task-item__checkbox{grid-area:checkbox}.task-item__checkbox{display:flex;align-items:flex-start;padding-top:4px;padding-left:16px}.task-item__checkbox :global(.t-checkbox).t-is-checked .t-checkbox__input{background-color:#f39c12;border-color:#f39c12}.task-item__checkbox :global(.t-checkbox).t-is-indeterminate .t-checkbox__input{background-color:#f39c12;border-color:#f39c12}.task-item__checkbox :global(.t-checkbox):hover .t-checkbox__input{border-color:#f39c12}.task-item__preview-wrapper{width:120px;height:90px;flex-shrink:0;align-self:start}.task-item__preview{width:100%;height:100%;border-radius:8px;overflow:hidden;cursor:pointer;position:relative}.task-item__preview img,.task-item__preview video{width:100%;height:100%;-o-object-fit:contain;object-fit:contain;display:block;transition:transform .2s ease}.task-item__preview:hover img,.task-item__preview:hover video{transform:scale(1.05)}.task-item__preview-placeholder{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;color:var(--td-text-color-placeholder, #999);font-size:11px}.task-item__preview-failed{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border-radius:8px;background:var(--td-bg-color-secondarycontainer, #f3f3f3);border:1px solid var(--td-component-border, #e7e7e7);color:var(--td-text-color-placeholder, #bbb);font-size:10px}.task-item__preview-failed .t-icon{opacity:.5;font-size:18px}.task-item__video-play-overlay{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;background:#00000026;color:#fff;opacity:.85;transition:all .2s ease}.task-item__video-play-overlay .t-icon{filter:drop-shadow(0 1px 3px rgba(0,0,0,.4))}.task-item__preview:hover .task-item__video-play-overlay{opacity:1;background:#00000040}.task-item__body{display:flex;flex-direction:column;min-width:0}.task-item__prompt-area{min-width:0;display:flex;flex-direction:column}.task-item__prompt{font-size:14px;font-weight:400;line-height:1.5;color:var(--td-text-color-primary, #1d1d1f);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;word-break:break-word}.task-item__subtitle{margin-top:4px;font-size:12px;line-height:1.45;color:var(--td-text-color-placeholder, #999);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:break-word}.task-item__info-area{display:flex;flex-direction:column;gap:4px;min-width:0}.task-item__content-row{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:8px 12px;margin-top:4px;width:100%}.task-item__actions{display:flex;align-items:center;gap:8px;flex-shrink:0;margin-left:auto}.task-item__primary-action{font-weight:500!important;height:26px!important;padding:0 10px!important;border-radius:13px!important;font-size:12px!important;background:#f39c12!important;border:none!important;color:#fff!important}.task-item__primary-action:hover{background:#e67e22!important}.task-item__primary-action .t-icon{font-size:14px}.task-item__secondary-actions{display:flex;align-items:center;gap:4px}.task-item__secondary-actions .t-button{color:var(--td-text-color-placeholder, #999)!important;padding:4px!important;height:24px!important;width:24px!important;min-width:0!important}.task-item__secondary-actions .t-button:hover{color:var(--td-text-color-primary, #333)!important;background:var(--td-bg-color-secondarycontainer, #f3f3f3)!important}.task-item__delete-btn:hover{color:var(--td-error-color, #e34d59)!important}.task-item__meta{display:flex;flex-direction:column;gap:4px;margin-top:2px;flex:1;min-width:0}.task-item__tags{display:flex;flex-wrap:wrap;gap:4px}.task-item__tags .t-tag{font-size:10px!important;height:18px!important;border-radius:4px!important;padding:0 4px!important;color:var(--td-text-color-secondary, #666);background:var(--td-bg-color-secondarycontainer, #f3f3f3);border:none}.task-item__tags .task-item__status-tag{font-weight:500}.task-item__details{font-size:11px;color:var(--td-text-color-placeholder, #999);display:flex;flex-wrap:wrap;align-items:center;gap:6px;line-height:1.4}.task-item__link{color:var(--td-brand-color, #0052d9);text-decoration:none}.task-item__link:hover{text-decoration:underline}.task-item__error{background:#fff1f0;border-radius:6px;padding:6px 10px;margin-top:4px}.task-item__error-message{color:#e34d59;font-size:11px;line-height:1.4}.task-item__error-details-link{color:#0052d9;cursor:pointer;text-decoration:underline;margin-left:4px}.task-item__multi-badge{position:absolute;bottom:4px;right:4px;background:#000000a6;color:#fff;padding:1px 5px;border-radius:4px;font-size:10px;font-weight:500;z-index:1;pointer-events:none}.task-item__cache-badge{position:absolute;bottom:4px;left:4px;background:#00a870d9;color:#fff;padding:1px 4px;border-radius:3px;font-size:9px;display:flex;align-items:center;gap:2px;z-index:1}.task-item__cache-badge svg{width:10px;height:10px}.task-item__cache-warning-badge{position:absolute;bottom:4px;left:4px;z-index:2;padding:1px 5px;border-radius:4px;background:#f59e0beb;color:#fff;font-size:9px;font-weight:600;line-height:14px;cursor:help;box-shadow:0 2px 4px #f59e0b47}.task-item__sync-badge{position:absolute;bottom:4px;left:4px;padding:2px 6px;border-radius:4px;font-size:10px;display:flex;align-items:center;gap:3px;z-index:1;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);transition:all .2s ease}.task-item__sync-badge svg{width:12px;height:12px}.task-item__sync-badge--synced{background:#00a870e6;color:#fff}.task-item__sync-badge--syncing{background:#0052d9e6;color:#fff}.task-item__sync-badge--warning{background:#ed7d31e6;color:#fff}.task-item__sync-badge--clickable{background:#0052d9d9;color:#fff;cursor:pointer}.task-item__sync-badge--clickable:hover{background:#0052d9;transform:scale(1.05)}@media(max-width:1200px){.task-queue-panel{width:100%;left:0;right:0}.task-queue-panel__filters-container{gap:8px}.task-queue-panel__filters{flex-direction:row;align-items:center;gap:8px}.task-queue-panel__search-row{width:100%}.task-queue-panel__search-input{max-width:none}.task-queue-panel__content{padding:12px 0 24px 16px}}@media(max-width:768px){.side-drawer__title{font-size:16px!important}.side-drawer__header{padding:12px!important}.side-drawer__filter{padding:0 12px 12px!important}.task-queue-panel__filters-container{gap:6px}.task-queue-panel__filters-container .t-tabs .t-tabs__nav-container,.task-queue-panel__filters-container .t-tabs .t-tabs__nav-wrap{padding:0!important}.task-queue-panel__filters-container .t-tabs .t-tabs__nav{gap:0!important}.task-queue-panel__filters-container .t-tabs .t-tabs__nav-item{font-size:11px!important;padding:4px 2px!important;min-width:auto!important;white-space:nowrap;margin:0!important}.task-queue-panel__filters-container .t-tabs .t-tabs__nav-scroll-btn{width:14px!important;min-width:14px!important;padding:0!important}.task-queue-panel__filters-container .t-tabs .t-tabs__bar{height:2px!important}.task-queue-panel__filters{gap:6px}.task-queue-panel__type-filters{padding:2px;border-radius:8px}.task-queue-panel__type-filters .t-button{height:30px!important;min-width:30px!important}.task-queue-panel__search-input{flex:1;min-width:80px!important}.task-queue-panel__search-input .t-input{min-height:28px!important;height:28px!important;font-size:13px!important;border-width:1px!important}.task-queue-panel__search-input .t-input__inner{font-size:13px!important}.task-queue-panel__filter-actions .t-button{min-height:28px!important;height:28px!important;padding:0 10px!important;font-size:12px!important}.task-queue-panel__content{padding:8px 0 16px 12px}.task-queue-panel__list{gap:8px}.task-queue-panel__empty{padding:32px 16px}.task-queue-panel__empty-icon{font-size:36px;margin-bottom:12px}.task-queue-panel__empty-text{font-size:13px}.task-item{padding:12px 16px 12px 0;gap:3px 8px}.task-item__primary-action{min-height:26px!important;height:26px!important;min-width:auto!important;padding:0 10px!important}.task-item--wide{grid-template-columns:80px 1fr}.task-item--wide.task-item--selection-mode{grid-template-columns:auto 80px 1fr}.task-item--compact{grid-template-columns:70px 1fr;grid-template-areas:"preview prompt" "info info"}.task-item--compact.task-item--selection-mode{grid-template-columns:auto 70px 1fr;grid-template-areas:"checkbox preview prompt" "info info info"}.task-item--compact .task-item__preview-wrapper{grid-area:preview;width:70px;height:52px}.task-item--compact .task-item__prompt-area{grid-area:prompt}.task-item--compact .task-item__info-area{grid-area:info;margin-top:4px}.task-item__preview-wrapper{width:80px;height:60px}.task-item__prompt{font-size:13px;-webkit-line-clamp:2}.task-item__checkbox{padding-left:12px}}@keyframes slideUp{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes slideDown{0%{transform:translateY(0);opacity:1}to{transform:translateY(100%);opacity:0}}.task-notification{position:absolute;top:-8px;right:-8px;min-width:20px;height:20px;background:var(--td-error-color, #e34d59);color:#fff;border-radius:10px;font-size:12px;font-weight:500;display:flex;align-items:center;justify-content:center;padding:0 6px;animation:pulse 2s infinite}@keyframes pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.1);opacity:.8}}.task-preview-dialog{z-index:5200!important}.task-preview-dialog .task-preview-container{position:relative;display:flex;align-items:center;justify-content:center;gap:24px;padding:24px;min-height:60vh}.task-preview-dialog .task-preview-content{flex:1;display:flex;align-items:center;justify-content:center;max-width:calc(100% - 120px);position:relative}.task-preview-dialog .task-preview-cache-badge{position:absolute;bottom:12px;left:12px;display:flex;align-items:center;gap:4px;padding:4px 10px;background:#00a870e6;color:#fff;border-radius:6px;font-size:12px;font-weight:500}.task-preview-dialog .task-preview-nav{flex-shrink:0;z-index:1}.task-preview-dialog .task-preview-nav--left{margin-right:auto}.task-preview-dialog .task-preview-nav--right{margin-left:auto}.task-preview-dialog .task-preview-nav:hover{transform:scale(1.1);transition:transform .2s ease}.task-toolbar-button{width:56px;height:56px;background:#fff;border-radius:50%;box-shadow:0 2px 8px #00000026;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);-webkit-user-select:none;-moz-user-select:none;user-select:none;position:relative}.task-toolbar-button:hover{transform:scale(1.05);box-shadow:0 4px 12px #0003;background:#f5f5f5}.task-toolbar-button:active{transform:scale(.95)}.task-toolbar-button--expanded{background:#f0f0f0;box-shadow:0 4px 12px #0003}.task-toolbar-button--icon-only{width:48px;height:48px}.task-toolbar-button__content{display:flex;align-items:center;justify-content:center}.task-toolbar-button__text{color:#757575;font-size:14px;font-weight:500;display:flex;align-items:center;justify-content:center;white-space:nowrap;transition:color .3s ease}.task-toolbar-button__status{position:absolute;width:12px;height:12px;border-radius:50%;bottom:4px;right:4px;border:2px solid #ffffff;animation:pulse 2s infinite}.task-toolbar-button__status--active{background:var(--td-success-color, #00a870)}.task-toolbar-button__status--failed{background:var(--td-error-color, #e34d59)}.task-toolbar-button .t-badge{display:flex;align-items:center;justify-content:center;background-color:transparent!important}.task-toolbar-button .t-badge__count{color:#e91e63!important;border:1px solid #E91E63!important}.virtual-task-list__loading-more{display:flex;align-items:center;justify-content:center;gap:8px;padding:16px;color:var(--td-text-color-secondary, #757575);font-size:13px}.virtual-task-list__loading-spinner{width:16px;height:16px;border:2px solid var(--td-component-border, #e7e7e7);border-top-color:#f39c12;border-radius:50%;animation:spin .8s linear infinite}.virtual-task-list__pagination-info,.virtual-task-list__no-more{text-align:center;padding:12px;color:var(--td-text-color-placeholder, #bbb);font-size:12px}@keyframes spin{to{transform:rotate(360deg)}}.character-time-selector{display:flex;flex-direction:column;gap:16px}.character-time-selector.is-dragging .character-time-selector__range{transition:none!important}.character-time-selector__preview{position:relative;display:flex;justify-content:center;align-items:center;min-height:180px;max-height:240px;background:#1a1a1a;border-radius:8px;overflow:hidden}.character-time-selector__loading{display:flex;flex-direction:column;align-items:center;gap:8px;color:#999}.character-time-selector__spinner{width:24px;height:24px;border:2px solid #333;border-top-color:var(--td-brand-color, #0052d9);border-radius:50%;animation:character-spin .8s linear infinite}.character-time-selector__frame{max-width:100%;max-height:240px;-o-object-fit:contain;object-fit:contain;transition:opacity .15s ease}.character-time-selector__placeholder{color:#666;font-size:14px}.character-time-selector__time-badge{position:absolute;bottom:8px;right:8px;padding:4px 10px;background:#000000bf;color:#fff;font-size:13px;font-family:SF Mono,Monaco,monospace;border-radius:4px;font-weight:500;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);transition:transform .15s ease}.character-time-selector__timeline{position:relative;height:52px;background:#1e1e1e;border-radius:8px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;overflow:hidden;box-shadow:inset 0 1px 3px #0000004d}.character-time-selector__timeline-bg{position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(to bottom,#2a2a2a,#1e1e1e 40%,#1a1a1a)}.character-time-selector__frame-strip{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;z-index:0;overflow:hidden;background:#1a1a1a}.character-time-selector__frame-strip--loading{display:block}.character-time-selector__strip-shimmer{width:100%;height:100%;background:linear-gradient(90deg,#1a1a1a,#2a2a2a,#3a3a3a,#2a2a2a,#1a1a1a 80%);background-size:200% 100%;animation:frame-strip-shimmer 1.5s ease-in-out infinite}@keyframes frame-strip-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.character-time-selector__frame-thumb{flex:1;height:100%;-o-object-fit:cover;object-fit:cover;opacity:.65;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;animation:frame-fade-in .3s ease-out}.character-time-selector__frame-thumb:not(:last-child){border-right:1px solid rgba(0,0,0,.5)}@keyframes frame-fade-in{0%{opacity:0}to{opacity:.65}}.character-time-selector__markers{position:absolute;top:0;left:0;right:0;height:100%;pointer-events:none;z-index:1}.character-time-selector__marker{position:absolute;top:0;height:100%;transform:translate(-50%)}.character-time-selector__marker:before{content:"";position:absolute;top:0;left:50%;width:1px;height:10px;background:#fff3;transform:translate(-50%)}.character-time-selector__marker span{position:absolute;bottom:6px;left:50%;transform:translate(-50%);font-size:10px;color:#fff6;font-family:SF Mono,Monaco,monospace}.character-time-selector__range{position:absolute;top:6px;bottom:6px;z-index:2;background:linear-gradient(to bottom,#3b82f659,#3b82f633);border-top:2px solid #3b82f6;border-bottom:2px solid #3b82f6;transition:left .2s cubic-bezier(.4,0,.2,1),width .2s cubic-bezier(.4,0,.2,1),background .15s ease;will-change:left,width}.character-time-selector__range:hover:not(.dragging){background:linear-gradient(to bottom,#3b82f673,#3b82f64d)}.character-time-selector__range.dragging{background:linear-gradient(to bottom,#3b82f680,#3b82f659);transition:background .1s ease}.character-time-selector__handle{position:absolute;top:-2px;bottom:-2px;width:12px;background:#3b82f6;cursor:ew-resize;z-index:3;transition:background .15s ease,transform .15s cubic-bezier(.4,0,.2,1),box-shadow .15s ease}.character-time-selector__handle:before{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:2px;height:18px;background:#ffffffb3;border-radius:1px;box-shadow:-3px 0 #ffffff4d,3px 0 #ffffff4d}.character-time-selector__handle:hover{background:#60a5fa;transform:scaleX(1.15);box-shadow:0 0 8px #3b82f680}.character-time-selector__handle:active{background:#2563eb;transform:scaleX(1.2)}.character-time-selector__handle--left{left:0;border-radius:6px 0 0 6px}.character-time-selector__handle--right{right:0;border-radius:0 6px 6px 0}.dragging .character-time-selector__handle{background:#60a5fa}.character-time-selector__range-content{display:flex;align-items:center;justify-content:center;height:100%;padding:0 18px;cursor:grab;transition:background .15s ease}.character-time-selector__range-content:hover{background:#ffffff0d}.character-time-selector__range-content:active{cursor:grabbing;background:#ffffff14}.character-time-selector__range-label{font-size:12px;font-weight:600;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.5);white-space:nowrap;pointer-events:none;letter-spacing:.5px}.character-time-selector__info{display:flex;justify-content:space-between;align-items:center;font-size:13px;color:var(--td-text-color-secondary, #666);padding:0 4px;font-family:SF Mono,Monaco,monospace}.character-time-selector__actions{display:flex;justify-content:flex-end;gap:12px;padding-top:12px;border-top:1px solid var(--td-component-border, #e7e7e7)}@keyframes character-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}
@@ -1 +0,0 @@
1
- import{a4 as f,M as u}from"./tool-windows-DOIu9TAD.js";async function h(e){if(!e||!e.children)return 0;let n=0;for(const c of e.children){const r=c.url;if(r&&r.startsWith("blob:")&&r.includes("#merged-video-")){const s=r.indexOf("#merged-video-");if(s===-1)continue;const i=r.substring(s+1),d=i.indexOf("#",1),o=d>0?i.substring(0,d):i;try{const t=await f.getCachedBlob(o);if(t){const l=`${URL.createObjectURL(t)}#${o}`,a=e.children.indexOf(c);u.setNode(e,{url:l},[a]),n++}else console.warn("[VideoRecovery] Cache not found for taskId:",o)}catch(t){console.error("[VideoRecovery] Failed to recover video:",o,t)}}}return n}function x(e){e&&requestAnimationFrame(async()=>{try{await h(e)}catch(n){console.error("[VideoRecovery] Initialization failed:",n)}})}export{x as initVideoRecoveryService,h as recoverExpiredVideoUrls};
@@ -1,3 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./tool-windows-CUNbW1Tz.css"])))=>i.map(i=>d[i]);
2
- import{a4 as z,bQ as A,bR as D,ak as k}from"./tool-windows-DOIu9TAD.js";async function O(t,e,i){if(t.size===0)throw new Error("Invalid frame blob: size is 0");const l=`/__aitu_cache__/video-frame_${e}_${i}`;return await z.cacheMediaFromBlob(l,t,"image",{metadata:{source:"video-frame",shotId:e,frameType:i}}),l}async function H(t,e,i){const l=URL.createObjectURL(t),c=document.createElement("video");c.muted=!0,c.preload="auto";try{await new Promise((m,h)=>{c.onloadedmetadata=()=>m(),c.onerror=()=>h(new Error("Failed to load video")),c.src=l});const a=document.createElement("canvas"),d=a.getContext("2d"),r=Math.min(1,320/c.videoWidth);a.width=Math.round(c.videoWidth*r),a.height=Math.round(c.videoHeight*r);const n=[];for(let m=0;m<e.length;m++){i==null||i(m,e.length);try{const h=await S(c,a,d,e[m]);n.push(h)}catch{n.push(null)}}return i==null||i(e.length,e.length),n}finally{URL.revokeObjectURL(l),c.src=""}}async function Z(t,e,i,l){const c=l||i,a=document.createElement("video");a.muted=!0,a.preload="auto",a.crossOrigin="anonymous";try{await new Promise((E,v)=>{a.onloadedmetadata=()=>E(),a.onerror=()=>v(new Error("Failed to load video")),a.src=t});const d=document.createElement("canvas"),s=d.getContext("2d"),n=Math.min(1,1280/a.videoWidth);d.width=Math.round(a.videoWidth*n),d.height=Math.round(a.videoHeight*n);const m=c==="first"?Math.min(.1,a.duration):Math.max(0,a.duration-.1),h=await S(a,d,s,m);return await O(h,e,i)}catch(d){return console.debug("[video-frame-cache] extractFrameFromUrl failed:",d),null}finally{a.src=""}}function S(t,e,i,l){return new Promise((c,a)=>{const d=Math.min(Math.max(0,l),t.duration||0);t.currentTime=d;const s=()=>{t.removeEventListener("seeked",s),i.drawImage(t,0,0,e.width,e.height),e.toBlob(r=>{r&&r.size>0?c(r):a(new Error("toBlob returned empty"))},"image/jpeg",.85)};t.addEventListener("seeked",s)})}function G(t){const{model:e,firstFrameUrl:i,lastFrameUrl:l,extraReferenceUrls:c=[],characterReferenceUrls:a=[]}=t,d=D(e),s=[],r=n=>{!n||s.includes(n)||s.push(n)};if(d.imageUpload.mode==="frames"){r(i),r(l);const n=s.length>0?s.slice(0,d.imageUpload.maxCount):void 0,m=a.length>0?a:void 0;return{referenceImages:n,unusedCharacterReferenceUrls:m}}for(const n of a)if(r(n),s.length>=d.imageUpload.maxCount)break;r(i);for(const n of c)if(r(n),s.length>=d.imageUpload.maxCount)break;return{referenceImages:s.length>0?s:void 0}}async function Y(t,e){return A(t,{interval:1e3,timeout:1800*1e3,signal:e})}function j(t){return Math.max(2,String(Math.max(t,0)).length)}function T(t,e){return String(t).padStart(e,"0")}function M(t,e,i){const l=T(t+1,i);return e==="first"?`${l}.首帧`:e==="last"?`${l}.尾帧`:`${l}.视频`}function P(t){return["#!/bin/sh","set -eu","",'cd "$(dirname "$0")"',"",`MANIFEST_FILE=${JSON.stringify(t)}`,"",'if [ ! -f "$MANIFEST_FILE" ]; then',' echo "未找到 $MANIFEST_FILE"'," exit 1","fi","","download_if_missing() {",' file_name="$1"',' source_url="$2"',' if [ -s "$file_name" ]; then',' echo "[skip] $file_name"'," return 0"," fi",' echo "[download] $file_name"',' curl -L --fail --retry 3 --retry-delay 1 --output "$file_name.part" "$source_url"',' mv "$file_name.part" "$file_name"',"}","","emit_entries() {"," if command -v node >/dev/null 2>&1; then",` node -e 'const fs=require("fs"); const manifest=JSON.parse(fs.readFileSync(process.argv[1],"utf8")); for (const entry of manifest.downloadEntries||[]) { if (entry?.fileName && entry?.url) process.stdout.write(String(entry.fileName)+"\\t"+String(entry.url)+"\\n"); }' "$MANIFEST_FILE"`," return 0"," fi",""," if command -v python3 >/dev/null 2>&1; then",` python3 - "$MANIFEST_FILE" <<'PY'`,"import json, sys","with open(sys.argv[1], 'r', encoding='utf-8') as fh:"," manifest = json.load(fh)","for entry in manifest.get('downloadEntries', []):"," file_name = entry.get('fileName')"," url = entry.get('url')"," if file_name and url:",' print(f"{file_name}\\t{url}")',"PY"," return 0"," fi","",' echo "需要 node 或 python3 来解析 $MANIFEST_FILE" >&2'," return 1","}","",'TMP_ENTRIES_FILE="$(mktemp -t workflow-download-entries.XXXXXX)"',`trap 'rm -f "$TMP_ENTRIES_FILE"' EXIT INT TERM`,"",'emit_entries > "$TMP_ENTRIES_FILE"',"","while IFS=' ' read -r file_name source_url; do",' [ -n "${file_name:-}" ] || continue',' [ -n "${source_url:-}" ] || continue',' download_if_missing "$file_name" "$source_url"','done < "$TMP_ENTRIES_FILE"',"",'echo "下载完成"',""].join(`
3
- `)}function X(t){return t.map(e=>({...e,generated_first_frame_url:void 0,generated_last_frame_url:void 0,generated_video_url:void 0,suppressed_generated_urls:void 0}))}function V(t){return t.map(e=>({...e,referenceImageUrl:void 0}))}function q(t,e){return{shots:X(t),characters:V(e)}}function Q(t){return t.flatMap((e,i)=>{const l=[];return e.generated_first_frame_url&&l.push({url:e.generated_first_frame_url,type:"image",kind:"first",shotIndex:i}),e.generated_last_frame_url&&l.push({url:e.generated_last_frame_url,type:"image",kind:"last",shotIndex:i}),e.generated_video_url&&l.push({url:e.generated_video_url,type:"video",kind:"video",shotIndex:i}),l})}async function K(t){const{recordId:e,fileNamePrefix:i,zipBaseName:l,scriptMarkdown:c,recordMeta:a,shots:d,assets:s,audioAsset:r,onProgress:n}=t,m=new Date().toISOString(),h=j(d.length),E=T(0,h),{default:v}=await k(async()=>{const{default:o}=await import("./tool-windows-DOIu9TAD.js").then(u=>u.j);return{default:o}},__vite__mapDeps([0]),import.meta.url),{downloadFromBlob:N,getFileExtension:F,normalizeImageDataUrl:U,processBatchWithConcurrency:L}=await k(async()=>{const{downloadFromBlob:o,getFileExtension:u,normalizeImageDataUrl:p,processBatchWithConcurrency:_}=await import("./tool-windows-DOIu9TAD.js").then(w=>w.pi);return{downloadFromBlob:o,getFileExtension:u,normalizeImageDataUrl:p,processBatchWithConcurrency:_}},__vite__mapDeps([0]),import.meta.url),$=new v,f={exportedAt:m,record:a,files:{script:`${E}.脚本.md`,music:null,manifest:`${E}.manifest.json`,downloadScript:`${E}.补全下载.sh`},shots:d.map((o,u)=>({index:u+1,id:o.id,label:o.label||`镜头 ${u+1}`,startTime:o.startTime,endTime:o.endTime,files:{first:null,last:null,video:null}})),errors:[],downloadEntries:[]};if($.file(f.files.script,c),n==null||n(s.length>0||r?8:40),r!=null&&r.url){const o=r.plannedFileName||`${E}.音乐.mp3`;f.downloadEntries.push({fileName:o,url:r.url});try{const u=await fetch(r.url,{referrerPolicy:"no-referrer"});if(!u.ok)throw new Error(`HTTP ${u.status}`);const p=await u.blob(),_=F(r.url,p.type)||r.fallbackExtension||"mp3",w=o.replace(/\.[^.]+$/,`.${_}`);$.file(w,p),f.files.music=w,w!==o&&(f.downloadEntries[f.downloadEntries.length-1].fileName=w)}catch(u){f.files.music=o,f.errors.push(r.downloadErrorMessage||"音乐下载失败"),console.error("[workflow-export] Failed to export audio asset:",r.url,u)}}else r!=null&&r.missingErrorMessage&&f.errors.push(r.missingErrorMessage);await L(s,async(o,u)=>{const p=o.type==="image"?U(o.url):o.url,_=f.shots[o.shotIndex],w=o.type==="image"?"png":"mp4",I=`${M(o.shotIndex,o.kind,h)}.${w}`;f.downloadEntries.push({fileName:I,url:p});try{const g=await fetch(p,{referrerPolicy:"no-referrer"});if(!g.ok)throw new Error(`HTTP ${g.status}`);const x=await g.blob(),B=F(p,x.type)||w,y=`${M(o.shotIndex,o.kind,h)}.${B}`;$.file(y,x),_.files[o.kind]=y,y!==I&&(f.downloadEntries[f.downloadEntries.length-1].fileName=y)}catch(g){const x=(_==null?void 0:_.label)||`镜头 ${o.shotIndex+1}`;f.errors.push(`${x} ${o.kind} 下载失败`),_.files[o.kind]=I,console.error("[workflow-export] Failed to export asset:",p,g)}finally{const g=u+1,x=s.length>0?Math.round(g/s.length*62):62;n==null||n(8+x)}},3),$.file(f.files.downloadScript,P(f.files.manifest),{unixPermissions:493}),$.file(f.files.manifest,JSON.stringify(f,null,2));const W=await $.generateAsync({type:"blob"},o=>n==null?void 0:n(70+Math.round(o.percent*.3))),R=e.replace(/[^a-zA-Z0-9_-]/g,""),C=m.slice(0,19).replace(/[:T]/g,"-"),b=`${l}_${R||i}_${C}.zip`;return N(W,b),n==null||n(100),{assetCount:s.length,zipFileName:b}}export{Q as a,Z as b,O as c,G as d,H as e,K as f,q as r,Y as w};
@@ -1,4 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./tool-windows-CUNbW1Tz.css"])))=>i.map(i=>d[i]);
2
- import{ak as h,du as S,D as x,h as R,e as P,d as F,s as W,g as C,ee as M,N as D,ef as X,O as J,eg as $,eh as K,ei as B,T as E,ej as G,ek as q,bB as L,el as U,em as N,W as T,en as j,bz as I,eo as b,bQ as Z,ep as H,eq as p,er as z}from"./tool-windows-DOIu9TAD.js";let y=null;function ue(m){y=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);case"generate_ppt":return this.handleGeneratePPT(r);default:return{success:!1,error:`Unknown operation: ${t}`,type:"error"}}}async handleGeneratePPT(e){const t=y;if(!t)return{success:!1,error:"画布未初始化",type:"error"};try{const[{setBoard:r},{generatePPT:s}]=await Promise.all([h(()=>import("./index-B2dttXd7.js"),__vite__mapDeps([0]),import.meta.url),h(()=>import("./ppt-generation-FzjP_rp0.js"),__vite__mapDeps([0]),import.meta.url)]);r(t);const a=await s(e);return{success:a.success,data:a.data,error:a.error,type:a.type}}catch(r){return{success:!1,error:r.message||"PPT 生成失败",type:"error"}}}async handleGenerateAudio(e){return{success:!1,error:"SW 暂不支持直接处理音频生成,请回退到主线程执行",type:"audio"}}findWorkZoneForMCP(e,t){var a;const r=S.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=y;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:u}=await import("./tool-windows-DOIu9TAD.js").then(g=>g.pp);return{parseMarkdownToCards:u}},__vite__mapDeps([0]),import.meta.url),{insertCardsToCanvas:n}=await h(async()=>{const{insertCardsToCanvas:u}=await import("./tool-windows-DOIu9TAD.js").then(g=>g.pq);return{insertCardsToCanvas:u}},__vite__mapDeps([0]),import.meta.url);let i=s||this.getInsertionPoint(t),c=0;for(const u of r){const{type:g,content:d,metadata:v}=u;switch(g){case"text":{const w=o(d);if(w&&w.length>0){const _=Math.round(window.innerWidth*.5);n(t,w,i,_);const A=Math.min(w.length,3),Y=Math.ceil(w.length/3);i=[i[0],i[1]+Y*140+a]}else x.insertText(t,i,d),i=[i[0],i[1]+100+a];c++;break}case"image":await F(t,d,i,!1,{width:400,height:400},!1,!0),i=[i[0],i[1]+400+a],c++;break;case"video":await P(t,d,i),i=[i[0],i[1]+300+a],c++;break;case"audio":await R(t,d,v,i,!1,!0),i=[i[0],i[1]+160+a],c++;break;case"svg":{const _={url:this.svgToDataUrl(d),width:400,height:400};x.insertImage(t,_,i),i=[i[0],i[1]+400+a],c++;break}}}const l=s||this.getInsertionPoint(t);return requestAnimationFrame(()=>{W(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=y;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:u,metadata:g}=c;switch(l){case"image":await F(t,u,n,!1,{width:400,height:400},!1,!0),n=[n[0],n[1]+400+a],i++;break;case"video":await P(t,u,n),n=[n[0],n[1]+300+a],i++;break;case"audio":await R(t,u,g,n,!1,!0),n=[n[0],n[1]+160+a],i++;break;case"text":x.insertText(t,n,u),n=[n[0],n[1]+100+a],i++;break;case"svg":const v={url:this.svgToDataUrl(u),width:400,height:400};x.insertImage(t,v,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=y;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:u}=await import("./index-C5eu4uSl.js").then(g=>g.aq);return{parseMermaidToDrawnix:u}},__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(()=>{S.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=y;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-C3qD42ws.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(()=>{S.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=y;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,u=c*l,g=this.svgToDataUrl(n);let d=a||this.getInsertionPoint(t);d=[d[0]-c/2,d[1]];const v={url:g,width:c,height:u};x.insertImage(t,v,d);const w=[d[0]+c/2,d[1]+u/2];return requestAnimationFrame(()=>{W(t,w)}),{success:!0,data:{width:c,height:u},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-DOIu9TAD.js").then(a=>a.py);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-DOIu9TAD.js").then(a=>a.pz);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=y;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-DOIu9TAD.js").then(n=>n.pt);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-DOIu9TAD.js").then(a=>a.pB);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-DOIu9TAD.js").then(o=>o.pA);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-DOIu9TAD.js").then(o=>o.pk);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-DnmTlWnm.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,M.paste),requestAnimationFrame(()=>{W(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,M.paste),requestAnimationFrame(()=>{W(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=X(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,u=c/a.width,g=l/a.height;let d=Math.min(u,g);d=Math.min(Math.max(d,.2),1.5);const v=a.x+a.width/2,w=a.y+a.height/2,_=v-n.width/(2*d),A=w-n.height/(2*d);J.updateViewport(e,[_,A],d)}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 u,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(),!L("image",e.modelRef||e.model))throw new Error("未配置 API Key,请在设置中配置");const a=U(),o=Date.now(),n=ae(s.prompt,e);await N.createTask(a,"image",n),T.trackExternalTask({id:a,type:E.IMAGE,status:I.PROCESSING,params:n,createdAt:o,updatedAt:o,startedAt:o,executionPhase:j.SUBMITTING}),(u=e.onTaskCreated)==null||u.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 Z(a,{signal:e.signal,onProgress:d=>{T.syncTaskFromStorage(a,d)}});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,u,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(),!L("video",e.modelRef||e.model))throw new Error("未配置 API Key,请在设置中配置");const a=U(),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}),T.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:j.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:(u=e.duration)==null?void 0:u.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 Z(a,{signal:e.signal,onProgress:d=>{T.syncTaskFromStorage(a,d)}});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(u=>u.id===l)){const u={id:l,mcp:"insert_to_canvas",args:{items:[{type:"text",content:c}]},description:"将生成文本插入画布",status:"pending"};e.steps.push(u),await f.saveWorkflow(e),this.emitEvent({type:"steps_added",workflowId:e.id,steps:[u]})}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(u=>u.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(u=>u.id===l)){const u=((o=e.metadata)==null?void 0:o.rawInput)||"",g=u.trim()?`# ${u.trim()}
3
-
4
- `:"",d={id:l,mcp:"insert_to_canvas",args:{items:[{type:"text",content:g+c.content}]},description:"将 AI 回复插入画布",status:"pending"};e.steps.push(d),await f.saveWorkflow(e),this.emitEvent({type:"steps_added",workflowId:e.id,steps:[d]})}}break}case"generate_grid_image":case"generate_inspiration_board":case"generate_ppt":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,de=Object.freeze(Object.defineProperty({__proto__:null,workflowSubmissionService:ce},Symbol.toStringTag,{value:"Module"}));export{de as a,ue as s,ce as w};