@devmotion/cli 0.7.0 → 0.8.0
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.
- package/README.md +13 -0
- package/dist/index.js +135 -348
- package/package.json +1 -1
- package/studio/client/_app/immutable/chunks/4QfhfUmj.js +1 -0
- package/studio/client/_app/immutable/chunks/4QfhfUmj.js.br +0 -0
- package/studio/client/_app/immutable/chunks/4QfhfUmj.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/B4vsfLqj.js +1 -0
- package/studio/client/_app/immutable/chunks/B4vsfLqj.js.br +0 -0
- package/studio/client/_app/immutable/chunks/B4vsfLqj.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/B7SJbUFX.js +1 -0
- package/studio/client/_app/immutable/chunks/B7SJbUFX.js.br +0 -0
- package/studio/client/_app/immutable/chunks/B7SJbUFX.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/B9f32Zzc.js +1 -0
- package/studio/client/_app/immutable/chunks/B9f32Zzc.js.br +1 -0
- package/studio/client/_app/immutable/chunks/B9f32Zzc.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/BHu0iPy_.js +1 -0
- package/studio/client/_app/immutable/chunks/BHu0iPy_.js.br +0 -0
- package/studio/client/_app/immutable/chunks/BHu0iPy_.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/BVqaYHsk.js +1 -0
- package/studio/client/_app/immutable/chunks/BVqaYHsk.js.br +0 -0
- package/studio/client/_app/immutable/chunks/BVqaYHsk.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/BcZVIP5f.js +1 -0
- package/studio/client/_app/immutable/chunks/BcZVIP5f.js.br +0 -0
- package/studio/client/_app/immutable/chunks/BcZVIP5f.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/BcqGu5mG.js +1 -0
- package/studio/client/_app/immutable/chunks/BcqGu5mG.js.br +0 -0
- package/studio/client/_app/immutable/chunks/BcqGu5mG.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/BfikHP7B.js +512 -0
- package/studio/client/_app/immutable/chunks/BfikHP7B.js.br +0 -0
- package/studio/client/_app/immutable/chunks/BfikHP7B.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/BpSxDpO2.js +1 -0
- package/studio/client/_app/immutable/chunks/BpSxDpO2.js.br +0 -0
- package/studio/client/_app/immutable/chunks/BpSxDpO2.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/BpuHE4_g.js +1 -0
- package/studio/client/_app/immutable/chunks/BpuHE4_g.js.br +0 -0
- package/studio/client/_app/immutable/chunks/BpuHE4_g.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/Bs1PixFT.js +1 -0
- package/studio/client/_app/immutable/chunks/Bs1PixFT.js.br +0 -0
- package/studio/client/_app/immutable/chunks/Bs1PixFT.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/Bu_5E1Sl.js +1 -0
- package/studio/client/_app/immutable/chunks/Bu_5E1Sl.js.br +0 -0
- package/studio/client/_app/immutable/chunks/Bu_5E1Sl.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/C2XXotQj.js +1 -0
- package/studio/client/_app/immutable/chunks/C2XXotQj.js.br +0 -0
- package/studio/client/_app/immutable/chunks/C2XXotQj.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/CAACQLfs.js +1 -0
- package/studio/client/_app/immutable/chunks/CAACQLfs.js.br +0 -0
- package/studio/client/_app/immutable/chunks/CAACQLfs.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/CClcTVCL.js +1 -0
- package/studio/client/_app/immutable/chunks/CClcTVCL.js.br +2 -0
- package/studio/client/_app/immutable/chunks/CClcTVCL.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/CDjRusee.js +1 -0
- package/studio/client/_app/immutable/chunks/CDjRusee.js.br +0 -0
- package/studio/client/_app/immutable/chunks/CDjRusee.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/CU5enDwt.js +1 -0
- package/studio/client/_app/immutable/chunks/CU5enDwt.js.br +0 -0
- package/studio/client/_app/immutable/chunks/CU5enDwt.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/CaaG7K_x.js +1 -0
- package/studio/client/_app/immutable/chunks/CaaG7K_x.js.br +0 -0
- package/studio/client/_app/immutable/chunks/CaaG7K_x.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/Cd2UbfQ6.js +2 -0
- package/studio/client/_app/immutable/chunks/Cd2UbfQ6.js.br +0 -0
- package/studio/client/_app/immutable/chunks/Cd2UbfQ6.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/Cf4-5HnP.js +1 -0
- package/studio/client/_app/immutable/chunks/Cf4-5HnP.js.br +0 -0
- package/studio/client/_app/immutable/chunks/Cf4-5HnP.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/CqE47GI1.js +1 -0
- package/studio/client/_app/immutable/chunks/CqE47GI1.js.br +0 -0
- package/studio/client/_app/immutable/chunks/CqE47GI1.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/CqaLkm1l.js +4 -0
- package/studio/client/_app/immutable/chunks/CqaLkm1l.js.br +0 -0
- package/studio/client/_app/immutable/chunks/CqaLkm1l.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/CrnqEuwa.js +1 -0
- package/studio/client/_app/immutable/chunks/CrnqEuwa.js.br +0 -0
- package/studio/client/_app/immutable/chunks/CrnqEuwa.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/Cv2_oVuk.js +1 -0
- package/studio/client/_app/immutable/chunks/Cv2_oVuk.js.br +0 -0
- package/studio/client/_app/immutable/chunks/Cv2_oVuk.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/D0nqj3Uj.js +1 -0
- package/studio/client/_app/immutable/chunks/D0nqj3Uj.js.br +0 -0
- package/studio/client/_app/immutable/chunks/D0nqj3Uj.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/D260PcBB.js +1 -0
- package/studio/client/_app/immutable/chunks/D260PcBB.js.br +0 -0
- package/studio/client/_app/immutable/chunks/D260PcBB.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/DB8_8dee.js +2 -0
- package/studio/client/_app/immutable/chunks/DB8_8dee.js.br +0 -0
- package/studio/client/_app/immutable/chunks/DB8_8dee.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/DBZQgiHq.js +4 -0
- package/studio/client/_app/immutable/chunks/DBZQgiHq.js.br +0 -0
- package/studio/client/_app/immutable/chunks/DBZQgiHq.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/DMxd0pKL.js +96 -0
- package/studio/client/_app/immutable/chunks/DMxd0pKL.js.br +0 -0
- package/studio/client/_app/immutable/chunks/DMxd0pKL.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/DXX6oqEY.js +1 -0
- package/studio/client/_app/immutable/chunks/DXX6oqEY.js.br +0 -0
- package/studio/client/_app/immutable/chunks/DXX6oqEY.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/DYsdFO9i.js +1 -0
- package/studio/client/_app/immutable/chunks/DYsdFO9i.js.br +0 -0
- package/studio/client/_app/immutable/chunks/DYsdFO9i.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/DgTYfJMu.js +5 -0
- package/studio/client/_app/immutable/chunks/DgTYfJMu.js.br +0 -0
- package/studio/client/_app/immutable/chunks/DgTYfJMu.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/DjvvdYFY.js +1 -0
- package/studio/client/_app/immutable/chunks/DjvvdYFY.js.br +0 -0
- package/studio/client/_app/immutable/chunks/DjvvdYFY.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/Dn_cJtKS.js +1 -0
- package/studio/client/_app/immutable/chunks/Dn_cJtKS.js.br +0 -0
- package/studio/client/_app/immutable/chunks/Dn_cJtKS.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/Dx_nuQP5.js +1 -0
- package/studio/client/_app/immutable/chunks/Dx_nuQP5.js.br +0 -0
- package/studio/client/_app/immutable/chunks/Dx_nuQP5.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/G4iiuHEo.js +1 -0
- package/studio/client/_app/immutable/chunks/G4iiuHEo.js.br +0 -0
- package/studio/client/_app/immutable/chunks/G4iiuHEo.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/GODyLR7Y.js +1 -0
- package/studio/client/_app/immutable/chunks/GODyLR7Y.js.br +0 -0
- package/studio/client/_app/immutable/chunks/GODyLR7Y.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/H5GgA2Hg.js +1 -0
- package/studio/client/_app/immutable/chunks/H5GgA2Hg.js.br +3 -0
- package/studio/client/_app/immutable/chunks/H5GgA2Hg.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/KindPqpA.js +1 -0
- package/studio/client/_app/immutable/chunks/KindPqpA.js.br +0 -0
- package/studio/client/_app/immutable/chunks/KindPqpA.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/MR-UHLyi.js +99 -0
- package/studio/client/_app/immutable/chunks/MR-UHLyi.js.br +0 -0
- package/studio/client/_app/immutable/chunks/MR-UHLyi.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/PZ9NXo-7.js +1 -0
- package/studio/client/_app/immutable/chunks/PZ9NXo-7.js.br +0 -0
- package/studio/client/_app/immutable/chunks/PZ9NXo-7.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/iTzoDmCj.js +1 -0
- package/studio/client/_app/immutable/chunks/iTzoDmCj.js.br +0 -0
- package/studio/client/_app/immutable/chunks/iTzoDmCj.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/wHWYACQ6.js +16 -0
- package/studio/client/_app/immutable/chunks/wHWYACQ6.js.br +0 -0
- package/studio/client/_app/immutable/chunks/wHWYACQ6.js.gz +0 -0
- package/studio/client/_app/immutable/entry/app.D0e6CgLl.js +2 -0
- package/studio/client/_app/immutable/entry/app.D0e6CgLl.js.br +0 -0
- package/studio/client/_app/immutable/entry/app.D0e6CgLl.js.gz +0 -0
- package/studio/client/_app/immutable/entry/start.CXzKoAgP.js +1 -0
- package/studio/client/_app/immutable/entry/start.CXzKoAgP.js.br +0 -0
- package/studio/client/_app/immutable/entry/start.CXzKoAgP.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/0.BfZbVR14.js +2 -0
- package/studio/client/_app/immutable/nodes/0.BfZbVR14.js.br +0 -0
- package/studio/client/_app/immutable/nodes/0.BfZbVR14.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/1.BGxVZc_Z.js +1 -0
- package/studio/client/_app/immutable/nodes/1.BGxVZc_Z.js.br +0 -0
- package/studio/client/_app/immutable/nodes/1.BGxVZc_Z.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/10.BmsU7Niv.js +1 -0
- package/studio/client/_app/immutable/nodes/10.BmsU7Niv.js.br +0 -0
- package/studio/client/_app/immutable/nodes/10.BmsU7Niv.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/11.Bl10BIeh.js +1 -0
- package/studio/client/_app/immutable/nodes/11.Bl10BIeh.js.br +0 -0
- package/studio/client/_app/immutable/nodes/11.Bl10BIeh.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/12.Di52Em2U.js +2 -0
- package/studio/client/_app/immutable/nodes/12.Di52Em2U.js.br +0 -0
- package/studio/client/_app/immutable/nodes/12.Di52Em2U.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/13.D1KxkAvV.js +1 -0
- package/studio/client/_app/immutable/nodes/13.D1KxkAvV.js.br +0 -0
- package/studio/client/_app/immutable/nodes/13.D1KxkAvV.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/14.Ba-ayQpO.js +1 -0
- package/studio/client/_app/immutable/nodes/14.Ba-ayQpO.js.br +0 -0
- package/studio/client/_app/immutable/nodes/14.Ba-ayQpO.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/15.Bjs1ENL4.js +1 -0
- package/studio/client/_app/immutable/nodes/15.Bjs1ENL4.js.br +0 -0
- package/studio/client/_app/immutable/nodes/15.Bjs1ENL4.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/16.Ca8aIyjV.js +8 -0
- package/studio/client/_app/immutable/nodes/16.Ca8aIyjV.js.br +0 -0
- package/studio/client/_app/immutable/nodes/16.Ca8aIyjV.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/17.DR-c7BuD.js +1 -0
- package/studio/client/_app/immutable/nodes/17.DR-c7BuD.js.br +0 -0
- package/studio/client/_app/immutable/nodes/17.DR-c7BuD.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/18.D3yl0Qok.js +1 -0
- package/studio/client/_app/immutable/nodes/18.D3yl0Qok.js.br +0 -0
- package/studio/client/_app/immutable/nodes/18.D3yl0Qok.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/19.r0zsNF0J.js +1 -0
- package/studio/client/_app/immutable/nodes/19.r0zsNF0J.js.br +0 -0
- package/studio/client/_app/immutable/nodes/19.r0zsNF0J.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/20.wKchvAGW.js +45 -0
- package/studio/client/_app/immutable/nodes/20.wKchvAGW.js.br +0 -0
- package/studio/client/_app/immutable/nodes/20.wKchvAGW.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/21.CX28-f1P.js +16 -0
- package/studio/client/_app/immutable/nodes/21.CX28-f1P.js.br +0 -0
- package/studio/client/_app/immutable/nodes/21.CX28-f1P.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/3.D1ljfi_V.js +1 -0
- package/studio/client/_app/immutable/nodes/3.D1ljfi_V.js.br +0 -0
- package/studio/client/_app/immutable/nodes/3.D1ljfi_V.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/38.its7uZHe.js +1 -0
- package/studio/client/_app/immutable/nodes/38.its7uZHe.js.br +0 -0
- package/studio/client/_app/immutable/nodes/38.its7uZHe.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/4.C-XTv_8D.js +1 -0
- package/studio/client/_app/immutable/nodes/4.C-XTv_8D.js.br +0 -0
- package/studio/client/_app/immutable/nodes/4.C-XTv_8D.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/40.B0WM2OHu.js +17 -0
- package/studio/client/_app/immutable/nodes/40.B0WM2OHu.js.br +0 -0
- package/studio/client/_app/immutable/nodes/40.B0WM2OHu.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/41.BZzYfCVE.js +1 -0
- package/studio/client/_app/immutable/nodes/41.BZzYfCVE.js.br +0 -0
- package/studio/client/_app/immutable/nodes/41.BZzYfCVE.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/42.BP7aBc8V.js +1 -0
- package/studio/client/_app/immutable/nodes/42.BP7aBc8V.js.br +0 -0
- package/studio/client/_app/immutable/nodes/42.BP7aBc8V.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/43.DYWNhvqm.js +1 -0
- package/studio/client/_app/immutable/nodes/43.DYWNhvqm.js.br +0 -0
- package/studio/client/_app/immutable/nodes/43.DYWNhvqm.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/44.CsVF9aXe.js +1 -0
- package/studio/client/_app/immutable/nodes/44.CsVF9aXe.js.br +0 -0
- package/studio/client/_app/immutable/nodes/44.CsVF9aXe.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/45.CeMReWED.js +2 -0
- package/studio/client/_app/immutable/nodes/45.CeMReWED.js.br +0 -0
- package/studio/client/_app/immutable/nodes/45.CeMReWED.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/46.tPqAAZZF.js +1 -0
- package/studio/client/_app/immutable/nodes/46.tPqAAZZF.js.br +0 -0
- package/studio/client/_app/immutable/nodes/46.tPqAAZZF.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/47.1pFnCvbM.js +1 -0
- package/studio/client/_app/immutable/nodes/47.1pFnCvbM.js.br +0 -0
- package/studio/client/_app/immutable/nodes/47.1pFnCvbM.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/48.Cy1KgYAH.js +1 -0
- package/studio/client/_app/immutable/nodes/48.Cy1KgYAH.js.br +0 -0
- package/studio/client/_app/immutable/nodes/48.Cy1KgYAH.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/49.Bh6bDdsT.js +7 -0
- package/studio/client/_app/immutable/nodes/49.Bh6bDdsT.js.br +0 -0
- package/studio/client/_app/immutable/nodes/49.Bh6bDdsT.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/5.C-XTv_8D.js +1 -0
- package/studio/client/_app/immutable/nodes/5.C-XTv_8D.js.br +0 -0
- package/studio/client/_app/immutable/nodes/5.C-XTv_8D.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/7.CS9X1kOu.js +1 -0
- package/studio/client/_app/immutable/nodes/7.CS9X1kOu.js.br +0 -0
- package/studio/client/_app/immutable/nodes/7.CS9X1kOu.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/8.Cux2oyT5.js +1 -0
- package/studio/client/_app/immutable/nodes/8.Cux2oyT5.js.br +0 -0
- package/studio/client/_app/immutable/nodes/8.Cux2oyT5.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/9.Dl65IEFD.js +1 -0
- package/studio/client/_app/immutable/nodes/9.Dl65IEFD.js.br +0 -0
- package/studio/client/_app/immutable/nodes/9.Dl65IEFD.js.gz +0 -0
- package/studio/client/_app/version.json +1 -1
- package/studio/client/_app/version.json.br +0 -0
- package/studio/client/_app/version.json.gz +0 -0
- package/studio/prerendered/docs/api/errors.html +36 -36
- package/studio/prerendered/docs/api/errors.html.br +0 -0
- package/studio/prerendered/docs/api/errors.html.gz +0 -0
- package/studio/prerendered/docs/api/projects.html +36 -36
- package/studio/prerendered/docs/api/projects.html.br +0 -0
- package/studio/prerendered/docs/api/projects.html.gz +0 -0
- package/studio/prerendered/docs/api/renders.html +36 -36
- package/studio/prerendered/docs/api/renders.html.br +0 -0
- package/studio/prerendered/docs/api/renders.html.gz +0 -0
- package/studio/prerendered/docs/api/templates.html +36 -36
- package/studio/prerendered/docs/api/templates.html.br +0 -0
- package/studio/prerendered/docs/api/templates.html.gz +0 -0
- package/studio/prerendered/docs/api/webhooks.html +36 -36
- package/studio/prerendered/docs/api/webhooks.html.br +0 -0
- package/studio/prerendered/docs/api/webhooks.html.gz +0 -0
- package/studio/prerendered/docs/api.html +36 -36
- package/studio/prerendered/docs/api.html.br +0 -0
- package/studio/prerendered/docs/api.html.gz +0 -0
- package/studio/prerendered/docs/mcp/integrations/autogen.html +36 -36
- package/studio/prerendered/docs/mcp/integrations/autogen.html.br +0 -0
- package/studio/prerendered/docs/mcp/integrations/autogen.html.gz +0 -0
- package/studio/prerendered/docs/mcp/integrations/crewai.html +36 -36
- package/studio/prerendered/docs/mcp/integrations/crewai.html.br +0 -0
- package/studio/prerendered/docs/mcp/integrations/crewai.html.gz +0 -0
- package/studio/prerendered/docs/mcp/integrations/dify.html +36 -36
- package/studio/prerendered/docs/mcp/integrations/dify.html.br +0 -0
- package/studio/prerendered/docs/mcp/integrations/dify.html.gz +0 -0
- package/studio/prerendered/docs/mcp/integrations/flowise.html +36 -36
- package/studio/prerendered/docs/mcp/integrations/flowise.html.br +0 -0
- package/studio/prerendered/docs/mcp/integrations/flowise.html.gz +0 -0
- package/studio/prerendered/docs/mcp/integrations/langchain.html +36 -36
- package/studio/prerendered/docs/mcp/integrations/langchain.html.br +0 -0
- package/studio/prerendered/docs/mcp/integrations/langchain.html.gz +0 -0
- package/studio/prerendered/docs/mcp/integrations/llamaindex.html +36 -36
- package/studio/prerendered/docs/mcp/integrations/llamaindex.html.br +0 -0
- package/studio/prerendered/docs/mcp/integrations/llamaindex.html.gz +0 -0
- package/studio/prerendered/docs/mcp/integrations/make.html +36 -36
- package/studio/prerendered/docs/mcp/integrations/make.html.br +0 -0
- package/studio/prerendered/docs/mcp/integrations/make.html.gz +0 -0
- package/studio/prerendered/docs/mcp/integrations/n8n.html +36 -36
- package/studio/prerendered/docs/mcp/integrations/n8n.html.br +0 -0
- package/studio/prerendered/docs/mcp/integrations/n8n.html.gz +0 -0
- package/studio/prerendered/docs/mcp/integrations.html +36 -36
- package/studio/prerendered/docs/mcp/integrations.html.br +0 -0
- package/studio/prerendered/docs/mcp/integrations.html.gz +0 -0
- package/studio/prerendered/docs/mcp/plans.html +37 -37
- package/studio/prerendered/docs/mcp/plans.html.br +0 -0
- package/studio/prerendered/docs/mcp/plans.html.gz +0 -0
- package/studio/prerendered/docs/mcp/reference.html +36 -36
- package/studio/prerendered/docs/mcp/reference.html.br +0 -0
- package/studio/prerendered/docs/mcp/reference.html.gz +0 -0
- package/studio/prerendered/docs/mcp/setup.html +42 -40
- package/studio/prerendered/docs/mcp/setup.html.br +0 -0
- package/studio/prerendered/docs/mcp/setup.html.gz +0 -0
- package/studio/prerendered/docs/mcp.html +36 -36
- package/studio/prerendered/docs/mcp.html.br +0 -0
- package/studio/prerendered/docs/mcp.html.gz +0 -0
- package/studio/prerendered/docs.html +35 -35
- package/studio/prerendered/docs.html.br +0 -0
- package/studio/prerendered/docs.html.gz +0 -0
- package/studio/prerendered/dub/arabic.html +34 -34
- package/studio/prerendered/dub/arabic.html.br +0 -0
- package/studio/prerendered/dub/arabic.html.gz +0 -0
- package/studio/prerendered/dub/chinese-simplified.html +34 -34
- package/studio/prerendered/dub/chinese-simplified.html.br +0 -0
- package/studio/prerendered/dub/chinese-simplified.html.gz +0 -0
- package/studio/prerendered/dub/dutch.html +34 -34
- package/studio/prerendered/dub/dutch.html.br +0 -0
- package/studio/prerendered/dub/dutch.html.gz +0 -0
- package/studio/prerendered/dub/french.html +34 -34
- package/studio/prerendered/dub/french.html.br +0 -0
- package/studio/prerendered/dub/french.html.gz +0 -0
- package/studio/prerendered/dub/german.html +34 -34
- package/studio/prerendered/dub/german.html.br +0 -0
- package/studio/prerendered/dub/german.html.gz +0 -0
- package/studio/prerendered/dub/hindi.html +34 -34
- package/studio/prerendered/dub/hindi.html.br +0 -0
- package/studio/prerendered/dub/hindi.html.gz +0 -0
- package/studio/prerendered/dub/italian.html +34 -34
- package/studio/prerendered/dub/italian.html.br +0 -0
- package/studio/prerendered/dub/italian.html.gz +0 -0
- package/studio/prerendered/dub/japanese.html +34 -34
- package/studio/prerendered/dub/japanese.html.br +0 -0
- package/studio/prerendered/dub/japanese.html.gz +0 -0
- package/studio/prerendered/dub/korean.html +34 -34
- package/studio/prerendered/dub/korean.html.br +0 -0
- package/studio/prerendered/dub/korean.html.gz +0 -0
- package/studio/prerendered/dub/polish.html +34 -34
- package/studio/prerendered/dub/polish.html.br +0 -0
- package/studio/prerendered/dub/polish.html.gz +0 -0
- package/studio/prerendered/dub/portuguese.html +34 -34
- package/studio/prerendered/dub/portuguese.html.br +0 -0
- package/studio/prerendered/dub/portuguese.html.gz +0 -0
- package/studio/prerendered/dub/spanish.html +34 -34
- package/studio/prerendered/dub/spanish.html.br +0 -0
- package/studio/prerendered/dub/spanish.html.gz +0 -0
- package/studio/prerendered/sitemap.xml +90 -90
- package/studio/prerendered/sitemap.xml.br +0 -0
- package/studio/prerendered/sitemap.xml.gz +0 -0
- package/studio/prerendered/tools/add-captions/instagram.html +34 -34
- package/studio/prerendered/tools/add-captions/instagram.html.br +0 -0
- package/studio/prerendered/tools/add-captions/instagram.html.gz +0 -0
- package/studio/prerendered/tools/add-captions/linkedin.html +34 -34
- package/studio/prerendered/tools/add-captions/linkedin.html.br +0 -0
- package/studio/prerendered/tools/add-captions/linkedin.html.gz +0 -0
- package/studio/prerendered/tools/add-captions/tiktok.html +34 -34
- package/studio/prerendered/tools/add-captions/tiktok.html.br +0 -0
- package/studio/prerendered/tools/add-captions/tiktok.html.gz +0 -0
- package/studio/prerendered/tools/add-captions/twitter-x.html +34 -34
- package/studio/prerendered/tools/add-captions/twitter-x.html.br +0 -0
- package/studio/prerendered/tools/add-captions/twitter-x.html.gz +0 -0
- package/studio/prerendered/tools/add-captions/youtube.html +34 -34
- package/studio/prerendered/tools/add-captions/youtube.html.br +0 -0
- package/studio/prerendered/tools/add-captions/youtube.html.gz +0 -0
- package/studio/prerendered/tools/add-captions.html +38 -38
- package/studio/prerendered/tools/add-captions.html.br +0 -0
- package/studio/prerendered/tools/add-captions.html.gz +0 -0
- package/studio/prerendered/tools/auto-cut/linkedin.html +34 -34
- package/studio/prerendered/tools/auto-cut/linkedin.html.br +0 -0
- package/studio/prerendered/tools/auto-cut/linkedin.html.gz +0 -0
- package/studio/prerendered/tools/auto-cut/podcast.html +34 -34
- package/studio/prerendered/tools/auto-cut/podcast.html.br +0 -0
- package/studio/prerendered/tools/auto-cut/podcast.html.gz +0 -0
- package/studio/prerendered/tools/auto-cut/tiktok.html +34 -34
- package/studio/prerendered/tools/auto-cut/tiktok.html.br +0 -0
- package/studio/prerendered/tools/auto-cut/tiktok.html.gz +0 -0
- package/studio/prerendered/tools/auto-cut/youtube.html +34 -34
- package/studio/prerendered/tools/auto-cut/youtube.html.br +0 -0
- package/studio/prerendered/tools/auto-cut/youtube.html.gz +0 -0
- package/studio/prerendered/tools/auto-cut.html +38 -38
- package/studio/prerendered/tools/auto-cut.html.br +0 -0
- package/studio/prerendered/tools/auto-cut.html.gz +0 -0
- package/studio/prerendered/tools/generate-video/instagram.html +34 -34
- package/studio/prerendered/tools/generate-video/instagram.html.br +0 -0
- package/studio/prerendered/tools/generate-video/instagram.html.gz +0 -0
- package/studio/prerendered/tools/generate-video/tiktok.html +34 -34
- package/studio/prerendered/tools/generate-video/tiktok.html.br +0 -0
- package/studio/prerendered/tools/generate-video/tiktok.html.gz +0 -0
- package/studio/prerendered/tools/generate-video/twitter-x.html +34 -34
- package/studio/prerendered/tools/generate-video/twitter-x.html.br +0 -0
- package/studio/prerendered/tools/generate-video/twitter-x.html.gz +0 -0
- package/studio/prerendered/tools/generate-video/youtube.html +34 -34
- package/studio/prerendered/tools/generate-video/youtube.html.br +0 -0
- package/studio/prerendered/tools/generate-video/youtube.html.gz +0 -0
- package/studio/prerendered/tools/generate-video.html +38 -38
- package/studio/prerendered/tools/generate-video.html.br +0 -0
- package/studio/prerendered/tools/generate-video.html.gz +0 -0
- package/studio/prerendered/tools/laptop-3d-intro/linkedin.html +34 -34
- package/studio/prerendered/tools/laptop-3d-intro/linkedin.html.br +0 -0
- package/studio/prerendered/tools/laptop-3d-intro/linkedin.html.gz +0 -0
- package/studio/prerendered/tools/laptop-3d-intro/saas.html +34 -34
- package/studio/prerendered/tools/laptop-3d-intro/saas.html.br +0 -0
- package/studio/prerendered/tools/laptop-3d-intro/saas.html.gz +0 -0
- package/studio/prerendered/tools/laptop-3d-intro/twitter-x.html +34 -34
- package/studio/prerendered/tools/laptop-3d-intro/twitter-x.html.br +0 -0
- package/studio/prerendered/tools/laptop-3d-intro/twitter-x.html.gz +0 -0
- package/studio/prerendered/tools/laptop-3d-intro/youtube.html +34 -34
- package/studio/prerendered/tools/laptop-3d-intro/youtube.html.br +0 -0
- package/studio/prerendered/tools/laptop-3d-intro/youtube.html.gz +0 -0
- package/studio/prerendered/tools/laptop-3d-intro.html +38 -38
- package/studio/prerendered/tools/laptop-3d-intro.html.br +0 -0
- package/studio/prerendered/tools/laptop-3d-intro.html.gz +0 -0
- package/studio/prerendered/tools/screen-webcam-demo/linkedin.html +34 -34
- package/studio/prerendered/tools/screen-webcam-demo/linkedin.html.br +0 -0
- package/studio/prerendered/tools/screen-webcam-demo/linkedin.html.gz +0 -0
- package/studio/prerendered/tools/screen-webcam-demo/saas.html +34 -34
- package/studio/prerendered/tools/screen-webcam-demo/saas.html.br +0 -0
- package/studio/prerendered/tools/screen-webcam-demo/saas.html.gz +0 -0
- package/studio/prerendered/tools/screen-webcam-demo/twitter-x.html +34 -34
- package/studio/prerendered/tools/screen-webcam-demo/twitter-x.html.br +0 -0
- package/studio/prerendered/tools/screen-webcam-demo/twitter-x.html.gz +0 -0
- package/studio/prerendered/tools/screen-webcam-demo/youtube.html +34 -34
- package/studio/prerendered/tools/screen-webcam-demo/youtube.html.br +0 -0
- package/studio/prerendered/tools/screen-webcam-demo/youtube.html.gz +0 -0
- package/studio/prerendered/tools/screen-webcam-demo.html +38 -38
- package/studio/prerendered/tools/screen-webcam-demo.html.br +0 -0
- package/studio/prerendered/tools/screen-webcam-demo.html.gz +0 -0
- package/studio/prerendered/tools/screenshot-to-social/facebook.html +34 -34
- package/studio/prerendered/tools/screenshot-to-social/facebook.html.br +0 -0
- package/studio/prerendered/tools/screenshot-to-social/facebook.html.gz +0 -0
- package/studio/prerendered/tools/screenshot-to-social/instagram.html +34 -34
- package/studio/prerendered/tools/screenshot-to-social/instagram.html.br +0 -0
- package/studio/prerendered/tools/screenshot-to-social/instagram.html.gz +0 -0
- package/studio/prerendered/tools/screenshot-to-social/linkedin.html +34 -34
- package/studio/prerendered/tools/screenshot-to-social/linkedin.html.br +0 -0
- package/studio/prerendered/tools/screenshot-to-social/linkedin.html.gz +0 -0
- package/studio/prerendered/tools/screenshot-to-social/twitter-x.html +34 -34
- package/studio/prerendered/tools/screenshot-to-social/twitter-x.html.br +0 -0
- package/studio/prerendered/tools/screenshot-to-social/twitter-x.html.gz +0 -0
- package/studio/prerendered/tools/screenshot-to-social.html +38 -38
- package/studio/prerendered/tools/screenshot-to-social.html.br +0 -0
- package/studio/prerendered/tools/screenshot-to-social.html.gz +0 -0
- package/studio/prerendered/tools/translate-video/instagram.html +34 -34
- package/studio/prerendered/tools/translate-video/instagram.html.br +0 -0
- package/studio/prerendered/tools/translate-video/instagram.html.gz +0 -0
- package/studio/prerendered/tools/translate-video/linkedin.html +34 -34
- package/studio/prerendered/tools/translate-video/linkedin.html.br +0 -0
- package/studio/prerendered/tools/translate-video/linkedin.html.gz +0 -0
- package/studio/prerendered/tools/translate-video/tiktok.html +34 -34
- package/studio/prerendered/tools/translate-video/tiktok.html.br +0 -0
- package/studio/prerendered/tools/translate-video/tiktok.html.gz +0 -0
- package/studio/prerendered/tools/translate-video/youtube.html +34 -34
- package/studio/prerendered/tools/translate-video/youtube.html.br +0 -0
- package/studio/prerendered/tools/translate-video/youtube.html.gz +0 -0
- package/studio/prerendered/tools/translate-video.html +38 -38
- package/studio/prerendered/tools/translate-video.html.br +0 -0
- package/studio/prerendered/tools/translate-video.html.gz +0 -0
- package/studio/prerendered/tools/video-beautifier.html +38 -38
- package/studio/prerendered/tools/video-beautifier.html.br +0 -0
- package/studio/prerendered/tools/video-beautifier.html.gz +0 -0
- package/studio/prerendered/tools/video-to-browser/linkedin.html +34 -34
- package/studio/prerendered/tools/video-to-browser/linkedin.html.br +0 -0
- package/studio/prerendered/tools/video-to-browser/linkedin.html.gz +0 -0
- package/studio/prerendered/tools/video-to-browser/saas.html +34 -34
- package/studio/prerendered/tools/video-to-browser/saas.html.br +0 -0
- package/studio/prerendered/tools/video-to-browser/saas.html.gz +0 -0
- package/studio/prerendered/tools/video-to-browser/twitter-x.html +34 -34
- package/studio/prerendered/tools/video-to-browser/twitter-x.html.br +0 -0
- package/studio/prerendered/tools/video-to-browser/twitter-x.html.gz +0 -0
- package/studio/prerendered/tools/video-to-browser/youtube.html +34 -34
- package/studio/prerendered/tools/video-to-browser/youtube.html.br +0 -0
- package/studio/prerendered/tools/video-to-browser/youtube.html.gz +0 -0
- package/studio/prerendered/tools/video-to-browser.html +38 -38
- package/studio/prerendered/tools/video-to-browser.html.br +0 -0
- package/studio/prerendered/tools/video-to-browser.html.gz +0 -0
- package/studio/prerendered/tools/video-to-phone.html +38 -38
- package/studio/prerendered/tools/video-to-phone.html.br +0 -0
- package/studio/prerendered/tools/video-to-phone.html.gz +0 -0
- package/studio/prerendered/vs/canva.html +34 -34
- package/studio/prerendered/vs/canva.html.br +0 -0
- package/studio/prerendered/vs/canva.html.gz +0 -0
- package/studio/prerendered/vs/captions-ai.html +34 -34
- package/studio/prerendered/vs/captions-ai.html.br +0 -0
- package/studio/prerendered/vs/captions-ai.html.gz +0 -0
- package/studio/prerendered/vs/clipchamp.html +34 -34
- package/studio/prerendered/vs/clipchamp.html.br +0 -0
- package/studio/prerendered/vs/clipchamp.html.gz +0 -0
- package/studio/prerendered/vs/descript.html +34 -34
- package/studio/prerendered/vs/descript.html.br +0 -0
- package/studio/prerendered/vs/descript.html.gz +0 -0
- package/studio/prerendered/vs/kapwing.html +34 -34
- package/studio/prerendered/vs/kapwing.html.br +0 -0
- package/studio/prerendered/vs/kapwing.html.gz +0 -0
- package/studio/prerendered/vs/runway.html +34 -34
- package/studio/prerendered/vs/runway.html.br +0 -0
- package/studio/prerendered/vs/runway.html.gz +0 -0
- package/studio/prerendered/vs/submagic.html +34 -34
- package/studio/prerendered/vs/submagic.html.br +0 -0
- package/studio/prerendered/vs/submagic.html.gz +0 -0
- package/studio/prerendered/vs/veed.html +34 -34
- package/studio/prerendered/vs/veed.html.br +0 -0
- package/studio/prerendered/vs/veed.html.gz +0 -0
- package/studio/server/chunks/0-CwPSUJ3w.js +32 -0
- package/studio/server/chunks/0-CwPSUJ3w.js.map +1 -0
- package/studio/server/chunks/1-CbeNzLl-.js +9 -0
- package/studio/server/chunks/1-CbeNzLl-.js.map +1 -0
- package/studio/server/chunks/11-C0QAn-bF.js +9 -0
- package/studio/server/chunks/11-C0QAn-bF.js.map +1 -0
- package/studio/server/chunks/12-DCnPHABd.js +9 -0
- package/studio/server/chunks/12-DCnPHABd.js.map +1 -0
- package/studio/server/chunks/13-Cyy-P3vn.js +59 -0
- package/studio/server/chunks/13-Cyy-P3vn.js.map +1 -0
- package/studio/server/chunks/14-Dbdob-lm.js +60 -0
- package/studio/server/chunks/14-Dbdob-lm.js.map +1 -0
- package/studio/server/chunks/15-DyZbzGI-.js +9 -0
- package/studio/server/chunks/15-DyZbzGI-.js.map +1 -0
- package/studio/server/chunks/16-Qb7izz2W.js +72 -0
- package/studio/server/chunks/16-Qb7izz2W.js.map +1 -0
- package/studio/server/chunks/17-B5pMxn3Z.js +9 -0
- package/studio/server/chunks/17-B5pMxn3Z.js.map +1 -0
- package/studio/server/chunks/18-Dui1aDnz.js +9 -0
- package/studio/server/chunks/18-Dui1aDnz.js.map +1 -0
- package/studio/server/chunks/19-DgrfAbAy.js +9 -0
- package/studio/server/chunks/19-DgrfAbAy.js.map +1 -0
- package/studio/server/chunks/20-pRv7XuMf.js +139 -0
- package/studio/server/chunks/20-pRv7XuMf.js.map +1 -0
- package/studio/server/chunks/3-9IZCenAI.js +9 -0
- package/studio/server/chunks/3-9IZCenAI.js.map +1 -0
- package/studio/server/chunks/4-CsffFQv4.js +9 -0
- package/studio/server/chunks/4-CsffFQv4.js.map +1 -0
- package/studio/server/chunks/42-NP9_BFi5.js +56 -0
- package/studio/server/chunks/42-NP9_BFi5.js.map +1 -0
- package/studio/server/chunks/43-B0_JG7rx.js +9 -0
- package/studio/server/chunks/43-B0_JG7rx.js.map +1 -0
- package/studio/server/chunks/44-DRZom9oK.js +9 -0
- package/studio/server/chunks/44-DRZom9oK.js.map +1 -0
- package/studio/server/chunks/45-llvANtsn.js +115 -0
- package/studio/server/chunks/45-llvANtsn.js.map +1 -0
- package/studio/server/chunks/49-Bm394lLC.js +14 -0
- package/studio/server/chunks/49-Bm394lLC.js.map +1 -0
- package/studio/server/chunks/5-oazbOi9H.js +9 -0
- package/studio/server/chunks/5-oazbOi9H.js.map +1 -0
- package/studio/server/chunks/7-DHJzqCHK.js +215 -0
- package/studio/server/chunks/7-DHJzqCHK.js.map +1 -0
- package/studio/server/chunks/_error.svelte-BkTnhnxP.js +98 -0
- package/studio/server/chunks/_error.svelte-BkTnhnxP.js.map +1 -0
- package/studio/server/chunks/_error.svelte-CQzFToj8.js +98 -0
- package/studio/server/chunks/_error.svelte-CQzFToj8.js.map +1 -0
- package/studio/server/chunks/_layout.svelte-BY0hGh-H.js +64 -0
- package/studio/server/chunks/_layout.svelte-BY0hGh-H.js.map +1 -0
- package/studio/server/chunks/_layout.svelte-CMzss-C2.js +400 -0
- package/studio/server/chunks/_layout.svelte-CMzss-C2.js.map +1 -0
- package/studio/server/chunks/_layout.svelte-Cn4p7o4q.js +64 -0
- package/studio/server/chunks/_layout.svelte-Cn4p7o4q.js.map +1 -0
- package/studio/server/chunks/_layout.svelte-DL1DYuzO.js +1054 -0
- package/studio/server/chunks/_layout.svelte-DL1DYuzO.js.map +1 -0
- package/studio/server/chunks/_page.svelte-B8XqicVW.js +79 -0
- package/studio/server/chunks/_page.svelte-B8XqicVW.js.map +1 -0
- package/studio/server/chunks/_page.svelte-BF0kq_DA.js +418 -0
- package/studio/server/chunks/_page.svelte-BF0kq_DA.js.map +1 -0
- package/studio/server/chunks/_page.svelte-BFwMGeqy.js +111 -0
- package/studio/server/chunks/_page.svelte-BFwMGeqy.js.map +1 -0
- package/studio/server/chunks/_page.svelte-BGPhyNuC.js +192 -0
- package/studio/server/chunks/_page.svelte-BGPhyNuC.js.map +1 -0
- package/studio/server/chunks/_page.svelte-BdmhHvtc.js +113 -0
- package/studio/server/chunks/_page.svelte-BdmhHvtc.js.map +1 -0
- package/studio/server/chunks/_page.svelte-CU4XjUEe.js +11350 -0
- package/studio/server/chunks/_page.svelte-CU4XjUEe.js.map +1 -0
- package/studio/server/chunks/_page.svelte-D74PqaNq.js +256 -0
- package/studio/server/chunks/_page.svelte-D74PqaNq.js.map +1 -0
- package/studio/server/chunks/_page.svelte-DC9-8nEf.js +1021 -0
- package/studio/server/chunks/_page.svelte-DC9-8nEf.js.map +1 -0
- package/studio/server/chunks/_page.svelte-DgqoNyxe.js +1732 -0
- package/studio/server/chunks/_page.svelte-DgqoNyxe.js.map +1 -0
- package/studio/server/chunks/_page.svelte-DhLeBJD_.js +319 -0
- package/studio/server/chunks/_page.svelte-DhLeBJD_.js.map +1 -0
- package/studio/server/chunks/_page.svelte-uvKsK6Vw.js +506 -0
- package/studio/server/chunks/_page.svelte-uvKsK6Vw.js.map +1 -0
- package/studio/server/chunks/_server.ts-BHRR6T63.js +48 -0
- package/studio/server/chunks/_server.ts-BHRR6T63.js.map +1 -0
- package/studio/server/chunks/_server.ts-BHnpcEVo.js +52 -0
- package/studio/server/chunks/_server.ts-BHnpcEVo.js.map +1 -0
- package/studio/server/chunks/_server.ts-Bj0V1FXs.js +722 -0
- package/studio/server/chunks/_server.ts-Bj0V1FXs.js.map +1 -0
- package/studio/server/chunks/_server.ts-CGs8hOo6.js +760 -0
- package/studio/server/chunks/_server.ts-CGs8hOo6.js.map +1 -0
- package/studio/server/chunks/_server.ts-CXuYytLK.js +118 -0
- package/studio/server/chunks/_server.ts-CXuYytLK.js.map +1 -0
- package/studio/server/chunks/_server.ts-C_njIfbT.js +122 -0
- package/studio/server/chunks/_server.ts-C_njIfbT.js.map +1 -0
- package/studio/server/chunks/_server.ts-Dg9C9Iih.js +70 -0
- package/studio/server/chunks/_server.ts-Dg9C9Iih.js.map +1 -0
- package/studio/server/chunks/_server.ts-Dji1nGrU.js +91 -0
- package/studio/server/chunks/_server.ts-Dji1nGrU.js.map +1 -0
- package/studio/server/chunks/_server.ts-f6EVRY82.js +79 -0
- package/studio/server/chunks/_server.ts-f6EVRY82.js.map +1 -0
- package/studio/server/chunks/_server.ts-p_1efpqn.js +109 -0
- package/studio/server/chunks/_server.ts-p_1efpqn.js.map +1 -0
- package/studio/server/chunks/_server.ts-xAAnOaCl.js +303 -0
- package/studio/server/chunks/_server.ts-xAAnOaCl.js.map +1 -0
- package/studio/server/chunks/admin.remote-Dc0snX5Q.js +105 -0
- package/studio/server/chunks/admin.remote-Dc0snX5Q.js.map +1 -0
- package/studio/server/chunks/ai-access-bDlOKhrS.js +299 -0
- package/studio/server/chunks/ai-access-bDlOKhrS.js.map +1 -0
- package/studio/server/chunks/ai.remote-6DyE05J7.js +37 -0
- package/studio/server/chunks/ai.remote-6DyE05J7.js.map +1 -0
- package/studio/server/chunks/alert-dialog-description-BhZkDj31.js +578 -0
- package/studio/server/chunks/alert-dialog-description-BhZkDj31.js.map +1 -0
- package/studio/server/chunks/app-header-BZw6FnXs.js +96 -0
- package/studio/server/chunks/app-header-BZw6FnXs.js.map +1 -0
- package/studio/server/chunks/auth-CdmLkVO-.js +22472 -0
- package/studio/server/chunks/auth-CdmLkVO-.js.map +1 -0
- package/studio/server/chunks/auth.remote-DgcD7hjY.js +351 -0
- package/studio/server/chunks/auth.remote-DgcD7hjY.js.map +1 -0
- package/studio/server/chunks/bun-sqlite-dialect-C8OaCWSL-CfYOKJsa.js +197 -0
- package/studio/server/chunks/bun-sqlite-dialect-C8OaCWSL-CfYOKJsa.js.map +1 -0
- package/studio/server/chunks/captions.remote-B5ErNQXV.js +184 -0
- package/studio/server/chunks/captions.remote-B5ErNQXV.js.map +1 -0
- package/studio/server/chunks/client2-vVBd4CsE.js +66 -0
- package/studio/server/chunks/client2-vVBd4CsE.js.map +1 -0
- package/studio/server/chunks/d1-sqlite-dialect-sYHNqBte-D3F4ZSZP.js +160 -0
- package/studio/server/chunks/d1-sqlite-dialect-sYHNqBte-D3F4ZSZP.js.map +1 -0
- package/studio/server/chunks/desktop-bootstrap-Z0_g_8r3.js +67 -0
- package/studio/server/chunks/desktop-bootstrap-Z0_g_8r3.js.map +1 -0
- package/studio/server/chunks/dubbing.remote-tYalz3IA.js +153 -0
- package/studio/server/chunks/dubbing.remote-tYalz3IA.js.map +1 -0
- package/studio/server/chunks/editor.svelte-Bdv5LaOt.js +21026 -0
- package/studio/server/chunks/editor.svelte-Bdv5LaOt.js.map +1 -0
- package/studio/server/chunks/find-stock-image-Cwkwf5gV.js +709 -0
- package/studio/server/chunks/find-stock-image-Cwkwf5gV.js.map +1 -0
- package/studio/server/chunks/hooks.server-DNzGN0kv.js +309 -0
- package/studio/server/chunks/hooks.server-DNzGN0kv.js.map +1 -0
- package/studio/server/chunks/image-generation.remote-omBcspXi.js +140 -0
- package/studio/server/chunks/image-generation.remote-omBcspXi.js.map +1 -0
- package/studio/server/chunks/index-D-agccNM.js +4578 -0
- package/studio/server/chunks/index-D-agccNM.js.map +1 -0
- package/studio/server/chunks/index12-B6IiEYAz.js +265 -0
- package/studio/server/chunks/index12-B6IiEYAz.js.map +1 -0
- package/studio/server/chunks/index2-By5vPQD_.js +23 -0
- package/studio/server/chunks/index2-By5vPQD_.js.map +1 -0
- package/studio/server/chunks/index3-DS_3EH31.js +8 -0
- package/studio/server/chunks/index3-DS_3EH31.js.map +1 -0
- package/studio/server/chunks/index4-CgVJCMu8.js +48 -0
- package/studio/server/chunks/index4-CgVJCMu8.js.map +1 -0
- package/studio/server/chunks/layout-template-BhL4-5tM.js +1371 -0
- package/studio/server/chunks/layout-template-BhL4-5tM.js.map +1 -0
- package/studio/server/chunks/media-analysis-DXUN3NUM.js +229 -0
- package/studio/server/chunks/media-analysis-DXUN3NUM.js.map +1 -0
- package/studio/server/chunks/media-analysis.remote-BVdRHeP8.js +63 -0
- package/studio/server/chunks/media-analysis.remote-BVdRHeP8.js.map +1 -0
- package/studio/server/chunks/mutations-BlgZViQj.js +551 -0
- package/studio/server/chunks/mutations-BlgZViQj.js.map +1 -0
- package/studio/server/chunks/node-sqlite-dialect-BYaBkSm1.js +197 -0
- package/studio/server/chunks/node-sqlite-dialect-BYaBkSm1.js.map +1 -0
- package/studio/server/chunks/onboarding-email-CCv_cZ-_.js +311 -0
- package/studio/server/chunks/onboarding-email-CCv_cZ-_.js.map +1 -0
- package/studio/server/chunks/projects.remote-BevbcBv4.js +297 -0
- package/studio/server/chunks/projects.remote-BevbcBv4.js.map +1 -0
- package/studio/server/chunks/queue-init-CcgYZbeV.js +38 -0
- package/studio/server/chunks/queue-init-CcgYZbeV.js.map +1 -0
- package/studio/server/chunks/registry-DcyeMfNZ.js +18 -0
- package/studio/server/chunks/registry-DcyeMfNZ.js.map +1 -0
- package/studio/server/chunks/registry2-DJC1cBxe.js +4851 -0
- package/studio/server/chunks/registry2-DJC1cBxe.js.map +1 -0
- package/studio/server/chunks/remote-1ez0sx-BWvDnL9q.js +34 -0
- package/studio/server/chunks/remote-1ez0sx-BWvDnL9q.js.map +1 -0
- package/studio/server/chunks/remote-1mi3j6d-Cg0pK35v.js +21 -0
- package/studio/server/chunks/remote-1mi3j6d-Cg0pK35v.js.map +1 -0
- package/studio/server/chunks/remote-1web5fy-BcJGUGtw.js +35 -0
- package/studio/server/chunks/remote-1web5fy-BcJGUGtw.js.map +1 -0
- package/studio/server/chunks/remote-5mu9ty-CGtbs6nv.js +31 -0
- package/studio/server/chunks/remote-5mu9ty-CGtbs6nv.js.map +1 -0
- package/studio/server/chunks/remote-gezfls-DWj4X0qA.js +21 -0
- package/studio/server/chunks/remote-gezfls-DWj4X0qA.js.map +1 -0
- package/studio/server/chunks/remote-sy19x7-SCvG1tDD.js +29 -0
- package/studio/server/chunks/remote-sy19x7-SCvG1tDD.js.map +1 -0
- package/studio/server/chunks/remote-tisyb0-Ct_sfSGt.js +31 -0
- package/studio/server/chunks/remote-tisyb0-Ct_sfSGt.js.map +1 -0
- package/studio/server/chunks/remote-xj8myv-tYWgOBub.js +31 -0
- package/studio/server/chunks/remote-xj8myv-tYWgOBub.js.map +1 -0
- package/studio/server/chunks/remote-z7lvth-BxO_zBV5.js +23 -0
- package/studio/server/chunks/remote-z7lvth-BxO_zBV5.js.map +1 -0
- package/studio/server/chunks/remote-zjib3m-Dcyw4Y6L.js +24 -0
- package/studio/server/chunks/remote-zjib3m-Dcyw4Y6L.js.map +1 -0
- package/studio/server/chunks/scrub-xyz.svelte_svelte_type_style_lang-BuQqzLLy.js +4752 -0
- package/studio/server/chunks/scrub-xyz.svelte_svelte_type_style_lang-BuQqzLLy.js.map +1 -0
- package/studio/server/chunks/tooltip-provider-D6ZF3H34.js +30 -0
- package/studio/server/chunks/tooltip-provider-D6ZF3H34.js.map +1 -0
- package/studio/server/chunks/tooltip.svelte-DRe72lD-.js +658 -0
- package/studio/server/chunks/tooltip.svelte-DRe72lD-.js.map +1 -0
- package/studio/server/chunks/tts.remote-Btrg7DBL.js +194 -0
- package/studio/server/chunks/tts.remote-Btrg7DBL.js.map +1 -0
- package/studio/server/chunks/ui.svelte-FJio-gZM.js +88 -0
- package/studio/server/chunks/ui.svelte-FJio-gZM.js.map +1 -0
- package/studio/server/chunks/video-generation.remote-CBblzjAk.js +197 -0
- package/studio/server/chunks/video-generation.remote-CBblzjAk.js.map +1 -0
- package/studio/server/chunks/watermark-DJiyRHwX.js +164 -0
- package/studio/server/chunks/watermark-DJiyRHwX.js.map +1 -0
- package/studio/server/index.js +1 -1
- package/studio/server/manifest.js +44 -44
- package/studio/server/manifest.js.map +1 -1
- package/studio/client/_app/immutable/chunks/0jm3sjlg.js +0 -1
- package/studio/client/_app/immutable/chunks/0jm3sjlg.js.br +0 -2
- package/studio/client/_app/immutable/chunks/0jm3sjlg.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/5L1qzVZj.js +0 -1
- package/studio/client/_app/immutable/chunks/5L1qzVZj.js.br +0 -0
- package/studio/client/_app/immutable/chunks/5L1qzVZj.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/8kx1slbN.js +0 -1
- package/studio/client/_app/immutable/chunks/8kx1slbN.js.br +0 -0
- package/studio/client/_app/immutable/chunks/8kx1slbN.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/8vtb60R1.js +0 -1
- package/studio/client/_app/immutable/chunks/8vtb60R1.js.br +0 -0
- package/studio/client/_app/immutable/chunks/8vtb60R1.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/B1Kon8VR.js +0 -1
- package/studio/client/_app/immutable/chunks/B1Kon8VR.js.br +0 -0
- package/studio/client/_app/immutable/chunks/B1Kon8VR.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/B4dMvZH-.js +0 -1
- package/studio/client/_app/immutable/chunks/B4dMvZH-.js.br +0 -0
- package/studio/client/_app/immutable/chunks/B4dMvZH-.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/B7fQzRev.js +0 -1
- package/studio/client/_app/immutable/chunks/B7fQzRev.js.br +0 -0
- package/studio/client/_app/immutable/chunks/B7fQzRev.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/BAYadMNA.js +0 -1
- package/studio/client/_app/immutable/chunks/BAYadMNA.js.br +0 -0
- package/studio/client/_app/immutable/chunks/BAYadMNA.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/BMGFIROs.js +0 -1
- package/studio/client/_app/immutable/chunks/BMGFIROs.js.br +0 -0
- package/studio/client/_app/immutable/chunks/BMGFIROs.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/BYo4Jpme.js +0 -16
- package/studio/client/_app/immutable/chunks/BYo4Jpme.js.br +0 -0
- package/studio/client/_app/immutable/chunks/BYo4Jpme.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/BeTUgF4S.js +0 -1
- package/studio/client/_app/immutable/chunks/BeTUgF4S.js.br +0 -0
- package/studio/client/_app/immutable/chunks/BeTUgF4S.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/BidNKR6p.js +0 -5
- package/studio/client/_app/immutable/chunks/BidNKR6p.js.br +0 -0
- package/studio/client/_app/immutable/chunks/BidNKR6p.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/BujAtXXM.js +0 -1
- package/studio/client/_app/immutable/chunks/BujAtXXM.js.br +0 -0
- package/studio/client/_app/immutable/chunks/BujAtXXM.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/BvpaRDa_.js +0 -1
- package/studio/client/_app/immutable/chunks/BvpaRDa_.js.br +0 -0
- package/studio/client/_app/immutable/chunks/BvpaRDa_.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/C4dDhPtf.js +0 -1
- package/studio/client/_app/immutable/chunks/C4dDhPtf.js.br +0 -0
- package/studio/client/_app/immutable/chunks/C4dDhPtf.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/C9qsOfWE.js +0 -1
- package/studio/client/_app/immutable/chunks/C9qsOfWE.js.br +0 -0
- package/studio/client/_app/immutable/chunks/C9qsOfWE.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/CNNzQrlb.js +0 -1
- package/studio/client/_app/immutable/chunks/CNNzQrlb.js.br +0 -0
- package/studio/client/_app/immutable/chunks/CNNzQrlb.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/CP2t8wzc.js +0 -1
- package/studio/client/_app/immutable/chunks/CP2t8wzc.js.br +0 -0
- package/studio/client/_app/immutable/chunks/CP2t8wzc.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/Ccg49IMO.js +0 -96
- package/studio/client/_app/immutable/chunks/Ccg49IMO.js.br +0 -0
- package/studio/client/_app/immutable/chunks/Ccg49IMO.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/CidmzZr_.js +0 -99
- package/studio/client/_app/immutable/chunks/CidmzZr_.js.br +0 -0
- package/studio/client/_app/immutable/chunks/CidmzZr_.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/CmzRa5tW.js +0 -1
- package/studio/client/_app/immutable/chunks/CmzRa5tW.js.br +0 -0
- package/studio/client/_app/immutable/chunks/CmzRa5tW.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/Cu3vhtIm.js +0 -1
- package/studio/client/_app/immutable/chunks/Cu3vhtIm.js.br +0 -3
- package/studio/client/_app/immutable/chunks/Cu3vhtIm.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/D1jFvxj0.js +0 -1
- package/studio/client/_app/immutable/chunks/D1jFvxj0.js.br +0 -0
- package/studio/client/_app/immutable/chunks/D1jFvxj0.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/DGsO816A.js +0 -1
- package/studio/client/_app/immutable/chunks/DGsO816A.js.br +0 -1
- package/studio/client/_app/immutable/chunks/DGsO816A.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/DKZDxza2.js +0 -1
- package/studio/client/_app/immutable/chunks/DKZDxza2.js.br +0 -0
- package/studio/client/_app/immutable/chunks/DKZDxza2.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/DWycBSvS.js +0 -1
- package/studio/client/_app/immutable/chunks/DWycBSvS.js.br +0 -0
- package/studio/client/_app/immutable/chunks/DWycBSvS.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/DaYfM_aT.js +0 -512
- package/studio/client/_app/immutable/chunks/DaYfM_aT.js.br +0 -0
- package/studio/client/_app/immutable/chunks/DaYfM_aT.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/Dgdpq5VR.js +0 -1
- package/studio/client/_app/immutable/chunks/Dgdpq5VR.js.br +0 -0
- package/studio/client/_app/immutable/chunks/Dgdpq5VR.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/DlBik49G.js +0 -1
- package/studio/client/_app/immutable/chunks/DlBik49G.js.br +0 -0
- package/studio/client/_app/immutable/chunks/DlBik49G.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/DnZvuu1V.js +0 -1
- package/studio/client/_app/immutable/chunks/DnZvuu1V.js.br +0 -0
- package/studio/client/_app/immutable/chunks/DnZvuu1V.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/Dru5mrF1.js +0 -1
- package/studio/client/_app/immutable/chunks/Dru5mrF1.js.br +0 -0
- package/studio/client/_app/immutable/chunks/Dru5mrF1.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/DtOmmgoM.js +0 -4
- package/studio/client/_app/immutable/chunks/DtOmmgoM.js.br +0 -0
- package/studio/client/_app/immutable/chunks/DtOmmgoM.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/DvcCXeL2.js +0 -1
- package/studio/client/_app/immutable/chunks/DvcCXeL2.js.br +0 -0
- package/studio/client/_app/immutable/chunks/DvcCXeL2.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/DvvYiUNt.js +0 -4
- package/studio/client/_app/immutable/chunks/DvvYiUNt.js.br +0 -0
- package/studio/client/_app/immutable/chunks/DvvYiUNt.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/DzAxJut6.js +0 -1
- package/studio/client/_app/immutable/chunks/DzAxJut6.js.br +0 -0
- package/studio/client/_app/immutable/chunks/DzAxJut6.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/FKE3oSoF.js +0 -2
- package/studio/client/_app/immutable/chunks/FKE3oSoF.js.br +0 -0
- package/studio/client/_app/immutable/chunks/FKE3oSoF.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/GL0yz1Mp.js +0 -1
- package/studio/client/_app/immutable/chunks/GL0yz1Mp.js.br +0 -0
- package/studio/client/_app/immutable/chunks/GL0yz1Mp.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/IIGX7hY5.js +0 -1
- package/studio/client/_app/immutable/chunks/IIGX7hY5.js.br +0 -0
- package/studio/client/_app/immutable/chunks/IIGX7hY5.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/KMhWafV2.js +0 -1
- package/studio/client/_app/immutable/chunks/KMhWafV2.js.br +0 -0
- package/studio/client/_app/immutable/chunks/KMhWafV2.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/R0PS9H7p.js +0 -1
- package/studio/client/_app/immutable/chunks/R0PS9H7p.js.br +0 -0
- package/studio/client/_app/immutable/chunks/R0PS9H7p.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/_y8Y_bWZ.js +0 -2
- package/studio/client/_app/immutable/chunks/_y8Y_bWZ.js.br +0 -0
- package/studio/client/_app/immutable/chunks/_y8Y_bWZ.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/a4b4Uis3.js +0 -1
- package/studio/client/_app/immutable/chunks/a4b4Uis3.js.br +0 -0
- package/studio/client/_app/immutable/chunks/a4b4Uis3.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/bGtUFIGQ.js +0 -1
- package/studio/client/_app/immutable/chunks/bGtUFIGQ.js.br +0 -0
- package/studio/client/_app/immutable/chunks/bGtUFIGQ.js.gz +0 -0
- package/studio/client/_app/immutable/chunks/nTtOQUuo.js +0 -1
- package/studio/client/_app/immutable/chunks/nTtOQUuo.js.br +0 -0
- package/studio/client/_app/immutable/chunks/nTtOQUuo.js.gz +0 -0
- package/studio/client/_app/immutable/entry/app.BlMsBed_.js +0 -2
- package/studio/client/_app/immutable/entry/app.BlMsBed_.js.br +0 -0
- package/studio/client/_app/immutable/entry/app.BlMsBed_.js.gz +0 -0
- package/studio/client/_app/immutable/entry/start.Br1JKkZD.js +0 -1
- package/studio/client/_app/immutable/entry/start.Br1JKkZD.js.br +0 -0
- package/studio/client/_app/immutable/entry/start.Br1JKkZD.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/0.CH4rtrFP.js +0 -2
- package/studio/client/_app/immutable/nodes/0.CH4rtrFP.js.br +0 -0
- package/studio/client/_app/immutable/nodes/0.CH4rtrFP.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/1.BA5TTBGM.js +0 -1
- package/studio/client/_app/immutable/nodes/1.BA5TTBGM.js.br +0 -0
- package/studio/client/_app/immutable/nodes/1.BA5TTBGM.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/10.DjmeS5CE.js +0 -1
- package/studio/client/_app/immutable/nodes/10.DjmeS5CE.js.br +0 -0
- package/studio/client/_app/immutable/nodes/10.DjmeS5CE.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/11.B5lOMsv4.js +0 -1
- package/studio/client/_app/immutable/nodes/11.B5lOMsv4.js.br +0 -0
- package/studio/client/_app/immutable/nodes/11.B5lOMsv4.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/12.Bdh67hUI.js +0 -2
- package/studio/client/_app/immutable/nodes/12.Bdh67hUI.js.br +0 -0
- package/studio/client/_app/immutable/nodes/12.Bdh67hUI.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/13.DeCCmCaZ.js +0 -1
- package/studio/client/_app/immutable/nodes/13.DeCCmCaZ.js.br +0 -0
- package/studio/client/_app/immutable/nodes/13.DeCCmCaZ.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/14.BK_MYNTB.js +0 -1
- package/studio/client/_app/immutable/nodes/14.BK_MYNTB.js.br +0 -0
- package/studio/client/_app/immutable/nodes/14.BK_MYNTB.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/15.DTOUruaa.js +0 -1
- package/studio/client/_app/immutable/nodes/15.DTOUruaa.js.br +0 -0
- package/studio/client/_app/immutable/nodes/15.DTOUruaa.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/16.4YmSrppF.js +0 -8
- package/studio/client/_app/immutable/nodes/16.4YmSrppF.js.br +0 -0
- package/studio/client/_app/immutable/nodes/16.4YmSrppF.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/17.DUeNi0aB.js +0 -1
- package/studio/client/_app/immutable/nodes/17.DUeNi0aB.js.br +0 -0
- package/studio/client/_app/immutable/nodes/17.DUeNi0aB.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/18.DilqYUUv.js +0 -1
- package/studio/client/_app/immutable/nodes/18.DilqYUUv.js.br +0 -0
- package/studio/client/_app/immutable/nodes/18.DilqYUUv.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/19.QEH9WR1D.js +0 -1
- package/studio/client/_app/immutable/nodes/19.QEH9WR1D.js.br +0 -0
- package/studio/client/_app/immutable/nodes/19.QEH9WR1D.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/20.DIa-6Wtj.js +0 -45
- package/studio/client/_app/immutable/nodes/20.DIa-6Wtj.js.br +0 -0
- package/studio/client/_app/immutable/nodes/20.DIa-6Wtj.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/21.C7plrZc8.js +0 -16
- package/studio/client/_app/immutable/nodes/21.C7plrZc8.js.br +0 -0
- package/studio/client/_app/immutable/nodes/21.C7plrZc8.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/3._qhjdqhg.js +0 -1
- package/studio/client/_app/immutable/nodes/3._qhjdqhg.js.br +0 -0
- package/studio/client/_app/immutable/nodes/3._qhjdqhg.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/38.DwvBsnGj.js +0 -1
- package/studio/client/_app/immutable/nodes/38.DwvBsnGj.js.br +0 -0
- package/studio/client/_app/immutable/nodes/38.DwvBsnGj.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/4.R0oJOWD_.js +0 -1
- package/studio/client/_app/immutable/nodes/4.R0oJOWD_.js.br +0 -0
- package/studio/client/_app/immutable/nodes/4.R0oJOWD_.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/40.BVTwXIYj.js +0 -15
- package/studio/client/_app/immutable/nodes/40.BVTwXIYj.js.br +0 -0
- package/studio/client/_app/immutable/nodes/40.BVTwXIYj.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/41.Dmbm2Egz.js +0 -1
- package/studio/client/_app/immutable/nodes/41.Dmbm2Egz.js.br +0 -0
- package/studio/client/_app/immutable/nodes/41.Dmbm2Egz.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/42.D205SuZX.js +0 -1
- package/studio/client/_app/immutable/nodes/42.D205SuZX.js.br +0 -0
- package/studio/client/_app/immutable/nodes/42.D205SuZX.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/43.Bg1auisF.js +0 -1
- package/studio/client/_app/immutable/nodes/43.Bg1auisF.js.br +0 -0
- package/studio/client/_app/immutable/nodes/43.Bg1auisF.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/44.CPLxW4El.js +0 -1
- package/studio/client/_app/immutable/nodes/44.CPLxW4El.js.br +0 -0
- package/studio/client/_app/immutable/nodes/44.CPLxW4El.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/45.DSssrLbd.js +0 -2
- package/studio/client/_app/immutable/nodes/45.DSssrLbd.js.br +0 -0
- package/studio/client/_app/immutable/nodes/45.DSssrLbd.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/46.CmYGMWb4.js +0 -1
- package/studio/client/_app/immutable/nodes/46.CmYGMWb4.js.br +0 -0
- package/studio/client/_app/immutable/nodes/46.CmYGMWb4.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/47.DJ6V3A94.js +0 -1
- package/studio/client/_app/immutable/nodes/47.DJ6V3A94.js.br +0 -0
- package/studio/client/_app/immutable/nodes/47.DJ6V3A94.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/48.BOPN4KRW.js +0 -1
- package/studio/client/_app/immutable/nodes/48.BOPN4KRW.js.br +0 -0
- package/studio/client/_app/immutable/nodes/48.BOPN4KRW.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/49.7I6h2rM6.js +0 -7
- package/studio/client/_app/immutable/nodes/49.7I6h2rM6.js.br +0 -0
- package/studio/client/_app/immutable/nodes/49.7I6h2rM6.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/5.R0oJOWD_.js +0 -1
- package/studio/client/_app/immutable/nodes/5.R0oJOWD_.js.br +0 -0
- package/studio/client/_app/immutable/nodes/5.R0oJOWD_.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/7.VcgX8ZgJ.js +0 -1
- package/studio/client/_app/immutable/nodes/7.VcgX8ZgJ.js.br +0 -0
- package/studio/client/_app/immutable/nodes/7.VcgX8ZgJ.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/8.ZwVfexZ0.js +0 -1
- package/studio/client/_app/immutable/nodes/8.ZwVfexZ0.js.br +0 -0
- package/studio/client/_app/immutable/nodes/8.ZwVfexZ0.js.gz +0 -0
- package/studio/client/_app/immutable/nodes/9.DPwqLu6G.js +0 -1
- package/studio/client/_app/immutable/nodes/9.DPwqLu6G.js.br +0 -0
- package/studio/client/_app/immutable/nodes/9.DPwqLu6G.js.gz +0 -0
- package/studio/server/chunks/0-DrCbOn_U.js +0 -32
- package/studio/server/chunks/0-DrCbOn_U.js.map +0 -1
- package/studio/server/chunks/1-BHuYqaGp.js +0 -9
- package/studio/server/chunks/1-BHuYqaGp.js.map +0 -1
- package/studio/server/chunks/11-DcT9eofp.js +0 -9
- package/studio/server/chunks/11-DcT9eofp.js.map +0 -1
- package/studio/server/chunks/12-Br9qZR1c.js +0 -9
- package/studio/server/chunks/12-Br9qZR1c.js.map +0 -1
- package/studio/server/chunks/13-CXLQr4dU.js +0 -59
- package/studio/server/chunks/13-CXLQr4dU.js.map +0 -1
- package/studio/server/chunks/14-BcReNzGU.js +0 -60
- package/studio/server/chunks/14-BcReNzGU.js.map +0 -1
- package/studio/server/chunks/15-BR8pxyN_.js +0 -9
- package/studio/server/chunks/15-BR8pxyN_.js.map +0 -1
- package/studio/server/chunks/16-B-CvhSUs.js +0 -72
- package/studio/server/chunks/16-B-CvhSUs.js.map +0 -1
- package/studio/server/chunks/17-BLykPSq7.js +0 -9
- package/studio/server/chunks/17-BLykPSq7.js.map +0 -1
- package/studio/server/chunks/18-C7DjU0t5.js +0 -9
- package/studio/server/chunks/18-C7DjU0t5.js.map +0 -1
- package/studio/server/chunks/19-Cq0Qyivk.js +0 -9
- package/studio/server/chunks/19-Cq0Qyivk.js.map +0 -1
- package/studio/server/chunks/20-CRk87lvq.js +0 -139
- package/studio/server/chunks/20-CRk87lvq.js.map +0 -1
- package/studio/server/chunks/3-ChhTSXfT.js +0 -9
- package/studio/server/chunks/3-ChhTSXfT.js.map +0 -1
- package/studio/server/chunks/4-B9vyTnuL.js +0 -9
- package/studio/server/chunks/4-B9vyTnuL.js.map +0 -1
- package/studio/server/chunks/42-DOBpFqDR.js +0 -56
- package/studio/server/chunks/42-DOBpFqDR.js.map +0 -1
- package/studio/server/chunks/43-DRw-2-GS.js +0 -9
- package/studio/server/chunks/43-DRw-2-GS.js.map +0 -1
- package/studio/server/chunks/44-DLxClkX_.js +0 -9
- package/studio/server/chunks/44-DLxClkX_.js.map +0 -1
- package/studio/server/chunks/45-wVQw8tBx.js +0 -115
- package/studio/server/chunks/45-wVQw8tBx.js.map +0 -1
- package/studio/server/chunks/49-CSfj1Xtu.js +0 -14
- package/studio/server/chunks/49-CSfj1Xtu.js.map +0 -1
- package/studio/server/chunks/5-8UA2oVVT.js +0 -9
- package/studio/server/chunks/5-8UA2oVVT.js.map +0 -1
- package/studio/server/chunks/7-judL9OYr.js +0 -215
- package/studio/server/chunks/7-judL9OYr.js.map +0 -1
- package/studio/server/chunks/_error.svelte-C3N4FEB2.js +0 -98
- package/studio/server/chunks/_error.svelte-C3N4FEB2.js.map +0 -1
- package/studio/server/chunks/_error.svelte-C7sYQCnM.js +0 -98
- package/studio/server/chunks/_error.svelte-C7sYQCnM.js.map +0 -1
- package/studio/server/chunks/_layout.svelte-B7vWmRFJ.js +0 -64
- package/studio/server/chunks/_layout.svelte-B7vWmRFJ.js.map +0 -1
- package/studio/server/chunks/_layout.svelte-BIVwEY2g.js +0 -1054
- package/studio/server/chunks/_layout.svelte-BIVwEY2g.js.map +0 -1
- package/studio/server/chunks/_layout.svelte-CDrHT5wt.js +0 -400
- package/studio/server/chunks/_layout.svelte-CDrHT5wt.js.map +0 -1
- package/studio/server/chunks/_layout.svelte-DAYtUucm.js +0 -64
- package/studio/server/chunks/_layout.svelte-DAYtUucm.js.map +0 -1
- package/studio/server/chunks/_page.svelte-B1cMW63M.js +0 -79
- package/studio/server/chunks/_page.svelte-B1cMW63M.js.map +0 -1
- package/studio/server/chunks/_page.svelte-BL2j2QYJ.js +0 -192
- package/studio/server/chunks/_page.svelte-BL2j2QYJ.js.map +0 -1
- package/studio/server/chunks/_page.svelte-BiTflcHr.js +0 -111
- package/studio/server/chunks/_page.svelte-BiTflcHr.js.map +0 -1
- package/studio/server/chunks/_page.svelte-BwEzxkCN.js +0 -418
- package/studio/server/chunks/_page.svelte-BwEzxkCN.js.map +0 -1
- package/studio/server/chunks/_page.svelte-ByzdoeDB.js +0 -11350
- package/studio/server/chunks/_page.svelte-ByzdoeDB.js.map +0 -1
- package/studio/server/chunks/_page.svelte-CSU5TGt6.js +0 -1732
- package/studio/server/chunks/_page.svelte-CSU5TGt6.js.map +0 -1
- package/studio/server/chunks/_page.svelte-Ch08b7on.js +0 -256
- package/studio/server/chunks/_page.svelte-Ch08b7on.js.map +0 -1
- package/studio/server/chunks/_page.svelte-CyAzKzS1.js +0 -506
- package/studio/server/chunks/_page.svelte-CyAzKzS1.js.map +0 -1
- package/studio/server/chunks/_page.svelte-D3NFENjP.js +0 -113
- package/studio/server/chunks/_page.svelte-D3NFENjP.js.map +0 -1
- package/studio/server/chunks/_page.svelte-DoI4FMeA.js +0 -319
- package/studio/server/chunks/_page.svelte-DoI4FMeA.js.map +0 -1
- package/studio/server/chunks/_page.svelte-az4tVjJ_.js +0 -1021
- package/studio/server/chunks/_page.svelte-az4tVjJ_.js.map +0 -1
- package/studio/server/chunks/_server.ts-BsgeMvN0.js +0 -722
- package/studio/server/chunks/_server.ts-BsgeMvN0.js.map +0 -1
- package/studio/server/chunks/_server.ts-CBlNBm5s.js +0 -70
- package/studio/server/chunks/_server.ts-CBlNBm5s.js.map +0 -1
- package/studio/server/chunks/_server.ts-CLHP8Zrh.js +0 -109
- package/studio/server/chunks/_server.ts-CLHP8Zrh.js.map +0 -1
- package/studio/server/chunks/_server.ts-Cd1TmSSo.js +0 -303
- package/studio/server/chunks/_server.ts-Cd1TmSSo.js.map +0 -1
- package/studio/server/chunks/_server.ts-CkVDrj32.js +0 -79
- package/studio/server/chunks/_server.ts-CkVDrj32.js.map +0 -1
- package/studio/server/chunks/_server.ts-DA3zdbWI.js +0 -48
- package/studio/server/chunks/_server.ts-DA3zdbWI.js.map +0 -1
- package/studio/server/chunks/_server.ts-Da8qrASe.js +0 -118
- package/studio/server/chunks/_server.ts-Da8qrASe.js.map +0 -1
- package/studio/server/chunks/_server.ts-Dcr0g4Vq.js +0 -52
- package/studio/server/chunks/_server.ts-Dcr0g4Vq.js.map +0 -1
- package/studio/server/chunks/_server.ts-DxwlzaT7.js +0 -122
- package/studio/server/chunks/_server.ts-DxwlzaT7.js.map +0 -1
- package/studio/server/chunks/_server.ts-KHs6y_Wc.js +0 -760
- package/studio/server/chunks/_server.ts-KHs6y_Wc.js.map +0 -1
- package/studio/server/chunks/_server.ts-_eJk5Eiu.js +0 -91
- package/studio/server/chunks/_server.ts-_eJk5Eiu.js.map +0 -1
- package/studio/server/chunks/admin.remote-C-MAmmW-.js +0 -105
- package/studio/server/chunks/admin.remote-C-MAmmW-.js.map +0 -1
- package/studio/server/chunks/ai-access-Cm_VC4xc.js +0 -299
- package/studio/server/chunks/ai-access-Cm_VC4xc.js.map +0 -1
- package/studio/server/chunks/ai.remote-waQUpsLn.js +0 -37
- package/studio/server/chunks/ai.remote-waQUpsLn.js.map +0 -1
- package/studio/server/chunks/alert-dialog-description-B4VfiJRT.js +0 -578
- package/studio/server/chunks/alert-dialog-description-B4VfiJRT.js.map +0 -1
- package/studio/server/chunks/app-header-Ck_YeZr5.js +0 -96
- package/studio/server/chunks/app-header-Ck_YeZr5.js.map +0 -1
- package/studio/server/chunks/auth-mx1dhuCn.js +0 -22472
- package/studio/server/chunks/auth-mx1dhuCn.js.map +0 -1
- package/studio/server/chunks/auth.remote-CN4se14K.js +0 -351
- package/studio/server/chunks/auth.remote-CN4se14K.js.map +0 -1
- package/studio/server/chunks/bun-sqlite-dialect-C8OaCWSL-BNevlRD6.js +0 -197
- package/studio/server/chunks/bun-sqlite-dialect-C8OaCWSL-BNevlRD6.js.map +0 -1
- package/studio/server/chunks/captions.remote-Pp1JQnfB.js +0 -184
- package/studio/server/chunks/captions.remote-Pp1JQnfB.js.map +0 -1
- package/studio/server/chunks/client2-DNrSxzuu.js +0 -66
- package/studio/server/chunks/client2-DNrSxzuu.js.map +0 -1
- package/studio/server/chunks/d1-sqlite-dialect-sYHNqBte-D67tOo2R.js +0 -160
- package/studio/server/chunks/d1-sqlite-dialect-sYHNqBte-D67tOo2R.js.map +0 -1
- package/studio/server/chunks/desktop-bootstrap-IVK9LbDz.js +0 -67
- package/studio/server/chunks/desktop-bootstrap-IVK9LbDz.js.map +0 -1
- package/studio/server/chunks/dubbing.remote-CZkC5M_a.js +0 -153
- package/studio/server/chunks/dubbing.remote-CZkC5M_a.js.map +0 -1
- package/studio/server/chunks/editor.svelte-Dd-2ZfWO.js +0 -21027
- package/studio/server/chunks/editor.svelte-Dd-2ZfWO.js.map +0 -1
- package/studio/server/chunks/find-stock-image-DDfrK_rA.js +0 -709
- package/studio/server/chunks/find-stock-image-DDfrK_rA.js.map +0 -1
- package/studio/server/chunks/hooks.server-DcXHGCUQ.js +0 -309
- package/studio/server/chunks/hooks.server-DcXHGCUQ.js.map +0 -1
- package/studio/server/chunks/image-generation.remote-GIIJ69ro.js +0 -140
- package/studio/server/chunks/image-generation.remote-GIIJ69ro.js.map +0 -1
- package/studio/server/chunks/index-Bz4Ugmn7.js +0 -4578
- package/studio/server/chunks/index-Bz4Ugmn7.js.map +0 -1
- package/studio/server/chunks/index12-CP2lVQd1.js +0 -265
- package/studio/server/chunks/index12-CP2lVQd1.js.map +0 -1
- package/studio/server/chunks/index2-BvzNGjoj.js +0 -23
- package/studio/server/chunks/index2-BvzNGjoj.js.map +0 -1
- package/studio/server/chunks/index3-B3arCRqx.js +0 -8
- package/studio/server/chunks/index3-B3arCRqx.js.map +0 -1
- package/studio/server/chunks/index4-ByfR32IV.js +0 -48
- package/studio/server/chunks/index4-ByfR32IV.js.map +0 -1
- package/studio/server/chunks/layout-template-DRFNZLVI.js +0 -1371
- package/studio/server/chunks/layout-template-DRFNZLVI.js.map +0 -1
- package/studio/server/chunks/media-analysis-Ch1fmDUt.js +0 -229
- package/studio/server/chunks/media-analysis-Ch1fmDUt.js.map +0 -1
- package/studio/server/chunks/media-analysis.remote-yI6aCZ78.js +0 -63
- package/studio/server/chunks/media-analysis.remote-yI6aCZ78.js.map +0 -1
- package/studio/server/chunks/mutations-CkUdOAoa.js +0 -551
- package/studio/server/chunks/mutations-CkUdOAoa.js.map +0 -1
- package/studio/server/chunks/node-sqlite-dialect-Di8ZYXD0.js +0 -197
- package/studio/server/chunks/node-sqlite-dialect-Di8ZYXD0.js.map +0 -1
- package/studio/server/chunks/onboarding-email-BvuCl7dz.js +0 -311
- package/studio/server/chunks/onboarding-email-BvuCl7dz.js.map +0 -1
- package/studio/server/chunks/projects.remote-ipNnrM1d.js +0 -297
- package/studio/server/chunks/projects.remote-ipNnrM1d.js.map +0 -1
- package/studio/server/chunks/queue-init-C_8i6pyv.js +0 -38
- package/studio/server/chunks/queue-init-C_8i6pyv.js.map +0 -1
- package/studio/server/chunks/registry-z2-pQ1Jw.js +0 -18
- package/studio/server/chunks/registry-z2-pQ1Jw.js.map +0 -1
- package/studio/server/chunks/registry2-BhwPna1F.js +0 -4851
- package/studio/server/chunks/registry2-BhwPna1F.js.map +0 -1
- package/studio/server/chunks/remote-1ez0sx-DKZ6ubnB.js +0 -34
- package/studio/server/chunks/remote-1ez0sx-DKZ6ubnB.js.map +0 -1
- package/studio/server/chunks/remote-1mi3j6d-4ClkS6sd.js +0 -21
- package/studio/server/chunks/remote-1mi3j6d-4ClkS6sd.js.map +0 -1
- package/studio/server/chunks/remote-1web5fy-Bw0AJHlD.js +0 -35
- package/studio/server/chunks/remote-1web5fy-Bw0AJHlD.js.map +0 -1
- package/studio/server/chunks/remote-5mu9ty-DKqUPY8s.js +0 -31
- package/studio/server/chunks/remote-5mu9ty-DKqUPY8s.js.map +0 -1
- package/studio/server/chunks/remote-gezfls-CbSTOGmI.js +0 -21
- package/studio/server/chunks/remote-gezfls-CbSTOGmI.js.map +0 -1
- package/studio/server/chunks/remote-sy19x7-BZ5ceu8t.js +0 -29
- package/studio/server/chunks/remote-sy19x7-BZ5ceu8t.js.map +0 -1
- package/studio/server/chunks/remote-tisyb0-ChggPTNB.js +0 -31
- package/studio/server/chunks/remote-tisyb0-ChggPTNB.js.map +0 -1
- package/studio/server/chunks/remote-xj8myv-DruftVtE.js +0 -31
- package/studio/server/chunks/remote-xj8myv-DruftVtE.js.map +0 -1
- package/studio/server/chunks/remote-z7lvth-D_9BqgW_.js +0 -23
- package/studio/server/chunks/remote-z7lvth-D_9BqgW_.js.map +0 -1
- package/studio/server/chunks/remote-zjib3m-DnAqo6l6.js +0 -24
- package/studio/server/chunks/remote-zjib3m-DnAqo6l6.js.map +0 -1
- package/studio/server/chunks/scrub-xyz.svelte_svelte_type_style_lang-D5bzSlf5.js +0 -4752
- package/studio/server/chunks/scrub-xyz.svelte_svelte_type_style_lang-D5bzSlf5.js.map +0 -1
- package/studio/server/chunks/tooltip-provider-Y8-pmG0D.js +0 -30
- package/studio/server/chunks/tooltip-provider-Y8-pmG0D.js.map +0 -1
- package/studio/server/chunks/tooltip.svelte-CMQZQZ-r.js +0 -658
- package/studio/server/chunks/tooltip.svelte-CMQZQZ-r.js.map +0 -1
- package/studio/server/chunks/tts.remote-BERCmX-n.js +0 -194
- package/studio/server/chunks/tts.remote-BERCmX-n.js.map +0 -1
- package/studio/server/chunks/ui.svelte-DSRn4LdL.js +0 -88
- package/studio/server/chunks/ui.svelte-DSRn4LdL.js.map +0 -1
- package/studio/server/chunks/video-generation.remote-DkDf_BYp.js +0 -197
- package/studio/server/chunks/video-generation.remote-DkDf_BYp.js.map +0 -1
- package/studio/server/chunks/watermark-u8k4sZA3.js +0 -164
- package/studio/server/chunks/watermark-u8k4sZA3.js.map +0 -1
|
@@ -0,0 +1,760 @@
|
|
|
1
|
+
import { tool, ToolLoopAgent, convertToModelMessages } from 'ai';
|
|
2
|
+
import { e as error, c as isHttpError } from './index-Dp2_pJiZ.js';
|
|
3
|
+
import { env } from './env-AoZ3P0fg.js';
|
|
4
|
+
import { createOpenRouter } from '@openrouter/ai-sdk-provider';
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
import { P as ProjectSchema, p as projectDataSchema } from './animation-sOd5R1cE.js';
|
|
7
|
+
import { a as analyzeAndSaveMediaAsset, M as MediaSegmentTypeSchema } from './media-analysis-DXUN3NUM.js';
|
|
8
|
+
import { a as actionRegistry } from './registry-DcyeMfNZ.js';
|
|
9
|
+
import { d as designPlaybookSection, p as presetCatalogSection, c as assetLibrarySection, e as assetProtocolSection, n as narrationWorkflowSection, v as voiceCatalogSection, U as UngroupLayersInputSchema, G as GroupLayersInputSchema, C as ConfigureProjectInputSchema, R as RemoveLayerInputSchema, a as UpsertLayerInputSchema } from './design-knowledge-D2NUeAAo.js';
|
|
10
|
+
import { d as dmElements, e as describeLayerAttributes } from './attribute-protocol-DQ-1julf.js';
|
|
11
|
+
import { c as canUserAccessAI, b as getModel, l as logAIUsage } from './ai-access-bDlOKhrS.js';
|
|
12
|
+
import { existsSync, mkdirSync, writeFileSync } from 'fs';
|
|
13
|
+
import { join } from 'path';
|
|
14
|
+
import { t as trackEvent } from './posthog-kZp2zKvY.js';
|
|
15
|
+
import { a as asset } from './api-Do--xZ9M.js';
|
|
16
|
+
import { inArray, eq, desc } from 'drizzle-orm';
|
|
17
|
+
import './shared-server-hNytdPP9.js';
|
|
18
|
+
import './branding-5rLT-BvK.js';
|
|
19
|
+
import './index6-BwFC1GDh.js';
|
|
20
|
+
import '@aws-sdk/client-s3';
|
|
21
|
+
import '@aws-sdk/s3-request-presigner';
|
|
22
|
+
import 'nanoid';
|
|
23
|
+
import './filename-sanitizer-yQZjRxRx.js';
|
|
24
|
+
import './find-stock-image-Cwkwf5gV.js';
|
|
25
|
+
import './base-qepI6vHK.js';
|
|
26
|
+
import './media-v9Bq2kuR.js';
|
|
27
|
+
import './presets-CU-ej2J9.js';
|
|
28
|
+
import './project-layer-yZ50OnjM.js';
|
|
29
|
+
import './plans-BAwNKt6H.js';
|
|
30
|
+
import './subscription-BC4gCTG6.js';
|
|
31
|
+
import './root-DjEsp22s.js';
|
|
32
|
+
import './index9-D9BBZH26.js';
|
|
33
|
+
import './async-lVJA8xJZ.js';
|
|
34
|
+
import './event-DmhHnWT5.js';
|
|
35
|
+
import './query-D9bdUhU3.js';
|
|
36
|
+
import './shared-hgBL35K7.js';
|
|
37
|
+
import 'drizzle-orm/pg-core';
|
|
38
|
+
import './optional-services-BGRY7tmz.js';
|
|
39
|
+
|
|
40
|
+
const AnalyzeMediaInputSchema = z.object({
|
|
41
|
+
layerId: z.string().describe(
|
|
42
|
+
"Video or audio layer ID or name to analyze. Sends media to multimodal AI for detailed scene-by-scene breakdown."
|
|
43
|
+
),
|
|
44
|
+
context: z.string().optional().describe(
|
|
45
|
+
'Optional hint about content type (e.g., "tech tutorial about React hooks") to improve analysis accuracy'
|
|
46
|
+
)
|
|
47
|
+
});
|
|
48
|
+
const ComposeFromMediaInputSchema = z.object({
|
|
49
|
+
layerId: z.string().describe(
|
|
50
|
+
"Source video/audio layer ID or name. Must have been analyzed with analyze_media first."
|
|
51
|
+
),
|
|
52
|
+
mode: z.enum(["keep-highlights", "remove-dead-space", "custom"]).describe(
|
|
53
|
+
"Editing mode: keep-highlights = only highlight segments, remove-dead-space = everything except silence/filler, custom = filter by type or specify exact time ranges"
|
|
54
|
+
),
|
|
55
|
+
customSegments: z.array(
|
|
56
|
+
z.object({
|
|
57
|
+
sourceStart: z.number().min(0).describe("Start time in source media (seconds)"),
|
|
58
|
+
sourceEnd: z.number().min(0).describe("End time in source media (seconds)"),
|
|
59
|
+
label: z.string().optional().describe("Label for this segment (becomes layer name)")
|
|
60
|
+
})
|
|
61
|
+
).optional().describe('For "custom" mode: exact time ranges to keep from the source'),
|
|
62
|
+
includeTypes: z.array(MediaSegmentTypeSchema).optional().describe(
|
|
63
|
+
'For "custom" mode: only keep segments of these types (e.g., ["content", "highlight"])'
|
|
64
|
+
),
|
|
65
|
+
excludeTypes: z.array(MediaSegmentTypeSchema).optional().describe(
|
|
66
|
+
'For "custom" mode: remove segments of these types (e.g., ["dead-space", "tangent"])'
|
|
67
|
+
),
|
|
68
|
+
gapBetweenSegments: z.number().min(0).max(5).default(0).describe("Gap between consecutive segments in the output timeline (seconds, default: 0)")
|
|
69
|
+
});
|
|
70
|
+
const RunActionInputSchema = z.object({
|
|
71
|
+
layerId: z.string().optional().describe(
|
|
72
|
+
"Source layer ID or name. Required for: generate-captions, dub-audio, extract-audio, generate-speech. Omit for: generate-video."
|
|
73
|
+
),
|
|
74
|
+
actionId: z.enum(Object.keys(actionRegistry)).describe(
|
|
75
|
+
"Action to run: " + Object.values(actionRegistry).map((a) => `"${a.id}" — ${a.description}`).join(" | ")
|
|
76
|
+
),
|
|
77
|
+
params: z.record(z.string(), z.unknown()).optional().describe(
|
|
78
|
+
'Action-specific parameters. generate-captions: { language? (e.g., "en"), prompt? (context), position? ("bottom"|"top"|"middle"), mode? ("highlight"|"single-word"|"typewriter"|"block"), fontFamily?, fontSize?, fontWeight?, textColor?, bgColor?, textEffect? }. dub-audio: { targetLang ("es"|"fr"|"de"|"it"|"pt"|"ru"|"ja"|"ko"|"zh"|"ar"|"hi"|"nl"|"pl"|"tr"), sourceLang? }. extract-audio: no params needed. generate-video: { prompt (required, describe the video), duration? (4–15s, default 5), resolution? ("480p"|"720p"), generateAudio? (bool, default true) }. generate-image: { prompt (required, describe the image), aspect? ("square"|"landscape"|"portrait"), transparentBackground? (bool, for logos/cutouts) }. find-stock-image: { query (required, search terms), orientation? ("square"|"horizontal"|"vertical"), imageType? ("photo"|"illustration"|"3d") }. generate-speech: { text (required), voiceId (required — exact case-sensitive value from the TTS Voice Catalog), modelId? (eleven_v3|eleven_v3_turbo|eleven_multilingual_v2|eleven_turbo_v2_5|eleven_flash_v2_5), stability? (0–1), similarityBoost? (0–1) }.'
|
|
79
|
+
)
|
|
80
|
+
});
|
|
81
|
+
const animationTools = {
|
|
82
|
+
upsert_layer: tool({
|
|
83
|
+
description: `Create or modify a layer. All sizes/positions in % of project width (not pixels).
|
|
84
|
+
- CREATE: omit layerId, provide layer {type, props}. Omitted props use schema defaults.
|
|
85
|
+
- EDIT: pass layerId (from a previous upsert_layer/run_action response, or the layer name). Everything is a patch — provide only what changes. layer {type, props} only when changing props (type must match the target layer). Use animation.preset/keyframes to animate existing layers, including media layers added by run_action.
|
|
86
|
+
|
|
87
|
+
Example — create a text title with fade-in:
|
|
88
|
+
{"name":"Title","layer":{"type":"text","props":{"content":"Hello","fontSize":4,"color":"#ffffff"}},"transform":{"position":{"x":0,"y":-20}},"animation":{"preset":{"id":"fade-in","startTime":0,"duration":0.5}}}
|
|
89
|
+
|
|
90
|
+
Example — retime an existing layer:
|
|
91
|
+
{"layerId":"abc123","enterTime":2,"exitTime":6,"animation":{"preset":{"id":"fade-out","startTime":5.6,"duration":0.4}}}`,
|
|
92
|
+
inputSchema: UpsertLayerInputSchema
|
|
93
|
+
}),
|
|
94
|
+
remove_layer: tool({
|
|
95
|
+
description: "Delete a layer by ID (from upsert_layer) or name.",
|
|
96
|
+
inputSchema: RemoveLayerInputSchema
|
|
97
|
+
}),
|
|
98
|
+
configure_project: tool({
|
|
99
|
+
description: "Set project name, dimensions (px), duration (s), or background (hex string or gradient object).",
|
|
100
|
+
inputSchema: ConfigureProjectInputSchema
|
|
101
|
+
}),
|
|
102
|
+
group_layers: tool({
|
|
103
|
+
description: "Group multiple layers into a folder. Transform/rotate/scale the group to affect all children together.",
|
|
104
|
+
inputSchema: GroupLayersInputSchema
|
|
105
|
+
}),
|
|
106
|
+
ungroup_layers: tool({
|
|
107
|
+
description: "Dissolve a group. Children become top-level; group transforms are baked into each child.",
|
|
108
|
+
inputSchema: UngroupLayersInputSchema
|
|
109
|
+
}),
|
|
110
|
+
run_action: tool({
|
|
111
|
+
description: `Run an AI-powered media action:
|
|
112
|
+
- generate-captions: Transcribe audio/video to synced captions layer. Needs layerId. Params: { language?, prompt?, position? "bottom"|"top"|"middle", mode? "highlight"|"single-word"|"typewriter"|"block", fontFamily?, fontSize?, fontWeight?, textColor?, bgColor?, textEffect?, textEffectColor?, textEffectSize?, transitionEffects?, transitionDuration? }
|
|
113
|
+
- dub-audio: AI voice-clone dubbing into another language. Needs layerId. Params: { targetLang (required, e.g. "es"), sourceLang? }
|
|
114
|
+
- extract-audio: Rip audio track from video. Needs layerId. No params.
|
|
115
|
+
- generate-video: Seedance 2.0 text-to-video. No layerId. Params: { prompt (required), duration? 4–15s, resolution? "480p"|"720p", generateAudio? }
|
|
116
|
+
- generate-image: AI text-to-image, saved as asset + image layer. No layerId. Params: { prompt (required), aspect? "square"|"landscape"|"portrait", transparentBackground? (logos/cutouts) }
|
|
117
|
+
- find-stock-image: Search real stock photos (Lummi), import best match as asset + image layer with attribution. No layerId. Params: { query (required), orientation?, imageType? }. The response includes layersAdded[].props.src/fileKey for reuse.
|
|
118
|
+
- generate-speech: ElevenLabs TTS synthesis. Needs layerId of an audio layer (create one first if needed). Params: { text (required), voiceId (required, exact case-sensitive value from the TTS Voice Catalog), modelId?, stability? 0–1, similarityBoost? 0–1 }
|
|
119
|
+
|
|
120
|
+
Slow/credit-consuming actions (generate-video, generate-image, dub-audio, generate-speech) pause for user approval before running — the user sees the action and its inputs and can approve or deny.`,
|
|
121
|
+
inputSchema: RunActionInputSchema,
|
|
122
|
+
// Human-in-the-loop: expensive external API actions pause for user approval.
|
|
123
|
+
// Flag lives on the action definition — single source for chat and any
|
|
124
|
+
// future approval-aware surface.
|
|
125
|
+
needsApproval: (input) => actionRegistry[input.actionId]?.requiresApproval ?? false
|
|
126
|
+
}),
|
|
127
|
+
compose_from_media: tool({
|
|
128
|
+
description: `Split an analyzed video/audio into sequential segments. Requires analyze_media first.
|
|
129
|
+
|
|
130
|
+
Modes:
|
|
131
|
+
- keep-highlights: only highlight segments
|
|
132
|
+
- remove-dead-space: everything except silence/filler
|
|
133
|
+
- custom: filter by segment type (includeTypes/excludeTypes) or exact time ranges (customSegments)
|
|
134
|
+
|
|
135
|
+
Source layer is replaced by N sequential layers, each pointing to the same file with different contentOffset and timing. Add gapBetweenSegments for breathing room.`,
|
|
136
|
+
inputSchema: ComposeFromMediaInputSchema
|
|
137
|
+
})
|
|
138
|
+
};
|
|
139
|
+
function compactLayerPropsReference() {
|
|
140
|
+
const lines = [];
|
|
141
|
+
for (const entry of dmElements) {
|
|
142
|
+
const { attributes } = describeLayerAttributes(entry.layerType, entry.contentProp);
|
|
143
|
+
const parts = attributes.map((a) => {
|
|
144
|
+
if (a.options?.length) return `${a.prop}[${a.options.join("|")}]`;
|
|
145
|
+
if (a.type === "number" && (a.min !== void 0 || a.max !== void 0)) {
|
|
146
|
+
return `${a.prop}(num ${a.min ?? ""}…${a.max ?? ""})`;
|
|
147
|
+
}
|
|
148
|
+
return a.prop;
|
|
149
|
+
});
|
|
150
|
+
const content = entry.contentProp ? `${entry.contentProp}(text), ` : "";
|
|
151
|
+
lines.push(`- ${entry.layerType}: ${content}${parts.join(", ")}`);
|
|
152
|
+
}
|
|
153
|
+
return lines.join("\n");
|
|
154
|
+
}
|
|
155
|
+
const fps = 30;
|
|
156
|
+
const name = "Untitled Project";
|
|
157
|
+
const width = 1280;
|
|
158
|
+
const height = 720;
|
|
159
|
+
const schemaVersion = 2;
|
|
160
|
+
const layers = [{ "id": "random-id-1", "name": "Text", "type": "text", "props": { "color": "#ffffff", "width": 31.25, "content": "Creating", "fontSize": 3.75, "autoWidth": true, "textAlign": "center", "fontFamily": "Poppins", "fontWeight": "normal" }, "style": { "opacity": 1 }, "locked": false, "visible": true, "keyframes": [{ "id": "random-id-2", "time": 0, "value": -5.27, "property": "position.x", "interpolation": { "family": "continuous", "strategy": "ease-in-out" } }, { "id": "random-id-3", "time": 0, "value": 0, "property": "position.y", "interpolation": { "family": "continuous", "strategy": "ease-in-out" } }, { "id": "random-id-4", "time": 0, "value": 0, "property": "opacity", "interpolation": { "family": "continuous", "strategy": "ease-in-out" } }, { "id": "random-id-5", "time": 0, "value": 0.7, "property": "scale.x", "interpolation": { "family": "continuous", "strategy": "ease-in-out" } }, { "id": "random-id-5", "time": 0, "value": 0.7, "property": "scale.y", "interpolation": { "family": "continuous", "strategy": "ease-in-out" } }, { "id": "random-id-6", "time": 0, "value": "Creating", "property": "props.content", "interpolation": { "family": "text", "strategy": "char-reveal" } }, { "id": "random-id-6", "time": 0.625, "value": "Creating", "property": "props.content", "interpolation": { "family": "text", "strategy": "word-reveal", "separator": " " } }, { "id": "random-id-7", "time": 0.6278125, "value": 1, "property": "scale.y", "interpolation": { "family": "continuous", "strategy": "ease-in-out" } }, { "id": "random-id-8", "time": 0.6278125, "value": 1, "property": "scale.x", "interpolation": { "family": "continuous", "strategy": "ease-in-out" } }, { "id": "random-id-9", "time": 0.6278125, "value": -5.27, "property": "position.x", "interpolation": { "family": "continuous", "strategy": "ease-in-out" } }, { "id": "random-id-10", "time": 1.0278125, "value": 1, "property": "opacity", "interpolation": { "family": "continuous", "strategy": "ease-in-out" } }, { "id": "random-id-11", "time": 1.1840000000000008, "value": -24.27, "property": "position.x", "interpolation": { "family": "continuous", "strategy": "ease-in-out" } }, { "id": "random-id-12", "time": 1.5478125, "value": "Creating Motion design videos", "property": "props.content", "interpolation": { "family": "text", "strategy": "word-reveal", "separator": " " } }, { "id": "random-id-13", "time": 1.7278125, "value": 1, "property": "opacity", "interpolation": { "family": "continuous", "strategy": "ease-in" } }, { "id": "random-id-14", "time": 1.7278125, "value": 0, "property": "position.y", "interpolation": { "family": "continuous", "strategy": "ease-in-out" } }, { "id": "random-id-15", "time": 2.4078125000000017, "value": 0, "property": "opacity", "interpolation": { "family": "continuous", "strategy": "linear" } }, { "id": "random-id-16", "time": 2.4078125000000017, "value": 3.28, "property": "position.y", "interpolation": { "family": "continuous", "strategy": "ease-in-out" } }], "transform": { "scale": { "x": 0.7, "y": 0.7 }, "anchor": "center-left", "position": { "x": 0, "y": 0, "z": 0 }, "rotation": { "x": 0, "y": 0, "z": 0 } } }, { "id": "random-id-17", "name": "Text", "type": "text", "props": { "color": "#ffffff", "width": 31.25, "content": "is", "fontSize": 3.75, "autoWidth": true, "textAlign": "center", "fontFamily": "Poppins", "fontWeight": "normal" }, "style": { "opacity": 1 }, "locked": false, "visible": true, "exitTime": 5.31, "enterTime": 2.4, "keyframes": [{ "id": "random-id-18", "time": 2.4378125, "value": 0, "property": "opacity", "interpolation": { "family": "continuous", "strategy": "ease-out" } }, { "id": "random-id-19", "time": 2.4478125, "value": "is", "property": "props.content", "interpolation": { "family": "text", "strategy": "char-reveal" } }, { "id": "random-id-20", "time": 2.4478125, "value": 0, "property": "opacity", "interpolation": { "family": "continuous", "strategy": "ease-out" } }, { "id": "random-id-21", "time": 2.8478125, "value": 1, "property": "opacity", "interpolation": { "family": "continuous", "strategy": "linear" } }, { "id": "random-id-22", "time": 2.9378125, "value": 1, "property": "opacity", "interpolation": { "family": "continuous", "strategy": "linear" } }, { "id": "random-id-23", "time": 4.7178125, "value": 1, "property": "opacity", "interpolation": { "family": "continuous", "strategy": "ease-in" } }, { "id": "random-id-24", "time": 4.8478125, "value": "is slow & boring", "property": "props.content", "interpolation": { "family": "text", "strategy": "char-reveal" } }, { "id": "random-id-25", "time": 5.187812500000001, "value": 0, "property": "opacity", "interpolation": { "family": "continuous", "strategy": "linear" } }], "transform": { "scale": { "x": 1, "y": 1 }, "anchor": "center", "position": { "x": 0, "y": 0, "z": 0 }, "rotation": { "x": 0, "y": 0, "z": 0 } } }];
|
|
161
|
+
const duration = 10;
|
|
162
|
+
const background = { "type": "linear", "angle": 110, "stops": [{ "color": "#c4f9ff", "position": 11 }, { "color": "#eec5f6", "position": 42 }, { "color": "#edb5fe", "position": 72 }, { "color": "#7bb7fd", "position": 100 }] };
|
|
163
|
+
const fontFamily = "Raleway";
|
|
164
|
+
const goodExampleRaw = {
|
|
165
|
+
fps,
|
|
166
|
+
name,
|
|
167
|
+
width,
|
|
168
|
+
height,
|
|
169
|
+
schemaVersion,
|
|
170
|
+
layers,
|
|
171
|
+
duration,
|
|
172
|
+
background,
|
|
173
|
+
fontFamily
|
|
174
|
+
};
|
|
175
|
+
const exampleProject = projectDataSchema.parse(goodExampleRaw);
|
|
176
|
+
function formatTimestamp(seconds) {
|
|
177
|
+
const mins = Math.floor(seconds / 60);
|
|
178
|
+
const secs = Math.round(seconds % 60);
|
|
179
|
+
return `${mins}:${secs.toString().padStart(2, "0")}`;
|
|
180
|
+
}
|
|
181
|
+
function buildMediaContextSection(mediaContexts) {
|
|
182
|
+
if (mediaContexts.length === 0) return "";
|
|
183
|
+
const lines = ["## Media in Project\n"];
|
|
184
|
+
for (const media of mediaContexts) {
|
|
185
|
+
lines.push(`### "${media.layerName}" (${media.layerType})`);
|
|
186
|
+
if (!media.annotation) {
|
|
187
|
+
lines.push("Not yet analyzed. Call **analyze_media** first.\n");
|
|
188
|
+
continue;
|
|
189
|
+
}
|
|
190
|
+
const ann = media.annotation;
|
|
191
|
+
lines.push(
|
|
192
|
+
`Duration: ${formatTimestamp(ann.duration)} | Model: ${ann.modelUsed.split("/").pop()}`
|
|
193
|
+
);
|
|
194
|
+
lines.push(`Summary: ${ann.summary}`);
|
|
195
|
+
if (ann.topics.length > 0) {
|
|
196
|
+
lines.push(`Topics: ${ann.topics.join(", ")}`);
|
|
197
|
+
}
|
|
198
|
+
const typeCounts = {};
|
|
199
|
+
for (const seg of ann.segments) {
|
|
200
|
+
typeCounts[seg.type] = (typeCounts[seg.type] || 0) + 1;
|
|
201
|
+
}
|
|
202
|
+
const segSummary = Object.entries(typeCounts).map(([type, count]) => `${count} ${type}`).join(", ");
|
|
203
|
+
lines.push(`Segments: ${ann.segments.length} total (${segSummary})`);
|
|
204
|
+
const highlights = ann.segments.filter((s) => s.type === "highlight");
|
|
205
|
+
if (highlights.length > 0) {
|
|
206
|
+
const hlTimes = highlights.map((h) => `${formatTimestamp(h.start)}-${formatTimestamp(h.end)}: ${h.label}`).join("; ");
|
|
207
|
+
lines.push(`Highlights: ${hlTimes}`);
|
|
208
|
+
}
|
|
209
|
+
if (ann.suggestedCuts.length > 0) {
|
|
210
|
+
const cuts = ann.suggestedCuts.map((c) => `${formatTimestamp(c.start)}-${formatTimestamp(c.end)} (${c.reason})`).join("; ");
|
|
211
|
+
lines.push(`Suggested cuts: ${cuts}`);
|
|
212
|
+
}
|
|
213
|
+
lines.push("Segments detail:");
|
|
214
|
+
for (const seg of ann.segments) {
|
|
215
|
+
lines.push(
|
|
216
|
+
` ${formatTimestamp(seg.start)}-${formatTimestamp(seg.end)} [${seg.type}] "${seg.label}" (energy:${seg.energy.toFixed(1)}, relevance:${seg.relevance.toFixed(1)})`
|
|
217
|
+
);
|
|
218
|
+
}
|
|
219
|
+
lines.push("");
|
|
220
|
+
}
|
|
221
|
+
return lines.join("\n");
|
|
222
|
+
}
|
|
223
|
+
function buildSystemPrompt(project, mediaContexts = [], assetLibrary = [], voices = []) {
|
|
224
|
+
const halfHeightPct = Math.round(project.height / 2 / project.width * 100);
|
|
225
|
+
const thirdHeightPct = Math.round(project.height / 3 / project.width * 100);
|
|
226
|
+
const mediaContextSection = buildMediaContextSection(mediaContexts);
|
|
227
|
+
return `You are a motion-graphics designer creating polished video animations.
|
|
228
|
+
|
|
229
|
+
## Workflow
|
|
230
|
+
|
|
231
|
+
- **Full video request**: Plan the scene (duration, layers, layout, animations), then execute all tool calls.
|
|
232
|
+
- **Spot request** (add/edit one element): Skip planning — apply best practices and fulfill the ask directly.
|
|
233
|
+
|
|
234
|
+
Steps for full requests: present brief plan → execute tools → confirm.
|
|
235
|
+
|
|
236
|
+
## Coordinate System (CRITICAL)
|
|
237
|
+
|
|
238
|
+
Canvas: ${project.width}x${project.height}px | Duration: ${project.duration}s | FPS: ${project.fps}
|
|
239
|
+
|
|
240
|
+
ALL positions, sizes, font sizes, radii, and stroke widths are **% of project width** (NOT pixels).
|
|
241
|
+
- (0,0) = canvas center (with default positionOrigin: center)
|
|
242
|
+
- X range: -50 (left edge) to +50 (right edge)
|
|
243
|
+
- Y range: -${halfHeightPct} (top) to +${halfHeightPct} (bottom)
|
|
244
|
+
- width:50 = half the canvas width
|
|
245
|
+
- fontSize:4 = text ~4% of canvas width (e.g., ~29px on 720px canvas)
|
|
246
|
+
- All percentage values scale proportionally regardless of canvas size
|
|
247
|
+
|
|
248
|
+
transform.positionOrigin: shifts the (0,0) reference point on the canvas.
|
|
249
|
+
Default "center" makes (0,0) the canvas center. Use "top-left" to make (0,0) the top-left corner.
|
|
250
|
+
|
|
251
|
+
## Tools
|
|
252
|
+
|
|
253
|
+
- **upsert_layer**: Create a layer (omit layerId; layer.type+props required) or patch-edit an existing one (pass layerId; provide only what changes, layer.type must match). Supports transform/style/timing and animation.preset/keyframes — use it to animate layers created by run_action too.
|
|
254
|
+
- **remove_layer**: Delete layer by ID or name
|
|
255
|
+
- **configure_project**: Set name, dimensions, duration, background
|
|
256
|
+
- **group_layers** / **ungroup_layers**: Manage layer groups
|
|
257
|
+
- **analyze_media**: Analyze video/audio via multimodal AI → transcript, segments, highlights, dead space, editing suggestions. Results persist on asset.
|
|
258
|
+
- **compose_from_media**: Build edited cut from analyzed media. Modes: keep-highlights (keep only highlights), remove-dead-space (keep everything except silence/filler), custom (filter by segment type or exact time ranges).
|
|
259
|
+
- **run_action**: AI-powered operations: generate-captions (transcribe audio→captions layer), dub-audio (AI voice cloning translation), extract-audio (rip audio from video), generate-video (Seedance 2.0 text→video), generate-image (AI text→image asset+layer), find-stock-image (real stock photo→asset+layer), generate-speech (ElevenLabs TTS).
|
|
260
|
+
|
|
261
|
+
### Generated / Stock Media Workflow
|
|
262
|
+
1. To get missing media, call **run_action** with actionId "generate-image", "generate-video", or "find-stock-image".
|
|
263
|
+
2. The action creates the media layer for you. Use the returned layersAdded[].id for all subsequent edits.
|
|
264
|
+
3. The returned layersAdded[].props contains the real media source (for images: props.src, props.fileKey, props.fileName, attribution). Treat those props as authoritative.
|
|
265
|
+
4. Some actions update an existing layer instead of adding a new one. Use returned layersUpdated[].changes as authoritative for src/fileKey/contentDuration/timing after the action completes.
|
|
266
|
+
5. Do not remove and recreate generated/stock media layers just to animate or resize them. Use **upsert_layer** with the returned layer ID and props/timing/transform/style/animation.
|
|
267
|
+
6. Only create a new media layer manually when you already have a real src from the Asset Library, user attachment, user-provided URL, or a tool result.
|
|
268
|
+
|
|
269
|
+
### Fade / Crossfade Rules
|
|
270
|
+
- enterTime/exitTime only control hard visibility. They do NOT create fades.
|
|
271
|
+
- For a fade-in, add opacity keyframes 0 → 1 over the fade window.
|
|
272
|
+
- For a fade-out, add opacity keyframes 1 → 0 before exitTime.
|
|
273
|
+
- For a crossfade, overlap the outgoing/incoming layers AND add opacity keyframes on both layers during the overlap.
|
|
274
|
+
- Do not claim a layer fades or crossfades unless you created opacity keyframes or used a fade preset.
|
|
275
|
+
|
|
276
|
+
### Media Editing Workflow
|
|
277
|
+
1. Call **analyze_media** on a video/audio layer to get full analysis
|
|
278
|
+
2. Review results and propose an editing strategy
|
|
279
|
+
3. Call **compose_from_media** to split source into sequential segments
|
|
280
|
+
4. Fine-tune segments with upsert_layer/remove_layer
|
|
281
|
+
|
|
282
|
+
${designPlaybookSection()}
|
|
283
|
+
|
|
284
|
+
### Backgrounds — capabilities
|
|
285
|
+
- Gradients: linear (angle + color stops), radial, conic — multiple stops with transparency supported
|
|
286
|
+
- Set project-wide background via configure_project (backgroundColor accepts hex string or gradient object)
|
|
287
|
+
- For animated/ambient backgrounds, create shape layers with their own background property
|
|
288
|
+
- Interpolation by property type: position/scale/opacity/rotation → continuous with easing;
|
|
289
|
+
colors → continuous (RGB); text content (props.content) → text (char/word-reveal);
|
|
290
|
+
booleans/enums → discrete (step-end/step-start/step-mid)
|
|
291
|
+
|
|
292
|
+
${presetCatalogSection()}
|
|
293
|
+
|
|
294
|
+
## Interpolation Reference
|
|
295
|
+
|
|
296
|
+
- **continuous**: Smooth numeric/color transitions. Strategies: linear, ease-in, ease-out, ease-in-out, ease-in-quad, ease-out-quad, ease-in-out-quad, ease-in-back, ease-out-back, ease-in-bounce, ease-out-bounce, ease-in-elastic, ease-out-elastic
|
|
297
|
+
- **discrete**: Instant jumps. Strategies: step-end (hold old value until keyframe), step-start (jump immediately), step-mid (jump at midpoint)
|
|
298
|
+
- **quantized**: Smooth animation snapped to integers (strategy: integer) or grid (strategy: snap-grid + increment)
|
|
299
|
+
- **text**: Character/word reveal (char-reveal, word-reveal). ONLY for props.content on text/terminal layers.
|
|
300
|
+
|
|
301
|
+
## HTML Keyframe Syntax
|
|
302
|
+
|
|
303
|
+
When editing HTML scenes directly, use \`data-dm-keyframe-<property>\` with
|
|
304
|
+
\`time:value@strategy\`. The \`@strategy\` suffix maps to interpolation family:
|
|
305
|
+
- \`@ease-out\`, \`@ease-in-out\`, etc. → continuous
|
|
306
|
+
- \`@step-start\`, \`@step-end\`, \`@step-mid\` → discrete
|
|
307
|
+
- \`@integer\`, \`@snap-grid\` → quantized (\`snap-grid\` uses \`data-dm-grid-increment\`)
|
|
308
|
+
- \`@char-reveal\`, \`@word-reveal\` → text interpolation for \`props.content\`
|
|
309
|
+
|
|
310
|
+
Examples:
|
|
311
|
+
\`data-dm-keyframe-opacity="0:0@ease-out; 0.5:1@ease-out"\`
|
|
312
|
+
\`data-dm-keyframe-props-content="0:@char-reveal; 1.4:Welcome@char-reveal"\`
|
|
313
|
+
\`data-dm-word-separator=" "\` with \`@word-reveal\`
|
|
314
|
+
\`data-dm-grid-increment="0.25"\` with \`@snap-grid\`
|
|
315
|
+
|
|
316
|
+
For polished \`dm-text\` character/word reveals, add fragment transition attrs:
|
|
317
|
+
\`transition-effects="fade,slide-up,blur"\`, \`transition-duration="350"\`,
|
|
318
|
+
\`transition-easing="ease-in-quad"\`, \`slide-distance="2.7"\`,
|
|
319
|
+
\`scale-from="0.5"\`, \`blur-amount="0.78"\`.
|
|
320
|
+
|
|
321
|
+
## Layer Props (per type)
|
|
322
|
+
|
|
323
|
+
Use these exact prop names with upsert_layer. Derived from the layer
|
|
324
|
+
schemas — they are authoritative. \`[a|b]\` = allowed enum values; \`(num lo…hi)\`
|
|
325
|
+
= numeric range. \`(text)\` props are also the element's child text in HTML.
|
|
326
|
+
|
|
327
|
+
${compactLayerPropsReference()}
|
|
328
|
+
|
|
329
|
+
## Transform Properties
|
|
330
|
+
|
|
331
|
+
position: { x, y, z } — in % of project width
|
|
332
|
+
scale: { x, y } — multiplier (1 = normal)
|
|
333
|
+
rotation: { x, y, z } — radians
|
|
334
|
+
anchor: pivot point for transforms (top-left, top-center, top-right, center-left, center, center-right, bottom-left, bottom-center, bottom-right)
|
|
335
|
+
positionOrigin: canvas reference for (0,0) — same values as anchor. Default "center" = (0,0) at canvas center.
|
|
336
|
+
|
|
337
|
+
## Layout Guidelines
|
|
338
|
+
|
|
339
|
+
Three-zone distribution on a ${project.width}x${project.height} canvas:
|
|
340
|
+
- Title zone: y ≈ -${thirdHeightPct} (upper third)
|
|
341
|
+
- Content zone: y ≈ 0 (center)
|
|
342
|
+
- Footer zone: y ≈ +${thirdHeightPct} (lower third)
|
|
343
|
+
|
|
344
|
+
${assetLibrarySection(assetLibrary)}
|
|
345
|
+
|
|
346
|
+
${assetProtocolSection("chat")}
|
|
347
|
+
|
|
348
|
+
${narrationWorkflowSection("chat")}
|
|
349
|
+
|
|
350
|
+
${voiceCatalogSection(voices)}
|
|
351
|
+
|
|
352
|
+
## Rules
|
|
353
|
+
|
|
354
|
+
1. Plan first, then execute (skip planning for single-element requests)
|
|
355
|
+
2. Always use rich, intentional backgrounds
|
|
356
|
+
3. Every property value must be a deliberate choice
|
|
357
|
+
4. Plain text only — no markdown formatting in responses
|
|
358
|
+
5. Suggest analyze_media if project has unanalyzed video/audio layers
|
|
359
|
+
6. Use layer IDs returned by upsert_layer for subsequent edit/remove calls
|
|
360
|
+
7. Follow the Asset Rules — never fabricate media URLs; ask for or generate missing assets
|
|
361
|
+
|
|
362
|
+
## Reference Example
|
|
363
|
+
|
|
364
|
+
Below is a valid project showing correct structure and percentage-based values.
|
|
365
|
+
Note: the example shows fontSize as % of project width, positions as %, etc.
|
|
366
|
+
Use it to understand the schema shape, not as a source of literal values.
|
|
367
|
+
|
|
368
|
+
${JSON.stringify(exampleProject)}
|
|
369
|
+
|
|
370
|
+
${mediaContextSection}`;
|
|
371
|
+
}
|
|
372
|
+
const GenerateRequestSchema = z.object({
|
|
373
|
+
project: ProjectSchema,
|
|
374
|
+
modelId: z.string().describe("Model ID to use for generation"),
|
|
375
|
+
messages: z.array(z.custom())
|
|
376
|
+
});
|
|
377
|
+
const MAX_IMAGE_SIZE = 200 * 1024;
|
|
378
|
+
function getOpenRouterClient(userId, projectId) {
|
|
379
|
+
if (env.DESKTOP_MODE) {
|
|
380
|
+
throw new Error("Not supported in desktop mode");
|
|
381
|
+
}
|
|
382
|
+
const apiKey = env.OPENROUTER_API_KEY;
|
|
383
|
+
if (!apiKey) {
|
|
384
|
+
throw new Error("OPENROUTER_API_KEY is not configured");
|
|
385
|
+
}
|
|
386
|
+
return createOpenRouter({
|
|
387
|
+
apiKey,
|
|
388
|
+
...env.HELINE_AUTH ? {
|
|
389
|
+
baseURL: "https://openrouter.helicone.ai/api/v1",
|
|
390
|
+
headers: {
|
|
391
|
+
"Helicone-Auth": `Bearer ${env.HELINE_AUTH}`,
|
|
392
|
+
"Helicone-User-Id": userId,
|
|
393
|
+
"Helicone-Property-Project": projectId ?? ""
|
|
394
|
+
}
|
|
395
|
+
} : {}
|
|
396
|
+
});
|
|
397
|
+
}
|
|
398
|
+
function logAIInteraction(data) {
|
|
399
|
+
try {
|
|
400
|
+
const logsDir = join(process.cwd(), "logs", "ai-chat");
|
|
401
|
+
if (!existsSync(logsDir)) {
|
|
402
|
+
mkdirSync(logsDir, { recursive: true });
|
|
403
|
+
}
|
|
404
|
+
const filename = `${data.timestamp.replace(/[:.]/g, "-")}.json`;
|
|
405
|
+
const filepath = join(logsDir, filename);
|
|
406
|
+
const logData = {
|
|
407
|
+
timestamp: data.timestamp,
|
|
408
|
+
model: {
|
|
409
|
+
id: data.modelId,
|
|
410
|
+
name: data.modelName
|
|
411
|
+
},
|
|
412
|
+
systemPrompt: {
|
|
413
|
+
length: data.systemPromptLength
|
|
414
|
+
},
|
|
415
|
+
messages: data.userMessages.map((msg, idx) => {
|
|
416
|
+
const content = JSON.stringify(msg);
|
|
417
|
+
return {
|
|
418
|
+
index: idx,
|
|
419
|
+
role: msg.role,
|
|
420
|
+
contentPreview: content.substring(0, 200) + (content.length > 200 ? "..." : ""),
|
|
421
|
+
fullMessage: msg
|
|
422
|
+
};
|
|
423
|
+
}),
|
|
424
|
+
toolCalls: data.toolCalls?.length ? {
|
|
425
|
+
count: data.toolCalls.length,
|
|
426
|
+
calls: data.toolCalls
|
|
427
|
+
} : void 0,
|
|
428
|
+
response: data.responseMessages?.length ? {
|
|
429
|
+
messageCount: data.responseMessages.length,
|
|
430
|
+
messages: data.responseMessages
|
|
431
|
+
} : void 0,
|
|
432
|
+
usage: data.usage
|
|
433
|
+
};
|
|
434
|
+
writeFileSync(filepath, JSON.stringify(logData, null, 2), "utf-8");
|
|
435
|
+
console.log(`
|
|
436
|
+
${"=".repeat(80)}`);
|
|
437
|
+
console.log(`[AI Chat] ${data.timestamp}`);
|
|
438
|
+
console.log(`${"=".repeat(80)}`);
|
|
439
|
+
console.log(`Model: ${data.modelName} (${data.modelId})`);
|
|
440
|
+
console.log(`System Prompt: ${data.systemPromptLength} chars`);
|
|
441
|
+
console.log(`User Messages: ${data.userMessages.length}`);
|
|
442
|
+
if (data.toolCalls?.length) {
|
|
443
|
+
console.log(`Tool Calls: ${data.toolCalls.length}`);
|
|
444
|
+
}
|
|
445
|
+
if (data.usage) {
|
|
446
|
+
console.log(
|
|
447
|
+
`Tokens: ${data.usage.totalTokens || "N/A"} (input: ${data.usage.inputTokens || "N/A"}, output: ${data.usage.outputTokens || "N/A"})`
|
|
448
|
+
);
|
|
449
|
+
}
|
|
450
|
+
console.log(`Log file: ${filepath}`);
|
|
451
|
+
console.log(`${"=".repeat(80)}
|
|
452
|
+
`);
|
|
453
|
+
} catch (err) {
|
|
454
|
+
console.error("[AI] Failed to log interaction:", err);
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
function validateImageSizes(messages) {
|
|
458
|
+
for (const message of messages) {
|
|
459
|
+
if (!message.parts) continue;
|
|
460
|
+
for (const part of message.parts) {
|
|
461
|
+
if ("image" in part && typeof part.image === "string") {
|
|
462
|
+
const base64Data = part.image.split(",")[1];
|
|
463
|
+
if (base64Data) {
|
|
464
|
+
const sizeInBytes = Math.floor(base64Data.length * 3 / 4);
|
|
465
|
+
if (sizeInBytes > MAX_IMAGE_SIZE) {
|
|
466
|
+
error(
|
|
467
|
+
413,
|
|
468
|
+
`Image size (${Math.round(sizeInBytes / 1024)}KB) exceeds maximum allowed size (${MAX_IMAGE_SIZE / 1024}KB)`
|
|
469
|
+
);
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
function filterImagesFromOldMessages(messages) {
|
|
477
|
+
let lastImageMessageIndex = -1;
|
|
478
|
+
for (let i = messages.length - 1; i >= 0; i--) {
|
|
479
|
+
if (messages[i].role === "user" && messages[i].parts?.some((p) => p.type === "file")) {
|
|
480
|
+
lastImageMessageIndex = i;
|
|
481
|
+
break;
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
return messages.map((msg, idx) => {
|
|
485
|
+
if (msg.role !== "user" || idx === lastImageMessageIndex) {
|
|
486
|
+
return msg;
|
|
487
|
+
}
|
|
488
|
+
const hasImage = msg.parts?.some((p) => p.type === "file");
|
|
489
|
+
if (!hasImage) return msg;
|
|
490
|
+
return {
|
|
491
|
+
...msg,
|
|
492
|
+
parts: msg.parts?.map(
|
|
493
|
+
(part) => part.type === "file" ? { type: "text", text: "(image removed to reduce context size)" } : part
|
|
494
|
+
)
|
|
495
|
+
};
|
|
496
|
+
});
|
|
497
|
+
}
|
|
498
|
+
async function getMediaContexts(project, db) {
|
|
499
|
+
const mediaLayers = project.layers.filter((l) => l.type === "video" || l.type === "audio");
|
|
500
|
+
if (mediaLayers.length === 0) return [];
|
|
501
|
+
const fileKeyMap = /* @__PURE__ */ new Map();
|
|
502
|
+
for (const layer of mediaLayers) {
|
|
503
|
+
const fileKey = layer.props.fileKey;
|
|
504
|
+
if (fileKey && !fileKeyMap.has(fileKey)) {
|
|
505
|
+
fileKeyMap.set(fileKey, { layerName: layer.name, layerType: layer.type });
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
if (fileKeyMap.size === 0) return [];
|
|
509
|
+
const fileKeys = [...fileKeyMap.keys()];
|
|
510
|
+
const assets = await db.select({
|
|
511
|
+
storageKey: asset.storageKey,
|
|
512
|
+
annotation: asset.annotation
|
|
513
|
+
}).from(asset).where(inArray(asset.storageKey, fileKeys));
|
|
514
|
+
const annotationMap = /* @__PURE__ */ new Map();
|
|
515
|
+
for (const a of assets) {
|
|
516
|
+
annotationMap.set(a.storageKey, a.annotation);
|
|
517
|
+
}
|
|
518
|
+
return fileKeys.map((fileKey) => ({
|
|
519
|
+
layerName: fileKeyMap.get(fileKey).layerName,
|
|
520
|
+
layerType: fileKeyMap.get(fileKey).layerType,
|
|
521
|
+
fileKey,
|
|
522
|
+
annotation: annotationMap.get(fileKey) ?? null
|
|
523
|
+
}));
|
|
524
|
+
}
|
|
525
|
+
async function getAssetLibrary(userId, db, limit = 30) {
|
|
526
|
+
const assets = await db.select({
|
|
527
|
+
name: asset.originalName,
|
|
528
|
+
mediaType: asset.mediaType,
|
|
529
|
+
url: asset.url,
|
|
530
|
+
storageKey: asset.storageKey,
|
|
531
|
+
duration: asset.duration,
|
|
532
|
+
annotation: asset.annotation
|
|
533
|
+
}).from(asset).where(eq(asset.userId, userId)).orderBy(desc(asset.createdAt)).limit(limit);
|
|
534
|
+
return assets.map((a) => ({
|
|
535
|
+
name: a.name,
|
|
536
|
+
mediaType: a.mediaType,
|
|
537
|
+
url: a.url,
|
|
538
|
+
fileKey: a.storageKey,
|
|
539
|
+
duration: a.duration,
|
|
540
|
+
summary: a.annotation?.summary ?? null
|
|
541
|
+
}));
|
|
542
|
+
}
|
|
543
|
+
async function getVoiceCatalog() {
|
|
544
|
+
const apiKey = env.ELEVENLABS_API_KEY;
|
|
545
|
+
if (!apiKey) return [];
|
|
546
|
+
try {
|
|
547
|
+
const { getTtsVoices } = await import('./tts-voices-B9J2ZzGy.js');
|
|
548
|
+
return await getTtsVoices(apiKey);
|
|
549
|
+
} catch (err) {
|
|
550
|
+
console.warn("[AI] Failed to load TTS voices for prompt:", err);
|
|
551
|
+
return [];
|
|
552
|
+
}
|
|
553
|
+
}
|
|
554
|
+
function formatDuration(seconds) {
|
|
555
|
+
const mins = Math.floor(seconds / 60);
|
|
556
|
+
const secs = Math.round(seconds % 60);
|
|
557
|
+
return mins > 0 ? `${mins}m${secs.toString().padStart(2, "0")}s` : `${secs}s`;
|
|
558
|
+
}
|
|
559
|
+
const POST = async ({ request, locals }) => {
|
|
560
|
+
try {
|
|
561
|
+
let enableCacheControl = function(messages2) {
|
|
562
|
+
return messages2.map((message) => {
|
|
563
|
+
if (typeof message.content !== "string") {
|
|
564
|
+
return message;
|
|
565
|
+
}
|
|
566
|
+
return {
|
|
567
|
+
...message,
|
|
568
|
+
providerOptions: {
|
|
569
|
+
...message.providerOptions,
|
|
570
|
+
openrouter: {
|
|
571
|
+
...message.providerOptions?.openrouter,
|
|
572
|
+
cacheControl: {
|
|
573
|
+
type: "ephemeral"
|
|
574
|
+
/* ttl: '1h' */
|
|
575
|
+
}
|
|
576
|
+
}
|
|
577
|
+
}
|
|
578
|
+
};
|
|
579
|
+
});
|
|
580
|
+
};
|
|
581
|
+
if (!locals.user) {
|
|
582
|
+
error(401, "Authentication required");
|
|
583
|
+
}
|
|
584
|
+
const user = locals.user;
|
|
585
|
+
const accessCheck = await canUserAccessAI(user.id, locals.db);
|
|
586
|
+
if (!accessCheck.allowed) {
|
|
587
|
+
error(403, accessCheck.reason || "AI access not enabled");
|
|
588
|
+
}
|
|
589
|
+
const body = await request.json();
|
|
590
|
+
const { project, modelId, messages } = GenerateRequestSchema.parse(body);
|
|
591
|
+
validateImageSizes(messages);
|
|
592
|
+
const filteredMessages = filterImagesFromOldMessages(messages);
|
|
593
|
+
const openrouter = getOpenRouterClient(user.email, project.id);
|
|
594
|
+
const [mediaContexts, assetLibrary, voices] = await Promise.all([
|
|
595
|
+
getMediaContexts(project, locals.db),
|
|
596
|
+
getAssetLibrary(user.id, locals.db),
|
|
597
|
+
getVoiceCatalog()
|
|
598
|
+
]);
|
|
599
|
+
const systemPrompt = buildSystemPrompt(project, mediaContexts, assetLibrary, voices);
|
|
600
|
+
const model = getModel(modelId);
|
|
601
|
+
console.log(`[AI] Using model: ${model.name} (${model.id})`);
|
|
602
|
+
console.log(`[AI] System prompt length: ${systemPrompt.length} chars`);
|
|
603
|
+
const serverTools = {
|
|
604
|
+
analyze_media: tool({
|
|
605
|
+
description: "Analyze a video/audio layer with multimodal AI. Extracts transcript, scene segments, highlights, dead space, and editing suggestions. Results persist on the asset. Call before compose_from_media.",
|
|
606
|
+
inputSchema: AnalyzeMediaInputSchema,
|
|
607
|
+
execute: async ({ layerId, context }) => {
|
|
608
|
+
try {
|
|
609
|
+
const layer = project.layers.find(
|
|
610
|
+
(l) => l.id === layerId || l.name.toLowerCase() === layerId.toLowerCase()
|
|
611
|
+
);
|
|
612
|
+
if (!layer) {
|
|
613
|
+
const available = project.layers.map((l) => `"${l.name}" (id: ${l.id})`).join(", ");
|
|
614
|
+
return {
|
|
615
|
+
success: false,
|
|
616
|
+
message: `Layer "${layerId}" not found. Available: ${available}`,
|
|
617
|
+
error: "Layer not found"
|
|
618
|
+
};
|
|
619
|
+
}
|
|
620
|
+
if (layer.type !== "video" && layer.type !== "audio") {
|
|
621
|
+
return {
|
|
622
|
+
success: false,
|
|
623
|
+
message: `Layer "${layer.name}" is a ${layer.type} layer, not video/audio`,
|
|
624
|
+
error: "Not a media layer"
|
|
625
|
+
};
|
|
626
|
+
}
|
|
627
|
+
const fileKey = layer.props.fileKey;
|
|
628
|
+
if (!fileKey) {
|
|
629
|
+
return {
|
|
630
|
+
success: false,
|
|
631
|
+
message: `Layer "${layer.name}" has no media file uploaded`,
|
|
632
|
+
error: "No fileKey"
|
|
633
|
+
};
|
|
634
|
+
}
|
|
635
|
+
console.log(`[AI] Analyzing media: ${fileKey}`);
|
|
636
|
+
const result2 = await analyzeAndSaveMediaAsset(fileKey, context, user, locals.db);
|
|
637
|
+
if (!result2.success) {
|
|
638
|
+
return { success: false, message: result2.error, error: result2.error };
|
|
639
|
+
}
|
|
640
|
+
const annotation = result2.annotation;
|
|
641
|
+
const highlights = annotation.segments.filter((s) => s.type === "highlight");
|
|
642
|
+
const deadSpace = annotation.segments.filter((s) => s.type === "dead-space");
|
|
643
|
+
console.log(
|
|
644
|
+
`[AI] Media analysis complete: ${annotation.segments.length} segments, ${annotation.suggestedCuts.length} suggested cuts`
|
|
645
|
+
);
|
|
646
|
+
return {
|
|
647
|
+
success: true,
|
|
648
|
+
message: `Analyzed ${formatDuration(annotation.duration)} of ${annotation.modelUsed.split("/").pop()}. Found ${annotation.segments.length} segments (${highlights.length} highlights, ${deadSpace.length} dead space). ${annotation.suggestedCuts.length} cuts suggested.`,
|
|
649
|
+
summary: annotation.summary,
|
|
650
|
+
segmentCount: annotation.segments.length,
|
|
651
|
+
highlightCount: highlights.length,
|
|
652
|
+
deadSpaceCount: deadSpace.length,
|
|
653
|
+
suggestedCutsCount: annotation.suggestedCuts.length,
|
|
654
|
+
duration: annotation.duration,
|
|
655
|
+
topics: annotation.topics
|
|
656
|
+
};
|
|
657
|
+
} catch (err) {
|
|
658
|
+
console.error("[AI] Media analysis error:", err);
|
|
659
|
+
return {
|
|
660
|
+
success: false,
|
|
661
|
+
message: "Failed to analyze media",
|
|
662
|
+
error: err instanceof Error ? err.message : "Unknown error"
|
|
663
|
+
};
|
|
664
|
+
}
|
|
665
|
+
}
|
|
666
|
+
})
|
|
667
|
+
};
|
|
668
|
+
const allTools = { ...animationTools, ...serverTools };
|
|
669
|
+
const agent = new ToolLoopAgent({
|
|
670
|
+
model: openrouter(model.id, {
|
|
671
|
+
reasoning: {
|
|
672
|
+
effort: model.effort
|
|
673
|
+
}
|
|
674
|
+
}),
|
|
675
|
+
// Explicit output budget: without it some providers default to a few
|
|
676
|
+
// thousand tokens and long steps (reasoning + several tool calls) get
|
|
677
|
+
// truncated mid-tool-input, stranding the call in input-streaming.
|
|
678
|
+
...model.maxOutputTokens ? { maxOutputTokens: model.maxOutputTokens } : {},
|
|
679
|
+
providerOptions: {
|
|
680
|
+
openrouter: {
|
|
681
|
+
only: model.providerOnly
|
|
682
|
+
}
|
|
683
|
+
},
|
|
684
|
+
instructions: {
|
|
685
|
+
role: "system",
|
|
686
|
+
content: systemPrompt,
|
|
687
|
+
providerOptions: {
|
|
688
|
+
openrouter: {
|
|
689
|
+
cacheControl: {
|
|
690
|
+
type: "ephemeral"
|
|
691
|
+
},
|
|
692
|
+
sort: "price"
|
|
693
|
+
}
|
|
694
|
+
}
|
|
695
|
+
},
|
|
696
|
+
tools: allTools,
|
|
697
|
+
async onFinish(event) {
|
|
698
|
+
logAIInteraction({
|
|
699
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
700
|
+
modelId: model.id,
|
|
701
|
+
modelName: model.name,
|
|
702
|
+
systemPromptLength: systemPrompt.length,
|
|
703
|
+
userMessages: messages,
|
|
704
|
+
toolCalls: event.toolCalls,
|
|
705
|
+
responseMessages: event.response.messages,
|
|
706
|
+
requestData: event.request,
|
|
707
|
+
usage: event.usage
|
|
708
|
+
});
|
|
709
|
+
if (event.usage) {
|
|
710
|
+
await logAIUsage(
|
|
711
|
+
{
|
|
712
|
+
userId: user.id,
|
|
713
|
+
modelId: model.id,
|
|
714
|
+
promptTokens: event.usage.inputTokens || 0,
|
|
715
|
+
completionTokens: event.usage.outputTokens || 0,
|
|
716
|
+
metadata: {
|
|
717
|
+
projectName: project.name,
|
|
718
|
+
messageCount: messages.length,
|
|
719
|
+
toolCallCount: event.toolCalls?.length || 0
|
|
720
|
+
}
|
|
721
|
+
},
|
|
722
|
+
locals.db
|
|
723
|
+
);
|
|
724
|
+
}
|
|
725
|
+
await trackEvent(user.id, "ai_chat_message", {
|
|
726
|
+
modelId: model.id,
|
|
727
|
+
modelName: model.name,
|
|
728
|
+
projectId: project.id,
|
|
729
|
+
messageCount: messages.length,
|
|
730
|
+
toolCallCount: event.toolCalls?.length || 0,
|
|
731
|
+
inputTokens: event.usage?.inputTokens || 0,
|
|
732
|
+
outputTokens: event.usage?.outputTokens || 0,
|
|
733
|
+
plan: user.subscriptionTier
|
|
734
|
+
});
|
|
735
|
+
}
|
|
736
|
+
});
|
|
737
|
+
const result = await agent.stream({
|
|
738
|
+
messages: [
|
|
739
|
+
...enableCacheControl([...await convertToModelMessages(filteredMessages)]),
|
|
740
|
+
{
|
|
741
|
+
role: "system",
|
|
742
|
+
content: JSON.stringify(project)
|
|
743
|
+
}
|
|
744
|
+
]
|
|
745
|
+
});
|
|
746
|
+
return result.toUIMessageStreamResponse();
|
|
747
|
+
} catch (err) {
|
|
748
|
+
if (isHttpError(err)) {
|
|
749
|
+
throw err;
|
|
750
|
+
}
|
|
751
|
+
console.error("[AI] Error generating animation:", err);
|
|
752
|
+
if (err instanceof z.ZodError) {
|
|
753
|
+
error(400, `Validation error: ${err.message}`);
|
|
754
|
+
}
|
|
755
|
+
error(500, err instanceof Error ? err.message : "Failed to generate animation");
|
|
756
|
+
}
|
|
757
|
+
};
|
|
758
|
+
|
|
759
|
+
export { POST };
|
|
760
|
+
//# sourceMappingURL=_server.ts-CGs8hOo6.js.map
|