aitu-app 0.6.63 → 0.6.64

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (153) hide show
  1. package/README.md +3 -3
  2. package/assets/{CanvasAudioPlayer-Du5kXrAd.js → CanvasAudioPlayer-B2W5__ni.js} +1 -1
  3. package/assets/{ChatDrawer-CqZHx7x_.js → ChatDrawer-M1q92KNU.js} +2 -2
  4. package/assets/{ChatMessagesArea-AG3RXe34.js → ChatMessagesArea-D9LNDmbK.js} +2 -2
  5. package/assets/{DeferredAIInputBar-CNAPl6C2.js → DeferredAIInputBar-CKhI8Jhd.js} +2 -2
  6. package/assets/{DrawnixDeferredFeatures-BrhbEEBa.js → DrawnixDeferredFeatures-DxyxvT2y.js} +1 -1
  7. package/assets/{KnowledgeBaseContent-3hE8vBra.js → KnowledgeBaseContent-C_JxGQXg.js} +3 -3
  8. package/assets/{MVCreator-2NIxaaSL.js → MVCreator-DOt6pxq2.js} +1 -1
  9. package/assets/{ModelBenchmarkWorkbench-CacNyFbi.js → ModelBenchmarkWorkbench-3j77ocpe.js} +1 -1
  10. package/assets/{ModelDropdown-3MjTl1AO.js → ModelDropdown-CHYgRb1r.js} +1 -1
  11. package/assets/{MusicAnalyzer-Mmu92A4Y.js → MusicAnalyzer-BTXks5oV.js} +1 -1
  12. package/assets/{MusicAnalyzer-Drf2j8jn.js → MusicAnalyzer-Dr-DPePj.js} +1 -1
  13. package/assets/{ResizableDivider-B_67th7H.js → ResizableDivider-P1jpoJ3i.js} +1 -1
  14. package/assets/{TaskQueuePanel-VfjKIooN.js → TaskQueuePanel-D6NtMAbm.js} +1 -1
  15. package/assets/{VideoAnalyzer-DNWjNcIx.js → VideoAnalyzer-BHZMqLIa.js} +1 -1
  16. package/assets/{ai-generation-preferences-service-Ch1XhjkZ.js → ai-generation-preferences-service-CabuQA69.js} +1 -1
  17. package/assets/{arc-DE4qRd9D.js → arc-BajUk0_Z.js} +1 -1
  18. package/assets/{arc-DJ5Mb9x1.js → arc-Z9PGo_2L.js} +1 -1
  19. package/assets/{batch-image-generation-Bk8HSFol.js → batch-image-generation-RKz5tz-Y.js} +1 -1
  20. package/assets/{blockDiagram-38ab4fdb-B62iB8ti.js → blockDiagram-38ab4fdb-BsEJDcLK.js} +1 -1
  21. package/assets/{blockDiagram-38ab4fdb-D2MnfN1Q.js → blockDiagram-38ab4fdb-Cfmk3_6A.js} +1 -1
  22. package/assets/{c4Diagram-3d4e48cf-CgUaipiZ.js → c4Diagram-3d4e48cf-D2OyfHpd.js} +1 -1
  23. package/assets/{c4Diagram-3d4e48cf-DHV35ltP.js → c4Diagram-3d4e48cf-K-ewbsK1.js} +1 -1
  24. package/assets/{canvas-insertion-ZEZkcXvB.js → canvas-insertion-CYbFgP4L.js} +1 -1
  25. package/assets/channel-6DAc0JPc.js +1 -0
  26. package/assets/channel-WrMsNCbC.js +1 -0
  27. package/assets/{classDiagram-70f12bd4-C6X-VZXt.js → classDiagram-70f12bd4-BGEF352u.js} +1 -1
  28. package/assets/{classDiagram-70f12bd4-OH5sF1K-.js → classDiagram-70f12bd4-Gn3MZjEL.js} +1 -1
  29. package/assets/{classDiagram-v2-f2320105-otk4V9KH.js → classDiagram-v2-f2320105-C_aAfIgL.js} +1 -1
  30. package/assets/{classDiagram-v2-f2320105-D1I5s2af.js → classDiagram-v2-f2320105-DYPMFlcT.js} +1 -1
  31. package/assets/{clipper-BWlMmsTH.js → clipper-ByL4oIbZ.js} +1 -1
  32. package/assets/clone-keJVIubx.js +1 -0
  33. package/assets/{createText-2e5e7dd3-DuiUpOXV.js → createText-2e5e7dd3-C0UgSBh5.js} +1 -1
  34. package/assets/{createText-2e5e7dd3-D78Dn_q8.js → createText-2e5e7dd3-CoA6JNKB.js} +1 -1
  35. package/assets/{edges-e0da2a9e-Br3GgeJK.js → edges-e0da2a9e-DmyL0L_b.js} +1 -1
  36. package/assets/{edges-e0da2a9e-Dio4S9-4.js → edges-e0da2a9e-qdTreft0.js} +1 -1
  37. package/assets/{erDiagram-9861fffd-BYkBBs0M.js → erDiagram-9861fffd-Bjyf78Da.js} +1 -1
  38. package/assets/{erDiagram-9861fffd-DuZccGHy.js → erDiagram-9861fffd-DYWtVkXG.js} +1 -1
  39. package/assets/{flowDb-956e92f1-BvHxN76x.js → flowDb-956e92f1-Clfuqh48.js} +1 -1
  40. package/assets/{flowDb-956e92f1-D6cTY_st.js → flowDb-956e92f1-vnfymslR.js} +1 -1
  41. package/assets/{flowDiagram-66a62f08-Bh5LanWu.js → flowDiagram-66a62f08-54OX2XOH.js} +1 -1
  42. package/assets/{flowDiagram-66a62f08-rCNbZEwY.js → flowDiagram-66a62f08-lS8fOa4T.js} +1 -1
  43. package/assets/flowDiagram-v2-96b9c2cf-Bw7qAcFu.js +1 -0
  44. package/assets/flowDiagram-v2-96b9c2cf-DGyrUMgR.js +1 -0
  45. package/assets/{flowchart-elk-definition-4a651766-llVLlxyE.js → flowchart-elk-definition-4a651766-CXdElD40.js} +1 -1
  46. package/assets/{flowchart-elk-definition-4a651766-CIShIr5E.js → flowchart-elk-definition-4a651766-D4UghemK.js} +1 -1
  47. package/assets/{ganttDiagram-c361ad54-j2pPvoOi.js → ganttDiagram-c361ad54-Bl7rQCLW.js} +1 -1
  48. package/assets/{ganttDiagram-c361ad54-CUtUP4cJ.js → ganttDiagram-c361ad54-CwAjbWcn.js} +1 -1
  49. package/assets/{gitGraphDiagram-72cf32ee-hQmVrZTT.js → gitGraphDiagram-72cf32ee-B-ykaDuR.js} +1 -1
  50. package/assets/{gitGraphDiagram-72cf32ee-BijhDF7a.js → gitGraphDiagram-72cf32ee-ChvlaDvG.js} +1 -1
  51. package/assets/{graph-CVdXivUk.js → graph-Bq1HvHkL.js} +1 -1
  52. package/assets/{graph-iERr38Mn.js → graph-DM094zt_.js} +1 -1
  53. package/assets/{index-3862675e-BCU8UapW.js → index-3862675e-CA0xjB9W.js} +1 -1
  54. package/assets/{index-3862675e-BdD6mhWW.js → index-3862675e-DGrSmeWu.js} +1 -1
  55. package/assets/{index-CxqCKbLy.js → index-AFp_qpAI.js} +1 -1
  56. package/assets/{index-q02ppfIX.js → index-B4dceFKj.js} +1 -1
  57. package/assets/{index-BmNN2uGW.js → index-B67KSDhv.js} +1 -1
  58. package/assets/{index-ByxyNkwM.js → index-BC221_MJ.js} +1 -1
  59. package/assets/{index-nPSeKWRU.js → index-BGFWA6Zt.js} +1 -1
  60. package/assets/{index-DCjrDHEd.js → index-BH3jS3gm.js} +1 -1
  61. package/assets/{index-B-bas2QJ.js → index-BKTLxghO.js} +1 -1
  62. package/assets/{index-CW9BeyEu.js → index-Bks4xBST.js} +1 -1
  63. package/assets/{index-CvlBHvN3.js → index-BmEFRKV7.js} +1 -1
  64. package/assets/{index-DuFyvKRm.js → index-C3h-b0UN.js} +1 -1
  65. package/assets/{index-CmOEsqBQ.js → index-C5Onm0uO.js} +1 -1
  66. package/assets/{index-DYtXgeSz.js → index-CGelrSXy.js} +1 -1
  67. package/assets/{index-vw8fjMik.js → index-CKBsqCzR.js} +1 -1
  68. package/assets/{index-DjGrNkrV.js → index-CKjzms_e.js} +1 -1
  69. package/assets/{index-CxUWaNUo.js → index-CMLI8gQy.js} +1 -1
  70. package/assets/{index-CkjuY786.js → index-CVEllvWf.js} +1 -1
  71. package/assets/{index-BUZUbTWS.js → index-CW_ala_3.js} +1 -1
  72. package/assets/{index-BxdH1-er.js → index-Ci5Z3DWY.js} +1 -1
  73. package/assets/{index-BeRhCeQu.js → index-CtNjfEqK.js} +1 -1
  74. package/assets/{index-BakDREx4.js → index-CvbEsbIE.js} +1 -1
  75. package/assets/{index-BnaNWg7x.js → index-DM-iV9Y8.js} +2 -2
  76. package/assets/{index-DMfHKITi.js → index-DTqVJVfv.js} +1 -1
  77. package/assets/{index-BdSFouqR.js → index-DZtf3zC8.js} +1 -1
  78. package/assets/{index-ByECpktB.js → index-D_LadtY8.js} +1 -1
  79. package/assets/{index-UeGDfQIX.js → index-DiSWR48t.js} +1 -1
  80. package/assets/{index-D0O0qYML.js → index-DsFroXrj.js} +1 -1
  81. package/assets/{index-BN7eABQE.js → index-DxqCsnoj.js} +1 -1
  82. package/assets/{index-B_eFETCZ.js → index-Jvh12pKI.js} +1 -1
  83. package/assets/{index-CMQMxwMb.js → index-gHdnUGOu.js} +3 -3
  84. package/assets/{index-CE0NChcB.js → index-kKjFXTNL.js} +1 -1
  85. package/assets/{index-D4R9cQ86.js → index-v1v0x1ci.js} +3 -3
  86. package/assets/{infoDiagram-f8f76790-Cmv7jbWa.js → infoDiagram-f8f76790-C-wYgjah.js} +1 -1
  87. package/assets/{infoDiagram-f8f76790-D0DSz5Ue.js → infoDiagram-f8f76790-Cu-3eq4R.js} +1 -1
  88. package/assets/{journeyDiagram-49397b02-D6HU8bXU.js → journeyDiagram-49397b02-BG8aYQK6.js} +1 -1
  89. package/assets/{journeyDiagram-49397b02-Db00D03K.js → journeyDiagram-49397b02-DXPaY9vn.js} +1 -1
  90. package/assets/{layout-CPj4wl_r.js → layout-DvIBYRXu.js} +1 -1
  91. package/assets/{layout-DGJFFi9s.js → layout-SoDWNnQD.js} +1 -1
  92. package/assets/{line-D_WC7vRh.js → line-Bxc-zIvZ.js} +1 -1
  93. package/assets/{line-CpXi5g86.js → line-CFFXuH78.js} +1 -1
  94. package/assets/{linear-n85WiAhX.js → linear-BF0xIQKP.js} +1 -1
  95. package/assets/{linear-UpmxQM2f.js → linear-DQ3XkjOP.js} +1 -1
  96. package/assets/{main-DX4kRYQX.js → main-8GBlYJSO.js} +8 -8
  97. package/assets/{mermaid.core-N7WwfYcf.js → mermaid.core-BGyfnsLl.js} +3 -3
  98. package/assets/{mindmap-definition-fc14e90a-C8U6pdZ2.js → mindmap-definition-fc14e90a-CrYWIUXi.js} +1 -1
  99. package/assets/{mindmap-definition-fc14e90a-D2hbUBx2.js → mindmap-definition-fc14e90a-DOkI3ebm.js} +1 -1
  100. package/assets/{model-benchmark-launcher-BrOG9Vlm.js → model-benchmark-launcher-DtJmU6Wc.js} +1 -1
  101. package/assets/{model-benchmark-service-DDklUBjC.js → model-benchmark-service-B0QCqInK.js} +1 -1
  102. package/assets/{model-selection-BaH65gMK.js → model-selection-CbzU26xQ.js} +1 -1
  103. package/assets/{photo-wall-splitter-QuaIbsZ1.js → photo-wall-splitter-BPzdMtA1.js} +1 -1
  104. package/assets/{pieDiagram-8a3498a8-BPHw5PxR.js → pieDiagram-8a3498a8-ChLZxjKv.js} +1 -1
  105. package/assets/{pieDiagram-8a3498a8-DKV5uwrs.js → pieDiagram-8a3498a8-DAWd9-jL.js} +1 -1
  106. package/assets/{quadrantDiagram-120e2f19-pe-wI-U4.js → quadrantDiagram-120e2f19-CBBovNE2.js} +1 -1
  107. package/assets/{quadrantDiagram-120e2f19-DQdaeBYM.js → quadrantDiagram-120e2f19-DSvfgE7I.js} +1 -1
  108. package/assets/{requirementDiagram-deff3bca-DYepoptc.js → requirementDiagram-deff3bca-De51fyhT.js} +1 -1
  109. package/assets/{requirementDiagram-deff3bca-QX4OaNTO.js → requirementDiagram-deff3bca-ke6SiEw1.js} +1 -1
  110. package/assets/{sankeyDiagram-04a897e0-DJkKTFXr.js → sankeyDiagram-04a897e0-BxiqkhtK.js} +1 -1
  111. package/assets/{sankeyDiagram-04a897e0-1bYf2R8i.js → sankeyDiagram-04a897e0-Clr8_HiZ.js} +1 -1
  112. package/assets/{sequenceDiagram-704730f1-B52OA1Y3.js → sequenceDiagram-704730f1-Bc8zPHLG.js} +1 -1
  113. package/assets/{sequenceDiagram-704730f1-B4QsYTCd.js → sequenceDiagram-704730f1-BfBUJmAu.js} +1 -1
  114. package/assets/{settings-dialog-Bueh6yYA.js → settings-dialog-C9BMj8Zj.js} +1 -1
  115. package/assets/{skill-dsl-parser-CPpdtdC1.js → skill-dsl-parser-BxkJ9Ixc.js} +1 -1
  116. package/assets/{stateDiagram-587899a1-D221rMST.js → stateDiagram-587899a1-DAil8S_m.js} +1 -1
  117. package/assets/{stateDiagram-587899a1-X7bhoHKe.js → stateDiagram-587899a1-Vop8VRn5.js} +1 -1
  118. package/assets/{stateDiagram-v2-d93cdb3a-D9VdRPIN.js → stateDiagram-v2-d93cdb3a-8b1lkei5.js} +1 -1
  119. package/assets/{stateDiagram-v2-d93cdb3a-CGMASaM9.js → stateDiagram-v2-d93cdb3a-BHm8pPuv.js} +1 -1
  120. package/assets/{styles-6aaf32cf-D_xcN1dm.js → styles-6aaf32cf-BlD8JxQr.js} +1 -1
  121. package/assets/{styles-6aaf32cf-DHTzglnJ.js → styles-6aaf32cf-C4CEUYqK.js} +1 -1
  122. package/assets/{styles-9a916d00-w5Yn3LRO.js → styles-9a916d00-C6tkW5rH.js} +1 -1
  123. package/assets/{styles-9a916d00-BVoYXPeR.js → styles-9a916d00-Oss0YMv5.js} +1 -1
  124. package/assets/{styles-c10674c1-xX_gtHzZ.js → styles-c10674c1-D4YQTLGD.js} +1 -1
  125. package/assets/{styles-c10674c1-C3cgfc7I.js → styles-c10674c1-D6N_fge5.js} +1 -1
  126. package/assets/{svgDrawCommon-08f97a94-DFof-iml.js → svgDrawCommon-08f97a94-BOSx1sQS.js} +1 -1
  127. package/assets/{svgDrawCommon-08f97a94-DxU2UGYh.js → svgDrawCommon-08f97a94-RZvmFGZL.js} +1 -1
  128. package/assets/{timeline-definition-85554ec2-CzV_JohE.js → timeline-definition-85554ec2-BL5y0l6c.js} +1 -1
  129. package/assets/{timeline-definition-85554ec2-FPml3o0r.js → timeline-definition-85554ec2-BY6Jx-ZP.js} +1 -1
  130. package/assets/{tool-windows-hjm6YiPY.js → tool-windows-C4D0lII2.js} +137 -137
  131. package/assets/{ttd-dialog-CqISZ7cy.js → ttd-dialog-qD0QkDID.js} +4 -4
  132. package/assets/{use-runtime-models-C0uyCfar.js → use-runtime-models-BLwgp0M1.js} +1 -1
  133. package/assets/{useCharacters-BGdX9007.js → useCharacters-945b6dqW.js} +1 -1
  134. package/assets/{useWorkflowSubmission-BmFQdWt3.js → useWorkflowSubmission-Z0u0KCNN.js} +2 -2
  135. package/assets/{video-analyze-DszumYAr.js → video-analyze-Co9na7Gr.js} +1 -1
  136. package/assets/{video-generation-DEL-kJgF.js → video-generation-x2UMMPYg.js} +1 -1
  137. package/assets/{video-recovery-service-C9y_bfU1.js → video-recovery-service-BsV5nlEP.js} +1 -1
  138. package/assets/{workflow-generation-utils-Da12qXTb.js → workflow-generation-utils-CZULSJWQ.js} +2 -2
  139. package/assets/{workflow-submission-service-BuFuRV_m.js → workflow-submission-service-C-eCWm_8.js} +1 -1
  140. package/assets/{xychartDiagram-e933f94c-C41tCiSk.js → xychartDiagram-e933f94c-CNjZprqQ.js} +1 -1
  141. package/assets/{xychartDiagram-e933f94c-HanO46iU.js → xychartDiagram-e933f94c-DjIBec-i.js} +1 -1
  142. package/changelog.json +16 -0
  143. package/idle-prefetch-manifest.json +6 -6
  144. package/manifest.json +3 -3
  145. package/package.json +1 -1
  146. package/precache-manifest.json +304 -304
  147. package/sw.js +5 -5
  148. package/version.json +7 -3
  149. package/assets/channel-B5QZCgOy.js +0 -1
  150. package/assets/channel-CU3dhzIS.js +0 -1
  151. package/assets/clone-BAOxFbud.js +0 -1
  152. package/assets/flowDiagram-v2-96b9c2cf-BEdEe3Ip.js +0 -1
  153. package/assets/flowDiagram-v2-96b9c2cf-CVItVSoD.js +0 -1
@@ -1,7 +1,7 @@
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{bn as Se,_ as sn,bm as _a,r as l,y as u,gZ as Ca,g_ as Ta,g$ as zs,h0 as pt,h1 as Ma,h2 as Ea,h3 as Aa,h4 as Pa,h5 as Vt,h6 as Kt,h7 as Da,h8 as za,at as rs,h9 as Ra,aH as ja,ha as Na,hb as mt,hc as In,hd as on,he as vn,hf as en,hg as Dt,hh as _n,bD as En,hi as os,bw as An,dM as Pn,b7 as cn,by as Rs,bX as js,cS as Oa,hj as Dn,hk as Wa,hl as Ba,bW as La,bT as Fa,hm as Ha,fY as $a,b8 as zn,hn as Ns,ho as Ga,hp as Ua,hq as Va,ai as an,hr as Cn,aI as Os,hs as Ka,ht as tt,hu as yn,hv as tn,hw as ut,hx as is,hy as Yt,hz as cs,hA as ls,hB as Ya,hC as Pe,hD as xn,l as Za,fR as Tt,hE as ds,hF as us,al as Ne,as as hs,ar as Xa,hG as qa,hH as ps,hI as Ja,U as Ws,bE as kn,bJ as ms,bI as Bs,hJ as fs,ge as gs,hK as ws,z as Zt,bu as Qa,bt as er,hL as tr,hM as nr,bx as sr,hN as ar,hO as Is}from"./tool-windows-hjm6YiPY.js";import{p as rr,a as or,b as ir,u as cr,c as lr,d as Xt,e as ht,W as dr}from"./useWorkflowSubmission-BmFQdWt3.js";import{u as qt,M as ur}from"./use-runtime-models-C0uyCfar.js";import{u as Ls,A as hr,m as pr,a as mr,i as fr,b as gr}from"./main-DX4kRYQX.js";import{u as wr,S as Ir,i as yr,s as ys}from"./index-D4R9cQ86.js";import{K as Rn,u as xr,M as kr}from"./ModelDropdown-3MjTl1AO.js";import{b as br,l as Sr,a as bn,m as vr,s as _r,c as Cr,P as Tr,d as Mr}from"./ai-generation-preferences-service-Ch1XhjkZ.js";import{setCanvasBoard as xs}from"./canvas-insertion-ZEZkcXvB.js";import{s as ks}from"./workflow-submission-service-BuFuRV_m.js";import{r as Fs,S as Er,a as Tn,b as nn,f as Ar,c as Pr}from"./skill-dsl-parser-CPpdtdC1.js";import"./model-benchmark-service-DDklUBjC.js";import"./video-generation-DEL-kJgF.js";import"./video-analyze-DszumYAr.js";import"./model-selection-BaH65gMK.js";/* empty css */const ve="external-skill-packages";let jn=[],rn=[],Mn=!1;async function Oe(){var n,t;if(!Mn){try{let e=await Se.get(ve),s=null;try{s=await Dr()}catch(c){console.warn("[ExternalSkillService] 预构建 bundle 加载失败(非致命):",c)}if(!(e&&Array.isArray(e)&&e.length>0))s&&s.skills&&s.skills.length>0&&(e=[{name:s.name||"baoyu-skills",skills:s.skills,metadata:s.metadata}],await Se.set(ve,e),console.log(`[ExternalSkillService] 已加载预构建 bundle: ${s.skills.length} 个 Skill`));else if(s&&s.skills&&s.skills.length>0){const c=(n=s.metadata)==null?void 0:n.bundleVersion,o=e.find(r=>r.name===(s.name||"baoyu-skills")),h=(t=o==null?void 0:o.metadata)==null?void 0:t.bundleVersion;if(c&&c!==h){const r={name:s.name||"baoyu-skills",skills:s.skills,metadata:s.metadata},p=e.filter(I=>I.name!==r.name);e=[r,...p],await Se.set(ve,e),console.log(`[ExternalSkillService] 预构建 bundle 已更新: ${h||"无"} → ${c} (${s.skills.length} 个 Skill)`)}else if(!c&&!h){const r={name:s.name||"baoyu-skills",skills:s.skills,metadata:s.metadata},p=e.filter(I=>I.name!==r.name);e=[r,...p],await Se.set(ve,e),console.log(`[ExternalSkillService] 预构建 bundle 已强制刷新(旧版本无版本号): ${s.skills.length} 个 Skill`)}}e&&Array.isArray(e)&&await ln(e)}catch(e){console.error("[ExternalSkillService] 初始化失败:",e)}Mn=!0}}async function Dr(){try{const n=await sn(()=>import("./external-skills-BcV6ATYi.js"),[],import.meta.url);return n.default||n}catch{return null}}async function zr(){return await Oe(),[...jn]}async function Nn(n){await Oe();const t=await Se.get(ve),e=t&&Array.isArray(t)?[...t]:[],s=e.findIndex(i=>i.name===n.name);s>=0?e[s]=n:e.push(n),await Se.set(ve,e),await ln(e)}async function Rr(n){await Oe();const t=await Se.get(ve);if(!t||!Array.isArray(t))return;const e=t.filter(s=>s.name!==n);await Se.set(ve,e),await ln(e)}async function jr(n){await Oe();const t=await Se.get(ve);if(!t)return[];const e=t.find(s=>s.name===n);return(e==null?void 0:e.skills)??[]}async function Nr(){return await Oe(),[...rn]}async function Or(){await Oe();const n=await Se.get(ve);return n?n.flatMap(t=>t.skills):[]}async function Hs(n){await Oe();const t=await Se.get(ve);if(!t)return null;for(const e of t){const s=e.skills.find(i=>i.id===n);if(s)return s}return null}async function Wr(n){const t=await Hs(n);return(t==null?void 0:t.content)??null}async function Br(n,t){var S;const s=await(await sn(async()=>{const{default:m}=await import("./tool-windows-hjm6YiPY.js").then(w=>w.j);return{default:m}},__vite__mapDeps([0]),import.meta.url)).default.loadAsync(n);let i=null;const c=((S=s.file(/\.claude-plugin\/marketplace\.json$/))==null?void 0:S[0])||s.file("marketplace.json");if(c){const m=await c.async("text");i=or(m)}const o=t||(i==null?void 0:i.name)||n.name.replace(/\.zip$/i,""),h=[],r=/(?:^|\/)(skills\/([^/]+)\/SKILL\.md)$/;for(const[m,w]of Object.entries(s.files)){if(w.dir)continue;const g=m.match(r);if(g){const D=g[2],x=await w.async("text"),v=new Map,A=m.substring(0,m.lastIndexOf("SKILL.md"));for(const[_,b]of Object.entries(s.files))if(!b.dir&&_.startsWith(A)&&_!==m){const z=_.substring(A.length);if(z.startsWith("references/")||z.startsWith("prompts/")){const P=await b.async("text");v.set(z,P)}}h.push({dirName:D,skillMdContent:x,references:v.size>0?v:void 0})}}if(h.length===0)throw new Error("ZIP 文件中未找到有效的 Skill(预期路径: skills/*/SKILL.md)");const p=ir(h,o,i),I={name:o,url:void 0,skills:p,metadata:i==null?void 0:i.metadata};return await Nn(I),I}async function Lr(n,t="custom"){const e=rr(n);if(!e)throw new Error("无法解析 SKILL.md 内容,请检查格式是否正确(需包含 YAML front matter)");const s={id:`${t}:${e.name}`,name:e.name,description:e.description,type:Er,content:e.body,source:t};await Oe();const i=await Se.get(ve),c=i&&Array.isArray(i)?[...i]:[];let o=c.find(r=>r.name===t);o||(o={name:t,skills:[],metadata:{description:"手动导入的 Skill"}},c.push(o));const h=o.skills.findIndex(r=>r.id===s.id);return h>=0?o.skills[h]=s:o.skills.push(s),await Se.set(ve,c),await ln(c),s}async function Fr(n){await Nn(n)}async function ln(n){jn=n.map(e=>({name:e.name,url:e.url,skillCount:e.skills.length,metadata:e.metadata})),rn=[];for(const e of n)for(const s of e.skills)rn.push({id:s.id,name:s.name,description:s.description,source:s.source,sourceUrl:s.sourceUrl,category:s.category,outputType:s.outputType});const t=n.flatMap(e=>e.skills);Fs(t)}async function Hr(){await Se.remove(ve),jn=[],rn=[],Fs([]),Mn=!1}const $s={initialize:Oe,getPackages:zr,addPackage:Nn,removePackage:Rr,getSkillsByPackage:jr,getAllExternalSkillsMeta:Nr,getAllExternalSkills:Or,getSkillById:Hs,getSkillContentById:Wr,importFromZip:Br,importFromPastedContent:Lr,importFromBundle:Fr,clearAll:Hr},$r=({onSelectPrompt:n,language:t,extraActions:e})=>{const{history:s,removeHistory:i,togglePinHistory:c,refreshHistory:o}=Ls({deduplicateWithPresets:!1}),{confirm:h,confirmDialog:r}=_a(),[p,I]=l.useState(!1),S=l.useRef(null),m=l.useRef(null),w=l.useRef(null),g=l.useMemo(()=>(hr[t]||[]).map((te,Y)=>({id:`preset_${Y}`,content:te.content,isPreset:!0,modelType:te.modelType,scene:te.scene})),[t]),D=100,x=l.useMemo(()=>{const P=new Set(g.map(E=>E.content.trim().toLowerCase())),Y=s.filter(E=>!P.has(E.content.trim().toLowerCase())).slice(0,D).map(E=>({id:E.id,content:E.content,pinned:E.pinned,modelType:E.modelType})),q=g.map(E=>({id:E.id,content:E.content,pinned:!1,isPreset:!0,modelType:E.modelType,scene:E.scene}));return[...Y,...q]},[s,g]);l.useEffect(()=>()=>{m.current&&clearTimeout(m.current),w.current&&clearTimeout(w.current)},[]);const v=l.useCallback(()=>{w.current&&(clearTimeout(w.current),w.current=null),m.current=setTimeout(()=>{o(),I(!0)},150)},[o]),A=l.useCallback(()=>{m.current&&(clearTimeout(m.current),m.current=null),w.current=setTimeout(()=>{I(!1)},200)},[]),_=l.useCallback(P=>{n({content:P.content,modelType:P.modelType,scene:P.scene}),I(!1)},[n]),b=l.useCallback(async P=>{P.startsWith("preset_")||!await h({title:t==="zh"?"确认删除提示词":"Delete Prompt",description:t==="zh"?"确定要删除这条历史提示词吗?此操作不可撤销。":"Are you sure you want to delete this prompt history item? This action cannot be undone.",confirmText:t==="zh"?"删除":"Delete",cancelText:t==="zh"?"取消":"Cancel",danger:!0})||i(P)},[h,t,i]),z=l.useCallback(P=>{P.startsWith("preset_")||c(P)},[c]);return u.jsxs("div",{ref:S,className:"prompt-history-popover",children:[u.jsxs("div",{className:"prompt-history-popover__actions",children:[u.jsx("button",{className:"prompt-history-popover__trigger",title:t==="zh"?"提示词":"Prompts","data-track":"ai_input_click_history",onMouseEnter:v,onMouseLeave:A,children:u.jsx(Ca,{size:18})}),e]}),p&&u.jsx("div",{className:"prompt-history-popover__panel-wrapper",onMouseEnter:v,onMouseLeave:A,children:u.jsx(Ta,{title:t==="zh"?"提示词":"Prompts",items:x,onSelect:_,onTogglePin:z,onDelete:b,language:t,showCount:!0})}),r]})};function Gr(n){var t;return!!((t=n.params)!=null&&t.longVideoMeta)}function Ur(n){var t;return((t=n.params)==null?void 0:t.longVideoMeta)||null}class ft{constructor(){this.isInitialized=!1,this.batches=new Map,this.initTimestamp=0}static getInstance(){return ft.instance||(ft.instance=new ft),ft.instance}initialize(){this.isInitialized||(this.isInitialized=!0,this.initTimestamp=Date.now(),zs.observeTaskUpdates().subscribe(t=>{if(t.type==="taskUpdated"&&t.task.status===pt.COMPLETED&&t.task.type===Ma.VIDEO&&Gr(t.task)){if((t.task.completedAt||0)<this.initTimestamp)return;this.handleSegmentCompleted(t.task).catch(s=>{console.error("[LongVideoChain] Error handling completed segment:",s)})}}))}async handleSegmentCompleted(t){var p;const e=Ur(t);if(!e)return;const{segmentIndex:s,totalSegments:i,scripts:c,batchId:o}=e,h=(p=t.result)==null?void 0:p.url;let r=this.batches.get(o);if(r||(r={batchId:o,totalSegments:i,completedSegments:new Map,processedSegments:new Set,creatingNextFor:null,isMerging:!1,mergeCompleted:!1,scripts:c||[],characterReferenceUrls:e.characterReferenceUrls,characterDescription:e.characterDescription},this.batches.set(o,r)),!r.processedSegments.has(s)){if(r.processedSegments.add(s),h&&r.completedSegments.set(s,h),r.completedSegments.size===i){await this.mergeAndInsert(r);return}if(r.creatingNextFor!==s&&s<i){r.creatingNextFor=s;try{await this.createNextSegment(t,e,c,h,r.characterReferenceUrls,r.characterDescription)}finally{r.creatingNextFor=null}}}}async createNextSegment(t,e,s,i,c,o){const h=e.segmentIndex+1,r=s.find(S=>S.index===h);if(!r){console.error(`[LongVideoChain] Script not found for segment ${h}`);return}let p;if(i)try{p=(await Ea(i)).dataUrl}catch(S){console.error("[LongVideoChain] Failed to extract last frame:",S)}const I={...e,segmentIndex:h,needsLastFrame:h<e.totalSegments,characterReferenceUrls:c??e.characterReferenceUrls,characterDescription:o??e.characterDescription};Aa(r,I,p)}async mergeAndInsert(t){if(!(t.isMerging||t.mergeCompleted)){t.isMerging=!0;try{const e=[];for(let o=1;o<=t.totalSegments;o++){const h=t.completedSegments.get(o);h&&e.push(h)}if(e.length===0){console.error("[LongVideoChain] No video URLs to merge");return}const s=this.extractTransitions(t),c=await pr(e,(o,h,r)=>{const p=r||`${h} ${o.toFixed(1)}%`},{transitions:s,transitionDuration:.5});await this.insertMergedVideo(c.url),t.mergeCompleted=!0,this.cleanupBatch(t.batchId)}catch(e){console.error("[LongVideoChain] Merge failed:",e),this.cleanupBatch(t.batchId)}finally{t.isMerging=!1}}}async insertMergedVideo(t){try{await Pa("video",t)}catch(e){console.error("[LongVideoChain] Failed to insert video to canvas:",e)}}extractTransitions(t){return!t.scripts||t.scripts.length===0?[]:t.scripts.sort((e,s)=>e.index-s.index).slice(0,-1).map(e=>e.transition_hint||"cut")}cleanupBatch(t){const e=this.batches.get(t);e&&(e.completedSegments.clear(),e.processedSegments.clear(),this.batches.delete(t))}getBatchStatus(t){const e=this.batches.get(t);return e?{completed:e.completedSegments.size,total:e.totalSegments,isMerging:e.isMerging,mergeCompleted:e.mergeCompleted}:null}}const Vr=ft.getInstance();function Kr(){Vr.initialize()}function bs(){return`img-${Date.now()}-${Math.random().toString(36).substr(2,9)}`}async function Ss(n){return new Promise((t,e)=>{const s=new Image,i=n.startsWith("http")&&!n.startsWith(location.origin);s.crossOrigin="anonymous",s.onload=()=>t(s),s.onerror=()=>{e(i?new Error("无法加载外部图片,可能是跨域 (CORS) 限制。请先下载图片到本地后再操作。"):new Error("图片加载失败,请检查图片是否有效"))},s.src=n})}function Yr(n,t=.92){return n.toDataURL("image/jpeg",t)}class Zr{async split(t,e){const{rows:s,cols:i}=e;if(s<1||i<1)throw new Error("Grid rows and cols must be at least 1");const c=await Ss(t),o=c.naturalWidth,h=c.naturalHeight,r=Math.floor(o/i),p=Math.floor(h/s),I=[];for(let S=0;S<s;S++)for(let m=0;m<i;m++){const w=S*i+m,g=m*r,D=S*p,x=document.createElement("canvas");x.width=r,x.height=p;const v=x.getContext("2d");if(!v)throw new Error("Failed to get canvas 2d context");v.drawImage(c,g,D,r,p,0,0,r,p);const A=Yr(x);I.push({id:bs(),imageData:A,originalIndex:w,width:r,height:p})}return I}async splitToBlob(t,e){const{rows:s,cols:i}=e;if(s<1||i<1)throw new Error("Grid rows and cols must be at least 1");const c=await Ss(t),o=c.naturalWidth,h=c.naturalHeight,r=Math.floor(o/i),p=Math.floor(h/s),I=[];for(let S=0;S<s;S++)for(let m=0;m<i;m++){const w=S*i+m,g=m*r,D=S*p,x=document.createElement("canvas");x.width=r,x.height=p;const v=x.getContext("2d");if(!v)throw new Error("Failed to get canvas 2d context");v.drawImage(c,g,D,r,p,0,0,r,p);const A=await new Promise((b,z)=>{x.toBlob(P=>{P?b(P):z(new Error("Failed to create blob"))},"image/png",.92)}),_=URL.createObjectURL(A);I.push({id:bs(),imageData:_,originalIndex:w,width:r,height:p})}return I}revokeBlobUrls(t){for(const e of t)e.imageData.startsWith("blob:")&&URL.revokeObjectURL(e.imageData)}}const vs=new Zr;function Me(n,t){return Math.random()*(t-n)+n}function Jt(n){const t=[...n];for(let e=t.length-1;e>0;e--){const s=Math.floor(Math.random()*(e+1));[t[e],t[s]]=[t[s],t[e]]}return t}class Xr{calculate(t,e,s,i){switch(e){case"scattered":return this.scatteredLayout(t,s,i);case"grid":return this.gridLayout(t,s);case"circular":return this.circularLayout(t,s,i);case"inspiration-board":return this.inspirationBoardLayout(t,s,i);default:return console.warn(`[LayoutEngine] Unknown layout style: ${e}, falling back to grid`),this.gridLayout(t,s)}}scatteredLayout(t,e,s){const{maxRotation:i=15,minScale:c=.85,maxScale:o=1.15,positionJitter:h=40}=s||{},{canvasWidth:r,canvasHeight:p,startX:I,startY:S,gap:m=20}=e,w=t.length,g=Math.ceil(Math.sqrt(w)),D=Math.ceil(w/g),x=Math.max(...t.map(Y=>Y.width)),v=Math.max(...t.map(Y=>Y.height)),A=r-m*2,_=p-m*2,b=A/g,z=_/D,P=Math.min((b-m)/x,(z-m)/v,1),te=Jt(t.map((Y,q)=>q));return t.map((Y,q)=>{const E=Math.floor(q/g),L=q%g,W=I+m+L*b+b/2,ne=S+m+E*z+z/2,$=Me(-h,h),ee=Me(-h,h),Ce=Me(-i,i),We=Me(c,o),Be=P*We,de=Y.width*Be,je=Y.height*Be;return{...Y,x:W+$-de/2,y:ne+ee-je/2,rotation:Ce,scale:Be,zIndex:te[q]}})}gridLayout(t,e){const{canvasWidth:s,canvasHeight:i,startX:c,startY:o,gap:h=20}=e,r=t.length,p=Math.ceil(Math.sqrt(r)),I=Math.ceil(r/p),S=Math.max(...t.map(A=>A.width)),m=Math.max(...t.map(A=>A.height)),w=s-h*(p+1),g=i-h*(I+1),D=w/p,x=g/I,v=Math.min(D/S,x/m,1);return t.map((A,_)=>{const b=Math.floor(_/p),z=_%p,P=A.width*v,te=A.height*v,Y=c+h+z*(D+h),q=o+h+b*(x+h),E=Y+(D-P)/2,L=q+(x-te)/2;return{...A,x:E,y:L,rotation:0,scale:v,zIndex:_}})}circularLayout(t,e,s){const{centerIndex:i=-1,radius:c,startAngle:o=-90}=s||{},{canvasWidth:h,canvasHeight:r,startX:p,startY:I}=e,S=p+h/2,m=I+r/2,w=i>=0&&i<t.length?t.filter((L,W)=>W!==i):t,g=i>=0&&i<t.length?t[i]:null,D=Math.max(...t.map(L=>L.width)),x=Math.max(...t.map(L=>L.height)),v=Math.max(D,x),A=w.length,_=v*.8,b=A*v*1.2,z=Math.max(_,b/(2*Math.PI)),P=c||Math.min(z,Math.min(h,r)/2-v/2),te=Math.min(h,r),Y=Math.min(te*.25/v,1),q=[];if(g){const L=g.width*Y*1.2,W=g.height*Y*1.2;q.push({...g,x:S-L/2,y:m-W/2,rotation:0,scale:Y*1.2,zIndex:A})}const E=360/A;return w.forEach((L,W)=>{const $=(o+W*E)*Math.PI/180,ee=L.width*Y,Ce=L.height*Y,We=S+P*Math.cos($)-ee/2,Be=m+P*Math.sin($)-Ce/2;q.push({...L,x:We,y:Be,rotation:0,scale:Y,zIndex:W})}),q}inspirationBoardLayout(t,e,s){const{minWidthRatio:i=Vt.minWidthRatio,maxWidthRatio:c=Vt.maxWidthRatio,maxRotation:o=Vt.maxRotation,gap:h=Vt.gap}=s||{},{canvasWidth:r,canvasHeight:p,startX:I,startY:S}=e,m=t.length,w=this.assignSizeCategories(m),g=t.reduce((z,P)=>z+P.width,0)/m,D=t.reduce((z,P)=>z+P.height,0)/m,x=r||1200,v=p||600,A=Math.min(x*.25/g,v*.4/D,1),_=this.calculateInspirationBoardPositions(m,x,v,h),b=Jt(t.map((z,P)=>P));return t.map((z,P)=>{const te=_[P],Y=w[P];let q;switch(Y){case"large":q=Me(1.2,c);break;case"medium":q=Me(.9,1.1);break;case"small":q=Me(i,.85);break;default:q=1}const E=A*q,L=Me(-o,o),W=Me(-20,20),ne=Me(-15,15),$=z.width*E,ee=z.height*E;return{...z,x:I+te.x+W-$/2,y:S+te.y+ne-ee/2,rotation:L,scale:E,zIndex:b[P]}})}assignSizeCategories(t){const e=[],s=Math.max(2,Math.floor(t*.25)),i=Math.max(2,Math.floor(t*.25)),c=t-s-i;for(let o=0;o<s;o++)e.push("large");for(let o=0;o<c;o++)e.push("medium");for(let o=0;o<i;o++)e.push("small");return Jt(e)}calculateInspirationBoardPositions(t,e,s,i){const c=[],o=Math.ceil(t/4),h=Math.ceil(t/o),r=(e-i*2)/h,p=(s-i*2)/o;for(let I=0;I<t;I++){const S=Math.floor(I/h),m=I%h,w=i+m*r+r/2,g=i+S*p+p/2,D=Me(-r*.3,r*.3),x=Me(-p*.2,p*.2);c.push({x:w+D,y:g+x})}return Jt(c)}calculateRequiredSize(t,e,s=.5){const i=t.length,c=Math.ceil(Math.sqrt(i)),o=Math.ceil(i/c),h=Math.max(...t.map(w=>w.width)),r=Math.max(...t.map(w=>w.height)),p=20,I=e==="scattered"?60:40,S=c*h*s+(c+1)*p+I*2,m=o*r*s+(o+1)*p+I*2;return{width:S,height:m}}}const _s=new Xr;class qr{constructor(){this.board=null}setBoard(t){this.board=t}getBoard(){return this.board}async generate(t){const{theme:e,gridConfig:s=Kt.gridConfig,layoutStyle:i=Kt.layoutStyle,imageSize:c=Kt.imageSize,imageQuality:o=Kt.imageQuality}=t;try{const h=this.buildPrompt(e,s),r=await Da.generateImage(h,{size:c,quality:o,response_format:"url"});if(!r.data||r.data.length===0)throw new Error("AI 生成图片失败:未返回图片数据");const p=r.data[0].url||r.data[0].b64_json,I=p&&za(String(p));if(!I)throw new Error("AI 生成图片失败:未返回图片 URL");const S=await rs.getImageForAI(I),m=S.type==="base64"?S.value:I,w=await vs.split(m,s),g=this.calculateLayoutParams(w),D=_s.calculate(w,i,g);return{success:!0,originalImageUrl:I,elements:D}}catch(h){return console.error("[GridImageService] Generation failed:",h),{success:!1,error:h.message||"宫格图生成失败"}}}async processExistingImage(t,e,s="scattered"){try{const i=await rs.getImageForAI(t),c=i.type==="base64"?i.value:t,o=await vs.split(c,e),h=this.calculateLayoutParams(o),r=_s.calculate(o,s,h);return{success:!0,originalImageUrl:t,elements:r}}catch(i){return console.error("[GridImageService] Processing failed:",i),{success:!1,error:i.message||"宫格图处理失败"}}}async insertToBoard(t,e){if(!this.board)throw new Error("画板未初始化,请先调用 setBoard");let s=(e==null?void 0:e[0])??100,i=e==null?void 0:e[1];if(i===void 0){const o=Ra(this.board);i=(o==null?void 0:o[1])??100,s=(o==null?void 0:o[0])??s}const c=[...t].sort((o,h)=>o.zIndex-h.zIndex);for(const o of c){const h=s+o.x,r=i+o.y,p={url:o.imageData,width:o.width*o.scale,height:o.height*o.scale};ja.insertImage(this.board,p,[h,r])}}async generateAndInsert(t,e){const s=await this.generate(t);return s.success&&s.elements&&await this.insertToBoard(s.elements,e),s}buildPrompt(t,e){const s=Na.zh;return s(t,e.rows,e.cols)}calculateLayoutParams(t){const e=t.reduce((w,g)=>w+g.width,0),s=t.reduce((w,g)=>w+g.height,0),i=t.length,c=Math.ceil(Math.sqrt(i)),o=Math.ceil(i/c),h=e/i,r=s/i,p=30,I=50,S=c*h+(c+1)*p+I*2,m=o*r+(o+1)*p+I*2;return{canvasWidth:S,canvasHeight:m,startX:0,startY:0,gap:p}}}const Cs=new qr;function Jr(n){return{cleanText:n,selectedAudioModel:null,selectedImageModel:null,selectedVideoModel:null,selectedParams:[],selectedCount:null}}function Qr(){const n=on.get();return(n==null?void 0:n.imageModelName)||Dt()}function eo(){const n=on.get();return(n==null?void 0:n.videoModelName)||vn()}function to(){const n=on.get();return(n==null?void 0:n.audioModelName)||en()}function Ts(){const n=on.get();return(n==null?void 0:n.textModelName)||"deepseek-v3.2"}function no(n,t,e){if(t.length>0)return t.join(`
2
+ import{bn as Se,_ as sn,bm as _a,r as l,y as u,gZ as Ca,g_ as Ta,g$ as zs,h0 as pt,h1 as Ma,h2 as Ea,h3 as Aa,h4 as Pa,h5 as Vt,h6 as Kt,h7 as Da,h8 as za,at as rs,h9 as Ra,aH as ja,ha as Na,hb as mt,hc as In,hd as on,he as vn,hf as en,hg as Dt,hh as _n,bD as En,hi as os,bw as An,dM as Pn,b7 as cn,by as Rs,bX as js,cS as Oa,hj as Dn,hk as Wa,hl as Ba,bW as La,bT as Fa,hm as Ha,fY as $a,b8 as zn,hn as Ns,ho as Ga,hp as Ua,hq as Va,ai as an,hr as Cn,aI as Os,hs as Ka,ht as tt,hu as yn,hv as tn,hw as ut,hx as is,hy as Yt,hz as cs,hA as ls,hB as Ya,hC as Pe,hD as xn,l as Za,fR as Tt,hE as ds,hF as us,al as Ne,as as hs,ar as Xa,hG as qa,hH as ps,hI as Ja,U as Ws,bE as kn,bJ as ms,bI as Bs,hJ as fs,ge as gs,hK as ws,z as Zt,bu as Qa,bt as er,hL as tr,hM as nr,bx as sr,hN as ar,hO as Is}from"./tool-windows-C4D0lII2.js";import{p as rr,a as or,b as ir,u as cr,c as lr,d as Xt,e as ht,W as dr}from"./useWorkflowSubmission-Z0u0KCNN.js";import{u as qt,M as ur}from"./use-runtime-models-BLwgp0M1.js";import{u as Ls,A as hr,m as pr,a as mr,i as fr,b as gr}from"./main-8GBlYJSO.js";import{u as wr,S as Ir,i as yr,s as ys}from"./index-v1v0x1ci.js";import{K as Rn,u as xr,M as kr}from"./ModelDropdown-CHYgRb1r.js";import{b as br,l as Sr,a as bn,m as vr,s as _r,c as Cr,P as Tr,d as Mr}from"./ai-generation-preferences-service-CabuQA69.js";import{setCanvasBoard as xs}from"./canvas-insertion-CYbFgP4L.js";import{s as ks}from"./workflow-submission-service-C-eCWm_8.js";import{r as Fs,S as Er,a as Tn,b as nn,f as Ar,c as Pr}from"./skill-dsl-parser-BxkJ9Ixc.js";import"./model-benchmark-service-B0QCqInK.js";import"./video-generation-x2UMMPYg.js";import"./video-analyze-Co9na7Gr.js";import"./model-selection-CbzU26xQ.js";/* empty css */const ve="external-skill-packages";let jn=[],rn=[],Mn=!1;async function Oe(){var n,t;if(!Mn){try{let e=await Se.get(ve),s=null;try{s=await Dr()}catch(c){console.warn("[ExternalSkillService] 预构建 bundle 加载失败(非致命):",c)}if(!(e&&Array.isArray(e)&&e.length>0))s&&s.skills&&s.skills.length>0&&(e=[{name:s.name||"baoyu-skills",skills:s.skills,metadata:s.metadata}],await Se.set(ve,e),console.log(`[ExternalSkillService] 已加载预构建 bundle: ${s.skills.length} 个 Skill`));else if(s&&s.skills&&s.skills.length>0){const c=(n=s.metadata)==null?void 0:n.bundleVersion,o=e.find(r=>r.name===(s.name||"baoyu-skills")),h=(t=o==null?void 0:o.metadata)==null?void 0:t.bundleVersion;if(c&&c!==h){const r={name:s.name||"baoyu-skills",skills:s.skills,metadata:s.metadata},p=e.filter(I=>I.name!==r.name);e=[r,...p],await Se.set(ve,e),console.log(`[ExternalSkillService] 预构建 bundle 已更新: ${h||"无"} → ${c} (${s.skills.length} 个 Skill)`)}else if(!c&&!h){const r={name:s.name||"baoyu-skills",skills:s.skills,metadata:s.metadata},p=e.filter(I=>I.name!==r.name);e=[r,...p],await Se.set(ve,e),console.log(`[ExternalSkillService] 预构建 bundle 已强制刷新(旧版本无版本号): ${s.skills.length} 个 Skill`)}}e&&Array.isArray(e)&&await ln(e)}catch(e){console.error("[ExternalSkillService] 初始化失败:",e)}Mn=!0}}async function Dr(){try{const n=await sn(()=>import("./external-skills-BcV6ATYi.js"),[],import.meta.url);return n.default||n}catch{return null}}async function zr(){return await Oe(),[...jn]}async function Nn(n){await Oe();const t=await Se.get(ve),e=t&&Array.isArray(t)?[...t]:[],s=e.findIndex(i=>i.name===n.name);s>=0?e[s]=n:e.push(n),await Se.set(ve,e),await ln(e)}async function Rr(n){await Oe();const t=await Se.get(ve);if(!t||!Array.isArray(t))return;const e=t.filter(s=>s.name!==n);await Se.set(ve,e),await ln(e)}async function jr(n){await Oe();const t=await Se.get(ve);if(!t)return[];const e=t.find(s=>s.name===n);return(e==null?void 0:e.skills)??[]}async function Nr(){return await Oe(),[...rn]}async function Or(){await Oe();const n=await Se.get(ve);return n?n.flatMap(t=>t.skills):[]}async function Hs(n){await Oe();const t=await Se.get(ve);if(!t)return null;for(const e of t){const s=e.skills.find(i=>i.id===n);if(s)return s}return null}async function Wr(n){const t=await Hs(n);return(t==null?void 0:t.content)??null}async function Br(n,t){var S;const s=await(await sn(async()=>{const{default:m}=await import("./tool-windows-C4D0lII2.js").then(w=>w.j);return{default:m}},__vite__mapDeps([0]),import.meta.url)).default.loadAsync(n);let i=null;const c=((S=s.file(/\.claude-plugin\/marketplace\.json$/))==null?void 0:S[0])||s.file("marketplace.json");if(c){const m=await c.async("text");i=or(m)}const o=t||(i==null?void 0:i.name)||n.name.replace(/\.zip$/i,""),h=[],r=/(?:^|\/)(skills\/([^/]+)\/SKILL\.md)$/;for(const[m,w]of Object.entries(s.files)){if(w.dir)continue;const g=m.match(r);if(g){const D=g[2],x=await w.async("text"),v=new Map,A=m.substring(0,m.lastIndexOf("SKILL.md"));for(const[_,b]of Object.entries(s.files))if(!b.dir&&_.startsWith(A)&&_!==m){const z=_.substring(A.length);if(z.startsWith("references/")||z.startsWith("prompts/")){const P=await b.async("text");v.set(z,P)}}h.push({dirName:D,skillMdContent:x,references:v.size>0?v:void 0})}}if(h.length===0)throw new Error("ZIP 文件中未找到有效的 Skill(预期路径: skills/*/SKILL.md)");const p=ir(h,o,i),I={name:o,url:void 0,skills:p,metadata:i==null?void 0:i.metadata};return await Nn(I),I}async function Lr(n,t="custom"){const e=rr(n);if(!e)throw new Error("无法解析 SKILL.md 内容,请检查格式是否正确(需包含 YAML front matter)");const s={id:`${t}:${e.name}`,name:e.name,description:e.description,type:Er,content:e.body,source:t};await Oe();const i=await Se.get(ve),c=i&&Array.isArray(i)?[...i]:[];let o=c.find(r=>r.name===t);o||(o={name:t,skills:[],metadata:{description:"手动导入的 Skill"}},c.push(o));const h=o.skills.findIndex(r=>r.id===s.id);return h>=0?o.skills[h]=s:o.skills.push(s),await Se.set(ve,c),await ln(c),s}async function Fr(n){await Nn(n)}async function ln(n){jn=n.map(e=>({name:e.name,url:e.url,skillCount:e.skills.length,metadata:e.metadata})),rn=[];for(const e of n)for(const s of e.skills)rn.push({id:s.id,name:s.name,description:s.description,source:s.source,sourceUrl:s.sourceUrl,category:s.category,outputType:s.outputType});const t=n.flatMap(e=>e.skills);Fs(t)}async function Hr(){await Se.remove(ve),jn=[],rn=[],Fs([]),Mn=!1}const $s={initialize:Oe,getPackages:zr,addPackage:Nn,removePackage:Rr,getSkillsByPackage:jr,getAllExternalSkillsMeta:Nr,getAllExternalSkills:Or,getSkillById:Hs,getSkillContentById:Wr,importFromZip:Br,importFromPastedContent:Lr,importFromBundle:Fr,clearAll:Hr},$r=({onSelectPrompt:n,language:t,extraActions:e})=>{const{history:s,removeHistory:i,togglePinHistory:c,refreshHistory:o}=Ls({deduplicateWithPresets:!1}),{confirm:h,confirmDialog:r}=_a(),[p,I]=l.useState(!1),S=l.useRef(null),m=l.useRef(null),w=l.useRef(null),g=l.useMemo(()=>(hr[t]||[]).map((te,Y)=>({id:`preset_${Y}`,content:te.content,isPreset:!0,modelType:te.modelType,scene:te.scene})),[t]),D=100,x=l.useMemo(()=>{const P=new Set(g.map(E=>E.content.trim().toLowerCase())),Y=s.filter(E=>!P.has(E.content.trim().toLowerCase())).slice(0,D).map(E=>({id:E.id,content:E.content,pinned:E.pinned,modelType:E.modelType})),q=g.map(E=>({id:E.id,content:E.content,pinned:!1,isPreset:!0,modelType:E.modelType,scene:E.scene}));return[...Y,...q]},[s,g]);l.useEffect(()=>()=>{m.current&&clearTimeout(m.current),w.current&&clearTimeout(w.current)},[]);const v=l.useCallback(()=>{w.current&&(clearTimeout(w.current),w.current=null),m.current=setTimeout(()=>{o(),I(!0)},150)},[o]),A=l.useCallback(()=>{m.current&&(clearTimeout(m.current),m.current=null),w.current=setTimeout(()=>{I(!1)},200)},[]),_=l.useCallback(P=>{n({content:P.content,modelType:P.modelType,scene:P.scene}),I(!1)},[n]),b=l.useCallback(async P=>{P.startsWith("preset_")||!await h({title:t==="zh"?"确认删除提示词":"Delete Prompt",description:t==="zh"?"确定要删除这条历史提示词吗?此操作不可撤销。":"Are you sure you want to delete this prompt history item? This action cannot be undone.",confirmText:t==="zh"?"删除":"Delete",cancelText:t==="zh"?"取消":"Cancel",danger:!0})||i(P)},[h,t,i]),z=l.useCallback(P=>{P.startsWith("preset_")||c(P)},[c]);return u.jsxs("div",{ref:S,className:"prompt-history-popover",children:[u.jsxs("div",{className:"prompt-history-popover__actions",children:[u.jsx("button",{className:"prompt-history-popover__trigger",title:t==="zh"?"提示词":"Prompts","data-track":"ai_input_click_history",onMouseEnter:v,onMouseLeave:A,children:u.jsx(Ca,{size:18})}),e]}),p&&u.jsx("div",{className:"prompt-history-popover__panel-wrapper",onMouseEnter:v,onMouseLeave:A,children:u.jsx(Ta,{title:t==="zh"?"提示词":"Prompts",items:x,onSelect:_,onTogglePin:z,onDelete:b,language:t,showCount:!0})}),r]})};function Gr(n){var t;return!!((t=n.params)!=null&&t.longVideoMeta)}function Ur(n){var t;return((t=n.params)==null?void 0:t.longVideoMeta)||null}class ft{constructor(){this.isInitialized=!1,this.batches=new Map,this.initTimestamp=0}static getInstance(){return ft.instance||(ft.instance=new ft),ft.instance}initialize(){this.isInitialized||(this.isInitialized=!0,this.initTimestamp=Date.now(),zs.observeTaskUpdates().subscribe(t=>{if(t.type==="taskUpdated"&&t.task.status===pt.COMPLETED&&t.task.type===Ma.VIDEO&&Gr(t.task)){if((t.task.completedAt||0)<this.initTimestamp)return;this.handleSegmentCompleted(t.task).catch(s=>{console.error("[LongVideoChain] Error handling completed segment:",s)})}}))}async handleSegmentCompleted(t){var p;const e=Ur(t);if(!e)return;const{segmentIndex:s,totalSegments:i,scripts:c,batchId:o}=e,h=(p=t.result)==null?void 0:p.url;let r=this.batches.get(o);if(r||(r={batchId:o,totalSegments:i,completedSegments:new Map,processedSegments:new Set,creatingNextFor:null,isMerging:!1,mergeCompleted:!1,scripts:c||[],characterReferenceUrls:e.characterReferenceUrls,characterDescription:e.characterDescription},this.batches.set(o,r)),!r.processedSegments.has(s)){if(r.processedSegments.add(s),h&&r.completedSegments.set(s,h),r.completedSegments.size===i){await this.mergeAndInsert(r);return}if(r.creatingNextFor!==s&&s<i){r.creatingNextFor=s;try{await this.createNextSegment(t,e,c,h,r.characterReferenceUrls,r.characterDescription)}finally{r.creatingNextFor=null}}}}async createNextSegment(t,e,s,i,c,o){const h=e.segmentIndex+1,r=s.find(S=>S.index===h);if(!r){console.error(`[LongVideoChain] Script not found for segment ${h}`);return}let p;if(i)try{p=(await Ea(i)).dataUrl}catch(S){console.error("[LongVideoChain] Failed to extract last frame:",S)}const I={...e,segmentIndex:h,needsLastFrame:h<e.totalSegments,characterReferenceUrls:c??e.characterReferenceUrls,characterDescription:o??e.characterDescription};Aa(r,I,p)}async mergeAndInsert(t){if(!(t.isMerging||t.mergeCompleted)){t.isMerging=!0;try{const e=[];for(let o=1;o<=t.totalSegments;o++){const h=t.completedSegments.get(o);h&&e.push(h)}if(e.length===0){console.error("[LongVideoChain] No video URLs to merge");return}const s=this.extractTransitions(t),c=await pr(e,(o,h,r)=>{const p=r||`${h} ${o.toFixed(1)}%`},{transitions:s,transitionDuration:.5});await this.insertMergedVideo(c.url),t.mergeCompleted=!0,this.cleanupBatch(t.batchId)}catch(e){console.error("[LongVideoChain] Merge failed:",e),this.cleanupBatch(t.batchId)}finally{t.isMerging=!1}}}async insertMergedVideo(t){try{await Pa("video",t)}catch(e){console.error("[LongVideoChain] Failed to insert video to canvas:",e)}}extractTransitions(t){return!t.scripts||t.scripts.length===0?[]:t.scripts.sort((e,s)=>e.index-s.index).slice(0,-1).map(e=>e.transition_hint||"cut")}cleanupBatch(t){const e=this.batches.get(t);e&&(e.completedSegments.clear(),e.processedSegments.clear(),this.batches.delete(t))}getBatchStatus(t){const e=this.batches.get(t);return e?{completed:e.completedSegments.size,total:e.totalSegments,isMerging:e.isMerging,mergeCompleted:e.mergeCompleted}:null}}const Vr=ft.getInstance();function Kr(){Vr.initialize()}function bs(){return`img-${Date.now()}-${Math.random().toString(36).substr(2,9)}`}async function Ss(n){return new Promise((t,e)=>{const s=new Image,i=n.startsWith("http")&&!n.startsWith(location.origin);s.crossOrigin="anonymous",s.onload=()=>t(s),s.onerror=()=>{e(i?new Error("无法加载外部图片,可能是跨域 (CORS) 限制。请先下载图片到本地后再操作。"):new Error("图片加载失败,请检查图片是否有效"))},s.src=n})}function Yr(n,t=.92){return n.toDataURL("image/jpeg",t)}class Zr{async split(t,e){const{rows:s,cols:i}=e;if(s<1||i<1)throw new Error("Grid rows and cols must be at least 1");const c=await Ss(t),o=c.naturalWidth,h=c.naturalHeight,r=Math.floor(o/i),p=Math.floor(h/s),I=[];for(let S=0;S<s;S++)for(let m=0;m<i;m++){const w=S*i+m,g=m*r,D=S*p,x=document.createElement("canvas");x.width=r,x.height=p;const v=x.getContext("2d");if(!v)throw new Error("Failed to get canvas 2d context");v.drawImage(c,g,D,r,p,0,0,r,p);const A=Yr(x);I.push({id:bs(),imageData:A,originalIndex:w,width:r,height:p})}return I}async splitToBlob(t,e){const{rows:s,cols:i}=e;if(s<1||i<1)throw new Error("Grid rows and cols must be at least 1");const c=await Ss(t),o=c.naturalWidth,h=c.naturalHeight,r=Math.floor(o/i),p=Math.floor(h/s),I=[];for(let S=0;S<s;S++)for(let m=0;m<i;m++){const w=S*i+m,g=m*r,D=S*p,x=document.createElement("canvas");x.width=r,x.height=p;const v=x.getContext("2d");if(!v)throw new Error("Failed to get canvas 2d context");v.drawImage(c,g,D,r,p,0,0,r,p);const A=await new Promise((b,z)=>{x.toBlob(P=>{P?b(P):z(new Error("Failed to create blob"))},"image/png",.92)}),_=URL.createObjectURL(A);I.push({id:bs(),imageData:_,originalIndex:w,width:r,height:p})}return I}revokeBlobUrls(t){for(const e of t)e.imageData.startsWith("blob:")&&URL.revokeObjectURL(e.imageData)}}const vs=new Zr;function Me(n,t){return Math.random()*(t-n)+n}function Jt(n){const t=[...n];for(let e=t.length-1;e>0;e--){const s=Math.floor(Math.random()*(e+1));[t[e],t[s]]=[t[s],t[e]]}return t}class Xr{calculate(t,e,s,i){switch(e){case"scattered":return this.scatteredLayout(t,s,i);case"grid":return this.gridLayout(t,s);case"circular":return this.circularLayout(t,s,i);case"inspiration-board":return this.inspirationBoardLayout(t,s,i);default:return console.warn(`[LayoutEngine] Unknown layout style: ${e}, falling back to grid`),this.gridLayout(t,s)}}scatteredLayout(t,e,s){const{maxRotation:i=15,minScale:c=.85,maxScale:o=1.15,positionJitter:h=40}=s||{},{canvasWidth:r,canvasHeight:p,startX:I,startY:S,gap:m=20}=e,w=t.length,g=Math.ceil(Math.sqrt(w)),D=Math.ceil(w/g),x=Math.max(...t.map(Y=>Y.width)),v=Math.max(...t.map(Y=>Y.height)),A=r-m*2,_=p-m*2,b=A/g,z=_/D,P=Math.min((b-m)/x,(z-m)/v,1),te=Jt(t.map((Y,q)=>q));return t.map((Y,q)=>{const E=Math.floor(q/g),L=q%g,W=I+m+L*b+b/2,ne=S+m+E*z+z/2,$=Me(-h,h),ee=Me(-h,h),Ce=Me(-i,i),We=Me(c,o),Be=P*We,de=Y.width*Be,je=Y.height*Be;return{...Y,x:W+$-de/2,y:ne+ee-je/2,rotation:Ce,scale:Be,zIndex:te[q]}})}gridLayout(t,e){const{canvasWidth:s,canvasHeight:i,startX:c,startY:o,gap:h=20}=e,r=t.length,p=Math.ceil(Math.sqrt(r)),I=Math.ceil(r/p),S=Math.max(...t.map(A=>A.width)),m=Math.max(...t.map(A=>A.height)),w=s-h*(p+1),g=i-h*(I+1),D=w/p,x=g/I,v=Math.min(D/S,x/m,1);return t.map((A,_)=>{const b=Math.floor(_/p),z=_%p,P=A.width*v,te=A.height*v,Y=c+h+z*(D+h),q=o+h+b*(x+h),E=Y+(D-P)/2,L=q+(x-te)/2;return{...A,x:E,y:L,rotation:0,scale:v,zIndex:_}})}circularLayout(t,e,s){const{centerIndex:i=-1,radius:c,startAngle:o=-90}=s||{},{canvasWidth:h,canvasHeight:r,startX:p,startY:I}=e,S=p+h/2,m=I+r/2,w=i>=0&&i<t.length?t.filter((L,W)=>W!==i):t,g=i>=0&&i<t.length?t[i]:null,D=Math.max(...t.map(L=>L.width)),x=Math.max(...t.map(L=>L.height)),v=Math.max(D,x),A=w.length,_=v*.8,b=A*v*1.2,z=Math.max(_,b/(2*Math.PI)),P=c||Math.min(z,Math.min(h,r)/2-v/2),te=Math.min(h,r),Y=Math.min(te*.25/v,1),q=[];if(g){const L=g.width*Y*1.2,W=g.height*Y*1.2;q.push({...g,x:S-L/2,y:m-W/2,rotation:0,scale:Y*1.2,zIndex:A})}const E=360/A;return w.forEach((L,W)=>{const $=(o+W*E)*Math.PI/180,ee=L.width*Y,Ce=L.height*Y,We=S+P*Math.cos($)-ee/2,Be=m+P*Math.sin($)-Ce/2;q.push({...L,x:We,y:Be,rotation:0,scale:Y,zIndex:W})}),q}inspirationBoardLayout(t,e,s){const{minWidthRatio:i=Vt.minWidthRatio,maxWidthRatio:c=Vt.maxWidthRatio,maxRotation:o=Vt.maxRotation,gap:h=Vt.gap}=s||{},{canvasWidth:r,canvasHeight:p,startX:I,startY:S}=e,m=t.length,w=this.assignSizeCategories(m),g=t.reduce((z,P)=>z+P.width,0)/m,D=t.reduce((z,P)=>z+P.height,0)/m,x=r||1200,v=p||600,A=Math.min(x*.25/g,v*.4/D,1),_=this.calculateInspirationBoardPositions(m,x,v,h),b=Jt(t.map((z,P)=>P));return t.map((z,P)=>{const te=_[P],Y=w[P];let q;switch(Y){case"large":q=Me(1.2,c);break;case"medium":q=Me(.9,1.1);break;case"small":q=Me(i,.85);break;default:q=1}const E=A*q,L=Me(-o,o),W=Me(-20,20),ne=Me(-15,15),$=z.width*E,ee=z.height*E;return{...z,x:I+te.x+W-$/2,y:S+te.y+ne-ee/2,rotation:L,scale:E,zIndex:b[P]}})}assignSizeCategories(t){const e=[],s=Math.max(2,Math.floor(t*.25)),i=Math.max(2,Math.floor(t*.25)),c=t-s-i;for(let o=0;o<s;o++)e.push("large");for(let o=0;o<c;o++)e.push("medium");for(let o=0;o<i;o++)e.push("small");return Jt(e)}calculateInspirationBoardPositions(t,e,s,i){const c=[],o=Math.ceil(t/4),h=Math.ceil(t/o),r=(e-i*2)/h,p=(s-i*2)/o;for(let I=0;I<t;I++){const S=Math.floor(I/h),m=I%h,w=i+m*r+r/2,g=i+S*p+p/2,D=Me(-r*.3,r*.3),x=Me(-p*.2,p*.2);c.push({x:w+D,y:g+x})}return Jt(c)}calculateRequiredSize(t,e,s=.5){const i=t.length,c=Math.ceil(Math.sqrt(i)),o=Math.ceil(i/c),h=Math.max(...t.map(w=>w.width)),r=Math.max(...t.map(w=>w.height)),p=20,I=e==="scattered"?60:40,S=c*h*s+(c+1)*p+I*2,m=o*r*s+(o+1)*p+I*2;return{width:S,height:m}}}const _s=new Xr;class qr{constructor(){this.board=null}setBoard(t){this.board=t}getBoard(){return this.board}async generate(t){const{theme:e,gridConfig:s=Kt.gridConfig,layoutStyle:i=Kt.layoutStyle,imageSize:c=Kt.imageSize,imageQuality:o=Kt.imageQuality}=t;try{const h=this.buildPrompt(e,s),r=await Da.generateImage(h,{size:c,quality:o,response_format:"url"});if(!r.data||r.data.length===0)throw new Error("AI 生成图片失败:未返回图片数据");const p=r.data[0].url||r.data[0].b64_json,I=p&&za(String(p));if(!I)throw new Error("AI 生成图片失败:未返回图片 URL");const S=await rs.getImageForAI(I),m=S.type==="base64"?S.value:I,w=await vs.split(m,s),g=this.calculateLayoutParams(w),D=_s.calculate(w,i,g);return{success:!0,originalImageUrl:I,elements:D}}catch(h){return console.error("[GridImageService] Generation failed:",h),{success:!1,error:h.message||"宫格图生成失败"}}}async processExistingImage(t,e,s="scattered"){try{const i=await rs.getImageForAI(t),c=i.type==="base64"?i.value:t,o=await vs.split(c,e),h=this.calculateLayoutParams(o),r=_s.calculate(o,s,h);return{success:!0,originalImageUrl:t,elements:r}}catch(i){return console.error("[GridImageService] Processing failed:",i),{success:!1,error:i.message||"宫格图处理失败"}}}async insertToBoard(t,e){if(!this.board)throw new Error("画板未初始化,请先调用 setBoard");let s=(e==null?void 0:e[0])??100,i=e==null?void 0:e[1];if(i===void 0){const o=Ra(this.board);i=(o==null?void 0:o[1])??100,s=(o==null?void 0:o[0])??s}const c=[...t].sort((o,h)=>o.zIndex-h.zIndex);for(const o of c){const h=s+o.x,r=i+o.y,p={url:o.imageData,width:o.width*o.scale,height:o.height*o.scale};ja.insertImage(this.board,p,[h,r])}}async generateAndInsert(t,e){const s=await this.generate(t);return s.success&&s.elements&&await this.insertToBoard(s.elements,e),s}buildPrompt(t,e){const s=Na.zh;return s(t,e.rows,e.cols)}calculateLayoutParams(t){const e=t.reduce((w,g)=>w+g.width,0),s=t.reduce((w,g)=>w+g.height,0),i=t.length,c=Math.ceil(Math.sqrt(i)),o=Math.ceil(i/c),h=e/i,r=s/i,p=30,I=50,S=c*h+(c+1)*p+I*2,m=o*r+(o+1)*p+I*2;return{canvasWidth:S,canvasHeight:m,startX:0,startY:0,gap:p}}}const Cs=new qr;function Jr(n){return{cleanText:n,selectedAudioModel:null,selectedImageModel:null,selectedVideoModel:null,selectedParams:[],selectedCount:null}}function Qr(){const n=on.get();return(n==null?void 0:n.imageModelName)||Dt()}function eo(){const n=on.get();return(n==null?void 0:n.videoModelName)||vn()}function to(){const n=on.get();return(n==null?void 0:n.audioModelName)||en()}function Ts(){const n=on.get();return(n==null?void 0:n.textModelName)||"deepseek-v3.2"}function no(n,t,e){if(t.length>0)return t.join(`
3
3
  `);if(n){if(e===1)return"请仔细分析这张图片的内容、风格、构图、色调和艺术特点,推测生成这张图片可能使用的原始提示词,然后基于你推测的提示词重新生成一张全新的、风格相似但内容不完全相同的图片。不要直接复制原图。";if(e>1)return"请分析这些图片的主题、风格和视觉元素,找出它们之间的共同点或关联性,然后创造性地将它们融合成一张全新的、和谐统一的图片。融合时请保持各图片的精华元素,确保最终作品在构图、色调和风格上协调一致。"}return""}function Mt(n){return n.replace(":","x").toLowerCase()}function so(n,t,e){const s=t.texts.length>0||t.images.length>0||t.videos.length>0||t.graphics.length>0,i=t.texts,c=t.images.length+t.graphics.length,o=Jr(n),h=o.cleanText.trim().length>0;let r=(e==null?void 0:e.generationType)||"image",p,I=!1;if(e!=null&&e.modelId){const b=mt(e.modelId);e.generationType||((b==null?void 0:b.type)==="video"?r="video":(b==null?void 0:b.type)==="audio"?r="audio":(b==null?void 0:b.type)==="text"?r="text":r="image"),p=e.modelId,I=!0}else o.selectedAudioModel?(r="audio",p=o.selectedAudioModel,I=!0):o.selectedVideoModel?(r="video",p=o.selectedVideoModel,I=!0):o.selectedImageModel?(r="image",p=o.selectedImageModel,I=!0):!s&&h&&!(e!=null&&e.generationType)?(r="agent",p=Ts()):r==="video"?p=eo():r==="audio"?p=to():r==="text"||r==="agent"?p=Ts():p=Qr();let S;(e==null?void 0:e.generationType)==="image"||(e==null?void 0:e.generationType)==="video"||(e==null?void 0:e.generationType)==="audio"||(e==null?void 0:e.generationType)==="text"?S="direct_generation":(e==null?void 0:e.generationType)==="agent"?S="agent_flow":S=h?"agent_flow":"direct_generation";const m=o.cleanText.trim(),w=i.join(`
4
4
  `).trim();let g;if(w&&m?g=`${w}
5
5
 
6
- ${m}`:m?g=m:w?g=w:s&&c>0?g=r==="text"?"":no(s,[],c):g="",p.startsWith("mj")&&(e!=null&&e.params)){const b=br(e.params);b&&(g=[g,b].filter(Boolean).join(" "))}const D=(e==null?void 0:e.count)||o.selectedCount||1;let x,v,A;if(e!=null&&e.params){r!=="audio"&&r!=="text"&&r!=="agent"&&!p.startsWith("mj")&&e.params.size&&(x=Mt(e.params.size)),e.params.duration&&(v=e.params.duration);const b={};for(const[z,P]of Object.entries(e.params))z!=="size"&&z!=="duration"&&P&&(b[z]=P);Object.keys(b).length>0&&(A=b)}if(!x&&(e!=null&&e.size)&&e.size!=="auto"&&(x=Mt(e.size)),!x&&(e==null?void 0:e.size)!=="auto"){for(const b of o.selectedParams)if(b.id==="size"){x=Mt(b.value);break}}if(!v){for(const b of o.selectedParams)if(b.id==="duration"){v=b.value;break}}if(!x&&(e==null?void 0:e.size)!=="auto"&&r!=="text"&&r!=="agent"&&r!=="audio"){const b=mt(p);if((b==null?void 0:b.type)==="image"&&b.imageDefaults)x="1x1";else if((b==null?void 0:b.type)==="video"&&b.videoDefaults){const z=In(p,(e==null?void 0:e.modelRef)||p,e==null?void 0:e.params);x=Mt(z.size||b.videoDefaults.size),v||(v=z.duration||b.videoDefaults.duration)}else if(r==="image")x="1x1";else if(r==="video"){const z=In(p,(e==null?void 0:e.modelRef)||p,e==null?void 0:e.params);x=Mt(z.size),v||(v=z.duration)}}!v&&r==="video"&&(v=In(p,(e==null?void 0:e.modelRef)||p,e==null?void 0:e.params).duration);const _=o.cleanText.trim();return{scenario:S,generationType:r,modelId:p,modelRef:(e==null?void 0:e.modelRef)||null,isModelExplicit:I,prompt:g,userInstruction:_,rawInput:n,count:D,size:x,duration:v,extraParams:A,parseResult:o,hasExtraContent:h,selection:t}}const Sn={id:nn,name:"自动"},Ms=Tn.map(n=>({id:n.id,name:n.name,isSystem:!0})),ao=({value:n,onSelect:t,onAddSkill:e,disabled:s=!1})=>{const[i,c]=l.useState(!1),[o,h]=l.useState([]),[r,p]=l.useState([]),[I,S]=l.useState(""),[m,w]=l.useState(0),g=l.useRef(null),D=l.useRef(null),x=l.useCallback(async()=>{try{const L=(await _n.getAllDirectories()).find(ee=>ee.name==="Skill");if(!L)return;const W=await _n.getNoteMetasByDirectory(L.id),ne=new Set(Tn.map(ee=>ee.id)),$=W.filter(ee=>!ne.has(ee.id)).map(ee=>{var Ce;return{id:ee.id,name:ee.title,outputType:((Ce=ee.metadata)==null?void 0:Ce.outputType)||void 0}});h($)}catch{}},[]),v=l.useCallback(async()=>{try{const E=await $s.getAllExternalSkillsMeta(),L=new Set(Tn.map(ne=>ne.id)),W=E.filter(ne=>!L.has(ne.id)).map(ne=>({id:ne.id,name:ne.name,isExternal:!0,source:ne.source,outputType:ne.outputType}));p(W)}catch{}},[]);l.useEffect(()=>{if(i){x(),v(),S("");const L=[Sn,...Ms,...r,...o].findIndex(W=>W.id===n);w(L>=0?L:0),setTimeout(()=>{var W;return(W=D.current)==null?void 0:W.focus()},50)}},[i,n]),l.useEffect(()=>{if(i&&g.current){const E=g.current.children[m];E&&E.scrollIntoView({block:"nearest"})}},[m,i]);const A=l.useCallback(E=>{E.preventDefault(),!s&&c(L=>!L)},[s]),_=l.useCallback(E=>{t(E),c(!1)},[t]),b=l.useCallback(E=>{E.stopPropagation(),c(!1),e()},[e]),z=[Sn,...Ms,...r,...o],P=I.trim()?z.filter(E=>E.name.toLowerCase().includes(I.toLowerCase())||E.id.toLowerCase().includes(I.toLowerCase())):z,te=z.length>15,Y=l.useCallback(E=>E==="Escape"?(c(!1),!0):E==="ArrowDown"?(w(L=>L<P.length-1?L+1:0),!0):E==="ArrowUp"?(w(L=>L>0?L-1:P.length-1),!0):E==="Enter"||E===" "||E==="Tab"?(m<P.length&&_(P[m].id),!0):!1,[m,P,_]),q=P.find(E=>E.id===n)||Sn;return u.jsx(Rn,{isOpen:i,setIsOpen:c,disabled:s,openKeys:["Enter"," ","ArrowDown","ArrowUp"],onOpenKey:Y,children:({containerRef:E,menuRef:L,portalPosition:W,handleTriggerKeyDown:ne})=>u.jsxs("div",{className:"skill-dropdown",ref:E,children:[u.jsxs("button",{className:`skill-dropdown__trigger ${i?"skill-dropdown__trigger--open":""}`,onMouseDown:A,onKeyDown:ne,disabled:s,type:"button",title:`Skill: ${q.name}`,children:[u.jsx("span",{className:"skill-dropdown__icon-prefix",children:u.jsx(os,{size:14})}),u.jsx("span",{className:"skill-dropdown__label",children:q.name}),u.jsx(An,{size:14,className:`skill-dropdown__chevron ${i?"skill-dropdown__chevron--open":""}`})]}),i&&En.createPortal(u.jsxs("div",{ref:L,className:`skill-dropdown__menu ${cn}`,style:{position:"fixed",zIndex:Pn.DROPDOWN_PORTAL,left:W.left,bottom:window.innerHeight-W.top+8},onMouseDown:$=>$.stopPropagation(),onClick:$=>$.stopPropagation(),children:[u.jsxs("div",{className:"skill-dropdown__header",children:[u.jsx(os,{size:14}),u.jsx("span",{children:"Skill"})]}),te&&u.jsx("div",{className:"skill-dropdown__search",children:u.jsx("input",{ref:D,type:"text",className:"skill-dropdown__search-input",placeholder:"搜索 Skill...",value:I,onChange:$=>{S($.target.value),w(0)},onMouseDown:$=>$.stopPropagation(),onKeyDown:$=>$.stopPropagation()})}),u.jsx("div",{ref:g,className:"skill-dropdown__list",children:P.map(($,ee)=>{const Ce=$.id===n,We=ee===m;return u.jsxs("div",{className:`skill-dropdown__item ${Ce?"skill-dropdown__item--selected":""} ${We?"skill-dropdown__item--highlighted":""}`,onClick:()=>_($.id),onMouseEnter:()=>w(ee),children:[u.jsx("span",{className:"skill-dropdown__item-label",children:$.name}),$.outputType==="image"&&u.jsx(Rs,{size:12,className:"skill-dropdown__item-image-icon"}),$.outputType==="video"&&u.jsx(js,{size:12,className:"skill-dropdown__item-image-icon"}),$.outputType==="ppt"&&u.jsx(Oa,{size:12,className:"skill-dropdown__item-image-icon"}),$.isSystem&&u.jsx("span",{className:"skill-dropdown__item-badge",children:"系统"}),$.isExternal&&u.jsx("span",{className:"skill-dropdown__item-badge",children:"系统"}),Ce&&u.jsx(Dn,{size:14,className:"skill-dropdown__item-check"})]},$.id)})}),u.jsx("div",{className:"skill-dropdown__divider"}),u.jsxs("div",{className:"skill-dropdown__add-btn",onClick:b,onMouseDown:$=>$.preventDefault(),children:[u.jsx(Wa,{size:14}),u.jsx("span",{children:"添加 Skill"})]})]}),document.body)]})})};var Re=(n=>(n.VIDEO="视频创作",n.IMAGE="图片生成",n.MINDMAP="思维导图",n.FLOWCHART="流程图",n.GRID="宫格图",n.SVG="SVG矢量图",n))(Re||{});const Et=3,Es=[{id:"grid-emoji",title:"智能拆分宫格图",description:"宫格图,风格统一",prompt:"生成16宫格猫咪表情包",category:Re.GRID,imageUrl:"https://tuziphoto.codernote.club/aitu/gonggetu.jpg",badgeColor:"badge--grid"},{id:"flowchart-process",title:"业务流程图",description:"使用 Mermaid 语法生成清晰的流程图",prompt:"绘制一个用户注册登录的流程图,包含邮箱验证、密码校验、短信验证码、登录成功/失败等节点",category:Re.FLOWCHART,imageUrl:"https://tuziphoto.codernote.club/aitu/liuchengtu.png",badgeColor:"badge--flowchart"},{id:"mindmap-project",title:"项目规划脑图",description:"快速生成结构化的思维导图,梳理项目计划",prompt:"创建一个关于「移动应用开发」的思维导图,包含需求分析、UI设计、前端开发、后端开发、测试上线等主要分支",category:Re.MINDMAP,imageUrl:"https://tuziphoto.codernote.club/aitu/siweidaotu.png",badgeColor:"badge--mindmap"}],ro={[Re.VIDEO]:{bg:"#fce7f3",text:"#be185d"},[Re.IMAGE]:{bg:"#dbeafe",text:"#1d4ed8"},[Re.MINDMAP]:{bg:"#dcfce7",text:"#15803d"},[Re.FLOWCHART]:{bg:"#fef3c7",text:"#b45309"},[Re.GRID]:{bg:"#f3e8ff",text:"#7c3aed"},[Re.SVG]:{bg:"#e0e7ff",text:"#4338ca"}},oo=({template:n,onClick:t})=>{const e=ro[n.category],s=i=>{i.preventDefault()};return u.jsxs("div",{className:"inspiration-card",onMouseDown:s,onClick:t,"data-track":`inspiration_click_${n.id}`,children:[u.jsxs("div",{className:"inspiration-card__image-wrapper",children:[u.jsx("img",{src:n.imageUrl,alt:n.title,className:"inspiration-card__image",loading:"lazy"}),u.jsx("span",{className:"inspiration-card__badge",style:{backgroundColor:e.bg,color:e.text},children:n.category}),u.jsx("div",{className:"inspiration-card__hover-overlay",children:u.jsx("div",{className:"inspiration-card__arrow",children:u.jsx(Ba,{size:16})})})]}),u.jsxs("div",{className:"inspiration-card__content",children:[u.jsx("h3",{className:"inspiration-card__title",children:n.title}),u.jsx("p",{className:"inspiration-card__description",children:n.description})]})]})},As="aitu_hide_inspiration_board",io=({isCanvasEmpty:n,onSelectPrompt:t,onOpenPromptTool:e,visible:s=!0,className:i=""})=>{const[c,o]=l.useState(0),[h,r]=l.useState(!1);l.useEffect(()=>{localStorage.getItem(As)==="true"&&r(!0)},[]);const p=Math.ceil(Es.length/Et),I=p>1,S=Es.slice(c*Et,(c+1)*Et),m=l.useCallback(x=>{x.preventDefault(),x.stopPropagation(),o(v=>(v-1+p)%p)},[p]),w=l.useCallback(x=>{x.preventDefault(),x.stopPropagation(),o(v=>(v+1)%p)},[p]),g=l.useCallback(x=>{t({prompt:x,modelType:"agent"})},[t]),D=l.useCallback(x=>{x.preventDefault(),x.stopPropagation(),r(!0),localStorage.setItem(As,"true")},[]);return!n||!s||h?null:u.jsxs("div",{className:`inspiration-board ${i}`,children:[u.jsxs("div",{className:"inspiration-board__header",children:[u.jsx("h3",{className:"inspiration-board__title",children:"灵感创意"}),u.jsxs("button",{className:"inspiration-board__hide-btn",onClick:D,onMouseDown:x=>x.preventDefault(),title:"不再提示","data-track":"inspiration_click_hide",children:[u.jsx(La,{size:14}),u.jsx("span",{children:"不再提示"})]}),e&&u.jsxs("button",{className:"inspiration-board__prompt-btn",onClick:e,onMouseDown:x=>x.preventDefault(),title:"提示词工具","data-track":"inspiration_click_prompt_tool",children:[u.jsx(Fa,{size:14}),u.jsx("span",{children:"提示词"})]}),I&&u.jsxs("div",{className:"inspiration-board__pagination",children:[u.jsxs("span",{className:"inspiration-board__page-indicator",children:[c+1," / ",p]}),u.jsxs("div",{className:"inspiration-board__nav-buttons",children:[u.jsx("button",{className:"inspiration-board__nav-btn",onMouseDown:x=>x.preventDefault(),onClick:m,"aria-label":"上一页","data-track":"inspiration_click_prev",children:u.jsx(Ha,{size:16})}),u.jsx("button",{className:"inspiration-board__nav-btn",onMouseDown:x=>x.preventDefault(),onClick:w,"aria-label":"下一页","data-track":"inspiration_click_next",children:u.jsx($a,{size:16})})]})]})]}),u.jsxs("div",{className:"inspiration-board__grid",children:[S.map(x=>u.jsx(oo,{template:x,onClick:()=>g(x.prompt)},x.id)),S.length<Et&&Array.from({length:Et-S.length}).map((x,v)=>u.jsx("div",{className:"inspiration-card inspiration-card--placeholder"},`placeholder-${v}`))]})]})},nt=[{value:"image",label:"图片",icon:u.jsx(Rs,{size:14}),zh:"图片",en:"Image"},{value:"video",label:"视频",icon:u.jsx(js,{size:14}),zh:"视频",en:"Video"},{value:"audio",label:"音频",icon:u.jsx(Ga,{size:14}),zh:"音频",en:"Audio"},{value:"text",label:"文本",icon:u.jsx(Ua,{size:14}),zh:"文本",en:"Text"},{value:"agent",label:"Agent",icon:u.jsx(Va,{size:14}),zh:"Agent",en:"Agent"}],co=({value:n,onSelect:t,disabled:e=!1})=>{const[s,i]=l.useState(!1),{language:c}=zn(),[o,h]=l.useState(0),r=l.useRef(null);l.useEffect(()=>{if(s){const w=nt.findIndex(g=>g.value===n);h(w>=0?w:0)}},[s,n]),l.useEffect(()=>{if(s&&r.current){const w=r.current.children[o];w&&w.scrollIntoView({block:"nearest"})}},[o,s]);const p=l.useCallback(w=>{w.preventDefault(),!e&&i(g=>!g)},[e]),I=l.useCallback(w=>{t(w),i(!1)},[t]),S=l.useCallback(w=>w==="Escape"?(i(!1),!0):w==="ArrowDown"?(h(g=>g<nt.length-1?g+1:0),!0):w==="ArrowUp"?(h(g=>g>0?g-1:nt.length-1),!0):w==="Enter"||w===" "||w==="Tab"?(I(nt[o].value),!0):!1,[o,I]),m=nt.find(w=>w.value===n)||nt[0];return u.jsx(Rn,{isOpen:s,setIsOpen:i,disabled:e,openKeys:["Enter"," ","ArrowDown","ArrowUp"],onOpenKey:S,children:({containerRef:w,menuRef:g,portalPosition:D,handleTriggerKeyDown:x})=>u.jsxs("div",{className:"generation-type-dropdown",ref:w,children:[u.jsxs("button",{className:`generation-type-dropdown__trigger ${s?"generation-type-dropdown__trigger--open":""}`,onMouseDown:p,onKeyDown:x,disabled:e,type:"button",title:`${c==="zh"?"生成类型":"Type"}: ${c==="zh"?m.zh:m.en} (↑↓ Tab)`,children:[u.jsx("span",{className:"generation-type-dropdown__icon-prefix",children:m.icon}),u.jsx("span",{className:"generation-type-dropdown__label",children:c==="zh"?m.zh:m.en}),u.jsx(An,{size:14,className:`generation-type-dropdown__chevron ${s?"generation-type-dropdown__chevron--open":""}`})]}),s&&En.createPortal(u.jsxs("div",{ref:g,className:`generation-type-dropdown__menu ${cn}`,style:{position:"fixed",zIndex:Pn.DROPDOWN_PORTAL,left:D.left,bottom:window.innerHeight-D.top+8},onMouseDown:v=>v.stopPropagation(),onClick:v=>v.stopPropagation(),children:[u.jsxs("div",{className:"generation-type-dropdown__header",children:[u.jsx(Ns,{size:14}),u.jsx("span",{children:c==="zh"?"生成类型 (↑↓ Tab)":"Generation type (↑↓ Tab)"})]}),u.jsx("div",{ref:r,className:"generation-type-dropdown__list",children:nt.map((v,A)=>{const _=v.value===n,b=A===o;return u.jsxs("div",{className:`generation-type-dropdown__item ${_?"generation-type-dropdown__item--selected":""} ${b?"generation-type-dropdown__item--highlighted":""}`,onClick:()=>I(v.value),onMouseEnter:()=>h(A),children:[u.jsx("span",{className:"generation-type-dropdown__item-icon",children:v.icon}),u.jsx("span",{className:"generation-type-dropdown__item-label",children:c==="zh"?v.zh:v.en}),_&&u.jsx(Dn,{size:14,className:"generation-type-dropdown__item-check"})]},v.value)})})]}),document.body)]})})},At=[1,2,3,4,5,10,20],lo=({value:n,onSelect:t,disabled:e=!1,isOpen:s,onOpenChange:i})=>{const{value:c,setValue:o}=xr({controlledValue:s,defaultValue:!1,onChange:i}),{language:h}=zn(),[r,p]=l.useState(0),I=l.useRef(null);l.useEffect(()=>{if(c){const g=At.indexOf(n);p(g>=0?g:0)}},[c,n]),l.useEffect(()=>{if(c&&I.current){const g=I.current.children[r];g&&g.scrollIntoView({block:"nearest"})}},[r,c]);const S=l.useCallback(g=>{g.preventDefault(),!e&&o(!c)},[e,c,o]),m=l.useCallback(g=>{t(g),o(!1)},[t]),w=l.useCallback(g=>g==="Escape"?(o(!1),!0):g==="ArrowDown"?(p(D=>D<At.length-1?D+1:0),!0):g==="ArrowUp"?(p(D=>D>0?D-1:At.length-1),!0):g==="Enter"||g===" "||g==="Tab"?(m(At[r]),!0):!1,[r,m]);return u.jsx(Rn,{isOpen:c,setIsOpen:o,disabled:e,openKeys:["Enter"," ","ArrowDown","ArrowUp"],onOpenKey:w,children:({containerRef:g,menuRef:D,portalPosition:x,handleTriggerKeyDown:v})=>u.jsxs("div",{className:"count-dropdown",ref:g,children:[u.jsxs("button",{className:`count-dropdown__trigger ${c?"count-dropdown__trigger--open":""}`,onMouseDown:S,onKeyDown:v,disabled:e,type:"button",title:`${h==="zh"?"生成数量":"Count"}: ${n} (↑↓ Tab)`,children:[u.jsxs("span",{className:"count-dropdown__label",children:[n,h==="zh"?"个":""]}),u.jsx(An,{size:14,className:`count-dropdown__chevron ${c?"count-dropdown__chevron--open":""}`})]}),c&&En.createPortal(u.jsxs("div",{ref:D,className:`count-dropdown__menu ${cn}`,style:{position:"fixed",zIndex:Pn.DROPDOWN_PORTAL,left:x.left,bottom:window.innerHeight-x.top+8},onMouseDown:A=>A.stopPropagation(),onClick:A=>A.stopPropagation(),children:[u.jsx("div",{className:"count-dropdown__header",children:u.jsx("span",{children:h==="zh"?"生成数量 (↑↓ Tab)":"Count (↑↓ Tab)"})}),u.jsx("div",{ref:I,className:"count-dropdown__list",children:At.map((A,_)=>{const b=A===n,z=_===r;return u.jsxs("div",{className:`count-dropdown__item ${b?"count-dropdown__item--selected":""} ${z?"count-dropdown__item--highlighted":""}`,onClick:()=>m(A),onMouseEnter:()=>p(_),children:[u.jsxs("span",{className:"count-dropdown__item-label",children:[A,h==="zh"?"个":A>1?" items":" item"]}),b&&u.jsx(Dn,{size:14,className:"count-dropdown__item-check"})]},A)})})]}),document.body)]})})},Gs=["right","bottom","left","top"],Qt=4;function uo(n,t,e,s,i=32){const c=s<=2?s:s<=4?2:3,o=Math.floor(e/c),h=e%c;return[n[0]+h*(t.width+i),n[1]+o*(t.height+i)]}function Us(n,t){const{ignoreElementIds:e=[],ignoreTypes:s=["workzone"],extraOccupiedRects:i=[]}=t;return[...n.children.filter(ho).filter(c=>!s.includes(c.type??"")&&!e.includes(c.id??"")).map(c=>({...an.getRectangleByPoints(c.points),id:c.id,type:c.type})),...i]}function ho(n){return typeof n=="object"&&n!==null&&Array.isArray(n.points)&&n.points.length===2}function Vs(n,t,e){return n.x<t.x+t.width+e&&n.x+n.width+e>t.x&&n.y<t.y+t.height+e&&n.y+n.height+e>t.y}function po(n,t,e,s){const i=[n];for(let c=1;c<=s;c+=1)i.push([n[0]+t*c,n[1]],[n[0],n[1]+e*c],[n[0]+t*c,n[1]+e*c],[n[0]-t*c,n[1]],[n[0]-t*c,n[1]+e*c],[n[0],n[1]-e*c],[n[0]+t*c,n[1]-e*c],[n[0]-t*c,n[1]-e*c]);return i}function mo(n,t,e,s,i){const c=Math.max(i,32),o=Math.max(Math.round(Math.min(t.width,t.height)*.16),28),h=Math.max(Math.round(Math.min(t.width,t.height)*.12),18),r=t.width+o,p=t.height+o,I=[];for(let S=0;S<e;S+=1){const m=Math.floor(S/Qt),w=S%Qt,g=Math.min(Qt,e-m*Qt),D=w-(g-1)/2,x=n.x+n.width/2-t.width/2,v=n.y+n.height/2-t.height/2,A=Math.abs(D)*h;let _=x,b=v;switch(s){case"right":_=n.x+n.width+c+m*r+A,b=v+D*(t.height+o);break;case"left":_=n.x-c-t.width-m*r-A,b=v+D*(t.height+o);break;case"top":_=x+D*(t.width+o),b=n.y-c-t.height-m*p-A;break;case"bottom":default:_=x+D*(t.width+o),b=n.y+n.height+c+m*p+A;break}I.push([Math.round(_),Math.round(b)])}return I}function Ps(n,t,e,s,i){return n.reduce((o,h)=>{const r={x:h[0],y:h[1],width:t.width,height:t.height};return o+e.filter(p=>Vs(r,p,s)).length},0)*1e3+Gs.indexOf(i)*10}function fo(n,t,e,s,i){var p;const{gap:c=40,padding:o=16}=i,h=Us(n,i),r=Gs.map(I=>({side:I,positions:mo(t,e,s,I,c)}));return r.sort((I,S)=>Ps(I.positions,e,h,o,I.side)-Ps(S.positions,e,h,o,S.side)),((p=r[0])==null?void 0:p.positions)??[]}function go(n,t,e,s,i={}){const{frameRect:c,extraOccupiedRects:o=[],...h}=i,r={...h,extraOccupiedRects:o},p=c?fo(n,c,e,s,r):Array.from({length:s},(S,m)=>uo(t,e,m,s,r.gap)),I=[...o];return p.map(S=>{const m=wo(n,S,e,{...r,extraOccupiedRects:I});return I.push({x:m[0],y:m[1],width:e.width,height:e.height}),m})}function wo(n,t,e,s={}){const{gap:i=40,padding:c=16,maxSearchRadius:o=6}=s,h=Us(n,s),r=e.width+i,p=e.height+i,I=po(t,r,p,o);for(const S of I){const m={x:S[0],y:S[1],width:e.width,height:e.height};if(!h.some(g=>Vs(m,g,c)))return S}return[t[0],t[1]+p*(o+1)]}function st(n){return typeof n=="string"&&n.trim()?n.trim():null}function Io(n){return n==="image"||n==="video"||n==="audio"||n==="text"||n==="agent"}function yo(n){if(!n||typeof n!="object")return!1;const t=n;return typeof t.modelId=="string"&&t.modelId.trim().length>0&&(t.profileId===null||typeof t.profileId=="string")&&(t.providerIdHint===null||typeof t.providerIdHint=="string")&&(t.vendorHint===null||typeof t.vendorHint=="string")&&typeof t.updatedAt=="number"&&Number.isFinite(t.updatedAt)}function On(){try{const n=window.localStorage.getItem(Cn);if(!n)return{};const t=JSON.parse(n);if(!t||typeof t!="object")return{};const e={};return Object.entries(t).forEach(([s,i])=>{Io(s)&&yo(i)&&(e[s]={modelId:i.modelId.trim(),profileId:st(i.profileId),providerIdHint:st(i.providerIdHint),vendorHint:st(i.vendorHint),updatedAt:i.updatedAt})}),e}catch{return{}}}function Ks(n){try{if(!Object.values(n).some(Boolean)){window.localStorage.removeItem(Cn);return}window.localStorage.setItem(Cn,JSON.stringify(n))}catch{}}function xo(n){const t=On();return t[n]?t[n]||null:n==="agent"&&t.text||null}function ko(n,t){var i;const e=st(t.modelId);if(!e){Ys(n);return}const s=On();s[n]={modelId:e,profileId:st((i=t.modelRef)==null?void 0:i.profileId),providerIdHint:st(t.providerIdHint),vendorHint:st(t.vendorHint),updatedAt:Date.now()},Ks(s)}function Ys(n){const t=On();t[n]&&(delete t[n],Ks(t))}function Ue(n,t,e,s){var c;const i=n.metadata||{};return{id:n.id,name:n.name,generationType:n.generationType,prompt:i.prompt||((c=t==null?void 0:t.aiContext)==null?void 0:c.finalPrompt)||"",aiAnalysis:n.aiAnalysis,count:i.count,createdAt:n.createdAt,status:n.status,steps:n.steps.map(o=>({id:o.id,description:o.description,status:o.status,mcp:o.mcp,args:o.args,result:o.result,error:o.error,duration:o.duration,options:o.options})),retryContext:t,postProcessingStatus:e,insertedCount:s}}let Ds=!1;Ds||(yr(),Kr(),$s.initialize().catch(n=>{console.warn("[AIInputBar] 外部 Skill 服务初始化失败(非致命):",n)}),Ds=!0);function Zs(n){return n.selectionKey||(n.sourceProfileId?`${n.sourceProfileId}::${n.id}`:n.id)}function Ve(n,t){return t!=null&&t.profileId?`${t.profileId}::${n}`:n}function Pt(n){return n?tn(n.sourceProfileId||null,n.id):null}function bo(n){return n<=0?"0":n<=20?"1-20":n<=100?"21-100":n<=300?"101-300":n<=800?"301-800":"800+"}function ze(n,t,e){if(!t)return;const s=Ve(t,e),i=(e==null?void 0:e.profileId)||null;return n.find(c=>Zs(c)===s)||n.find(c=>c.id===t&&(c.sourceProfileId||null)===i)||(i===null?n.find(c=>c.id===t&&!c.sourceProfileId):void 0)||n.find(c=>c.id===t)}function So(n,t){return n==="agent"&&t==="text"?"agent":t}function vo(n){if(!n)return!1;const t=n.toLowerCase();return t.includes("#video")?!0:[".mp4",".webm",".mov",".avi",".mkv",".m4v",".flv",".wmv"].some(s=>t.includes(s))}const Xs=Os.memo(({language:n,onSelectionChange:t,externalBoardRef:e,onCanvasEmptyChange:s,isDataReady:i,onFrameSelected:c})=>{const o=gr(),h=l.useRef(o);h.current=o,l.useEffect(()=>(Is(o),xs(o),ys(o),ks(o),Cs.setBoard(o),e&&(e.current=o),()=>{Is(null),xs(null),ys(null),ks(null),Cs.setBoard(null),e&&(e.current=null)}),[o,e]);const r=l.useRef(s);r.current=s,l.useEffect(()=>{if(!o||!r.current||!i)return;const m=setInterval(()=>{var g;const w=o.children||[];(g=r.current)==null||g.call(r,w.length===0)},500);return()=>{clearInterval(m)}},[o,i]);const p=l.useRef(t);p.current=t;const I=l.useRef(c);return I.current=c,l.useEffect(()=>{const S=async()=>{var D,x,v,A;const w=h.current;if(!w)return;const g=Ws(w);if(g.length===1&&Bs(g[0])){const _=g[0],b=an.getRectangleByPoints(_.points);(D=I.current)==null||D.call(I,{id:_.id,width:b.width,height:b.height})}else(x=I.current)==null||x.call(I,null);if(g.length===0){p.current([]);return}try{const _=await ar(w),b=[];_.graphicsImage&&b.push({url:_.graphicsImage,name:n==="zh"?"图形元素":"Graphics",type:"graphics",width:(v=_.graphicsImageDimensions)==null?void 0:v.width,height:(A=_.graphicsImageDimensions)==null?void 0:A.height});for(const z of _.remainingImages){const P=z.url||"",te=vo(P);b.push({url:P,name:z.name||(te?`video-${Date.now()}`:`image-${Date.now()}`),type:te?"video":"image",width:z.width,height:z.height})}_.remainingText&&_.remainingText.trim()&&b.push({type:"text",text:_.remainingText.trim(),name:n==="zh"?"文字内容":"Text Content"}),p.current(b)}catch(_){console.error("Failed to process selected content:",_),p.current([])}};S();const m=()=>{setTimeout(S,50)};return document.addEventListener("mouseup",m),()=>{document.removeEventListener("mouseup",m)}},[n]),null});Xs.displayName="SelectionWatcher";const qs=Os.memo(({className:n,isDataReady:t})=>{const{language:e}=zn(),s=qt("image"),i=qt("video"),c=qt("audio"),o=qt("text"),h=mr(),r=cr(),{addHistory:p}=Ls(),{addAsset:I}=Ka(),S=l.useRef(h.sendWorkflowMessage);S.current=h.sendWorkflowMessage;const m=l.useRef(h.updateWorkflowMessage);m.current=h.updateWorkflowMessage;const w=l.useRef(h.appendAgentLog);w.current=h.appendAgentLog;const g=l.useRef(h.updateThinkingContent);g.current=h.updateThinkingContent;const D=l.useRef(h.setSelectedContent);D.current=h.setSelectedContent;const x=l.useRef(h.registerRetryHandler);x.current=h.registerRetryHandler;const v=l.useRef(null),A=l.useRef([]),_=l.useRef(null),b=Sr(),z=l.useCallback((a,d,f)=>{if(!a)return;const M=A.current,C=(f!=null&&f.workflowId&&(f!=null&&f.batchId)&&typeof f.batchIndex=="number"?tt.getAnchorByBatchSlot(a,{workflowId:f.workflowId,batchId:f.batchId,batchIndex:f.batchIndex}):null)||(f!=null&&f.workflowId?tt.getAnchorByWorkflowId(a,f.workflowId):null)||(M[0]?tt.getAnchorById(a,M[0]):null);if(!C)return;const R=C.taskIds.includes(d)?C.taskIds:[...C.taskIds,d];tt.updateAnchor(a,C.id,{taskIds:R,primaryTaskId:C.primaryTaskId||d})},[]),P=l.useCallback((a,d,f)=>{const M=A.current;M.length===0||!a||M.forEach(C=>{tt.updateAnchor(a,C,yn(d,f))})},[]),te=l.useCallback(a=>{const d=A.current;d.length===0||!a||(d.forEach(f=>{tt.removeAnchor(a,f)}),A.current=[])},[]),Y=l.useCallback((a,d)=>{const f=xo(a);if(!f)return;const M=ze(d,f.modelId,tn(f.profileId,f.modelId));if(M)return M;Ys(a)},[]),q=l.useCallback((a,d)=>{const f=Y(a,d);if(f)return f;const C=ut(a==="video"?"video":a==="audio"?"audio":a==="text"||a==="agent"?"text":"image"),R=ze(d,C.modelId,tn(C.profileId,C.modelId));if(R)return R;const U=a==="video"?vn():a==="audio"?en():a==="text"||a==="agent"?is():Dt();return ze(d,U,null)||d[0]},[Y]),E=b.generationType,W=q(E,E==="video"?i:E==="audio"?c:E==="text"||E==="agent"?o:s)||mt(b.selectedModel)||mt(E==="video"?vn():E==="audio"?en():E==="text"||E==="agent"?is():Dt()),ne=q("image",s)||mt(Dt()),$=ut("image"),ee=(ne==null?void 0:ne.id)||$.modelId||Dt(),Ce=Pt(ne)||tn($.profileId,$.modelId),We=Ve((W==null?void 0:W.id)||ee,Pt(W)||Ce),Be=E==="agent"?{}:bn(E,(W==null?void 0:W.id)||ee,We,b.selectedParams),[de,je]=l.useState(""),[Wn,Bn]=l.useState(!1),[dn,un]=l.useState([]),[gt,at]=l.useState([]),[Le,Ke]=l.useState(!1),fe=l.useRef(null),[rt,ot]=l.useState(!1),[Js,Qs]=l.useState(null),[T,Fe]=l.useState(E),[Ye,Ln]=l.useState(b.selectedSkillId||nn),[j,Fn]=l.useState((W==null?void 0:W.id)||ee),[F,Hn]=l.useState(Pt(W)||Ce),zt=l.useMemo(()=>{if(T!=="image"||ze(s,j,F))return s;const d=Yt("image",j,F);return d?[d,...s]:s},[T,s,j,F]),Rt=l.useMemo(()=>{if(T!=="video"||ze(i,j,F))return i;const d=Yt("video",j,F);return d?[d,...i]:i},[T,j,F,i]),jt=l.useMemo(()=>{if(T!=="audio"||ze(c,j,F))return c;const d=Yt("audio",j,F);return d?[d,...c]:c},[c,T,j,F]),Nt=l.useMemo(()=>{if(T!=="text"&&T!=="agent"||ze(o,j,F))return o;const d=Yt("text",j,F);return d?[d,...o]:o},[T,j,F,o]),[Te,Ot]=l.useState(()=>{if(E==="agent")return{};const a=(W==null?void 0:W.id)||ee,d=cs(a).find(f=>f.id==="size");return{...Be,...a.startsWith("mj")||!d?{}:{size:Be.size||ls(a)}}}),wt=l.useRef(Te),$n=l.useRef(E==="agent"?"agent":`${E}:${We}`);l.useEffect(()=>{wt.current=Te},[Te]);const[It,Gn]=l.useState(b.selectedCount),[Un,hn]=l.useState(!1),[Vn,pn]=l.useState(!1),[Kn,mn]=l.useState(!1),Ze=l.useRef(null),ea=l.useCallback(a=>{hn(a),a||(Ze.current=null)},[]),ta=l.useCallback(a=>{pn(a),a||(Ze.current=null)},[]),na=l.useCallback(a=>{mn(a),a||(Ze.current=null)},[]),[Yn,yt]=l.useState(!1),pe=l.useMemo(()=>[...gt,...dn],[gt,dn]),Xe=l.useMemo(()=>({invalidFile:e==="zh"?"请上传图片文件":"Please upload image files",fileTooLarge:e==="zh"?"图片大小不能超过 25MB":"Image size cannot exceed 25MB",loadFailed:e==="zh"?"加载图片失败":"Failed to load image",compressionFailed:e==="zh"?"图片压缩失败":"Image compression failed",compressing:a=>e==="zh"?`正在压缩图片 (${a.toFixed(1)}MB)...`:`Compressing image (${a.toFixed(1)}MB)...`,compressed:(a,d)=>e==="zh"?`压缩完成: ${a.toFixed(1)}MB → ${d.toFixed(1)}MB`:`Compressed: ${a.toFixed(1)}MB → ${d.toFixed(1)}MB`}),[e]);l.useEffect(()=>{const a=T==="video"?Rt:T==="audio"?jt:T==="text"||T==="agent"?Nt:zt,f=ze(a,j,F)||q(T,a);if(f){const M=Ve(j,F),C=Zs(f);M!==C&&(Fn(f.id),Hn(Pt(f)))}T!=="agent"&&Ln(nn),(T==="agent"||T==="text"||T==="audio")&&Gn(1)},[jt,T,zt,q,j,F,Nt,Rt]);const Wt=l.useMemo(()=>T==="video"?Rt:T==="audio"?jt:T==="text"||T==="agent"?Nt:zt,[jt,T,zt,Nt,Rt]),xt=l.useMemo(()=>{var f;if(T==="agent")return[];if(T==="video")return Ya(j,F||j,Te);const a=cs(j);return T!=="audio"?a:(Te.sunoAction||((f=a.find(M=>M.id==="sunoAction"))==null?void 0:f.defaultValue)||"music")==="lyrics"?a.filter(M=>M.id==="sunoAction"||M.id==="mv"||M.id==="title"||M.id==="tags"):a},[T,j,F,Te]);l.useEffect(()=>{if(!rt)return;const a=d=>{const f=d.target;Lt.current&&!Lt.current.contains(f)&&ot(!1)};return document.addEventListener("mousedown",a),()=>document.removeEventListener("mousedown",a)},[rt]),l.useEffect(()=>()=>{fe.current&&clearTimeout(fe.current)},[]),l.useEffect(()=>{const a=d=>{var f;((f=d.detail)==null?void 0:f.type)!=="image"&&(fe.current&&(clearTimeout(fe.current),fe.current=null),Ke(!1))};return window.addEventListener("ai-generation-complete",a),()=>{window.removeEventListener("ai-generation-complete",a)}},[]),l.useEffect(()=>{const a=zs.observeTaskUpdates().subscribe(d=>{var N,H;const f=d.task,M=r.getWorkflow();if(!M)return;const C=M.steps.find(O=>{const K=O.result;return(K==null?void 0:K.taskId)===f.id});if(!C)return;let R=C.status,U=C.result,Z=C.error;switch(f.status){case pt.PENDING:case pt.PROCESSING:R="running";break;case pt.COMPLETED:R="completed",U={...typeof U=="object"?U:{},taskId:f.id,result:f.result};break;case pt.FAILED:R="failed",Z=((N=f.error)==null?void 0:N.message)||"任务执行失败";break;case pt.CANCELLED:R="skipped";break}if(R!==C.status){if(r.updateStep(C.id,R,U,Z),R==="failed"){const K=(H=C.options)==null?void 0:H.batchId;K&&M.steps.forEach(J=>{var Ie;J.id!==C.id&&((Ie=J.options)==null?void 0:Ie.batchId)===K&&J.status==="running"&&r.updateStep(J.id,"skipped",void 0,"前置任务失败")})}const O=r.getWorkflow();if(O){const K=Ue(O,v.current||void 0);m.current(K);const J=_.current,Ie=Ee.current;J&&Ie&&Pe.updateWorkflow(Ie,J,K)}}});return()=>a.unsubscribe()},[r]);const Zn=l.useRef(void 0),Bt=l.useRef(void 0);l.useEffect(()=>{const a=xn.observeCompletionEvents().subscribe(d=>{const f=r.getWorkflow(),M=f==null?void 0:f.steps.find(U=>{const Z=U.result;return(Z==null?void 0:Z.taskId)===d.taskId});let C,R;switch(d.type){case"postProcessingStarted":C="processing";break;case"postProcessingCompleted":C="completed",R=d.result.insertedCount;break;case"postProcessingFailed":C="failed";break}if(Zn.current=C,R!==void 0&&(Bt.current=(Bt.current||0)+R),f&&M){const U=r.getWorkflow();if(U){const Z=Ue(U,v.current||void 0,C,Bt.current);m.current(Z);const N=_.current,H=Ee.current;N&&H&&Pe.updateWorkflow(H,N,Z)}}if(d.type==="postProcessingCompleted"){const U=d.result.firstElementPosition;fe.current&&(clearTimeout(fe.current),fe.current=null),Ke(!1),setTimeout(async()=>{var H;h.closeChatDrawer();const Z=_.current,N=Ee.current;if(Z&&N){const O=r.getWorkflow();if(O==null?void 0:O.steps.every(J=>J.status==="completed"||J.status==="failed"||J.status==="skipped")){const{workflowCompletionService:J}=await sn(async()=>{const{workflowCompletionService:se}=await import("./tool-windows-hjm6YiPY.js").then(G=>G.oT);return{workflowCompletionService:se}},__vite__mapDeps([0]),import.meta.url);(O==null?void 0:O.steps.every(se=>{const G=se.result;return G!=null&&G.taskId?J.isPostProcessingCompleted(G.taskId):!0}))&&(Pe.removeWorkZone(N,Z),_.current=null)}}if(U&&N){const O=(H=N.host)==null?void 0:H.getBoundingClientRect();if(O){const K=N.viewport.zoom,J=U[0]-O.width/(2*K),Ie=U[1]-O.height/(2*K);Za.updateViewport(N,[J,Ie],K)}}},500),Zn.current=void 0,Bt.current=void 0}});return()=>a.unsubscribe()},[r,h]);const Ee=l.useRef(null),{submitWorkflow:Xn}=lr({boardRef:Ee,workZoneIdRef:_}),De=l.useRef(null),Lt=l.useRef(null),qn=l.useRef(null);wr(De,{enableCopy:!0,stopPropagation:!0});const sa=l.useCallback(a=>{var d;je(a.prompt),Fe("agent"),(d=De.current)==null||d.focus(),Tt.track("inspiration_selected",{promptLength:a.prompt.length,modelType:a.modelType})},[]),aa=l.useCallback(a=>{var d;je(a.content),a.modelType&&(a.modelType==="image"?Fe("image"):a.modelType==="video"?Fe("video"):a.modelType==="audio"?Fe("audio"):a.modelType==="text"?Fe("text"):a.modelType==="agent"&&Fe("agent")),(d=De.current)==null||d.focus()},[]),ra=l.useCallback(()=>{const a=ds.find(d=>d.id==="knowledge-base");a&&(window.__kbPendingNavigation={directoryName:"Skill",autoCreateNote:!0},us.openTool(a),setTimeout(()=>{window.dispatchEvent(new CustomEvent("kb:navigate",{detail:{directoryName:"Skill",autoCreateNote:!0}}))},300))},[]),oa=l.useCallback(()=>{const a=ds.find(d=>d.id==="banana-prompt");if(!a){console.warn("[AIInputBar] Banana prompt tool not found");return}us.openTool(a)},[]),ia=l.useCallback(()=>{if(!(T!=="image"&&T!=="video")){if(!de.trim()){Ne.warning(e==="zh"?"请先输入提示词":"Please enter a prompt first");return}Bn(!0)}},[T,e,de]),ca=l.useCallback(async a=>{try{const d=new Image;d.onload=()=>{const f={type:"image",url:a.url,name:a.name||`素材-${Date.now()}`,width:d.naturalWidth||void 0,height:d.naturalHeight||void 0};at(M=>[...M,f]),yt(!1)},d.onerror=()=>{const f={type:"image",url:a.url,name:a.name||`素材-${Date.now()}`};at(M=>[...M,f]),yt(!1)},d.src=a.url}catch(d){console.error("Failed to select asset from library:",d),yt(!1)}},[]),la=l.useCallback(()=>{var a;(a=qn.current)==null||a.click()},[]),Jn=l.useCallback(a=>new Promise((d,f)=>{const M=new FileReader;M.onload=()=>{const C=M.result,R=new Image;R.onload=()=>{d({url:C,width:R.naturalWidth,height:R.naturalHeight})},R.onerror=()=>{d({url:C,width:0,height:0})},R.src=C},M.onerror=f,M.readAsDataURL(a)}),[]),Ft=l.useCallback(async a=>{const d=Array.from(a);if(d.length===0)return;const f=[];for(const[M,C]of d.entries()){if(!C.type.startsWith("image/")){Ne.error(Xe.invalidFile);continue}if(C.size>25*1024*1024){Ne.error(Xe.fileTooLarge);continue}try{let R=C;if(C.size>10*1024*1024){const{compressImageBlob:O,getCompressionStrategy:K}=await sn(async()=>{const{compressImageBlob:se,getCompressionStrategy:G}=await import("./tool-windows-hjm6YiPY.js").then(ge=>ge.oF);return{compressImageBlob:se,getCompressionStrategy:G}},__vite__mapDeps([0]),import.meta.url),J=K(C.size/(1024*1024)),Ie=Ne.loading({content:Xe.compressing(C.size/(1024*1024)),duration:0,placement:"top"});try{R=await O(C,J.targetSizeMB),Ne.close(Ie),Ne.success({content:Xe.compressed(C.size/(1024*1024),R.size/(1024*1024)),duration:2})}catch(se){Ne.close(Ie),console.error("[AIInputBar] Failed to compress image:",se),Ne.error(Xe.compressionFailed);continue}}const U=R instanceof File?R:new File([R],C.name||`pasted-image-${Date.now()}.png`,{type:R.type||C.type||"image/png"});I(U,hs.IMAGE,Xa.LOCAL,U.name).catch(O=>{console.warn("[AIInputBar] Failed to add asset to library:",O)});const{url:Z,width:N,height:H}=await Jn(U);f.push({type:"image",url:Z,name:U.name||`上传图片 ${M+1}`,width:N||void 0,height:H||void 0})}catch(R){console.error("[AIInputBar] Failed to import local image:",R),Ne.error(Xe.loadFailed)}}f.length>0&&at(M=>[...M,...f])},[I,Jn,Xe]),da=l.useCallback(async a=>{const d=a.target.files;!d||d.length===0||(await Ft(d),a.target.value="")},[Ft]),ua=l.useCallback(a=>{un(a)},[]),Qn=l.useRef(null),ha=l.useCallback(a=>{if(Qn.current=a,!a)return;const d=vr(a.width,a.height,j);d&&Ot(f=>({...f,size:d}))},[j]),pa=l.useCallback(a=>{a<gt.length&&at(d=>d.filter((f,M)=>M!==a))},[gt.length]);l.useEffect(()=>{D.current(pe.map(a=>({type:a.type,url:a.url,text:a.text,name:a.name})))},[pe]),l.useEffect(()=>{const a=d=>{var N,H;const f=(N=d.clipboardData)==null?void 0:N.items;if(!f||f.length===0||!Array.from(f).some(O=>O.type.startsWith("image/")))return;const C=document.activeElement,R=Lt.current;if(!(!!R&&(R.contains(C)||rt&&(C===document.body||(C==null?void 0:C.tagName)==="BODY"))))return;const Z=[];for(const O of Array.from(f)){if(!O.type.startsWith("image/"))continue;const K=O.getAsFile();K&&Z.push(K)}Z.length!==0&&(d.preventDefault(),Ft(Z),(H=De.current)==null||H.focus())};return document.addEventListener("paste",a),()=>{document.removeEventListener("paste",a)}},[Ft,rt]);const it=l.useCallback(()=>{if(Ze.current!==null){const a=Ze.current;je(d=>d.substring(0,a)+d.substring(a+1)),Ze.current=null}},[]),Ht=l.useCallback(a=>{const d=So(T,a.type);Tt.track("ai_input_change_model",{model:a.id,type:a.type,profileId:a.sourceProfileId||null}),it(),Fe(d),Fn(a.id);const f=Pt(a);Hn(f),ko(d,{modelId:a.id,modelRef:f,providerIdHint:a.sourceProfileId||(f==null?void 0:f.profileId),vendorHint:a.vendor}),Ot(d==="agent"?{}:bn(d,a.id,Ve(a.id,f))),hn(!1),setTimeout(()=>{var M;return(M=De.current)==null?void 0:M.focus()},0)},[it,T]),ma=l.useCallback(a=>{const d=ze(Wt,a,F)||ze(Wt,a,null)||mt(a);d&&Ht(d)},[Ht,Wt,F]),fa=l.useCallback(a=>{Ht(a)},[Ht]);l.useEffect(()=>{const a=(N,H)=>{const O=Object.keys(N),K=Object.keys(H);return O.length!==K.length?!1:O.every(J=>N[J]===H[J])},d=T==="agent"?"agent":`${T}:${Ve(j,F)}`,f=T==="agent"?{}:$n.current===d?wt.current||{}:bn(T,j,Ve(j,F),wt.current),M={},C=xt.find(N=>N.id==="size"),R=f.size,U=!R||!(C!=null&&C.options)||C.options.some(N=>N.value===R);!j.startsWith("mj")&&C&&(M.size=R&&U?R:C.defaultValue||ls(j)),xt.forEach(N=>{if(N.id==="size")return;const H=f[N.id],O=!H||N.valueType!=="enum"||!N.options||N.options.some(K=>K.value===H);H&&O?M[N.id]=H:N.defaultValue&&(M[N.id]=N.defaultValue)});const Z=qa(j,M);a(wt.current||{},Z)||(Ot(Z),wt.current=Z),$n.current=d},[T,j,F,xt]),l.useEffect(()=>{_r({generationType:T,selectedModel:j,selectedParams:Te,selectedCount:It,selectedSkillId:Ye}),T!=="agent"&&Cr(T,j,Te,Ve(j,F))},[T,j,F,Te,It,Ye]);const ga=l.useCallback((a,d,f)=>{it(),Ot(M=>{const C={...M};return d===void 0||d===""?delete C[a]:C[a]=d,C}),f!=null&&f.keepOpen||(pn(!1),setTimeout(()=>{var M;return(M=De.current)==null?void 0:M.focus()},0))},[it]),wa=l.useCallback(a=>{it(),Gn(a),mn(!1),setTimeout(()=>{var d;return(d=De.current)==null?void 0:d.focus()},0)},[it]),fn=l.useCallback(async()=>{var a,d,f,M,C,R,U,Z,N;if(!(!de.trim()&&pe.length===0)&&!Le){Ke(!0);try{const H=T==="video"?"video":T==="audio"?"audio":T==="text"||T==="agent"?"text":"image",O=ps(H,F||j);if(console.log("[AIInputBar][handleGenerate] API Key 检查:",{hasApiKey:O}),!O){console.log("[AIInputBar][handleGenerate] 弹窗获取 API Key...");const y=await Ja();if(console.log("[AIInputBar][handleGenerate] API Key 输入完成:",{hasNewKey:!!y}),!y){Ke(!1);return}console.log("[AIInputBar][handleGenerate] API Key 输入后设置状态:",{hasApiKey:ps(H,F||j)})}const K=pe.filter(y=>y.type==="image"&&y.url),J=pe.filter(y=>y.type==="graphics"&&y.url),Ie=[...K,...J].map(y=>{if(y.width&&y.height)return{width:y.width,height:y.height}}).filter(y=>y!==void 0),se={texts:pe.filter(y=>y.type==="text"&&y.text).map(y=>y.text),images:K.map(y=>y.url),videos:pe.filter(y=>y.type==="video"&&y.url).map(y=>y.url),graphics:J.map(y=>y.url),imageDimensions:Ie},G=so(de,se,{modelId:j,modelRef:F,params:Te,generationType:T,count:It}),ge=[...se.images,...se.graphics];let ae;if(T==="agent"&&Ye!==nn){const y=Ar(Ye);if(y)try{ae=await Xt(G,y,ge)}catch(B){console.warn("[AIInputBar] 系统 Skill 工作流转换失败,降级到通用工作流:",B),ae=ht(G,ge)}else{const B=Pr(Ye);if(B){console.log(`[AIInputBar] 外部 Skill: id=${B.id} name=${B.name} outputType=${B.outputType} contentLen=${((a=B.content)==null?void 0:a.length)||0}`);try{ae=await Xt(G,{id:B.id,name:B.name,type:"external",content:B.content,outputType:B.outputType},ge,()=>{console.log("[AIInputBar] AI 正在解析外部 Skill 工作流...")})}catch(V){console.warn("[AIInputBar] 外部 Skill 工作流转换失败,降级到角色扮演:",V),ae=await Xt(G,{id:B.id,name:B.name,type:"external",content:B.content,outputType:B.outputType},ge).catch(()=>ht(G,ge))}}else try{const V=await _n.getNoteById(Ye);if(V){const oe=((d=V.metadata)==null?void 0:d.outputType)||void 0;ae=await Xt(G,{id:V.id,name:V.title,type:"user",content:V.content,outputType:oe},ge,()=>{console.log("[AIInputBar] AI 正在解析工作流...")})}else ae=ht(G,ge)}catch{ae=ht(G,ge)}}ae||(console.warn("[AIInputBar] Skill 工作流未能生成,降级到通用工作流"),ae=ht(G,ge))}else ae=ht(G,ge);console.log("[AIInputBar][handleGenerate] 即将创建 WorkZone, workflow.steps:",ae.steps.length);const k=Ee.current;if(k){const oe=(f=k.host)==null?void 0:f.getBoundingClientRect(),re=((M=k.viewport)==null?void 0:M.zoom)||1,ue=((R=(C=k.viewport)==null?void 0:C.origination)==null?void 0:R[0])||0,Ae=((Z=(U=k.viewport)==null?void 0:U.origination)==null?void 0:Z[1])||0,kt=k.children.filter(he=>he.type!=="workzone"),Ut=ue+((oe==null?void 0:oe.width)||0)/2/re,bt=Ae+((oe==null?void 0:oe.height)||0)/2/re;let ke=Ut-200,X=bt,ct=ke,Ge=bt-240/2;if(kt.length>0){const he=Ws(k);let ie=!1;if(he.length>0)try{const ce=kn(k,he,!1);he.every(be=>ms.isDrawElement(be)&&ms.isImage(be)||fr(be))&&ce.width>ce.height?(ke=ce.x+ce.width+50,X=ce.y):(ke=ce.x,X=ce.y+ce.height+50),ct=ke,Ge=X,ie=!0}catch(ce){console.warn("[AIInputBar] Failed to calculate position for selected elements:",ce)}if(!ie){let ce=null,vt=-1/0;for(const be of kt)try{const dt=kn(k,[be],!1),_t=dt.y+dt.height;_t>vt&&(vt=_t,ce=be)}catch(dt){console.warn("[AIInputBar] Failed to get rectangle for element:",dt)}if(ce){const be=kn(k,[ce],!1);ke=be.x,X=be.y+be.height+50,ct=ke,Ge=X}}}const Qe=Ue(ae),lt=Qn.current;let St,et,ns;if(lt){const he=k.children.find(ie=>ie.id===lt.id);if(he&&Bs(he)){St=lt.id,et={width:lt.width,height:lt.height};const ie=an.getRectangleByPoints(he.points);ns=ie,ke=ie.x,X=ie.y}}if(G.generationType==="image"){const he=Math.max(G.count??1,1),ie=he>1,ce=ie?void 0:St,vt=ie?void 0:et,be=[],dt=`wf_batch_${ae.id}`,_t=ce?null:go(k,[ke,X],fs({workflowId:ae.id,expectedInsertPosition:[ke,X],requestedSize:G.size,requestedCount:1,zoom:re,title:Qe.name||"图片生成",...yn("submitted")}).size??{width:320,height:180},he,{frameRect:ie?ns:void 0});for(let _e=0;_e<he;_e+=1){let Ct=fs({workflowId:ae.id,expectedInsertPosition:[ke,X],targetFrameId:ce,targetFrameDimensions:vt,frameAffinityId:ie?St:void 0,frameAffinityDimensions:ie?et:void 0,requestedSize:G.size,requestedCount:ie?1:he,batchId:ie?dt:void 0,batchIndex:ie?_e+1:void 0,batchTotal:ie?he:void 0,zoom:re,title:Qe.name||"图片生成",...yn("submitted")});if(!ce){const as=_t?_t[_e]??Ct.position:Ct.position;Ct={...Ct,position:as,expectedInsertPosition:as}}const va=tt.insertAnchor(k,Ct);be.push(va)}A.current=be.map(_e=>_e.id),_.current=null,console.log("[AIInputBar][handleGenerate] Image Generation Anchor 已创建:",be.map(_e=>_e.id));const[ss]=be;ss&&setTimeout(()=>{const _e=an.getRectangleByPoints(ss.points);gs(k,[_e.x+_e.width/2,_e.y+_e.height/2],100)},100)}else{const he=Pe.insertWorkZone(k,{workflow:Qe,position:[ct,Ge],size:{width:360,height:240},expectedInsertPosition:[ke,X],targetFrameId:St,targetFrameDimensions:et,zoom:re});_.current=he.id,A.current=[],console.log("[AIInputBar][handleGenerate] WorkZone 已创建:",he.id),setTimeout(()=>{const ie=ct+180,ce=Ge+240/2;gs(k,[ie,ce],100)},100)}}const Q={rawInput:de,userInstruction:G.userInstruction,model:{id:G.modelId,type:G.generationType,isExplicit:G.isModelExplicit},defaultModels:{audio:ut("audio").modelId||en(),image:ut("image").modelId||"gemini-3-pro-image-preview-vip",video:ut("video").modelId||"veo3.1"},params:{count:G.count,size:G.size,duration:G.duration},selection:se,finalPrompt:G.prompt},me=ut("text").modelId,ye={aiContext:Q,referenceImages:ge,textModel:me};v.current=ye;try{console.log("[AIInputBar][handleGenerate] 开始提交工作流 submitWorkflowToSW...");const y=Date.now(),{usedSW:B}=await Xn(G,ge,ye,ae);if(console.log("[AIInputBar][handleGenerate] submitWorkflowToSW 返回:",{usedSW:B,耗时ms:Date.now()-y}),B){if(T==="image"&&P(k,"accepted"),de.trim()){const V=pe.length>0;p(de.trim(),V,T)}je(""),un([]),at([]),fe.current&&clearTimeout(fe.current),fe.current=setTimeout(()=>{Ke(!1),fe.current=null},1e3);return}}catch(y){console.warn("[AIInputBar] SW execution failed, falling back to main thread:",y)}if(console.log("[AIInputBar] Fallback: Executing workflow in main thread:",ae.steps.length,"steps"),T==="image"&&P(k,"handoff"),de.trim()){const y=pe.length>0;p(de.trim(),y,T)}je(""),un([]),at([]),fe.current&&clearTimeout(fe.current),fe.current=setTimeout(()=>{Ke(!1),fe.current=null},1e3);const le=[],we=[],Gt=(y,B)=>({onChunk:V=>{g.current(V)},onAddSteps:V=>{r.updateStep(y.id,"completed",{analysis:"completed"},void 0,Date.now()-B);const oe=V.map((ue,Ae)=>({...ue,status:ue.status==="completed"?"completed":"pending",options:{mode:"queue",batchId:`agent_${Date.now()}`,batchIndex:Ae+1,batchTotal:V.length,globalIndex:Ae+1}}));r.addSteps(oe),we.push(...oe),V.forEach(ue=>{w.current({type:"tool_call",timestamp:Date.now(),toolName:ue.mcp,args:ue.args})});const re=Ue(r.getWorkflow(),v.current||void 0);m.current(re),_.current&&k&&Pe.updateWorkflow(k,_.current,re)},onUpdateStep:(V,oe,re,ue)=>{r.updateStep(V,oe,re,ue),w.current({type:"tool_result",timestamp:Date.now(),toolName:V,success:oe==="completed",data:re,error:ue});const Ae=Ue(r.getWorkflow(),v.current||void 0);m.current(Ae),_.current&&k&&Pe.updateWorkflow(k,_.current,Ae)}});let He=!1;const qe=()=>{const y=Ue(r.getWorkflow(),v.current||void 0);m.current(y),_.current&&k&&Pe.updateWorkflow(k,_.current,y)},Je=async y=>{var oe,re,ue,Ae,kt,Ut,bt;console.log("[AIInputBar] Executing step:",y.mcp,"with mode:",(oe=y.options)==null?void 0:oe.mode);const B=Date.now(),V=we.length;r.updateStep(y.id,"running"),qe();try{const ke={...y.options,...Gt(y,B)};console.log("[AIInputBar] Calling mcpRegistry.executeTool for:",y.mcp);const X=await ws.executeTool({name:y.mcp,arguments:y.args},ke);console.log("[AIInputBar] Tool result:",{success:X.success,taskId:X.taskId,error:X.error});const ct=(ue=(re=r.getWorkflow())==null?void 0:re.steps.find(Ge=>Ge.id===y.id))==null?void 0:ue.status;if(X.success){if(X.taskId)le.push(X.taskId),r.updateStep(y.id,"running",{taskId:X.taskId}),z(k,X.taskId,{workflowId:ae.id,batchId:(Ae=y.options)==null?void 0:Ae.batchId,batchIndex:(kt=y.options)==null?void 0:kt.batchIndex});else if(ct==="running"){const Ge=X.type==="text"&&X.data&&typeof X.data=="object"&&"content"in X.data?{content:X.data.content}:X.data;r.updateStep(y.id,"completed",Ge,void 0,Date.now()-B);const Qe=y.mcp==="generate_text"?(Ut=X.data)==null?void 0:Ut.content:y.mcp==="ai_analyze"?(bt=X.data)==null?void 0:bt.response:void 0;if((y.mcp==="generate_text"||y.mcp==="ai_analyze")&&Qe&&Qe.trim()&&we.length===V){const et={id:`${y.id}-insert-text`,mcp:"insert_to_canvas",args:{items:[{type:"text",content:Qe}]},description:y.mcp==="generate_text"?"将生成文本插入画布":"将 AI 回复插入画布",status:"pending"};r.addSteps([et]),we.push(et)}}}else return r.updateStep(y.id,"failed",void 0,X.error||"执行失败",Date.now()-B),!1;return!0}catch(ke){return r.updateStep(y.id,"failed",void 0,String(ke)),!1}finally{qe()}};for(const y of ae.steps){if(He){r.updateStep(y.id,"skipped"),qe();continue}await Je(y)||(He=!0)}if(!He&&we.length>0){const y=r.getWorkflow();for(const B of we){if(He){r.updateStep(B.id,"skipped"),qe();continue}const V=(N=r.getWorkflow())==null?void 0:N.steps.find(re=>re.id===B.id);if(!V){console.warn(`[AIInputBar] Step ${B.id} not found in workflow!`);continue}if(V.status==="completed")continue;await Je(V)||(He=!0)}}const $e=r.getWorkflow(),xe=$e==null?void 0:$e.steps.every(y=>y.status==="completed"||y.status==="failed"||y.status==="skipped"),wn=le.length>0;if(xe&&!wn){const y=_.current,B=A.current,V=Ee.current;(y||B.length>0)&&V&&($e!=null&&$e.steps.every(re=>{const ue=re.result;return ue!=null&&ue.taskId?xn.isPostProcessingCompleted(ue.taskId):!0}))&&setTimeout(()=>{y&&(Pe.removeWorkZone(V,y),_.current=null),B.length>0&&(P(V,"completed"),te(V))},1500)}}catch(H){console.error("Failed to create generation task:",H),T==="image"&&P(Ee.current,"failed",{error:H instanceof Error?H.message:"创建图片任务失败"}),r.abortWorkflow(),Ke(!1)}}},[de,pe,Le,j,F,r,Xn,p,Te,T,It,z,P,te]),gn=l.useCallback(async(a,d,f)=>{var ae;const M=a.retryContext;if(!M){console.error("[AIInputBar] No retry context available for workflow");return}f&&(_.current=f);const C={id:a.id,name:a.name,description:`重试: ${a.name}`,scenarioType:a.steps.some(k=>k.mcp==="ai_analyze")?"agent_flow":"direct_generation",generationType:a.generationType,steps:a.steps.map((k,Q)=>({id:k.id,mcp:k.mcp,args:k.args,description:k.description,status:Q<d?k.status:"pending",result:Q<d?k.result:void 0,error:Q<d?k.error:void 0,duration:Q<d?k.duration:void 0,options:k.options})),metadata:{prompt:a.prompt,userInstruction:M.aiContext.userInstruction,rawInput:M.aiContext.rawInput,modelId:M.aiContext.model.id,isModelExplicit:M.aiContext.model.isExplicit,count:a.count,size:M.aiContext.params.size,duration:M.aiContext.params.duration,referenceImages:M.referenceImages,selection:M.aiContext.selection},createdAt:Date.now()};r.startWorkflow(C),w.current({type:"retry",timestamp:Date.now(),reason:`从步骤 ${d+1} 开始重试`,attempt:1});const R=Ee.current,U=()=>{const k=Ue(r.getWorkflow(),M);m.current(k),_.current&&R&&Pe.updateWorkflow(R,_.current,k)},Z=Ue(C,M);m.current(Z),_.current&&R&&Pe.updateWorkflow(R,_.current,Z);const N=(k,Q)=>({onChunk:me=>{g.current(me)},onAddSteps:me=>{r.updateStep(k.id,"completed",{analysis:"completed"},void 0,Date.now()-Q);const ye=me.map((le,we)=>({...le,status:le.status==="completed"?"completed":"pending",options:{mode:"queue",batchId:`agent_${Date.now()}`,batchIndex:we+1,batchTotal:me.length,globalIndex:we+1}}));r.addSteps(ye),H.push(...ye),me.forEach(le=>{w.current({type:"tool_call",timestamp:Date.now(),toolName:le.mcp,args:le.args})}),U()},onUpdateStep:(me,ye,le,we)=>{r.updateStep(me,ye,le,we),w.current({type:"tool_result",timestamp:Date.now(),toolName:me,success:ye==="completed",data:le,error:we}),U()}}),H=[];let O=!1;const K=new Map;a.steps.forEach(k=>{var me;const Q=(me=k.result)==null?void 0:me.taskId;Q&&K.set(k.id,Q)});const J=async k=>{var ye,le,we,Gt,He,qe;const Q=Date.now(),me=H.length;r.updateStep(k.id,"running"),U();try{const Je=K.get(k.id),$e={...k.options,...N(k,Q),...Je?{retryTaskId:Je}:{}},xe=await ws.executeTool({name:k.mcp,arguments:k.args},$e),wn=(le=(ye=r.getWorkflow())==null?void 0:ye.steps.find(y=>y.id===k.id))==null?void 0:le.status;if(xe.success){if(xe.taskId)r.updateStep(k.id,"running",{taskId:xe.taskId}),z(R,xe.taskId,{workflowId:a.id,batchId:(we=k.options)==null?void 0:we.batchId,batchIndex:(Gt=k.options)==null?void 0:Gt.batchIndex});else if(wn==="running"){const y=xe.type==="text"&&xe.data&&typeof xe.data=="object"&&"content"in xe.data?{content:xe.data.content}:xe.data;r.updateStep(k.id,"completed",y,void 0,Date.now()-Q);const B=k.mcp==="generate_text"?(He=xe.data)==null?void 0:He.content:k.mcp==="ai_analyze"?(qe=xe.data)==null?void 0:qe.response:void 0;if((k.mcp==="generate_text"||k.mcp==="ai_analyze")&&B&&B.trim()&&H.length===me){const re={id:`${k.id}-insert-text`,mcp:"insert_to_canvas",args:{items:[{type:"text",content:B}]},description:k.mcp==="generate_text"?"将生成文本插入画布":"将 AI 回复插入画布",status:"pending"};r.addSteps([re]),H.push(re)}}}else return r.updateStep(k.id,"failed",void 0,xe.error||"执行失败",Date.now()-Q),!1;return!0}catch(Je){return r.updateStep(k.id,"failed",void 0,String(Je)),!1}finally{U()}},Ie=C.steps.slice(d);for(const k of Ie){if(O){r.updateStep(k.id,"skipped"),U();continue}await J(k)||(O=!0)}if(!O&&H.length>0)for(const k of H){if(O){r.updateStep(k.id,"skipped"),U();continue}const Q=(ae=r.getWorkflow())==null?void 0:ae.steps.find(ye=>ye.id===k.id);if(!Q||Q.status==="completed")continue;await J(Q)||(O=!0)}const se=r.getWorkflow(),G=se==null?void 0:se.steps.every(k=>k.status==="completed"||k.status==="failed"||k.status==="skipped"),ge=se==null?void 0:se.steps.some(k=>{var Q;return(Q=k.result)==null?void 0:Q.taskId});if(G&&!ge){const k=_.current,Q=Ee.current;k&&Q&&(se!=null&&se.steps.every(ye=>{const le=ye.result;return le!=null&&le.taskId?xn.isPostProcessingCompleted(le.taskId):!0}))&&setTimeout(()=>{Pe.removeWorkZone(Q,k),_.current=null},1500)}},[r,z]);l.useEffect(()=>{x.current(gn);const a=Ee.current;a&&(a.__executeWorkflowRetry=gn)},[gn]);const Ia=l.useCallback(a=>{var d;if(!a.nativeEvent.isComposing&&!(a.key==="Enter"&&(a.shiftKey||a.altKey))){if((Un||Vn||Kn)&&(a.key==="Enter"||a.key==="Tab")){a.preventDefault();return}if(a.key==="Enter"){a.preventDefault(),Tt.track("ai_input_submit_keyboard"),fn();return}if(a.key==="Escape"){ot(!1),(d=De.current)==null||d.blur();return}}},[fn]),ya=l.useCallback(()=>{Tt.track("ai_input_focus_textarea"),ot(!0)},[]),xa=l.useCallback(()=>{Tt.track("ai_input_blur_textarea"),ot(!1)},[]),ka=l.useCallback(a=>{const d=a.target.value,f=a.target.selectionStart||d.length;if(je(d),f>0){const M=d[f-1],C=f>1?d[f-2]:" ";M==="#"&&(C===" "||C===`
6
+ ${m}`:m?g=m:w?g=w:s&&c>0?g=r==="text"?"":no(s,[],c):g="",p.startsWith("mj")&&(e!=null&&e.params)){const b=br(e.params);b&&(g=[g,b].filter(Boolean).join(" "))}const D=(e==null?void 0:e.count)||o.selectedCount||1;let x,v,A;if(e!=null&&e.params){r!=="audio"&&r!=="text"&&r!=="agent"&&!p.startsWith("mj")&&e.params.size&&(x=Mt(e.params.size)),e.params.duration&&(v=e.params.duration);const b={};for(const[z,P]of Object.entries(e.params))z!=="size"&&z!=="duration"&&P&&(b[z]=P);Object.keys(b).length>0&&(A=b)}if(!x&&(e!=null&&e.size)&&e.size!=="auto"&&(x=Mt(e.size)),!x&&(e==null?void 0:e.size)!=="auto"){for(const b of o.selectedParams)if(b.id==="size"){x=Mt(b.value);break}}if(!v){for(const b of o.selectedParams)if(b.id==="duration"){v=b.value;break}}if(!x&&(e==null?void 0:e.size)!=="auto"&&r!=="text"&&r!=="agent"&&r!=="audio"){const b=mt(p);if((b==null?void 0:b.type)==="image"&&b.imageDefaults)x="1x1";else if((b==null?void 0:b.type)==="video"&&b.videoDefaults){const z=In(p,(e==null?void 0:e.modelRef)||p,e==null?void 0:e.params);x=Mt(z.size||b.videoDefaults.size),v||(v=z.duration||b.videoDefaults.duration)}else if(r==="image")x="1x1";else if(r==="video"){const z=In(p,(e==null?void 0:e.modelRef)||p,e==null?void 0:e.params);x=Mt(z.size),v||(v=z.duration)}}!v&&r==="video"&&(v=In(p,(e==null?void 0:e.modelRef)||p,e==null?void 0:e.params).duration);const _=o.cleanText.trim();return{scenario:S,generationType:r,modelId:p,modelRef:(e==null?void 0:e.modelRef)||null,isModelExplicit:I,prompt:g,userInstruction:_,rawInput:n,count:D,size:x,duration:v,extraParams:A,parseResult:o,hasExtraContent:h,selection:t}}const Sn={id:nn,name:"自动"},Ms=Tn.map(n=>({id:n.id,name:n.name,isSystem:!0})),ao=({value:n,onSelect:t,onAddSkill:e,disabled:s=!1})=>{const[i,c]=l.useState(!1),[o,h]=l.useState([]),[r,p]=l.useState([]),[I,S]=l.useState(""),[m,w]=l.useState(0),g=l.useRef(null),D=l.useRef(null),x=l.useCallback(async()=>{try{const L=(await _n.getAllDirectories()).find(ee=>ee.name==="Skill");if(!L)return;const W=await _n.getNoteMetasByDirectory(L.id),ne=new Set(Tn.map(ee=>ee.id)),$=W.filter(ee=>!ne.has(ee.id)).map(ee=>{var Ce;return{id:ee.id,name:ee.title,outputType:((Ce=ee.metadata)==null?void 0:Ce.outputType)||void 0}});h($)}catch{}},[]),v=l.useCallback(async()=>{try{const E=await $s.getAllExternalSkillsMeta(),L=new Set(Tn.map(ne=>ne.id)),W=E.filter(ne=>!L.has(ne.id)).map(ne=>({id:ne.id,name:ne.name,isExternal:!0,source:ne.source,outputType:ne.outputType}));p(W)}catch{}},[]);l.useEffect(()=>{if(i){x(),v(),S("");const L=[Sn,...Ms,...r,...o].findIndex(W=>W.id===n);w(L>=0?L:0),setTimeout(()=>{var W;return(W=D.current)==null?void 0:W.focus()},50)}},[i,n]),l.useEffect(()=>{if(i&&g.current){const E=g.current.children[m];E&&E.scrollIntoView({block:"nearest"})}},[m,i]);const A=l.useCallback(E=>{E.preventDefault(),!s&&c(L=>!L)},[s]),_=l.useCallback(E=>{t(E),c(!1)},[t]),b=l.useCallback(E=>{E.stopPropagation(),c(!1),e()},[e]),z=[Sn,...Ms,...r,...o],P=I.trim()?z.filter(E=>E.name.toLowerCase().includes(I.toLowerCase())||E.id.toLowerCase().includes(I.toLowerCase())):z,te=z.length>15,Y=l.useCallback(E=>E==="Escape"?(c(!1),!0):E==="ArrowDown"?(w(L=>L<P.length-1?L+1:0),!0):E==="ArrowUp"?(w(L=>L>0?L-1:P.length-1),!0):E==="Enter"||E===" "||E==="Tab"?(m<P.length&&_(P[m].id),!0):!1,[m,P,_]),q=P.find(E=>E.id===n)||Sn;return u.jsx(Rn,{isOpen:i,setIsOpen:c,disabled:s,openKeys:["Enter"," ","ArrowDown","ArrowUp"],onOpenKey:Y,children:({containerRef:E,menuRef:L,portalPosition:W,handleTriggerKeyDown:ne})=>u.jsxs("div",{className:"skill-dropdown",ref:E,children:[u.jsxs("button",{className:`skill-dropdown__trigger ${i?"skill-dropdown__trigger--open":""}`,onMouseDown:A,onKeyDown:ne,disabled:s,type:"button",title:`Skill: ${q.name}`,children:[u.jsx("span",{className:"skill-dropdown__icon-prefix",children:u.jsx(os,{size:14})}),u.jsx("span",{className:"skill-dropdown__label",children:q.name}),u.jsx(An,{size:14,className:`skill-dropdown__chevron ${i?"skill-dropdown__chevron--open":""}`})]}),i&&En.createPortal(u.jsxs("div",{ref:L,className:`skill-dropdown__menu ${cn}`,style:{position:"fixed",zIndex:Pn.DROPDOWN_PORTAL,left:W.left,bottom:window.innerHeight-W.top+8},onMouseDown:$=>$.stopPropagation(),onClick:$=>$.stopPropagation(),children:[u.jsxs("div",{className:"skill-dropdown__header",children:[u.jsx(os,{size:14}),u.jsx("span",{children:"Skill"})]}),te&&u.jsx("div",{className:"skill-dropdown__search",children:u.jsx("input",{ref:D,type:"text",className:"skill-dropdown__search-input",placeholder:"搜索 Skill...",value:I,onChange:$=>{S($.target.value),w(0)},onMouseDown:$=>$.stopPropagation(),onKeyDown:$=>$.stopPropagation()})}),u.jsx("div",{ref:g,className:"skill-dropdown__list",children:P.map(($,ee)=>{const Ce=$.id===n,We=ee===m;return u.jsxs("div",{className:`skill-dropdown__item ${Ce?"skill-dropdown__item--selected":""} ${We?"skill-dropdown__item--highlighted":""}`,onClick:()=>_($.id),onMouseEnter:()=>w(ee),children:[u.jsx("span",{className:"skill-dropdown__item-label",children:$.name}),$.outputType==="image"&&u.jsx(Rs,{size:12,className:"skill-dropdown__item-image-icon"}),$.outputType==="video"&&u.jsx(js,{size:12,className:"skill-dropdown__item-image-icon"}),$.outputType==="ppt"&&u.jsx(Oa,{size:12,className:"skill-dropdown__item-image-icon"}),$.isSystem&&u.jsx("span",{className:"skill-dropdown__item-badge",children:"系统"}),$.isExternal&&u.jsx("span",{className:"skill-dropdown__item-badge",children:"系统"}),Ce&&u.jsx(Dn,{size:14,className:"skill-dropdown__item-check"})]},$.id)})}),u.jsx("div",{className:"skill-dropdown__divider"}),u.jsxs("div",{className:"skill-dropdown__add-btn",onClick:b,onMouseDown:$=>$.preventDefault(),children:[u.jsx(Wa,{size:14}),u.jsx("span",{children:"添加 Skill"})]})]}),document.body)]})})};var Re=(n=>(n.VIDEO="视频创作",n.IMAGE="图片生成",n.MINDMAP="思维导图",n.FLOWCHART="流程图",n.GRID="宫格图",n.SVG="SVG矢量图",n))(Re||{});const Et=3,Es=[{id:"grid-emoji",title:"智能拆分宫格图",description:"宫格图,风格统一",prompt:"生成16宫格猫咪表情包",category:Re.GRID,imageUrl:"https://tuziphoto.codernote.club/aitu/gonggetu.jpg",badgeColor:"badge--grid"},{id:"flowchart-process",title:"业务流程图",description:"使用 Mermaid 语法生成清晰的流程图",prompt:"绘制一个用户注册登录的流程图,包含邮箱验证、密码校验、短信验证码、登录成功/失败等节点",category:Re.FLOWCHART,imageUrl:"https://tuziphoto.codernote.club/aitu/liuchengtu.png",badgeColor:"badge--flowchart"},{id:"mindmap-project",title:"项目规划脑图",description:"快速生成结构化的思维导图,梳理项目计划",prompt:"创建一个关于「移动应用开发」的思维导图,包含需求分析、UI设计、前端开发、后端开发、测试上线等主要分支",category:Re.MINDMAP,imageUrl:"https://tuziphoto.codernote.club/aitu/siweidaotu.png",badgeColor:"badge--mindmap"}],ro={[Re.VIDEO]:{bg:"#fce7f3",text:"#be185d"},[Re.IMAGE]:{bg:"#dbeafe",text:"#1d4ed8"},[Re.MINDMAP]:{bg:"#dcfce7",text:"#15803d"},[Re.FLOWCHART]:{bg:"#fef3c7",text:"#b45309"},[Re.GRID]:{bg:"#f3e8ff",text:"#7c3aed"},[Re.SVG]:{bg:"#e0e7ff",text:"#4338ca"}},oo=({template:n,onClick:t})=>{const e=ro[n.category],s=i=>{i.preventDefault()};return u.jsxs("div",{className:"inspiration-card",onMouseDown:s,onClick:t,"data-track":`inspiration_click_${n.id}`,children:[u.jsxs("div",{className:"inspiration-card__image-wrapper",children:[u.jsx("img",{src:n.imageUrl,alt:n.title,className:"inspiration-card__image",loading:"lazy"}),u.jsx("span",{className:"inspiration-card__badge",style:{backgroundColor:e.bg,color:e.text},children:n.category}),u.jsx("div",{className:"inspiration-card__hover-overlay",children:u.jsx("div",{className:"inspiration-card__arrow",children:u.jsx(Ba,{size:16})})})]}),u.jsxs("div",{className:"inspiration-card__content",children:[u.jsx("h3",{className:"inspiration-card__title",children:n.title}),u.jsx("p",{className:"inspiration-card__description",children:n.description})]})]})},As="aitu_hide_inspiration_board",io=({isCanvasEmpty:n,onSelectPrompt:t,onOpenPromptTool:e,visible:s=!0,className:i=""})=>{const[c,o]=l.useState(0),[h,r]=l.useState(!1);l.useEffect(()=>{localStorage.getItem(As)==="true"&&r(!0)},[]);const p=Math.ceil(Es.length/Et),I=p>1,S=Es.slice(c*Et,(c+1)*Et),m=l.useCallback(x=>{x.preventDefault(),x.stopPropagation(),o(v=>(v-1+p)%p)},[p]),w=l.useCallback(x=>{x.preventDefault(),x.stopPropagation(),o(v=>(v+1)%p)},[p]),g=l.useCallback(x=>{t({prompt:x,modelType:"agent"})},[t]),D=l.useCallback(x=>{x.preventDefault(),x.stopPropagation(),r(!0),localStorage.setItem(As,"true")},[]);return!n||!s||h?null:u.jsxs("div",{className:`inspiration-board ${i}`,children:[u.jsxs("div",{className:"inspiration-board__header",children:[u.jsx("h3",{className:"inspiration-board__title",children:"灵感创意"}),u.jsxs("button",{className:"inspiration-board__hide-btn",onClick:D,onMouseDown:x=>x.preventDefault(),title:"不再提示","data-track":"inspiration_click_hide",children:[u.jsx(La,{size:14}),u.jsx("span",{children:"不再提示"})]}),e&&u.jsxs("button",{className:"inspiration-board__prompt-btn",onClick:e,onMouseDown:x=>x.preventDefault(),title:"提示词工具","data-track":"inspiration_click_prompt_tool",children:[u.jsx(Fa,{size:14}),u.jsx("span",{children:"提示词"})]}),I&&u.jsxs("div",{className:"inspiration-board__pagination",children:[u.jsxs("span",{className:"inspiration-board__page-indicator",children:[c+1," / ",p]}),u.jsxs("div",{className:"inspiration-board__nav-buttons",children:[u.jsx("button",{className:"inspiration-board__nav-btn",onMouseDown:x=>x.preventDefault(),onClick:m,"aria-label":"上一页","data-track":"inspiration_click_prev",children:u.jsx(Ha,{size:16})}),u.jsx("button",{className:"inspiration-board__nav-btn",onMouseDown:x=>x.preventDefault(),onClick:w,"aria-label":"下一页","data-track":"inspiration_click_next",children:u.jsx($a,{size:16})})]})]})]}),u.jsxs("div",{className:"inspiration-board__grid",children:[S.map(x=>u.jsx(oo,{template:x,onClick:()=>g(x.prompt)},x.id)),S.length<Et&&Array.from({length:Et-S.length}).map((x,v)=>u.jsx("div",{className:"inspiration-card inspiration-card--placeholder"},`placeholder-${v}`))]})]})},nt=[{value:"image",label:"图片",icon:u.jsx(Rs,{size:14}),zh:"图片",en:"Image"},{value:"video",label:"视频",icon:u.jsx(js,{size:14}),zh:"视频",en:"Video"},{value:"audio",label:"音频",icon:u.jsx(Ga,{size:14}),zh:"音频",en:"Audio"},{value:"text",label:"文本",icon:u.jsx(Ua,{size:14}),zh:"文本",en:"Text"},{value:"agent",label:"Agent",icon:u.jsx(Va,{size:14}),zh:"Agent",en:"Agent"}],co=({value:n,onSelect:t,disabled:e=!1})=>{const[s,i]=l.useState(!1),{language:c}=zn(),[o,h]=l.useState(0),r=l.useRef(null);l.useEffect(()=>{if(s){const w=nt.findIndex(g=>g.value===n);h(w>=0?w:0)}},[s,n]),l.useEffect(()=>{if(s&&r.current){const w=r.current.children[o];w&&w.scrollIntoView({block:"nearest"})}},[o,s]);const p=l.useCallback(w=>{w.preventDefault(),!e&&i(g=>!g)},[e]),I=l.useCallback(w=>{t(w),i(!1)},[t]),S=l.useCallback(w=>w==="Escape"?(i(!1),!0):w==="ArrowDown"?(h(g=>g<nt.length-1?g+1:0),!0):w==="ArrowUp"?(h(g=>g>0?g-1:nt.length-1),!0):w==="Enter"||w===" "||w==="Tab"?(I(nt[o].value),!0):!1,[o,I]),m=nt.find(w=>w.value===n)||nt[0];return u.jsx(Rn,{isOpen:s,setIsOpen:i,disabled:e,openKeys:["Enter"," ","ArrowDown","ArrowUp"],onOpenKey:S,children:({containerRef:w,menuRef:g,portalPosition:D,handleTriggerKeyDown:x})=>u.jsxs("div",{className:"generation-type-dropdown",ref:w,children:[u.jsxs("button",{className:`generation-type-dropdown__trigger ${s?"generation-type-dropdown__trigger--open":""}`,onMouseDown:p,onKeyDown:x,disabled:e,type:"button",title:`${c==="zh"?"生成类型":"Type"}: ${c==="zh"?m.zh:m.en} (↑↓ Tab)`,children:[u.jsx("span",{className:"generation-type-dropdown__icon-prefix",children:m.icon}),u.jsx("span",{className:"generation-type-dropdown__label",children:c==="zh"?m.zh:m.en}),u.jsx(An,{size:14,className:`generation-type-dropdown__chevron ${s?"generation-type-dropdown__chevron--open":""}`})]}),s&&En.createPortal(u.jsxs("div",{ref:g,className:`generation-type-dropdown__menu ${cn}`,style:{position:"fixed",zIndex:Pn.DROPDOWN_PORTAL,left:D.left,bottom:window.innerHeight-D.top+8},onMouseDown:v=>v.stopPropagation(),onClick:v=>v.stopPropagation(),children:[u.jsxs("div",{className:"generation-type-dropdown__header",children:[u.jsx(Ns,{size:14}),u.jsx("span",{children:c==="zh"?"生成类型 (↑↓ Tab)":"Generation type (↑↓ Tab)"})]}),u.jsx("div",{ref:r,className:"generation-type-dropdown__list",children:nt.map((v,A)=>{const _=v.value===n,b=A===o;return u.jsxs("div",{className:`generation-type-dropdown__item ${_?"generation-type-dropdown__item--selected":""} ${b?"generation-type-dropdown__item--highlighted":""}`,onClick:()=>I(v.value),onMouseEnter:()=>h(A),children:[u.jsx("span",{className:"generation-type-dropdown__item-icon",children:v.icon}),u.jsx("span",{className:"generation-type-dropdown__item-label",children:c==="zh"?v.zh:v.en}),_&&u.jsx(Dn,{size:14,className:"generation-type-dropdown__item-check"})]},v.value)})})]}),document.body)]})})},At=[1,2,3,4,5,10,20],lo=({value:n,onSelect:t,disabled:e=!1,isOpen:s,onOpenChange:i})=>{const{value:c,setValue:o}=xr({controlledValue:s,defaultValue:!1,onChange:i}),{language:h}=zn(),[r,p]=l.useState(0),I=l.useRef(null);l.useEffect(()=>{if(c){const g=At.indexOf(n);p(g>=0?g:0)}},[c,n]),l.useEffect(()=>{if(c&&I.current){const g=I.current.children[r];g&&g.scrollIntoView({block:"nearest"})}},[r,c]);const S=l.useCallback(g=>{g.preventDefault(),!e&&o(!c)},[e,c,o]),m=l.useCallback(g=>{t(g),o(!1)},[t]),w=l.useCallback(g=>g==="Escape"?(o(!1),!0):g==="ArrowDown"?(p(D=>D<At.length-1?D+1:0),!0):g==="ArrowUp"?(p(D=>D>0?D-1:At.length-1),!0):g==="Enter"||g===" "||g==="Tab"?(m(At[r]),!0):!1,[r,m]);return u.jsx(Rn,{isOpen:c,setIsOpen:o,disabled:e,openKeys:["Enter"," ","ArrowDown","ArrowUp"],onOpenKey:w,children:({containerRef:g,menuRef:D,portalPosition:x,handleTriggerKeyDown:v})=>u.jsxs("div",{className:"count-dropdown",ref:g,children:[u.jsxs("button",{className:`count-dropdown__trigger ${c?"count-dropdown__trigger--open":""}`,onMouseDown:S,onKeyDown:v,disabled:e,type:"button",title:`${h==="zh"?"生成数量":"Count"}: ${n} (↑↓ Tab)`,children:[u.jsxs("span",{className:"count-dropdown__label",children:[n,h==="zh"?"个":""]}),u.jsx(An,{size:14,className:`count-dropdown__chevron ${c?"count-dropdown__chevron--open":""}`})]}),c&&En.createPortal(u.jsxs("div",{ref:D,className:`count-dropdown__menu ${cn}`,style:{position:"fixed",zIndex:Pn.DROPDOWN_PORTAL,left:x.left,bottom:window.innerHeight-x.top+8},onMouseDown:A=>A.stopPropagation(),onClick:A=>A.stopPropagation(),children:[u.jsx("div",{className:"count-dropdown__header",children:u.jsx("span",{children:h==="zh"?"生成数量 (↑↓ Tab)":"Count (↑↓ Tab)"})}),u.jsx("div",{ref:I,className:"count-dropdown__list",children:At.map((A,_)=>{const b=A===n,z=_===r;return u.jsxs("div",{className:`count-dropdown__item ${b?"count-dropdown__item--selected":""} ${z?"count-dropdown__item--highlighted":""}`,onClick:()=>m(A),onMouseEnter:()=>p(_),children:[u.jsxs("span",{className:"count-dropdown__item-label",children:[A,h==="zh"?"个":A>1?" items":" item"]}),b&&u.jsx(Dn,{size:14,className:"count-dropdown__item-check"})]},A)})})]}),document.body)]})})},Gs=["right","bottom","left","top"],Qt=4;function uo(n,t,e,s,i=32){const c=s<=2?s:s<=4?2:3,o=Math.floor(e/c),h=e%c;return[n[0]+h*(t.width+i),n[1]+o*(t.height+i)]}function Us(n,t){const{ignoreElementIds:e=[],ignoreTypes:s=["workzone"],extraOccupiedRects:i=[]}=t;return[...n.children.filter(ho).filter(c=>!s.includes(c.type??"")&&!e.includes(c.id??"")).map(c=>({...an.getRectangleByPoints(c.points),id:c.id,type:c.type})),...i]}function ho(n){return typeof n=="object"&&n!==null&&Array.isArray(n.points)&&n.points.length===2}function Vs(n,t,e){return n.x<t.x+t.width+e&&n.x+n.width+e>t.x&&n.y<t.y+t.height+e&&n.y+n.height+e>t.y}function po(n,t,e,s){const i=[n];for(let c=1;c<=s;c+=1)i.push([n[0]+t*c,n[1]],[n[0],n[1]+e*c],[n[0]+t*c,n[1]+e*c],[n[0]-t*c,n[1]],[n[0]-t*c,n[1]+e*c],[n[0],n[1]-e*c],[n[0]+t*c,n[1]-e*c],[n[0]-t*c,n[1]-e*c]);return i}function mo(n,t,e,s,i){const c=Math.max(i,32),o=Math.max(Math.round(Math.min(t.width,t.height)*.16),28),h=Math.max(Math.round(Math.min(t.width,t.height)*.12),18),r=t.width+o,p=t.height+o,I=[];for(let S=0;S<e;S+=1){const m=Math.floor(S/Qt),w=S%Qt,g=Math.min(Qt,e-m*Qt),D=w-(g-1)/2,x=n.x+n.width/2-t.width/2,v=n.y+n.height/2-t.height/2,A=Math.abs(D)*h;let _=x,b=v;switch(s){case"right":_=n.x+n.width+c+m*r+A,b=v+D*(t.height+o);break;case"left":_=n.x-c-t.width-m*r-A,b=v+D*(t.height+o);break;case"top":_=x+D*(t.width+o),b=n.y-c-t.height-m*p-A;break;case"bottom":default:_=x+D*(t.width+o),b=n.y+n.height+c+m*p+A;break}I.push([Math.round(_),Math.round(b)])}return I}function Ps(n,t,e,s,i){return n.reduce((o,h)=>{const r={x:h[0],y:h[1],width:t.width,height:t.height};return o+e.filter(p=>Vs(r,p,s)).length},0)*1e3+Gs.indexOf(i)*10}function fo(n,t,e,s,i){var p;const{gap:c=40,padding:o=16}=i,h=Us(n,i),r=Gs.map(I=>({side:I,positions:mo(t,e,s,I,c)}));return r.sort((I,S)=>Ps(I.positions,e,h,o,I.side)-Ps(S.positions,e,h,o,S.side)),((p=r[0])==null?void 0:p.positions)??[]}function go(n,t,e,s,i={}){const{frameRect:c,extraOccupiedRects:o=[],...h}=i,r={...h,extraOccupiedRects:o},p=c?fo(n,c,e,s,r):Array.from({length:s},(S,m)=>uo(t,e,m,s,r.gap)),I=[...o];return p.map(S=>{const m=wo(n,S,e,{...r,extraOccupiedRects:I});return I.push({x:m[0],y:m[1],width:e.width,height:e.height}),m})}function wo(n,t,e,s={}){const{gap:i=40,padding:c=16,maxSearchRadius:o=6}=s,h=Us(n,s),r=e.width+i,p=e.height+i,I=po(t,r,p,o);for(const S of I){const m={x:S[0],y:S[1],width:e.width,height:e.height};if(!h.some(g=>Vs(m,g,c)))return S}return[t[0],t[1]+p*(o+1)]}function st(n){return typeof n=="string"&&n.trim()?n.trim():null}function Io(n){return n==="image"||n==="video"||n==="audio"||n==="text"||n==="agent"}function yo(n){if(!n||typeof n!="object")return!1;const t=n;return typeof t.modelId=="string"&&t.modelId.trim().length>0&&(t.profileId===null||typeof t.profileId=="string")&&(t.providerIdHint===null||typeof t.providerIdHint=="string")&&(t.vendorHint===null||typeof t.vendorHint=="string")&&typeof t.updatedAt=="number"&&Number.isFinite(t.updatedAt)}function On(){try{const n=window.localStorage.getItem(Cn);if(!n)return{};const t=JSON.parse(n);if(!t||typeof t!="object")return{};const e={};return Object.entries(t).forEach(([s,i])=>{Io(s)&&yo(i)&&(e[s]={modelId:i.modelId.trim(),profileId:st(i.profileId),providerIdHint:st(i.providerIdHint),vendorHint:st(i.vendorHint),updatedAt:i.updatedAt})}),e}catch{return{}}}function Ks(n){try{if(!Object.values(n).some(Boolean)){window.localStorage.removeItem(Cn);return}window.localStorage.setItem(Cn,JSON.stringify(n))}catch{}}function xo(n){const t=On();return t[n]?t[n]||null:n==="agent"&&t.text||null}function ko(n,t){var i;const e=st(t.modelId);if(!e){Ys(n);return}const s=On();s[n]={modelId:e,profileId:st((i=t.modelRef)==null?void 0:i.profileId),providerIdHint:st(t.providerIdHint),vendorHint:st(t.vendorHint),updatedAt:Date.now()},Ks(s)}function Ys(n){const t=On();t[n]&&(delete t[n],Ks(t))}function Ue(n,t,e,s){var c;const i=n.metadata||{};return{id:n.id,name:n.name,generationType:n.generationType,prompt:i.prompt||((c=t==null?void 0:t.aiContext)==null?void 0:c.finalPrompt)||"",aiAnalysis:n.aiAnalysis,count:i.count,createdAt:n.createdAt,status:n.status,steps:n.steps.map(o=>({id:o.id,description:o.description,status:o.status,mcp:o.mcp,args:o.args,result:o.result,error:o.error,duration:o.duration,options:o.options})),retryContext:t,postProcessingStatus:e,insertedCount:s}}let Ds=!1;Ds||(yr(),Kr(),$s.initialize().catch(n=>{console.warn("[AIInputBar] 外部 Skill 服务初始化失败(非致命):",n)}),Ds=!0);function Zs(n){return n.selectionKey||(n.sourceProfileId?`${n.sourceProfileId}::${n.id}`:n.id)}function Ve(n,t){return t!=null&&t.profileId?`${t.profileId}::${n}`:n}function Pt(n){return n?tn(n.sourceProfileId||null,n.id):null}function bo(n){return n<=0?"0":n<=20?"1-20":n<=100?"21-100":n<=300?"101-300":n<=800?"301-800":"800+"}function ze(n,t,e){if(!t)return;const s=Ve(t,e),i=(e==null?void 0:e.profileId)||null;return n.find(c=>Zs(c)===s)||n.find(c=>c.id===t&&(c.sourceProfileId||null)===i)||(i===null?n.find(c=>c.id===t&&!c.sourceProfileId):void 0)||n.find(c=>c.id===t)}function So(n,t){return n==="agent"&&t==="text"?"agent":t}function vo(n){if(!n)return!1;const t=n.toLowerCase();return t.includes("#video")?!0:[".mp4",".webm",".mov",".avi",".mkv",".m4v",".flv",".wmv"].some(s=>t.includes(s))}const Xs=Os.memo(({language:n,onSelectionChange:t,externalBoardRef:e,onCanvasEmptyChange:s,isDataReady:i,onFrameSelected:c})=>{const o=gr(),h=l.useRef(o);h.current=o,l.useEffect(()=>(Is(o),xs(o),ys(o),ks(o),Cs.setBoard(o),e&&(e.current=o),()=>{Is(null),xs(null),ys(null),ks(null),Cs.setBoard(null),e&&(e.current=null)}),[o,e]);const r=l.useRef(s);r.current=s,l.useEffect(()=>{if(!o||!r.current||!i)return;const m=setInterval(()=>{var g;const w=o.children||[];(g=r.current)==null||g.call(r,w.length===0)},500);return()=>{clearInterval(m)}},[o,i]);const p=l.useRef(t);p.current=t;const I=l.useRef(c);return I.current=c,l.useEffect(()=>{const S=async()=>{var D,x,v,A;const w=h.current;if(!w)return;const g=Ws(w);if(g.length===1&&Bs(g[0])){const _=g[0],b=an.getRectangleByPoints(_.points);(D=I.current)==null||D.call(I,{id:_.id,width:b.width,height:b.height})}else(x=I.current)==null||x.call(I,null);if(g.length===0){p.current([]);return}try{const _=await ar(w),b=[];_.graphicsImage&&b.push({url:_.graphicsImage,name:n==="zh"?"图形元素":"Graphics",type:"graphics",width:(v=_.graphicsImageDimensions)==null?void 0:v.width,height:(A=_.graphicsImageDimensions)==null?void 0:A.height});for(const z of _.remainingImages){const P=z.url||"",te=vo(P);b.push({url:P,name:z.name||(te?`video-${Date.now()}`:`image-${Date.now()}`),type:te?"video":"image",width:z.width,height:z.height})}_.remainingText&&_.remainingText.trim()&&b.push({type:"text",text:_.remainingText.trim(),name:n==="zh"?"文字内容":"Text Content"}),p.current(b)}catch(_){console.error("Failed to process selected content:",_),p.current([])}};S();const m=()=>{setTimeout(S,50)};return document.addEventListener("mouseup",m),()=>{document.removeEventListener("mouseup",m)}},[n]),null});Xs.displayName="SelectionWatcher";const qs=Os.memo(({className:n,isDataReady:t})=>{const{language:e}=zn(),s=qt("image"),i=qt("video"),c=qt("audio"),o=qt("text"),h=mr(),r=cr(),{addHistory:p}=Ls(),{addAsset:I}=Ka(),S=l.useRef(h.sendWorkflowMessage);S.current=h.sendWorkflowMessage;const m=l.useRef(h.updateWorkflowMessage);m.current=h.updateWorkflowMessage;const w=l.useRef(h.appendAgentLog);w.current=h.appendAgentLog;const g=l.useRef(h.updateThinkingContent);g.current=h.updateThinkingContent;const D=l.useRef(h.setSelectedContent);D.current=h.setSelectedContent;const x=l.useRef(h.registerRetryHandler);x.current=h.registerRetryHandler;const v=l.useRef(null),A=l.useRef([]),_=l.useRef(null),b=Sr(),z=l.useCallback((a,d,f)=>{if(!a)return;const M=A.current,C=(f!=null&&f.workflowId&&(f!=null&&f.batchId)&&typeof f.batchIndex=="number"?tt.getAnchorByBatchSlot(a,{workflowId:f.workflowId,batchId:f.batchId,batchIndex:f.batchIndex}):null)||(f!=null&&f.workflowId?tt.getAnchorByWorkflowId(a,f.workflowId):null)||(M[0]?tt.getAnchorById(a,M[0]):null);if(!C)return;const R=C.taskIds.includes(d)?C.taskIds:[...C.taskIds,d];tt.updateAnchor(a,C.id,{taskIds:R,primaryTaskId:C.primaryTaskId||d})},[]),P=l.useCallback((a,d,f)=>{const M=A.current;M.length===0||!a||M.forEach(C=>{tt.updateAnchor(a,C,yn(d,f))})},[]),te=l.useCallback(a=>{const d=A.current;d.length===0||!a||(d.forEach(f=>{tt.removeAnchor(a,f)}),A.current=[])},[]),Y=l.useCallback((a,d)=>{const f=xo(a);if(!f)return;const M=ze(d,f.modelId,tn(f.profileId,f.modelId));if(M)return M;Ys(a)},[]),q=l.useCallback((a,d)=>{const f=Y(a,d);if(f)return f;const C=ut(a==="video"?"video":a==="audio"?"audio":a==="text"||a==="agent"?"text":"image"),R=ze(d,C.modelId,tn(C.profileId,C.modelId));if(R)return R;const U=a==="video"?vn():a==="audio"?en():a==="text"||a==="agent"?is():Dt();return ze(d,U,null)||d[0]},[Y]),E=b.generationType,W=q(E,E==="video"?i:E==="audio"?c:E==="text"||E==="agent"?o:s)||mt(b.selectedModel)||mt(E==="video"?vn():E==="audio"?en():E==="text"||E==="agent"?is():Dt()),ne=q("image",s)||mt(Dt()),$=ut("image"),ee=(ne==null?void 0:ne.id)||$.modelId||Dt(),Ce=Pt(ne)||tn($.profileId,$.modelId),We=Ve((W==null?void 0:W.id)||ee,Pt(W)||Ce),Be=E==="agent"?{}:bn(E,(W==null?void 0:W.id)||ee,We,b.selectedParams),[de,je]=l.useState(""),[Wn,Bn]=l.useState(!1),[dn,un]=l.useState([]),[gt,at]=l.useState([]),[Le,Ke]=l.useState(!1),fe=l.useRef(null),[rt,ot]=l.useState(!1),[Js,Qs]=l.useState(null),[T,Fe]=l.useState(E),[Ye,Ln]=l.useState(b.selectedSkillId||nn),[j,Fn]=l.useState((W==null?void 0:W.id)||ee),[F,Hn]=l.useState(Pt(W)||Ce),zt=l.useMemo(()=>{if(T!=="image"||ze(s,j,F))return s;const d=Yt("image",j,F);return d?[d,...s]:s},[T,s,j,F]),Rt=l.useMemo(()=>{if(T!=="video"||ze(i,j,F))return i;const d=Yt("video",j,F);return d?[d,...i]:i},[T,j,F,i]),jt=l.useMemo(()=>{if(T!=="audio"||ze(c,j,F))return c;const d=Yt("audio",j,F);return d?[d,...c]:c},[c,T,j,F]),Nt=l.useMemo(()=>{if(T!=="text"&&T!=="agent"||ze(o,j,F))return o;const d=Yt("text",j,F);return d?[d,...o]:o},[T,j,F,o]),[Te,Ot]=l.useState(()=>{if(E==="agent")return{};const a=(W==null?void 0:W.id)||ee,d=cs(a).find(f=>f.id==="size");return{...Be,...a.startsWith("mj")||!d?{}:{size:Be.size||ls(a)}}}),wt=l.useRef(Te),$n=l.useRef(E==="agent"?"agent":`${E}:${We}`);l.useEffect(()=>{wt.current=Te},[Te]);const[It,Gn]=l.useState(b.selectedCount),[Un,hn]=l.useState(!1),[Vn,pn]=l.useState(!1),[Kn,mn]=l.useState(!1),Ze=l.useRef(null),ea=l.useCallback(a=>{hn(a),a||(Ze.current=null)},[]),ta=l.useCallback(a=>{pn(a),a||(Ze.current=null)},[]),na=l.useCallback(a=>{mn(a),a||(Ze.current=null)},[]),[Yn,yt]=l.useState(!1),pe=l.useMemo(()=>[...gt,...dn],[gt,dn]),Xe=l.useMemo(()=>({invalidFile:e==="zh"?"请上传图片文件":"Please upload image files",fileTooLarge:e==="zh"?"图片大小不能超过 25MB":"Image size cannot exceed 25MB",loadFailed:e==="zh"?"加载图片失败":"Failed to load image",compressionFailed:e==="zh"?"图片压缩失败":"Image compression failed",compressing:a=>e==="zh"?`正在压缩图片 (${a.toFixed(1)}MB)...`:`Compressing image (${a.toFixed(1)}MB)...`,compressed:(a,d)=>e==="zh"?`压缩完成: ${a.toFixed(1)}MB → ${d.toFixed(1)}MB`:`Compressed: ${a.toFixed(1)}MB → ${d.toFixed(1)}MB`}),[e]);l.useEffect(()=>{const a=T==="video"?Rt:T==="audio"?jt:T==="text"||T==="agent"?Nt:zt,f=ze(a,j,F)||q(T,a);if(f){const M=Ve(j,F),C=Zs(f);M!==C&&(Fn(f.id),Hn(Pt(f)))}T!=="agent"&&Ln(nn),(T==="agent"||T==="text"||T==="audio")&&Gn(1)},[jt,T,zt,q,j,F,Nt,Rt]);const Wt=l.useMemo(()=>T==="video"?Rt:T==="audio"?jt:T==="text"||T==="agent"?Nt:zt,[jt,T,zt,Nt,Rt]),xt=l.useMemo(()=>{var f;if(T==="agent")return[];if(T==="video")return Ya(j,F||j,Te);const a=cs(j);return T!=="audio"?a:(Te.sunoAction||((f=a.find(M=>M.id==="sunoAction"))==null?void 0:f.defaultValue)||"music")==="lyrics"?a.filter(M=>M.id==="sunoAction"||M.id==="mv"||M.id==="title"||M.id==="tags"):a},[T,j,F,Te]);l.useEffect(()=>{if(!rt)return;const a=d=>{const f=d.target;Lt.current&&!Lt.current.contains(f)&&ot(!1)};return document.addEventListener("mousedown",a),()=>document.removeEventListener("mousedown",a)},[rt]),l.useEffect(()=>()=>{fe.current&&clearTimeout(fe.current)},[]),l.useEffect(()=>{const a=d=>{var f;((f=d.detail)==null?void 0:f.type)!=="image"&&(fe.current&&(clearTimeout(fe.current),fe.current=null),Ke(!1))};return window.addEventListener("ai-generation-complete",a),()=>{window.removeEventListener("ai-generation-complete",a)}},[]),l.useEffect(()=>{const a=zs.observeTaskUpdates().subscribe(d=>{var N,H;const f=d.task,M=r.getWorkflow();if(!M)return;const C=M.steps.find(O=>{const K=O.result;return(K==null?void 0:K.taskId)===f.id});if(!C)return;let R=C.status,U=C.result,Z=C.error;switch(f.status){case pt.PENDING:case pt.PROCESSING:R="running";break;case pt.COMPLETED:R="completed",U={...typeof U=="object"?U:{},taskId:f.id,result:f.result};break;case pt.FAILED:R="failed",Z=((N=f.error)==null?void 0:N.message)||"任务执行失败";break;case pt.CANCELLED:R="skipped";break}if(R!==C.status){if(r.updateStep(C.id,R,U,Z),R==="failed"){const K=(H=C.options)==null?void 0:H.batchId;K&&M.steps.forEach(J=>{var Ie;J.id!==C.id&&((Ie=J.options)==null?void 0:Ie.batchId)===K&&J.status==="running"&&r.updateStep(J.id,"skipped",void 0,"前置任务失败")})}const O=r.getWorkflow();if(O){const K=Ue(O,v.current||void 0);m.current(K);const J=_.current,Ie=Ee.current;J&&Ie&&Pe.updateWorkflow(Ie,J,K)}}});return()=>a.unsubscribe()},[r]);const Zn=l.useRef(void 0),Bt=l.useRef(void 0);l.useEffect(()=>{const a=xn.observeCompletionEvents().subscribe(d=>{const f=r.getWorkflow(),M=f==null?void 0:f.steps.find(U=>{const Z=U.result;return(Z==null?void 0:Z.taskId)===d.taskId});let C,R;switch(d.type){case"postProcessingStarted":C="processing";break;case"postProcessingCompleted":C="completed",R=d.result.insertedCount;break;case"postProcessingFailed":C="failed";break}if(Zn.current=C,R!==void 0&&(Bt.current=(Bt.current||0)+R),f&&M){const U=r.getWorkflow();if(U){const Z=Ue(U,v.current||void 0,C,Bt.current);m.current(Z);const N=_.current,H=Ee.current;N&&H&&Pe.updateWorkflow(H,N,Z)}}if(d.type==="postProcessingCompleted"){const U=d.result.firstElementPosition;fe.current&&(clearTimeout(fe.current),fe.current=null),Ke(!1),setTimeout(async()=>{var H;h.closeChatDrawer();const Z=_.current,N=Ee.current;if(Z&&N){const O=r.getWorkflow();if(O==null?void 0:O.steps.every(J=>J.status==="completed"||J.status==="failed"||J.status==="skipped")){const{workflowCompletionService:J}=await sn(async()=>{const{workflowCompletionService:se}=await import("./tool-windows-C4D0lII2.js").then(G=>G.oT);return{workflowCompletionService:se}},__vite__mapDeps([0]),import.meta.url);(O==null?void 0:O.steps.every(se=>{const G=se.result;return G!=null&&G.taskId?J.isPostProcessingCompleted(G.taskId):!0}))&&(Pe.removeWorkZone(N,Z),_.current=null)}}if(U&&N){const O=(H=N.host)==null?void 0:H.getBoundingClientRect();if(O){const K=N.viewport.zoom,J=U[0]-O.width/(2*K),Ie=U[1]-O.height/(2*K);Za.updateViewport(N,[J,Ie],K)}}},500),Zn.current=void 0,Bt.current=void 0}});return()=>a.unsubscribe()},[r,h]);const Ee=l.useRef(null),{submitWorkflow:Xn}=lr({boardRef:Ee,workZoneIdRef:_}),De=l.useRef(null),Lt=l.useRef(null),qn=l.useRef(null);wr(De,{enableCopy:!0,stopPropagation:!0});const sa=l.useCallback(a=>{var d;je(a.prompt),Fe("agent"),(d=De.current)==null||d.focus(),Tt.track("inspiration_selected",{promptLength:a.prompt.length,modelType:a.modelType})},[]),aa=l.useCallback(a=>{var d;je(a.content),a.modelType&&(a.modelType==="image"?Fe("image"):a.modelType==="video"?Fe("video"):a.modelType==="audio"?Fe("audio"):a.modelType==="text"?Fe("text"):a.modelType==="agent"&&Fe("agent")),(d=De.current)==null||d.focus()},[]),ra=l.useCallback(()=>{const a=ds.find(d=>d.id==="knowledge-base");a&&(window.__kbPendingNavigation={directoryName:"Skill",autoCreateNote:!0},us.openTool(a),setTimeout(()=>{window.dispatchEvent(new CustomEvent("kb:navigate",{detail:{directoryName:"Skill",autoCreateNote:!0}}))},300))},[]),oa=l.useCallback(()=>{const a=ds.find(d=>d.id==="banana-prompt");if(!a){console.warn("[AIInputBar] Banana prompt tool not found");return}us.openTool(a)},[]),ia=l.useCallback(()=>{if(!(T!=="image"&&T!=="video")){if(!de.trim()){Ne.warning(e==="zh"?"请先输入提示词":"Please enter a prompt first");return}Bn(!0)}},[T,e,de]),ca=l.useCallback(async a=>{try{const d=new Image;d.onload=()=>{const f={type:"image",url:a.url,name:a.name||`素材-${Date.now()}`,width:d.naturalWidth||void 0,height:d.naturalHeight||void 0};at(M=>[...M,f]),yt(!1)},d.onerror=()=>{const f={type:"image",url:a.url,name:a.name||`素材-${Date.now()}`};at(M=>[...M,f]),yt(!1)},d.src=a.url}catch(d){console.error("Failed to select asset from library:",d),yt(!1)}},[]),la=l.useCallback(()=>{var a;(a=qn.current)==null||a.click()},[]),Jn=l.useCallback(a=>new Promise((d,f)=>{const M=new FileReader;M.onload=()=>{const C=M.result,R=new Image;R.onload=()=>{d({url:C,width:R.naturalWidth,height:R.naturalHeight})},R.onerror=()=>{d({url:C,width:0,height:0})},R.src=C},M.onerror=f,M.readAsDataURL(a)}),[]),Ft=l.useCallback(async a=>{const d=Array.from(a);if(d.length===0)return;const f=[];for(const[M,C]of d.entries()){if(!C.type.startsWith("image/")){Ne.error(Xe.invalidFile);continue}if(C.size>25*1024*1024){Ne.error(Xe.fileTooLarge);continue}try{let R=C;if(C.size>10*1024*1024){const{compressImageBlob:O,getCompressionStrategy:K}=await sn(async()=>{const{compressImageBlob:se,getCompressionStrategy:G}=await import("./tool-windows-C4D0lII2.js").then(ge=>ge.oF);return{compressImageBlob:se,getCompressionStrategy:G}},__vite__mapDeps([0]),import.meta.url),J=K(C.size/(1024*1024)),Ie=Ne.loading({content:Xe.compressing(C.size/(1024*1024)),duration:0,placement:"top"});try{R=await O(C,J.targetSizeMB),Ne.close(Ie),Ne.success({content:Xe.compressed(C.size/(1024*1024),R.size/(1024*1024)),duration:2})}catch(se){Ne.close(Ie),console.error("[AIInputBar] Failed to compress image:",se),Ne.error(Xe.compressionFailed);continue}}const U=R instanceof File?R:new File([R],C.name||`pasted-image-${Date.now()}.png`,{type:R.type||C.type||"image/png"});I(U,hs.IMAGE,Xa.LOCAL,U.name).catch(O=>{console.warn("[AIInputBar] Failed to add asset to library:",O)});const{url:Z,width:N,height:H}=await Jn(U);f.push({type:"image",url:Z,name:U.name||`上传图片 ${M+1}`,width:N||void 0,height:H||void 0})}catch(R){console.error("[AIInputBar] Failed to import local image:",R),Ne.error(Xe.loadFailed)}}f.length>0&&at(M=>[...M,...f])},[I,Jn,Xe]),da=l.useCallback(async a=>{const d=a.target.files;!d||d.length===0||(await Ft(d),a.target.value="")},[Ft]),ua=l.useCallback(a=>{un(a)},[]),Qn=l.useRef(null),ha=l.useCallback(a=>{if(Qn.current=a,!a)return;const d=vr(a.width,a.height,j);d&&Ot(f=>({...f,size:d}))},[j]),pa=l.useCallback(a=>{a<gt.length&&at(d=>d.filter((f,M)=>M!==a))},[gt.length]);l.useEffect(()=>{D.current(pe.map(a=>({type:a.type,url:a.url,text:a.text,name:a.name})))},[pe]),l.useEffect(()=>{const a=d=>{var N,H;const f=(N=d.clipboardData)==null?void 0:N.items;if(!f||f.length===0||!Array.from(f).some(O=>O.type.startsWith("image/")))return;const C=document.activeElement,R=Lt.current;if(!(!!R&&(R.contains(C)||rt&&(C===document.body||(C==null?void 0:C.tagName)==="BODY"))))return;const Z=[];for(const O of Array.from(f)){if(!O.type.startsWith("image/"))continue;const K=O.getAsFile();K&&Z.push(K)}Z.length!==0&&(d.preventDefault(),Ft(Z),(H=De.current)==null||H.focus())};return document.addEventListener("paste",a),()=>{document.removeEventListener("paste",a)}},[Ft,rt]);const it=l.useCallback(()=>{if(Ze.current!==null){const a=Ze.current;je(d=>d.substring(0,a)+d.substring(a+1)),Ze.current=null}},[]),Ht=l.useCallback(a=>{const d=So(T,a.type);Tt.track("ai_input_change_model",{model:a.id,type:a.type,profileId:a.sourceProfileId||null}),it(),Fe(d),Fn(a.id);const f=Pt(a);Hn(f),ko(d,{modelId:a.id,modelRef:f,providerIdHint:a.sourceProfileId||(f==null?void 0:f.profileId),vendorHint:a.vendor}),Ot(d==="agent"?{}:bn(d,a.id,Ve(a.id,f))),hn(!1),setTimeout(()=>{var M;return(M=De.current)==null?void 0:M.focus()},0)},[it,T]),ma=l.useCallback(a=>{const d=ze(Wt,a,F)||ze(Wt,a,null)||mt(a);d&&Ht(d)},[Ht,Wt,F]),fa=l.useCallback(a=>{Ht(a)},[Ht]);l.useEffect(()=>{const a=(N,H)=>{const O=Object.keys(N),K=Object.keys(H);return O.length!==K.length?!1:O.every(J=>N[J]===H[J])},d=T==="agent"?"agent":`${T}:${Ve(j,F)}`,f=T==="agent"?{}:$n.current===d?wt.current||{}:bn(T,j,Ve(j,F),wt.current),M={},C=xt.find(N=>N.id==="size"),R=f.size,U=!R||!(C!=null&&C.options)||C.options.some(N=>N.value===R);!j.startsWith("mj")&&C&&(M.size=R&&U?R:C.defaultValue||ls(j)),xt.forEach(N=>{if(N.id==="size")return;const H=f[N.id],O=!H||N.valueType!=="enum"||!N.options||N.options.some(K=>K.value===H);H&&O?M[N.id]=H:N.defaultValue&&(M[N.id]=N.defaultValue)});const Z=qa(j,M);a(wt.current||{},Z)||(Ot(Z),wt.current=Z),$n.current=d},[T,j,F,xt]),l.useEffect(()=>{_r({generationType:T,selectedModel:j,selectedParams:Te,selectedCount:It,selectedSkillId:Ye}),T!=="agent"&&Cr(T,j,Te,Ve(j,F))},[T,j,F,Te,It,Ye]);const ga=l.useCallback((a,d,f)=>{it(),Ot(M=>{const C={...M};return d===void 0||d===""?delete C[a]:C[a]=d,C}),f!=null&&f.keepOpen||(pn(!1),setTimeout(()=>{var M;return(M=De.current)==null?void 0:M.focus()},0))},[it]),wa=l.useCallback(a=>{it(),Gn(a),mn(!1),setTimeout(()=>{var d;return(d=De.current)==null?void 0:d.focus()},0)},[it]),fn=l.useCallback(async()=>{var a,d,f,M,C,R,U,Z,N;if(!(!de.trim()&&pe.length===0)&&!Le){Ke(!0);try{const H=T==="video"?"video":T==="audio"?"audio":T==="text"||T==="agent"?"text":"image",O=ps(H,F||j);if(console.log("[AIInputBar][handleGenerate] API Key 检查:",{hasApiKey:O}),!O){console.log("[AIInputBar][handleGenerate] 弹窗获取 API Key...");const y=await Ja();if(console.log("[AIInputBar][handleGenerate] API Key 输入完成:",{hasNewKey:!!y}),!y){Ke(!1);return}console.log("[AIInputBar][handleGenerate] API Key 输入后设置状态:",{hasApiKey:ps(H,F||j)})}const K=pe.filter(y=>y.type==="image"&&y.url),J=pe.filter(y=>y.type==="graphics"&&y.url),Ie=[...K,...J].map(y=>{if(y.width&&y.height)return{width:y.width,height:y.height}}).filter(y=>y!==void 0),se={texts:pe.filter(y=>y.type==="text"&&y.text).map(y=>y.text),images:K.map(y=>y.url),videos:pe.filter(y=>y.type==="video"&&y.url).map(y=>y.url),graphics:J.map(y=>y.url),imageDimensions:Ie},G=so(de,se,{modelId:j,modelRef:F,params:Te,generationType:T,count:It}),ge=[...se.images,...se.graphics];let ae;if(T==="agent"&&Ye!==nn){const y=Ar(Ye);if(y)try{ae=await Xt(G,y,ge)}catch(B){console.warn("[AIInputBar] 系统 Skill 工作流转换失败,降级到通用工作流:",B),ae=ht(G,ge)}else{const B=Pr(Ye);if(B){console.log(`[AIInputBar] 外部 Skill: id=${B.id} name=${B.name} outputType=${B.outputType} contentLen=${((a=B.content)==null?void 0:a.length)||0}`);try{ae=await Xt(G,{id:B.id,name:B.name,type:"external",content:B.content,outputType:B.outputType},ge,()=>{console.log("[AIInputBar] AI 正在解析外部 Skill 工作流...")})}catch(V){console.warn("[AIInputBar] 外部 Skill 工作流转换失败,降级到角色扮演:",V),ae=await Xt(G,{id:B.id,name:B.name,type:"external",content:B.content,outputType:B.outputType},ge).catch(()=>ht(G,ge))}}else try{const V=await _n.getNoteById(Ye);if(V){const oe=((d=V.metadata)==null?void 0:d.outputType)||void 0;ae=await Xt(G,{id:V.id,name:V.title,type:"user",content:V.content,outputType:oe},ge,()=>{console.log("[AIInputBar] AI 正在解析工作流...")})}else ae=ht(G,ge)}catch{ae=ht(G,ge)}}ae||(console.warn("[AIInputBar] Skill 工作流未能生成,降级到通用工作流"),ae=ht(G,ge))}else ae=ht(G,ge);console.log("[AIInputBar][handleGenerate] 即将创建 WorkZone, workflow.steps:",ae.steps.length);const k=Ee.current;if(k){const oe=(f=k.host)==null?void 0:f.getBoundingClientRect(),re=((M=k.viewport)==null?void 0:M.zoom)||1,ue=((R=(C=k.viewport)==null?void 0:C.origination)==null?void 0:R[0])||0,Ae=((Z=(U=k.viewport)==null?void 0:U.origination)==null?void 0:Z[1])||0,kt=k.children.filter(he=>he.type!=="workzone"),Ut=ue+((oe==null?void 0:oe.width)||0)/2/re,bt=Ae+((oe==null?void 0:oe.height)||0)/2/re;let ke=Ut-200,X=bt,ct=ke,Ge=bt-240/2;if(kt.length>0){const he=Ws(k);let ie=!1;if(he.length>0)try{const ce=kn(k,he,!1);he.every(be=>ms.isDrawElement(be)&&ms.isImage(be)||fr(be))&&ce.width>ce.height?(ke=ce.x+ce.width+50,X=ce.y):(ke=ce.x,X=ce.y+ce.height+50),ct=ke,Ge=X,ie=!0}catch(ce){console.warn("[AIInputBar] Failed to calculate position for selected elements:",ce)}if(!ie){let ce=null,vt=-1/0;for(const be of kt)try{const dt=kn(k,[be],!1),_t=dt.y+dt.height;_t>vt&&(vt=_t,ce=be)}catch(dt){console.warn("[AIInputBar] Failed to get rectangle for element:",dt)}if(ce){const be=kn(k,[ce],!1);ke=be.x,X=be.y+be.height+50,ct=ke,Ge=X}}}const Qe=Ue(ae),lt=Qn.current;let St,et,ns;if(lt){const he=k.children.find(ie=>ie.id===lt.id);if(he&&Bs(he)){St=lt.id,et={width:lt.width,height:lt.height};const ie=an.getRectangleByPoints(he.points);ns=ie,ke=ie.x,X=ie.y}}if(G.generationType==="image"){const he=Math.max(G.count??1,1),ie=he>1,ce=ie?void 0:St,vt=ie?void 0:et,be=[],dt=`wf_batch_${ae.id}`,_t=ce?null:go(k,[ke,X],fs({workflowId:ae.id,expectedInsertPosition:[ke,X],requestedSize:G.size,requestedCount:1,zoom:re,title:Qe.name||"图片生成",...yn("submitted")}).size??{width:320,height:180},he,{frameRect:ie?ns:void 0});for(let _e=0;_e<he;_e+=1){let Ct=fs({workflowId:ae.id,expectedInsertPosition:[ke,X],targetFrameId:ce,targetFrameDimensions:vt,frameAffinityId:ie?St:void 0,frameAffinityDimensions:ie?et:void 0,requestedSize:G.size,requestedCount:ie?1:he,batchId:ie?dt:void 0,batchIndex:ie?_e+1:void 0,batchTotal:ie?he:void 0,zoom:re,title:Qe.name||"图片生成",...yn("submitted")});if(!ce){const as=_t?_t[_e]??Ct.position:Ct.position;Ct={...Ct,position:as,expectedInsertPosition:as}}const va=tt.insertAnchor(k,Ct);be.push(va)}A.current=be.map(_e=>_e.id),_.current=null,console.log("[AIInputBar][handleGenerate] Image Generation Anchor 已创建:",be.map(_e=>_e.id));const[ss]=be;ss&&setTimeout(()=>{const _e=an.getRectangleByPoints(ss.points);gs(k,[_e.x+_e.width/2,_e.y+_e.height/2],100)},100)}else{const he=Pe.insertWorkZone(k,{workflow:Qe,position:[ct,Ge],size:{width:360,height:240},expectedInsertPosition:[ke,X],targetFrameId:St,targetFrameDimensions:et,zoom:re});_.current=he.id,A.current=[],console.log("[AIInputBar][handleGenerate] WorkZone 已创建:",he.id),setTimeout(()=>{const ie=ct+180,ce=Ge+240/2;gs(k,[ie,ce],100)},100)}}const Q={rawInput:de,userInstruction:G.userInstruction,model:{id:G.modelId,type:G.generationType,isExplicit:G.isModelExplicit},defaultModels:{audio:ut("audio").modelId||en(),image:ut("image").modelId||"gemini-3-pro-image-preview-vip",video:ut("video").modelId||"veo3.1"},params:{count:G.count,size:G.size,duration:G.duration},selection:se,finalPrompt:G.prompt},me=ut("text").modelId,ye={aiContext:Q,referenceImages:ge,textModel:me};v.current=ye;try{console.log("[AIInputBar][handleGenerate] 开始提交工作流 submitWorkflowToSW...");const y=Date.now(),{usedSW:B}=await Xn(G,ge,ye,ae);if(console.log("[AIInputBar][handleGenerate] submitWorkflowToSW 返回:",{usedSW:B,耗时ms:Date.now()-y}),B){if(T==="image"&&P(k,"accepted"),de.trim()){const V=pe.length>0;p(de.trim(),V,T)}je(""),un([]),at([]),fe.current&&clearTimeout(fe.current),fe.current=setTimeout(()=>{Ke(!1),fe.current=null},1e3);return}}catch(y){console.warn("[AIInputBar] SW execution failed, falling back to main thread:",y)}if(console.log("[AIInputBar] Fallback: Executing workflow in main thread:",ae.steps.length,"steps"),T==="image"&&P(k,"handoff"),de.trim()){const y=pe.length>0;p(de.trim(),y,T)}je(""),un([]),at([]),fe.current&&clearTimeout(fe.current),fe.current=setTimeout(()=>{Ke(!1),fe.current=null},1e3);const le=[],we=[],Gt=(y,B)=>({onChunk:V=>{g.current(V)},onAddSteps:V=>{r.updateStep(y.id,"completed",{analysis:"completed"},void 0,Date.now()-B);const oe=V.map((ue,Ae)=>({...ue,status:ue.status==="completed"?"completed":"pending",options:{mode:"queue",batchId:`agent_${Date.now()}`,batchIndex:Ae+1,batchTotal:V.length,globalIndex:Ae+1}}));r.addSteps(oe),we.push(...oe),V.forEach(ue=>{w.current({type:"tool_call",timestamp:Date.now(),toolName:ue.mcp,args:ue.args})});const re=Ue(r.getWorkflow(),v.current||void 0);m.current(re),_.current&&k&&Pe.updateWorkflow(k,_.current,re)},onUpdateStep:(V,oe,re,ue)=>{r.updateStep(V,oe,re,ue),w.current({type:"tool_result",timestamp:Date.now(),toolName:V,success:oe==="completed",data:re,error:ue});const Ae=Ue(r.getWorkflow(),v.current||void 0);m.current(Ae),_.current&&k&&Pe.updateWorkflow(k,_.current,Ae)}});let He=!1;const qe=()=>{const y=Ue(r.getWorkflow(),v.current||void 0);m.current(y),_.current&&k&&Pe.updateWorkflow(k,_.current,y)},Je=async y=>{var oe,re,ue,Ae,kt,Ut,bt;console.log("[AIInputBar] Executing step:",y.mcp,"with mode:",(oe=y.options)==null?void 0:oe.mode);const B=Date.now(),V=we.length;r.updateStep(y.id,"running"),qe();try{const ke={...y.options,...Gt(y,B)};console.log("[AIInputBar] Calling mcpRegistry.executeTool for:",y.mcp);const X=await ws.executeTool({name:y.mcp,arguments:y.args},ke);console.log("[AIInputBar] Tool result:",{success:X.success,taskId:X.taskId,error:X.error});const ct=(ue=(re=r.getWorkflow())==null?void 0:re.steps.find(Ge=>Ge.id===y.id))==null?void 0:ue.status;if(X.success){if(X.taskId)le.push(X.taskId),r.updateStep(y.id,"running",{taskId:X.taskId}),z(k,X.taskId,{workflowId:ae.id,batchId:(Ae=y.options)==null?void 0:Ae.batchId,batchIndex:(kt=y.options)==null?void 0:kt.batchIndex});else if(ct==="running"){const Ge=X.type==="text"&&X.data&&typeof X.data=="object"&&"content"in X.data?{content:X.data.content}:X.data;r.updateStep(y.id,"completed",Ge,void 0,Date.now()-B);const Qe=y.mcp==="generate_text"?(Ut=X.data)==null?void 0:Ut.content:y.mcp==="ai_analyze"?(bt=X.data)==null?void 0:bt.response:void 0;if((y.mcp==="generate_text"||y.mcp==="ai_analyze")&&Qe&&Qe.trim()&&we.length===V){const et={id:`${y.id}-insert-text`,mcp:"insert_to_canvas",args:{items:[{type:"text",content:Qe}]},description:y.mcp==="generate_text"?"将生成文本插入画布":"将 AI 回复插入画布",status:"pending"};r.addSteps([et]),we.push(et)}}}else return r.updateStep(y.id,"failed",void 0,X.error||"执行失败",Date.now()-B),!1;return!0}catch(ke){return r.updateStep(y.id,"failed",void 0,String(ke)),!1}finally{qe()}};for(const y of ae.steps){if(He){r.updateStep(y.id,"skipped"),qe();continue}await Je(y)||(He=!0)}if(!He&&we.length>0){const y=r.getWorkflow();for(const B of we){if(He){r.updateStep(B.id,"skipped"),qe();continue}const V=(N=r.getWorkflow())==null?void 0:N.steps.find(re=>re.id===B.id);if(!V){console.warn(`[AIInputBar] Step ${B.id} not found in workflow!`);continue}if(V.status==="completed")continue;await Je(V)||(He=!0)}}const $e=r.getWorkflow(),xe=$e==null?void 0:$e.steps.every(y=>y.status==="completed"||y.status==="failed"||y.status==="skipped"),wn=le.length>0;if(xe&&!wn){const y=_.current,B=A.current,V=Ee.current;(y||B.length>0)&&V&&($e!=null&&$e.steps.every(re=>{const ue=re.result;return ue!=null&&ue.taskId?xn.isPostProcessingCompleted(ue.taskId):!0}))&&setTimeout(()=>{y&&(Pe.removeWorkZone(V,y),_.current=null),B.length>0&&(P(V,"completed"),te(V))},1500)}}catch(H){console.error("Failed to create generation task:",H),T==="image"&&P(Ee.current,"failed",{error:H instanceof Error?H.message:"创建图片任务失败"}),r.abortWorkflow(),Ke(!1)}}},[de,pe,Le,j,F,r,Xn,p,Te,T,It,z,P,te]),gn=l.useCallback(async(a,d,f)=>{var ae;const M=a.retryContext;if(!M){console.error("[AIInputBar] No retry context available for workflow");return}f&&(_.current=f);const C={id:a.id,name:a.name,description:`重试: ${a.name}`,scenarioType:a.steps.some(k=>k.mcp==="ai_analyze")?"agent_flow":"direct_generation",generationType:a.generationType,steps:a.steps.map((k,Q)=>({id:k.id,mcp:k.mcp,args:k.args,description:k.description,status:Q<d?k.status:"pending",result:Q<d?k.result:void 0,error:Q<d?k.error:void 0,duration:Q<d?k.duration:void 0,options:k.options})),metadata:{prompt:a.prompt,userInstruction:M.aiContext.userInstruction,rawInput:M.aiContext.rawInput,modelId:M.aiContext.model.id,isModelExplicit:M.aiContext.model.isExplicit,count:a.count,size:M.aiContext.params.size,duration:M.aiContext.params.duration,referenceImages:M.referenceImages,selection:M.aiContext.selection},createdAt:Date.now()};r.startWorkflow(C),w.current({type:"retry",timestamp:Date.now(),reason:`从步骤 ${d+1} 开始重试`,attempt:1});const R=Ee.current,U=()=>{const k=Ue(r.getWorkflow(),M);m.current(k),_.current&&R&&Pe.updateWorkflow(R,_.current,k)},Z=Ue(C,M);m.current(Z),_.current&&R&&Pe.updateWorkflow(R,_.current,Z);const N=(k,Q)=>({onChunk:me=>{g.current(me)},onAddSteps:me=>{r.updateStep(k.id,"completed",{analysis:"completed"},void 0,Date.now()-Q);const ye=me.map((le,we)=>({...le,status:le.status==="completed"?"completed":"pending",options:{mode:"queue",batchId:`agent_${Date.now()}`,batchIndex:we+1,batchTotal:me.length,globalIndex:we+1}}));r.addSteps(ye),H.push(...ye),me.forEach(le=>{w.current({type:"tool_call",timestamp:Date.now(),toolName:le.mcp,args:le.args})}),U()},onUpdateStep:(me,ye,le,we)=>{r.updateStep(me,ye,le,we),w.current({type:"tool_result",timestamp:Date.now(),toolName:me,success:ye==="completed",data:le,error:we}),U()}}),H=[];let O=!1;const K=new Map;a.steps.forEach(k=>{var me;const Q=(me=k.result)==null?void 0:me.taskId;Q&&K.set(k.id,Q)});const J=async k=>{var ye,le,we,Gt,He,qe;const Q=Date.now(),me=H.length;r.updateStep(k.id,"running"),U();try{const Je=K.get(k.id),$e={...k.options,...N(k,Q),...Je?{retryTaskId:Je}:{}},xe=await ws.executeTool({name:k.mcp,arguments:k.args},$e),wn=(le=(ye=r.getWorkflow())==null?void 0:ye.steps.find(y=>y.id===k.id))==null?void 0:le.status;if(xe.success){if(xe.taskId)r.updateStep(k.id,"running",{taskId:xe.taskId}),z(R,xe.taskId,{workflowId:a.id,batchId:(we=k.options)==null?void 0:we.batchId,batchIndex:(Gt=k.options)==null?void 0:Gt.batchIndex});else if(wn==="running"){const y=xe.type==="text"&&xe.data&&typeof xe.data=="object"&&"content"in xe.data?{content:xe.data.content}:xe.data;r.updateStep(k.id,"completed",y,void 0,Date.now()-Q);const B=k.mcp==="generate_text"?(He=xe.data)==null?void 0:He.content:k.mcp==="ai_analyze"?(qe=xe.data)==null?void 0:qe.response:void 0;if((k.mcp==="generate_text"||k.mcp==="ai_analyze")&&B&&B.trim()&&H.length===me){const re={id:`${k.id}-insert-text`,mcp:"insert_to_canvas",args:{items:[{type:"text",content:B}]},description:k.mcp==="generate_text"?"将生成文本插入画布":"将 AI 回复插入画布",status:"pending"};r.addSteps([re]),H.push(re)}}}else return r.updateStep(k.id,"failed",void 0,xe.error||"执行失败",Date.now()-Q),!1;return!0}catch(Je){return r.updateStep(k.id,"failed",void 0,String(Je)),!1}finally{U()}},Ie=C.steps.slice(d);for(const k of Ie){if(O){r.updateStep(k.id,"skipped"),U();continue}await J(k)||(O=!0)}if(!O&&H.length>0)for(const k of H){if(O){r.updateStep(k.id,"skipped"),U();continue}const Q=(ae=r.getWorkflow())==null?void 0:ae.steps.find(ye=>ye.id===k.id);if(!Q||Q.status==="completed")continue;await J(Q)||(O=!0)}const se=r.getWorkflow(),G=se==null?void 0:se.steps.every(k=>k.status==="completed"||k.status==="failed"||k.status==="skipped"),ge=se==null?void 0:se.steps.some(k=>{var Q;return(Q=k.result)==null?void 0:Q.taskId});if(G&&!ge){const k=_.current,Q=Ee.current;k&&Q&&(se!=null&&se.steps.every(ye=>{const le=ye.result;return le!=null&&le.taskId?xn.isPostProcessingCompleted(le.taskId):!0}))&&setTimeout(()=>{Pe.removeWorkZone(Q,k),_.current=null},1500)}},[r,z]);l.useEffect(()=>{x.current(gn);const a=Ee.current;a&&(a.__executeWorkflowRetry=gn)},[gn]);const Ia=l.useCallback(a=>{var d;if(!a.nativeEvent.isComposing&&!(a.key==="Enter"&&(a.shiftKey||a.altKey))){if((Un||Vn||Kn)&&(a.key==="Enter"||a.key==="Tab")){a.preventDefault();return}if(a.key==="Enter"){a.preventDefault(),Tt.track("ai_input_submit_keyboard"),fn();return}if(a.key==="Escape"){ot(!1),(d=De.current)==null||d.blur();return}}},[fn]),ya=l.useCallback(()=>{Tt.track("ai_input_focus_textarea"),ot(!0)},[]),xa=l.useCallback(()=>{Tt.track("ai_input_blur_textarea"),ot(!1)},[]),ka=l.useCallback(a=>{const d=a.target.value,f=a.target.selectionStart||d.length;if(je(d),f>0){const M=d[f-1],C=f>1?d[f-2]:" ";M==="#"&&(C===" "||C===`
7
7
  `||f===1)&&(Ze.current=f-1,hn(!0),pn(!1),mn(!1))}},[]),ba=l.useMemo(()=>JSON.stringify({generationType:T,model:j,profileId:(F==null?void 0:F.profileId)||null,hasAttachedContent:pe.length>0,attachedCount:pe.length,promptLengthBucket:bo(de.trim().length)}),[pe.length,T,de,j,F==null?void 0:F.profileId]),es=de.trim().length>0||pe.length>0,ts=Js===!0,Sa=dn.some(a=>{var d;return a.type==="text"&&((d=a.text)==null?void 0:d.trim())}),$t=rt||pe.length>0||Wn;return u.jsxs("div",{ref:Lt,className:Zt("ai-input-bar",cn,n,{"ai-input-bar--with-inspiration":ts}),"data-testid":"ai-input-bar",children:[u.jsx(Xs,{language:e,onSelectionChange:ua,externalBoardRef:Ee,onCanvasEmptyChange:Qs,isDataReady:t,onFrameSelected:ha}),u.jsx(io,{isCanvasEmpty:ts,onSelectPrompt:sa,onOpenPromptTool:oa}),u.jsxs("div",{className:Zt("ai-input-bar__container",{"ai-input-bar__container--expanded":$t}),children:[u.jsxs("div",{className:"ai-input-bar__bottom-bar",children:[u.jsx("input",{ref:qn,type:"file",accept:"image/*",multiple:!0,onChange:da,style:{display:"none"}}),u.jsx("button",{className:"ai-input-bar__upload-btn",onMouseDown:a=>{a.preventDefault(),a.stopPropagation()},onClick:la,title:e==="zh"?"上传图片":"Upload images","data-track":"ai_input_click_upload",children:u.jsx(Qa,{size:18})}),u.jsx("button",{className:"ai-input-bar__library-btn",onMouseDown:a=>{a.preventDefault(),a.stopPropagation()},onClick:()=>yt(!0),title:e==="zh"?"从素材库选择":"Select from library","data-track":"ai_input_click_library",children:u.jsx(er,{size:18})}),u.jsx(co,{value:T,onSelect:Fe,disabled:Le}),T==="agent"&&u.jsx(ao,{value:Ye,onSelect:Ln,onAddSkill:ra,disabled:Le}),u.jsx(kr,{selectedModel:j,selectedSelectionKey:Ve(j,F),onSelect:ma,onSelectModel:fa,language:e,models:Wt,header:e==="zh"?"选择模型 (↑↓ Tab)":"Select model (↑↓ Tab)",isOpen:Un,onOpenChange:ea}),T!=="agent"&&xt.length>0&&u.jsx(Tr,{selectedParams:Te,onParamChange:ga,compatibleParams:xt,modelId:j,language:e,isOpen:Vn,onOpenChange:ta},j),T!=="agent"&&T!=="text"&&T!=="audio"&&u.jsx(lo,{value:It,onSelect:wa,disabled:Le,isOpen:Kn,onOpenChange:na}),u.jsx("div",{className:"ai-input-bar__bottom-spacer"}),u.jsx("button",{className:`ai-input-bar__send-btn ${es?"active":""} ${Le?"loading":""}`,onMouseDown:a=>{a.preventDefault(),a.stopPropagation()},onClick:()=>fn(),disabled:!es||Le,"data-track":"ai_input_click_send","data-track-params":ba,"data-testid":"ai-send-btn",children:u.jsx(tr,{size:18})})]}),u.jsxs("div",{className:Zt("ai-input-bar__input-area",{"ai-input-bar__input-area--expanded":$t}),children:[pe.length>0&&u.jsx("div",{className:"ai-input-bar__content-preview",children:u.jsx(Ir,{items:pe,language:e,enableHoverPreview:!0,onRemove:pa,removableStartIndex:gt.length})}),u.jsx($r,{onSelectPrompt:aa,language:e,extraActions:$t&&(T==="image"||T==="video")?u.jsx("button",{type:"button",className:"prompt-history-popover__action-btn",onMouseDown:a=>{a.preventDefault(),a.stopPropagation(),ot(!0)},onClick:ia,title:e==="zh"?"优化提示词":"Optimize prompt","aria-label":e==="zh"?"优化提示词":"Optimize prompt","data-track":"ai_input_click_prompt_optimize",children:u.jsx(Ns,{size:16})}):null}),u.jsx("div",{className:"ai-input-bar__rich-input",children:u.jsx("textarea",{ref:De,className:Zt("ai-input-bar__input",{"ai-input-bar__input--focused":rt}),value:de,onChange:ka,onKeyDown:Ia,onFocus:ya,onBlur:xa,placeholder:T==="agent"?e==="zh"?"输入指令,让 Agent 为你工作...":"Type instructions for Agent...":T==="text"?e==="zh"?"输入你想生成的文本内容、文章、摘要或 Markdown":"Describe the text, article, summary, or markdown you want":T==="audio"?Sa?e==="zh"?"已有文本,无需额外提示词,直接发送":"Text already selected. No extra prompt needed, just send":e==="zh"?"描述你想要生成的音乐、风格、歌词或情绪":"Describe the music, style, lyrics, or mood you want":e==="zh"?`描述你想要创建的${T==="image"?"图片":"视频"}`:`Describe the ${T==="image"?"image":"video"} you want to create`,rows:$t?4:1,disabled:Le,"data-testid":"ai-input-textarea"})})]})]}),Yn&&u.jsx(nr,{isOpen:Yn,onClose:()=>yt(!1),mode:sr.SELECT,filterType:hs.IMAGE,onSelect:ca}),u.jsx(Mr,{open:Wn,onOpenChange:Bn,originalPrompt:de,language:e,type:T==="video"?"video":"image",allowStructuredMode:!0,defaultMode:"structured",onApply:a=>{je(a),ot(!0),requestAnimationFrame(()=>{var d;(d=De.current)==null||d.focus()})}})]})});qs.displayName="AIInputBar";function Fo({isDataReady:n,activationKey:t}){const e=l.useRef(null);return l.useEffect(()=>{if(t<=0)return;const s=window.setTimeout(()=>{var c;const i=(c=e.current)==null?void 0:c.querySelector('[data-testid="ai-input-textarea"]');i==null||i.focus()},0);return()=>{window.clearTimeout(s)}},[t]),u.jsx(dr,{children:u.jsx(ur,{children:u.jsx("div",{ref:e,children:u.jsx(qs,{isDataReady:n})})})})}export{Fo as DeferredAIInputBar,Fo as default};
@@ -1,2 +1,2 @@
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{bL as B,y as t,r as n,_ as s}from"./tool-windows-hjm6YiPY.js";const M=n.lazy(()=>s(()=>import("./tool-windows-hjm6YiPY.js").then(e=>e.p4),__vite__mapDeps([0]),import.meta.url).then(e=>({default:e.ProjectDrawer}))),U=n.lazy(()=>s(()=>import("./tool-windows-hjm6YiPY.js").then(e=>e.p5),__vite__mapDeps([0]),import.meta.url).then(e=>({default:e.ToolboxDrawer}))),F=n.lazy(()=>s(()=>import("./tool-windows-hjm6YiPY.js").then(e=>e.p6),__vite__mapDeps([0]),import.meta.url).then(e=>({default:e.DeferredMediaLibraryModal}))),W=n.lazy(()=>s(()=>import("./tool-windows-hjm6YiPY.js").then(e=>e.p7),__vite__mapDeps([0]),import.meta.url).then(e=>({default:e.BackupRestoreDialog}))),q=n.lazy(()=>s(()=>import("./tool-windows-hjm6YiPY.js").then(e=>e.p8),__vite__mapDeps([0]),import.meta.url).then(e=>({default:e.VersionUpdatePrompt}))),G=n.lazy(()=>s(()=>import("./tool-windows-hjm6YiPY.js").then(e=>e.p9),__vite__mapDeps([0]),import.meta.url).then(e=>({default:e.PerformancePanel}))),H=n.lazy(()=>s(()=>import("./tool-windows-hjm6YiPY.js").then(e=>e.pa),__vite__mapDeps([0]),import.meta.url).then(e=>({default:e.DeferredSyncSettings}))),J=n.lazy(()=>s(()=>import("./tool-windows-hjm6YiPY.js").then(e=>e.pb),__vite__mapDeps([0]),import.meta.url).then(e=>({default:e.CommandPalette}))),K=n.lazy(()=>s(()=>import("./tool-windows-hjm6YiPY.js").then(e=>e.pc),__vite__mapDeps([0]),import.meta.url).then(e=>({default:e.CanvasSearch}))),N=n.lazy(()=>s(()=>import("./tool-windows-hjm6YiPY.js").then(e=>e.pd),__vite__mapDeps([0]),import.meta.url).then(e=>({default:e.ToolWinBoxManager})));function X({board:e,value:i,containerRef:o,versionUpdateEnabled:v,performancePanelEnabled:D,toolWindowManagerEnabled:T,projectDrawerOpen:c,toolboxDrawerOpen:u,mediaLibraryOpen:_,mediaLibraryConfig:l,backupRestoreOpen:h,cloudSyncOpen:m,onBoardSwitch:r,setProjectDrawerOpen:f,setToolboxDrawerOpen:O,setMediaLibraryOpen:k,setBackupRestoreOpen:V,setCloudSyncOpen:A,handleBeforeSwitch:x,onCreateProjectForMemory:I}){const{appState:P,setAppState:d}=B(),j=P.openCommandPalette||!1,E=P.openCanvasSearch||!1;return t.jsxs(t.Fragment,{children:[_&&t.jsx(n.Suspense,{fallback:null,children:t.jsx(F,{isOpen:_,onClose:()=>k(!1),mode:l==null?void 0:l.mode,filterType:l==null?void 0:l.filterType,onSelect:l==null?void 0:l.onSelect,selectButtonText:l==null?void 0:l.selectButtonText})}),h&&t.jsx(n.Suspense,{fallback:null,children:t.jsx(W,{open:h,onOpenChange:V,container:o.current,onBeforeImport:async()=>{await x()},onSwitchBoard:async(a,S)=>{const{workspaceService:R}=await s(async()=>{const{workspaceService:w}=await import("./tool-windows-hjm6YiPY.js").then(z=>z.oU);return{workspaceService:w}},__vite__mapDeps([0]),import.meta.url),p=await R.switchBoard(a);p&&r&&(S&&(p.viewport=S),r(p))}})}),m&&t.jsx(n.Suspense,{fallback:null,children:t.jsx(H,{visible:m,onClose:()=>A(!1)})}),v&&t.jsx(n.Suspense,{fallback:null,children:t.jsx(q,{})}),T&&t.jsx(n.Suspense,{fallback:null,children:t.jsx(N,{})}),j&&t.jsx(n.Suspense,{fallback:null,children:t.jsx(J,{open:j,onClose:()=>{d(a=>({...a,openCommandPalette:!1}))},board:e,container:o.current})}),E&&t.jsx(n.Suspense,{fallback:null,children:t.jsx(K,{open:E,onClose:()=>{d(a=>({...a,openCanvasSearch:!1}))},board:e})}),D&&t.jsx(n.Suspense,{fallback:null,children:t.jsx(G,{container:o.current,onCreateProject:I,elements:(e==null?void 0:e.children)||i})}),c&&t.jsx(n.Suspense,{fallback:null,children:t.jsx(M,{isOpen:c,onOpenChange:f,onBeforeSwitch:x,onBoardSwitch:r})}),u&&t.jsx(n.Suspense,{fallback:null,children:t.jsx(U,{isOpen:u,onOpenChange:O})})]})}export{X as DrawnixDeferredFeatures,X as default};
2
+ import{bL as B,y as t,r as n,_ as s}from"./tool-windows-C4D0lII2.js";const M=n.lazy(()=>s(()=>import("./tool-windows-C4D0lII2.js").then(e=>e.p4),__vite__mapDeps([0]),import.meta.url).then(e=>({default:e.ProjectDrawer}))),U=n.lazy(()=>s(()=>import("./tool-windows-C4D0lII2.js").then(e=>e.p5),__vite__mapDeps([0]),import.meta.url).then(e=>({default:e.ToolboxDrawer}))),F=n.lazy(()=>s(()=>import("./tool-windows-C4D0lII2.js").then(e=>e.p6),__vite__mapDeps([0]),import.meta.url).then(e=>({default:e.DeferredMediaLibraryModal}))),W=n.lazy(()=>s(()=>import("./tool-windows-C4D0lII2.js").then(e=>e.p7),__vite__mapDeps([0]),import.meta.url).then(e=>({default:e.BackupRestoreDialog}))),q=n.lazy(()=>s(()=>import("./tool-windows-C4D0lII2.js").then(e=>e.p8),__vite__mapDeps([0]),import.meta.url).then(e=>({default:e.VersionUpdatePrompt}))),G=n.lazy(()=>s(()=>import("./tool-windows-C4D0lII2.js").then(e=>e.p9),__vite__mapDeps([0]),import.meta.url).then(e=>({default:e.PerformancePanel}))),H=n.lazy(()=>s(()=>import("./tool-windows-C4D0lII2.js").then(e=>e.pa),__vite__mapDeps([0]),import.meta.url).then(e=>({default:e.DeferredSyncSettings}))),J=n.lazy(()=>s(()=>import("./tool-windows-C4D0lII2.js").then(e=>e.pb),__vite__mapDeps([0]),import.meta.url).then(e=>({default:e.CommandPalette}))),K=n.lazy(()=>s(()=>import("./tool-windows-C4D0lII2.js").then(e=>e.pc),__vite__mapDeps([0]),import.meta.url).then(e=>({default:e.CanvasSearch}))),N=n.lazy(()=>s(()=>import("./tool-windows-C4D0lII2.js").then(e=>e.pd),__vite__mapDeps([0]),import.meta.url).then(e=>({default:e.ToolWinBoxManager})));function X({board:e,value:i,containerRef:o,versionUpdateEnabled:v,performancePanelEnabled:D,toolWindowManagerEnabled:T,projectDrawerOpen:c,toolboxDrawerOpen:u,mediaLibraryOpen:_,mediaLibraryConfig:l,backupRestoreOpen:h,cloudSyncOpen:m,onBoardSwitch:r,setProjectDrawerOpen:f,setToolboxDrawerOpen:O,setMediaLibraryOpen:k,setBackupRestoreOpen:V,setCloudSyncOpen:A,handleBeforeSwitch:x,onCreateProjectForMemory:I}){const{appState:P,setAppState:d}=B(),j=P.openCommandPalette||!1,E=P.openCanvasSearch||!1;return t.jsxs(t.Fragment,{children:[_&&t.jsx(n.Suspense,{fallback:null,children:t.jsx(F,{isOpen:_,onClose:()=>k(!1),mode:l==null?void 0:l.mode,filterType:l==null?void 0:l.filterType,onSelect:l==null?void 0:l.onSelect,selectButtonText:l==null?void 0:l.selectButtonText})}),h&&t.jsx(n.Suspense,{fallback:null,children:t.jsx(W,{open:h,onOpenChange:V,container:o.current,onBeforeImport:async()=>{await x()},onSwitchBoard:async(a,S)=>{const{workspaceService:R}=await s(async()=>{const{workspaceService:w}=await import("./tool-windows-C4D0lII2.js").then(z=>z.oU);return{workspaceService:w}},__vite__mapDeps([0]),import.meta.url),p=await R.switchBoard(a);p&&r&&(S&&(p.viewport=S),r(p))}})}),m&&t.jsx(n.Suspense,{fallback:null,children:t.jsx(H,{visible:m,onClose:()=>A(!1)})}),v&&t.jsx(n.Suspense,{fallback:null,children:t.jsx(q,{})}),T&&t.jsx(n.Suspense,{fallback:null,children:t.jsx(N,{})}),j&&t.jsx(n.Suspense,{fallback:null,children:t.jsx(J,{open:j,onClose:()=>{d(a=>({...a,openCommandPalette:!1}))},board:e,container:o.current})}),E&&t.jsx(n.Suspense,{fallback:null,children:t.jsx(K,{open:E,onClose:()=>{d(a=>({...a,openCanvasSearch:!1}))},board:e})}),D&&t.jsx(n.Suspense,{fallback:null,children:t.jsx(G,{container:o.current,onCreateProject:I,elements:(e==null?void 0:e.children)||i})}),c&&t.jsx(n.Suspense,{fallback:null,children:t.jsx(M,{isOpen:c,onOpenChange:f,onBeforeSwitch:x,onBoardSwitch:r})}),u&&t.jsx(n.Suspense,{fallback:null,children:t.jsx(U,{isOpen:u,onOpenChange:O})})]})}export{X as DrawnixDeferredFeatures,X as default};