@koda-sl/baker-cli 0.39.29-dev.994437bd → 0.66.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (323) hide show
  1. package/README.md +1754 -7
  2. package/canvas/avocado-tutorial.json +89 -0
  3. package/canvas/hello-world-composition/index.html +83 -0
  4. package/canvas/hello-world-composition/meta.json +41 -0
  5. package/canvas/hello-world-overlay.json +37 -0
  6. package/canvas/phone-scroll-composition/index.html +141 -0
  7. package/canvas/phone-scroll-composition/meta.json +39 -0
  8. package/canvas/tiktok-captions-composition/index.html +126 -0
  9. package/canvas/tiktok-captions-composition/meta.json +46 -0
  10. package/canvas/video-overlay-composition/index.html +239 -0
  11. package/canvas/video-overlay-composition/meta.json +29 -0
  12. package/dist/cli.js +2 -0
  13. package/dist/cli.js.map +1 -1
  14. package/dist/commands/ads/meta/creatives.js +1 -1
  15. package/dist/commands/canvas/catalog.d.ts +2 -0
  16. package/dist/commands/canvas/catalog.d.ts.map +1 -0
  17. package/dist/commands/canvas/catalog.js +13 -0
  18. package/dist/commands/canvas/catalog.js.map +1 -0
  19. package/dist/commands/canvas/index.d.ts +2 -0
  20. package/dist/commands/canvas/index.d.ts.map +1 -0
  21. package/dist/commands/canvas/index.js +32 -0
  22. package/dist/commands/canvas/index.js.map +1 -0
  23. package/dist/commands/canvas/inspect.d.ts +16 -0
  24. package/dist/commands/canvas/inspect.d.ts.map +1 -0
  25. package/dist/commands/canvas/inspect.js +115 -0
  26. package/dist/commands/canvas/inspect.js.map +1 -0
  27. package/dist/commands/canvas/run.d.ts +24 -0
  28. package/dist/commands/canvas/run.d.ts.map +1 -0
  29. package/dist/commands/canvas/run.js +56 -0
  30. package/dist/commands/canvas/run.js.map +1 -0
  31. package/dist/commands/canvas/scaffold-static-ad.d.ts +40 -0
  32. package/dist/commands/canvas/scaffold-static-ad.d.ts.map +1 -0
  33. package/dist/commands/canvas/scaffold-static-ad.js +265 -0
  34. package/dist/commands/canvas/scaffold-static-ad.js.map +1 -0
  35. package/dist/commands/canvas/scaffold-video.d.ts +44 -0
  36. package/dist/commands/canvas/scaffold-video.d.ts.map +1 -0
  37. package/dist/commands/canvas/scaffold-video.js +235 -0
  38. package/dist/commands/canvas/scaffold-video.js.map +1 -0
  39. package/dist/commands/canvas/validate.d.ts +8 -0
  40. package/dist/commands/canvas/validate.d.ts.map +1 -0
  41. package/dist/commands/canvas/validate.js +37 -0
  42. package/dist/commands/canvas/validate.js.map +1 -0
  43. package/dist/commands/images/find.d.ts +1 -1
  44. package/dist/commands/images/find.d.ts.map +1 -1
  45. package/dist/commands/images/find.js +12 -3
  46. package/dist/commands/images/find.js.map +1 -1
  47. package/dist/commands/images/google.d.ts +1 -1
  48. package/dist/commands/images/google.d.ts.map +1 -1
  49. package/dist/commands/images/google.js +12 -3
  50. package/dist/commands/images/google.js.map +1 -1
  51. package/dist/commands/images/stock.d.ts +1 -1
  52. package/dist/commands/images/stock.d.ts.map +1 -1
  53. package/dist/commands/images/stock.js +7 -3
  54. package/dist/commands/images/stock.js.map +1 -1
  55. package/dist/commands/testimonials/list.d.ts.map +1 -1
  56. package/dist/commands/testimonials/list.js +21 -6
  57. package/dist/commands/testimonials/list.js.map +1 -1
  58. package/dist/commands/testimonials/search.d.ts.map +1 -1
  59. package/dist/commands/testimonials/search.js +21 -6
  60. package/dist/commands/testimonials/search.js.map +1 -1
  61. package/dist/commands/testimonials/search.test.js +3 -3
  62. package/dist/commands/testimonials/search.test.js.map +1 -1
  63. package/dist/engine/client/backend-client.d.ts +50 -0
  64. package/dist/engine/client/backend-client.d.ts.map +1 -0
  65. package/dist/engine/client/backend-client.js +20 -0
  66. package/dist/engine/client/backend-client.js.map +1 -0
  67. package/dist/engine/client/env.d.ts +7 -0
  68. package/dist/engine/client/env.d.ts.map +1 -0
  69. package/dist/engine/client/env.js +18 -0
  70. package/dist/engine/client/env.js.map +1 -0
  71. package/dist/engine/client/http.d.ts +56 -0
  72. package/dist/engine/client/http.d.ts.map +1 -0
  73. package/dist/engine/client/http.js +168 -0
  74. package/dist/engine/client/http.js.map +1 -0
  75. package/dist/engine/engine/cache-key.d.ts +19 -0
  76. package/dist/engine/engine/cache-key.d.ts.map +1 -0
  77. package/dist/engine/engine/cache-key.js +33 -0
  78. package/dist/engine/engine/cache-key.js.map +1 -0
  79. package/dist/engine/engine/canonical.d.ts +14 -0
  80. package/dist/engine/engine/canonical.d.ts.map +1 -0
  81. package/dist/engine/engine/canonical.js +53 -0
  82. package/dist/engine/engine/canonical.js.map +1 -0
  83. package/dist/engine/engine/composition-hash.d.ts +14 -0
  84. package/dist/engine/engine/composition-hash.d.ts.map +1 -0
  85. package/dist/engine/engine/composition-hash.js +51 -0
  86. package/dist/engine/engine/composition-hash.js.map +1 -0
  87. package/dist/engine/engine/composition-meta.d.ts +77 -0
  88. package/dist/engine/engine/composition-meta.d.ts.map +1 -0
  89. package/dist/engine/engine/composition-meta.js +199 -0
  90. package/dist/engine/engine/composition-meta.js.map +1 -0
  91. package/dist/engine/engine/context.d.ts +16 -0
  92. package/dist/engine/engine/context.d.ts.map +1 -0
  93. package/dist/engine/engine/context.js +2 -0
  94. package/dist/engine/engine/context.js.map +1 -0
  95. package/dist/engine/engine/define.d.ts +69 -0
  96. package/dist/engine/engine/define.d.ts.map +1 -0
  97. package/dist/engine/engine/define.js +9 -0
  98. package/dist/engine/engine/define.js.map +1 -0
  99. package/dist/engine/engine/didyoumean.d.ts +2 -0
  100. package/dist/engine/engine/didyoumean.d.ts.map +1 -0
  101. package/dist/engine/engine/didyoumean.js +58 -0
  102. package/dist/engine/engine/didyoumean.js.map +1 -0
  103. package/dist/engine/engine/errors.d.ts +41 -0
  104. package/dist/engine/engine/errors.d.ts.map +1 -0
  105. package/dist/engine/engine/errors.js +45 -0
  106. package/dist/engine/engine/errors.js.map +1 -0
  107. package/dist/engine/engine/executor.d.ts +72 -0
  108. package/dist/engine/engine/executor.d.ts.map +1 -0
  109. package/dist/engine/engine/executor.js +445 -0
  110. package/dist/engine/engine/executor.js.map +1 -0
  111. package/dist/engine/engine/refs.d.ts +12 -0
  112. package/dist/engine/engine/refs.d.ts.map +1 -0
  113. package/dist/engine/engine/refs.js +48 -0
  114. package/dist/engine/engine/refs.js.map +1 -0
  115. package/dist/engine/engine/registry.d.ts +11 -0
  116. package/dist/engine/engine/registry.d.ts.map +1 -0
  117. package/dist/engine/engine/registry.js +26 -0
  118. package/dist/engine/engine/registry.js.map +1 -0
  119. package/dist/engine/engine/scheduler.d.ts +10 -0
  120. package/dist/engine/engine/scheduler.d.ts.map +1 -0
  121. package/dist/engine/engine/scheduler.js +89 -0
  122. package/dist/engine/engine/scheduler.js.map +1 -0
  123. package/dist/engine/engine/validator.d.ts +31 -0
  124. package/dist/engine/engine/validator.d.ts.map +1 -0
  125. package/dist/engine/engine/validator.js +501 -0
  126. package/dist/engine/engine/validator.js.map +1 -0
  127. package/dist/engine/index.d.ts +33 -0
  128. package/dist/engine/index.d.ts.map +1 -0
  129. package/dist/engine/index.js +104 -0
  130. package/dist/engine/index.js.map +1 -0
  131. package/dist/engine/lib/ulid.d.ts +3 -0
  132. package/dist/engine/lib/ulid.d.ts.map +1 -0
  133. package/dist/engine/lib/ulid.js +36 -0
  134. package/dist/engine/lib/ulid.js.map +1 -0
  135. package/dist/engine/models/canvas-ad-params.test.d.ts +2 -0
  136. package/dist/engine/models/canvas-ad-params.test.d.ts.map +1 -0
  137. package/dist/engine/models/canvas-ad-params.test.js +60 -0
  138. package/dist/engine/models/canvas-ad-params.test.js.map +1 -0
  139. package/dist/engine/models/registry.d.ts +63 -0
  140. package/dist/engine/models/registry.d.ts.map +1 -0
  141. package/dist/engine/models/registry.js +432 -0
  142. package/dist/engine/models/registry.js.map +1 -0
  143. package/dist/engine/models/validateParams.d.ts +38 -0
  144. package/dist/engine/models/validateParams.d.ts.map +1 -0
  145. package/dist/engine/models/validateParams.js +166 -0
  146. package/dist/engine/models/validateParams.js.map +1 -0
  147. package/dist/engine/nodes/ingest.d.ts +113 -0
  148. package/dist/engine/nodes/ingest.d.ts.map +1 -0
  149. package/dist/engine/nodes/ingest.js +555 -0
  150. package/dist/engine/nodes/ingest.js.map +1 -0
  151. package/dist/engine/nodes/ingest.svg.test.d.ts +2 -0
  152. package/dist/engine/nodes/ingest.svg.test.d.ts.map +1 -0
  153. package/dist/engine/nodes/ingest.svg.test.js +30 -0
  154. package/dist/engine/nodes/ingest.svg.test.js.map +1 -0
  155. package/dist/engine/nodes/local/audioTimeline.d.ts +82 -0
  156. package/dist/engine/nodes/local/audioTimeline.d.ts.map +1 -0
  157. package/dist/engine/nodes/local/audioTimeline.js +97 -0
  158. package/dist/engine/nodes/local/audioTimeline.js.map +1 -0
  159. package/dist/engine/nodes/local/ffmpeg.d.ts +56 -0
  160. package/dist/engine/nodes/local/ffmpeg.d.ts.map +1 -0
  161. package/dist/engine/nodes/local/ffmpeg.js +50 -0
  162. package/dist/engine/nodes/local/ffmpeg.js.map +1 -0
  163. package/dist/engine/nodes/local/fontSpecimen.d.ts +50 -0
  164. package/dist/engine/nodes/local/fontSpecimen.d.ts.map +1 -0
  165. package/dist/engine/nodes/local/fontSpecimen.js +198 -0
  166. package/dist/engine/nodes/local/fontSpecimen.js.map +1 -0
  167. package/dist/engine/nodes/local/hyperframe-snapshot.d.ts +116 -0
  168. package/dist/engine/nodes/local/hyperframe-snapshot.d.ts.map +1 -0
  169. package/dist/engine/nodes/local/hyperframe-snapshot.js +230 -0
  170. package/dist/engine/nodes/local/hyperframe-snapshot.js.map +1 -0
  171. package/dist/engine/nodes/local/hyperframe.d.ts +123 -0
  172. package/dist/engine/nodes/local/hyperframe.d.ts.map +1 -0
  173. package/dist/engine/nodes/local/hyperframe.js +367 -0
  174. package/dist/engine/nodes/local/hyperframe.js.map +1 -0
  175. package/dist/engine/nodes/local/imagemagick.d.ts +56 -0
  176. package/dist/engine/nodes/local/imagemagick.d.ts.map +1 -0
  177. package/dist/engine/nodes/local/imagemagick.js +71 -0
  178. package/dist/engine/nodes/local/imagemagick.js.map +1 -0
  179. package/dist/engine/nodes/local/lib/assets.d.ts +20 -0
  180. package/dist/engine/nodes/local/lib/assets.d.ts.map +1 -0
  181. package/dist/engine/nodes/local/lib/assets.js +40 -0
  182. package/dist/engine/nodes/local/lib/assets.js.map +1 -0
  183. package/dist/engine/nodes/local/lib/cli-runner.d.ts +78 -0
  184. package/dist/engine/nodes/local/lib/cli-runner.d.ts.map +1 -0
  185. package/dist/engine/nodes/local/lib/cli-runner.js +254 -0
  186. package/dist/engine/nodes/local/lib/cli-runner.js.map +1 -0
  187. package/dist/engine/nodes/local/lib/ffmpeg.d.ts +23 -0
  188. package/dist/engine/nodes/local/lib/ffmpeg.d.ts.map +1 -0
  189. package/dist/engine/nodes/local/lib/ffmpeg.js +75 -0
  190. package/dist/engine/nodes/local/lib/ffmpeg.js.map +1 -0
  191. package/dist/engine/nodes/local/lib/hyperframe-errors.d.ts +2 -0
  192. package/dist/engine/nodes/local/lib/hyperframe-errors.d.ts.map +1 -0
  193. package/dist/engine/nodes/local/lib/hyperframe-errors.js +47 -0
  194. package/dist/engine/nodes/local/lib/hyperframe-errors.js.map +1 -0
  195. package/dist/engine/nodes/local/lib/templating.d.ts +22 -0
  196. package/dist/engine/nodes/local/lib/templating.d.ts.map +1 -0
  197. package/dist/engine/nodes/local/lib/templating.js +85 -0
  198. package/dist/engine/nodes/local/lib/templating.js.map +1 -0
  199. package/dist/engine/nodes/local/text.d.ts +6 -0
  200. package/dist/engine/nodes/local/text.d.ts.map +1 -0
  201. package/dist/engine/nodes/local/text.js +15 -0
  202. package/dist/engine/nodes/local/text.js.map +1 -0
  203. package/dist/engine/nodes/remote/delegate.d.ts +25 -0
  204. package/dist/engine/nodes/remote/delegate.d.ts.map +1 -0
  205. package/dist/engine/nodes/remote/delegate.js +160 -0
  206. package/dist/engine/nodes/remote/delegate.js.map +1 -0
  207. package/dist/engine/nodes/remote/dialogue.d.ts +34 -0
  208. package/dist/engine/nodes/remote/dialogue.d.ts.map +1 -0
  209. package/dist/engine/nodes/remote/dialogue.js +54 -0
  210. package/dist/engine/nodes/remote/dialogue.js.map +1 -0
  211. package/dist/engine/nodes/remote/image.d.ts +42 -0
  212. package/dist/engine/nodes/remote/image.d.ts.map +1 -0
  213. package/dist/engine/nodes/remote/image.js +43 -0
  214. package/dist/engine/nodes/remote/image.js.map +1 -0
  215. package/dist/engine/nodes/remote/imageAspectAdapt.d.ts +30 -0
  216. package/dist/engine/nodes/remote/imageAspectAdapt.d.ts.map +1 -0
  217. package/dist/engine/nodes/remote/imageAspectAdapt.js +42 -0
  218. package/dist/engine/nodes/remote/imageAspectAdapt.js.map +1 -0
  219. package/dist/engine/nodes/remote/imageBackgroundRemove.d.ts +39 -0
  220. package/dist/engine/nodes/remote/imageBackgroundRemove.d.ts.map +1 -0
  221. package/dist/engine/nodes/remote/imageBackgroundRemove.js +37 -0
  222. package/dist/engine/nodes/remote/imageBackgroundRemove.js.map +1 -0
  223. package/dist/engine/nodes/remote/imageDescribe.d.ts +29 -0
  224. package/dist/engine/nodes/remote/imageDescribe.d.ts.map +1 -0
  225. package/dist/engine/nodes/remote/imageDescribe.js +25 -0
  226. package/dist/engine/nodes/remote/imageDescribe.js.map +1 -0
  227. package/dist/engine/nodes/remote/imageReferenceSheet.d.ts +34 -0
  228. package/dist/engine/nodes/remote/imageReferenceSheet.d.ts.map +1 -0
  229. package/dist/engine/nodes/remote/imageReferenceSheet.js +38 -0
  230. package/dist/engine/nodes/remote/imageReferenceSheet.js.map +1 -0
  231. package/dist/engine/nodes/remote/imageSearch.d.ts +18 -0
  232. package/dist/engine/nodes/remote/imageSearch.d.ts.map +1 -0
  233. package/dist/engine/nodes/remote/imageSearch.js +22 -0
  234. package/dist/engine/nodes/remote/imageSearch.js.map +1 -0
  235. package/dist/engine/nodes/remote/imageSelect.d.ts +39 -0
  236. package/dist/engine/nodes/remote/imageSelect.d.ts.map +1 -0
  237. package/dist/engine/nodes/remote/imageSelect.js +45 -0
  238. package/dist/engine/nodes/remote/imageSelect.js.map +1 -0
  239. package/dist/engine/nodes/remote/music.d.ts +45 -0
  240. package/dist/engine/nodes/remote/music.d.ts.map +1 -0
  241. package/dist/engine/nodes/remote/music.js +73 -0
  242. package/dist/engine/nodes/remote/music.js.map +1 -0
  243. package/dist/engine/nodes/remote/soundEffect.d.ts +21 -0
  244. package/dist/engine/nodes/remote/soundEffect.d.ts.map +1 -0
  245. package/dist/engine/nodes/remote/soundEffect.js +41 -0
  246. package/dist/engine/nodes/remote/soundEffect.js.map +1 -0
  247. package/dist/engine/nodes/remote/textGenerate.d.ts +21 -0
  248. package/dist/engine/nodes/remote/textGenerate.d.ts.map +1 -0
  249. package/dist/engine/nodes/remote/textGenerate.js +27 -0
  250. package/dist/engine/nodes/remote/textGenerate.js.map +1 -0
  251. package/dist/engine/nodes/remote/tts.d.ts +45 -0
  252. package/dist/engine/nodes/remote/tts.d.ts.map +1 -0
  253. package/dist/engine/nodes/remote/tts.js +66 -0
  254. package/dist/engine/nodes/remote/tts.js.map +1 -0
  255. package/dist/engine/nodes/remote/video.d.ts +58 -0
  256. package/dist/engine/nodes/remote/video.d.ts.map +1 -0
  257. package/dist/engine/nodes/remote/video.js +44 -0
  258. package/dist/engine/nodes/remote/video.js.map +1 -0
  259. package/dist/engine/nodes/remote/videoBackgroundRemove.d.ts +30 -0
  260. package/dist/engine/nodes/remote/videoBackgroundRemove.d.ts.map +1 -0
  261. package/dist/engine/nodes/remote/videoBackgroundRemove.js +29 -0
  262. package/dist/engine/nodes/remote/videoBackgroundRemove.js.map +1 -0
  263. package/dist/engine/nodes/remote/videoDeconstruct.d.ts +61 -0
  264. package/dist/engine/nodes/remote/videoDeconstruct.d.ts.map +1 -0
  265. package/dist/engine/nodes/remote/videoDeconstruct.js +40 -0
  266. package/dist/engine/nodes/remote/videoDeconstruct.js.map +1 -0
  267. package/dist/engine/nodes/remote/videoLipsync.d.ts +37 -0
  268. package/dist/engine/nodes/remote/videoLipsync.d.ts.map +1 -0
  269. package/dist/engine/nodes/remote/videoLipsync.js +26 -0
  270. package/dist/engine/nodes/remote/videoLipsync.js.map +1 -0
  271. package/dist/engine/nodes/remote/videoTranscribe.d.ts +116 -0
  272. package/dist/engine/nodes/remote/videoTranscribe.d.ts.map +1 -0
  273. package/dist/engine/nodes/remote/videoTranscribe.js +123 -0
  274. package/dist/engine/nodes/remote/videoTranscribe.js.map +1 -0
  275. package/dist/engine/nodes/remote/voiceSelect.d.ts +28 -0
  276. package/dist/engine/nodes/remote/voiceSelect.d.ts.map +1 -0
  277. package/dist/engine/nodes/remote/voiceSelect.js +25 -0
  278. package/dist/engine/nodes/remote/voiceSelect.js.map +1 -0
  279. package/dist/engine/scaffold/staticAd.d.ts +44 -0
  280. package/dist/engine/scaffold/staticAd.d.ts.map +1 -0
  281. package/dist/engine/scaffold/staticAd.js +243 -0
  282. package/dist/engine/scaffold/staticAd.js.map +1 -0
  283. package/dist/engine/scaffold/video.d.ts +56 -0
  284. package/dist/engine/scaffold/video.d.ts.map +1 -0
  285. package/dist/engine/scaffold/video.js +709 -0
  286. package/dist/engine/scaffold/video.js.map +1 -0
  287. package/dist/engine/schema/canvas.d.ts +41 -0
  288. package/dist/engine/schema/canvas.d.ts.map +1 -0
  289. package/dist/engine/schema/canvas.js +67 -0
  290. package/dist/engine/schema/canvas.js.map +1 -0
  291. package/dist/engine/schema/catalog.d.ts +25 -0
  292. package/dist/engine/schema/catalog.d.ts.map +1 -0
  293. package/dist/engine/schema/catalog.js +48 -0
  294. package/dist/engine/schema/catalog.js.map +1 -0
  295. package/dist/engine/schema/primitives.d.ts +6 -0
  296. package/dist/engine/schema/primitives.d.ts.map +1 -0
  297. package/dist/engine/schema/primitives.js +4 -0
  298. package/dist/engine/schema/primitives.js.map +1 -0
  299. package/dist/engine/schema/prompts.d.ts +4 -0
  300. package/dist/engine/schema/prompts.d.ts.map +1 -0
  301. package/dist/engine/schema/prompts.js +23 -0
  302. package/dist/engine/schema/prompts.js.map +1 -0
  303. package/dist/engine/schema/refs.d.ts +113 -0
  304. package/dist/engine/schema/refs.d.ts.map +1 -0
  305. package/dist/engine/schema/refs.js +35 -0
  306. package/dist/engine/schema/refs.js.map +1 -0
  307. package/dist/engine/storage/asset-store.d.ts +48 -0
  308. package/dist/engine/storage/asset-store.d.ts.map +1 -0
  309. package/dist/engine/storage/asset-store.js +166 -0
  310. package/dist/engine/storage/asset-store.js.map +1 -0
  311. package/dist/engine/storage/cache-store.d.ts +21 -0
  312. package/dist/engine/storage/cache-store.d.ts.map +1 -0
  313. package/dist/engine/storage/cache-store.js +31 -0
  314. package/dist/engine/storage/cache-store.js.map +1 -0
  315. package/dist/engine/storage/output-writer.d.ts +18 -0
  316. package/dist/engine/storage/output-writer.d.ts.map +1 -0
  317. package/dist/engine/storage/output-writer.js +52 -0
  318. package/dist/engine/storage/output-writer.js.map +1 -0
  319. package/dist/engine/storage/sha256.d.ts +2 -0
  320. package/dist/engine/storage/sha256.d.ts.map +1 -0
  321. package/dist/engine/storage/sha256.js +7 -0
  322. package/dist/engine/storage/sha256.js.map +1 -0
  323. package/package.json +15 -3
@@ -0,0 +1,27 @@
1
+ import { z } from "zod";
2
+ import { TextRef } from "../../schema/refs.js";
3
+ import { delegated } from "./delegate.js";
4
+ const TEXT_GENERATE_MODELS = ["~google/gemini-flash-latest", "~google/gemini-pro-latest"];
5
+ export const textGenerateNode = delegated({
6
+ id: "text_generate",
7
+ version: "2.2.0",
8
+ category: "language",
9
+ summary: "Single-turn LLM text generation via OpenRouter. Returns a text response.",
10
+ when_to_use: 'Use for any short text generation step in a canvas — ad copy, hooks, headlines, JSON outputs for downstream nodes. Pick `~google/gemini-flash-latest` for cheap/fast work and `~google/gemini-pro-latest` for harder reasoning. When the output must be JSON for a downstream `{{slot}}` (e.g. the ad-blueprint transform), set `response_format: "json_object"` so the model returns clean JSON with no markdown fences or prose. Set `web_search: true` to let the model search the live web first (OpenRouter `:online`) — useful when the transform must adapt copy to the target brand\'s real facts (current pricing, the trust signals it actually has) rather than guess.',
11
+ inputs: z.object({}).loose(),
12
+ params: z
13
+ .object({
14
+ model: z.enum(TEXT_GENERATE_MODELS),
15
+ prompt: z.string().min(1),
16
+ system: z.string().optional(),
17
+ response_format: z.enum(["text", "json_object"]).optional(),
18
+ web_search: z.boolean().optional(),
19
+ temperature: z.number().min(0).max(2).optional(),
20
+ max_tokens: z.number().int().positive().optional(),
21
+ })
22
+ .strict(),
23
+ outputs: z.object({ text: TextRef }).strict(),
24
+ outputKinds: { text: "text" },
25
+ cost: () => ({ credits: 1, seconds_estimate: 3 }),
26
+ });
27
+ //# sourceMappingURL=textGenerate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textGenerate.js","sourceRoot":"","sources":["../../../../src/engine/nodes/remote/textGenerate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,MAAM,oBAAoB,GAAG,CAAC,6BAA6B,EAAE,2BAA2B,CAAU,CAAC;AAEnG,MAAM,CAAC,MAAM,gBAAgB,GAAG,SAAS,CAAC;IACxC,EAAE,EAAE,eAAe;IACnB,OAAO,EAAE,OAAO;IAChB,QAAQ,EAAE,UAAU;IACpB,OAAO,EAAE,0EAA0E;IACnF,WAAW,EACT,mpBAAmpB;IACrpB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE;IAC5B,MAAM,EAAE,CAAC;SACN,MAAM,CAAC;QACN,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC;QACnC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACzB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE;QAC3D,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;QAClC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QAChD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;KACnD,CAAC;SACD,MAAM,EAAE;IACX,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IAC7C,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;IAC7B,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,CAAC;CAClD,CAAC,CAAC"}
@@ -0,0 +1,45 @@
1
+ export declare const ttsNode: import("../../engine/define.ts").NodeDefinition<{
2
+ [x: string]: unknown;
3
+ }, {
4
+ model: "elevenlabs/eleven_v3";
5
+ text: string;
6
+ voice: string;
7
+ output_format?: "mp3_22050_32" | "mp3_44100_32" | "mp3_44100_64" | "mp3_44100_96" | "mp3_44100_128" | "mp3_44100_192" | undefined;
8
+ seed?: number | undefined;
9
+ stability?: number | undefined;
10
+ similarity_boost?: number | undefined;
11
+ voice_settings?: {
12
+ stability?: number | undefined;
13
+ similarity_boost?: number | undefined;
14
+ style?: number | undefined;
15
+ use_speaker_boost?: boolean | undefined;
16
+ speed?: number | undefined;
17
+ } | undefined;
18
+ language_code?: string | undefined;
19
+ pronunciation_dictionary_locators?: {
20
+ pronunciation_dictionary_id: string;
21
+ version_id?: string | null | undefined;
22
+ }[] | undefined;
23
+ apply_text_normalization?: "off" | "on" | "auto" | undefined;
24
+ apply_language_text_normalization?: boolean | undefined;
25
+ with_timestamps?: boolean | undefined;
26
+ }, {
27
+ audio: {
28
+ sha256: string;
29
+ mime: string;
30
+ kind: "audio";
31
+ url?: string | undefined;
32
+ path?: string | undefined;
33
+ metadata?: Record<string, unknown> | undefined;
34
+ duration_ms?: number | undefined;
35
+ };
36
+ timestamps?: {
37
+ sha256: string;
38
+ mime: string;
39
+ kind: "json";
40
+ url?: string | undefined;
41
+ path?: string | undefined;
42
+ metadata?: Record<string, unknown> | undefined;
43
+ } | undefined;
44
+ }>;
45
+ //# sourceMappingURL=tts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tts.d.ts","sourceRoot":"","sources":["../../../../src/engine/nodes/remote/tts.ts"],"names":[],"mappings":"AA2DA,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgBlB,CAAC"}
@@ -0,0 +1,66 @@
1
+ import { z } from "zod";
2
+ import { ELEVENLABS_MAX_TEXT_CHARS, ELEVENLABS_OUTPUT_FORMATS } from "../../models/registry.js";
3
+ import { AudioRef, JsonRef } from "../../schema/refs.js";
4
+ import { delegated } from "./delegate.js";
5
+ const TTS_MODELS = ["elevenlabs/eleven_v3"];
6
+ /**
7
+ * ElevenLabs voice settings passthrough. Mirrors the provider's
8
+ * `voice_settings` object.
9
+ */
10
+ const TtsVoiceSettings = z
11
+ .object({
12
+ stability: z.number().min(0).max(1).optional(),
13
+ similarity_boost: z.number().min(0).max(1).optional(),
14
+ style: z.number().min(0).max(1).optional(),
15
+ use_speaker_boost: z.boolean().optional(),
16
+ speed: z.number().min(0.25).max(4.0).optional(),
17
+ })
18
+ .strict();
19
+ const TtsPronunciationLocator = z
20
+ .object({
21
+ pronunciation_dictionary_id: z.string().min(1),
22
+ version_id: z.string().nullable().optional(),
23
+ })
24
+ .strict();
25
+ const TtsParams = z
26
+ .object({
27
+ model: z.enum(TTS_MODELS),
28
+ text: z.string().min(1).max(ELEVENLABS_MAX_TEXT_CHARS),
29
+ voice: z.string().min(1),
30
+ /** Provider output_format (mp3 family only — assets are stored as audio/mpeg). */
31
+ output_format: z.enum(ELEVENLABS_OUTPUT_FORMATS).optional(),
32
+ seed: z.number().int().min(0).max(4_294_967_295).optional(),
33
+ // Top-level shortcuts; structured form is `voice_settings`.
34
+ stability: z.number().min(0).max(1).optional(),
35
+ similarity_boost: z.number().min(0).max(1).optional(),
36
+ voice_settings: TtsVoiceSettings.optional(),
37
+ /** ISO 639-1 language code. eleven_v3 supports language hints. */
38
+ language_code: z.string().optional(),
39
+ pronunciation_dictionary_locators: z.array(TtsPronunciationLocator).max(3).optional(),
40
+ apply_text_normalization: z.enum(["auto", "on", "off"]).optional(),
41
+ /** Currently Japanese-only. Adds latency. */
42
+ apply_language_text_normalization: z.boolean().optional(),
43
+ /**
44
+ * When true, hits `/v1/text-to-speech/{voice_id}/with-timestamps` and
45
+ * adds a `timestamps` output (character-level alignment) for caption
46
+ * rendering, lipsync, and beat-matched cuts.
47
+ */
48
+ with_timestamps: z.boolean().optional(),
49
+ })
50
+ .strict();
51
+ export const ttsNode = delegated({
52
+ id: "tts",
53
+ version: "2.0.0",
54
+ category: "audio",
55
+ summary: "Single-voice text-to-speech via ElevenLabs Eleven v3. Optional character-level timestamps for caption rendering and beat-matched cuts.",
56
+ when_to_use: "Use for single-speaker VO — ad reads, hero-section narration, product walkthroughs. Reach for `dialogue` when you need multiple voices in one stitched track. Set `with_timestamps: true` when downstream needs character-level alignment (captions, lipsync).",
57
+ inputs: z.object({}).loose(),
58
+ params: TtsParams,
59
+ outputs: z.object({ audio: AudioRef, timestamps: JsonRef.optional() }).strict(),
60
+ outputKinds: { audio: "audio", timestamps: "json" },
61
+ cost: ({ params }) => ({
62
+ credits: Math.max(1, Math.ceil(params.text.length * 0.0015)),
63
+ seconds_estimate: params.with_timestamps ? 7 : 5,
64
+ }),
65
+ });
66
+ //# sourceMappingURL=tts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tts.js","sourceRoot":"","sources":["../../../../src/engine/nodes/remote/tts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ export declare const videoGenerateNode: import("../../engine/define.ts").NodeDefinition<{
2
+ [x: string]: unknown;
3
+ first_frame?: {
4
+ sha256: string;
5
+ mime: string;
6
+ kind: "image";
7
+ url?: string | undefined;
8
+ path?: string | undefined;
9
+ metadata?: Record<string, unknown> | undefined;
10
+ width?: number | undefined;
11
+ height?: number | undefined;
12
+ } | undefined;
13
+ last_frame?: {
14
+ sha256: string;
15
+ mime: string;
16
+ kind: "image";
17
+ url?: string | undefined;
18
+ path?: string | undefined;
19
+ metadata?: Record<string, unknown> | undefined;
20
+ width?: number | undefined;
21
+ height?: number | undefined;
22
+ } | undefined;
23
+ reference?: {
24
+ sha256: string;
25
+ mime: string;
26
+ kind: "image";
27
+ url?: string | undefined;
28
+ path?: string | undefined;
29
+ metadata?: Record<string, unknown> | undefined;
30
+ width?: number | undefined;
31
+ height?: number | undefined;
32
+ } | undefined;
33
+ }, {
34
+ model: "bytedance/seedance-2.0" | "google/veo-3.1-fast";
35
+ prompt: string;
36
+ duration?: number | undefined;
37
+ resolution?: string | undefined;
38
+ aspect_ratio?: "1:1" | "16:9" | "9:16" | "3:4" | "4:3" | "21:9" | "9:21" | undefined;
39
+ generate_audio?: boolean | undefined;
40
+ seed?: number | undefined;
41
+ negative_prompt?: string | undefined;
42
+ person_generation?: string | undefined;
43
+ enhance_prompt?: boolean | undefined;
44
+ conditioning_scale?: number | undefined;
45
+ }, {
46
+ video: {
47
+ sha256: string;
48
+ mime: string;
49
+ kind: "video";
50
+ url?: string | undefined;
51
+ path?: string | undefined;
52
+ metadata?: Record<string, unknown> | undefined;
53
+ width?: number | undefined;
54
+ height?: number | undefined;
55
+ duration_ms?: number | undefined;
56
+ };
57
+ }>;
58
+ //# sourceMappingURL=video.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"video.d.ts","sourceRoot":"","sources":["../../../../src/engine/nodes/remote/video.ts"],"names":[],"mappings":"AA4BA,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmB5B,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { z } from "zod";
2
+ import { ImageRef, VideoRef } from "../../schema/refs.js";
3
+ import { delegated } from "./delegate.js";
4
+ const VIDEO_GENERATE_MODELS = ["bytedance/seedance-2.0", "google/veo-3.1-fast"];
5
+ // Permissive union of every param accepted by either curated model. The
6
+ // registry gates per-model: e.g. Seedance rejects `negative_prompt`, Veo
7
+ // accepts it. Enum values for `duration`/`resolution` are also gated there.
8
+ const VideoGenerateParams = z
9
+ .object({
10
+ model: z.enum(VIDEO_GENERATE_MODELS),
11
+ prompt: z.string().min(1),
12
+ duration: z.number().int().positive().optional(),
13
+ resolution: z.string().optional(),
14
+ // Union of ratios accepted by at least one curated model (registry gates
15
+ // per-model). 3:2/2:3 are deliberately absent: no registered model takes them.
16
+ aspect_ratio: z.enum(["16:9", "9:16", "1:1", "4:3", "3:4", "21:9", "9:21"]).optional(),
17
+ generate_audio: z.boolean().optional(),
18
+ seed: z.number().int().nonnegative().optional(),
19
+ // Veo-only passthroughs (routed via `provider.options.google-vertex.parameters`).
20
+ negative_prompt: z.string().optional(),
21
+ person_generation: z.string().optional(),
22
+ enhance_prompt: z.boolean().optional(),
23
+ conditioning_scale: z.number().optional(),
24
+ })
25
+ .strict();
26
+ export const videoGenerateNode = delegated({
27
+ id: "video_generate",
28
+ version: "2.0.0",
29
+ category: "video",
30
+ summary: "Generate video for ad creatives. Two curated models: `bytedance/seedance-2.0` (production quality, photorealistic humans via fal.ai) and `google/veo-3.1-fast` (cheap/fast for iteration and tests). Async with polling.",
31
+ when_to_use: "Use `bytedance/seedance-2.0` for final ad output (photoreal subjects, image-to-video with first/last frames). Use `google/veo-3.1-fast` while iterating to keep cost low. Each model has different supported durations, resolutions, and aspect ratios — see the README per-model section.",
32
+ inputs: z
33
+ .object({
34
+ first_frame: ImageRef.optional(),
35
+ last_frame: ImageRef.optional(),
36
+ reference: ImageRef.optional(),
37
+ })
38
+ .loose(),
39
+ params: VideoGenerateParams,
40
+ outputs: z.object({ video: VideoRef }).strict(),
41
+ outputKinds: { video: "video" },
42
+ cost: () => ({ credits: 50, seconds_estimate: 120 }),
43
+ });
44
+ //# sourceMappingURL=video.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"video.js","sourceRoot":"","sources":["../../../../src/engine/nodes/remote/video.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,MAAM,qBAAqB,GAAG,CAAC,wBAAwB,EAAE,qBAAqB,CAAU,CAAC;AAEzF,wEAAwE;AACxE,yEAAyE;AACzE,4EAA4E;AAC5E,MAAM,mBAAmB,GAAG,CAAC;KAC1B,MAAM,CAAC;IACN,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC;IACpC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAChD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,yEAAyE;IACzE,+EAA+E;IAC/E,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE;IACtF,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACtC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IAC/C,kFAAkF;IAClF,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACtC,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACxC,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACtC,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC1C,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,iBAAiB,GAAG,SAAS,CAAC;IACzC,EAAE,EAAE,gBAAgB;IACpB,OAAO,EAAE,OAAO;IAChB,QAAQ,EAAE,OAAO;IACjB,OAAO,EACL,0NAA0N;IAC5N,WAAW,EACT,4RAA4R;IAC9R,MAAM,EAAE,CAAC;SACN,MAAM,CAAC;QACN,WAAW,EAAE,QAAQ,CAAC,QAAQ,EAAE;QAChC,UAAU,EAAE,QAAQ,CAAC,QAAQ,EAAE;QAC/B,SAAS,EAAE,QAAQ,CAAC,QAAQ,EAAE;KAC/B,CAAC;SACD,KAAK,EAAE;IACV,MAAM,EAAE,mBAAmB;IAC3B,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IAC/C,WAAW,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;IAC/B,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,gBAAgB,EAAE,GAAG,EAAE,CAAC;CACrD,CAAC,CAAC"}
@@ -0,0 +1,30 @@
1
+ export declare const videoBackgroundRemoveNode: import("../../engine/define.ts").NodeDefinition<{
2
+ video: {
3
+ sha256: string;
4
+ mime: string;
5
+ kind: "video";
6
+ url?: string | undefined;
7
+ path?: string | undefined;
8
+ metadata?: Record<string, unknown> | undefined;
9
+ width?: number | undefined;
10
+ height?: number | undefined;
11
+ duration_ms?: number | undefined;
12
+ };
13
+ }, {
14
+ model: "fal/veed-video-background-removal";
15
+ edge_refinement: boolean;
16
+ output_codec: "vp9" | "h264";
17
+ }, {
18
+ video: {
19
+ sha256: string;
20
+ mime: string;
21
+ kind: "video";
22
+ url?: string | undefined;
23
+ path?: string | undefined;
24
+ metadata?: Record<string, unknown> | undefined;
25
+ width?: number | undefined;
26
+ height?: number | undefined;
27
+ duration_ms?: number | undefined;
28
+ };
29
+ }>;
30
+ //# sourceMappingURL=videoBackgroundRemove.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"videoBackgroundRemove.d.ts","sourceRoot":"","sources":["../../../../src/engine/nodes/remote/videoBackgroundRemove.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmBpC,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { z } from "zod";
2
+ import { VideoRef } from "../../schema/refs.js";
3
+ import { delegated } from "./delegate.js";
4
+ const VideoBackgroundRemoveParams = z
5
+ .object({
6
+ model: z.literal("fal/veed-video-background-removal").optional().default("fal/veed-video-background-removal"),
7
+ edge_refinement: z.boolean().optional().default(true),
8
+ output_codec: z.enum(["vp9", "h264"]).optional().default("vp9"),
9
+ })
10
+ .strict();
11
+ export const videoBackgroundRemoveNode = delegated({
12
+ id: "video_background_remove",
13
+ version: "1.0.0",
14
+ category: "video",
15
+ summary: "Remove the background from a video and return a transparent VP9-with-alpha WebM (or H264 RGB+alpha pair). Drops directly into a hyperframe composition as `<video src='...'>` for chroma-keyed picture-in-picture overlays. Powered by fal.ai `veed/video-background-removal/fast`.",
16
+ when_to_use: "Use when you need a talking-head or subject to float over a custom background in a hyperframe composition. Pair with hyperframe_render(composition: screencast-with-talker) for screencast-with-narrator videos. " +
17
+ "Output is `video/webm` with alpha — feed straight into `<video src>` in a composition.",
18
+ inputs: z
19
+ .object({
20
+ video: VideoRef,
21
+ })
22
+ .strict(),
23
+ params: VideoBackgroundRemoveParams,
24
+ outputs: z.object({ video: VideoRef }).strict(),
25
+ outputKinds: { video: "video" },
26
+ // $0.012 per 30 frames (edge refinement on) — assume ~30fps; refine via fal dashboard.
27
+ cost: () => ({ credits: 50, seconds_estimate: 60 }),
28
+ });
29
+ //# sourceMappingURL=videoBackgroundRemove.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"videoBackgroundRemove.js","sourceRoot":"","sources":["../../../../src/engine/nodes/remote/videoBackgroundRemove.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,MAAM,2BAA2B,GAAG,CAAC;KAClC,MAAM,CAAC;IACN,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,mCAAmC,CAAC;IAC7G,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACrD,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CAChE,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,yBAAyB,GAAG,SAAS,CAAC;IACjD,EAAE,EAAE,yBAAyB;IAC7B,OAAO,EAAE,OAAO;IAChB,QAAQ,EAAE,OAAO;IACjB,OAAO,EACL,qRAAqR;IACvR,WAAW,EACT,mNAAmN;QACnN,wFAAwF;IAC1F,MAAM,EAAE,CAAC;SACN,MAAM,CAAC;QACN,KAAK,EAAE,QAAQ;KAChB,CAAC;SACD,MAAM,EAAE;IACX,MAAM,EAAE,2BAA2B;IACnC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IAC/C,WAAW,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;IAC/B,uFAAuF;IACvF,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC;CACpD,CAAC,CAAC"}
@@ -0,0 +1,61 @@
1
+ export declare const videoDeconstructNode: import("../../engine/define.ts").NodeDefinition<{
2
+ [x: string]: unknown;
3
+ video: {
4
+ sha256: string;
5
+ mime: string;
6
+ kind: "video";
7
+ url?: string | undefined;
8
+ path?: string | undefined;
9
+ metadata?: Record<string, unknown> | undefined;
10
+ width?: number | undefined;
11
+ height?: number | undefined;
12
+ duration_ms?: number | undefined;
13
+ };
14
+ }, {
15
+ model: "~google/gemini-flash-latest" | "~google/gemini-pro-latest";
16
+ mode?: "index" | "full" | undefined;
17
+ language?: string | undefined;
18
+ max_scenes?: number | undefined;
19
+ focus?: string | undefined;
20
+ start_s?: number | undefined;
21
+ end_s?: number | undefined;
22
+ transcriber?: "groq" | "deepgram" | undefined;
23
+ }, {
24
+ analysis: {
25
+ sha256: string;
26
+ mime: string;
27
+ kind: "json";
28
+ url?: string | undefined;
29
+ path?: string | undefined;
30
+ metadata?: Record<string, unknown> | undefined;
31
+ };
32
+ transcript: {
33
+ sha256: string;
34
+ mime: string;
35
+ kind: "json";
36
+ url?: string | undefined;
37
+ path?: string | undefined;
38
+ metadata?: Record<string, unknown> | undefined;
39
+ };
40
+ start_frames?: {
41
+ sha256: string;
42
+ mime: string;
43
+ kind: "image";
44
+ url?: string | undefined;
45
+ path?: string | undefined;
46
+ metadata?: Record<string, unknown> | undefined;
47
+ width?: number | undefined;
48
+ height?: number | undefined;
49
+ }[] | undefined;
50
+ end_frames?: {
51
+ sha256: string;
52
+ mime: string;
53
+ kind: "image";
54
+ url?: string | undefined;
55
+ path?: string | undefined;
56
+ metadata?: Record<string, unknown> | undefined;
57
+ width?: number | undefined;
58
+ height?: number | undefined;
59
+ }[] | undefined;
60
+ }>;
61
+ //# sourceMappingURL=videoDeconstruct.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"videoDeconstruct.d.ts","sourceRoot":"","sources":["../../../../src/engine/nodes/remote/videoDeconstruct.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqC/B,CAAC"}
@@ -0,0 +1,40 @@
1
+ import { z } from "zod";
2
+ import { ImageRef, JsonRef, VideoRef } from "../../schema/refs.js";
3
+ import { delegated } from "./delegate.js";
4
+ const VIDEO_DECONSTRUCT_MODELS = ["~google/gemini-flash-latest", "~google/gemini-pro-latest"];
5
+ export const videoDeconstructNode = delegated({
6
+ id: "video_deconstruct",
7
+ version: "1.3.0",
8
+ category: "video",
9
+ summary: 'Deconstruct a video into a replication-grade blueprint: scene boundaries, the real start/end frame of every scene (extracted from the video as images), and an exhaustive JSON analysis — per-scene action detail, camera motion, generation-ready frame/motion prompts, overlay text with full typographic style, floating elements, deeply detailed cast (perceived demographics, ethnicity/skin-tone, styling, market-recasting notes), brand-identified logos (named by brand and what they signal, not by appearance, with on-screen timestamps), dialogue with voice descriptions, music spec, SFX list, plus a word-level transcript. `mode:"index"` is the cheap structure-first pass: scene boundaries + global blueprint only (one LLM call, no frames).',
10
+ when_to_use: 'Use to reverse-engineer a reference video (e.g. a competitor ad) so a new canvas can reproduce or remix it scene by scene. Agent loop: (1) optionally run `mode:"index"` to see the structure cheaply (scene count, boundaries, transcript) before planning; (2) run the full deconstruct; (3) read `analysis` and author the reproduction canvas. The blueprint maps 1:1 onto generation nodes: `analysis.scenes[i]` aligns positionally with `start_frames#i`/`end_frames#i`; per scene, `start_frame_prompt`/`end_frame_prompt` feed image_generate (overlay text is excluded from them by contract — recomposite it from `overlays`), `motion_prompt` + the two frames feed video_generate (first_frame/last_frame), `dialogue[].voice_description` casts tts/dialogue voices, `global.music.music_prompt` feeds music, `sfx[].sound_effect_prompt` feeds sound_effect, and `overlays`/`floating_elements` drive an ffmpeg/hyperframe overlay pass. Long videos (over ~8 min single-shot): run `mode:"index"` first, then several full nodes IN PARALLEL each with a `start_s`/`end_s` window (≤480s, snap edges to index scene boundaries), and merge by concatenating `analysis.scenes`; over-length errors include suggested windows. Inject fields into downstream prompts via `{{slot}}`. Pick `~google/gemini-pro-latest` for the densest extraction, `~google/gemini-flash-latest` for cheap/fast passes.',
11
+ inputs: z.object({ video: VideoRef }).loose(),
12
+ params: z
13
+ .object({
14
+ model: z.enum(VIDEO_DECONSTRUCT_MODELS),
15
+ mode: z.enum(["full", "index"]).optional(),
16
+ language: z.string().min(2).max(8).optional(),
17
+ max_scenes: z.number().int().min(1).max(60).optional(),
18
+ focus: z.string().optional(),
19
+ start_s: z.number().min(0).optional(),
20
+ end_s: z.number().positive().optional(),
21
+ // Transcript provider for the blueprint's dialogue/transcript. Default
22
+ // Groq Whisper; "deepgram" routes to Nova-3 so words carry punctuation.
23
+ transcriber: z.enum(["groq", "deepgram"]).optional(),
24
+ })
25
+ .strict(),
26
+ outputs: z
27
+ .object({
28
+ analysis: JsonRef,
29
+ // Absent in mode:"index" (structure only, no Mux frame extraction).
30
+ start_frames: z.array(ImageRef).min(1).optional(),
31
+ end_frames: z.array(ImageRef).min(1).optional(),
32
+ transcript: JsonRef,
33
+ })
34
+ .strict(),
35
+ outputKinds: { analysis: "json", start_frames: "image", end_frames: "image", transcript: "json" },
36
+ cost: ({ params }) => params.mode === "index"
37
+ ? { credits: 3, seconds_estimate: 60 }
38
+ : { credits: 15, seconds_estimate: 300 },
39
+ });
40
+ //# sourceMappingURL=videoDeconstruct.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"videoDeconstruct.js","sourceRoot":"","sources":["../../../../src/engine/nodes/remote/videoDeconstruct.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,MAAM,wBAAwB,GAAG,CAAC,6BAA6B,EAAE,2BAA2B,CAAU,CAAC;AAEvG,MAAM,CAAC,MAAM,oBAAoB,GAAG,SAAS,CAAC;IAC5C,EAAE,EAAE,mBAAmB;IACvB,OAAO,EAAE,OAAO;IAChB,QAAQ,EAAE,OAAO;IACjB,OAAO,EACL,ouBAAouB;IACtuB,WAAW,EACT,s1CAAs1C;IACx1C,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE;IAC7C,MAAM,EAAE,CAAC;SACN,MAAM,CAAC;QACN,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC;QACvC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE;QAC1C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QAC7C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;QACtD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC5B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QACrC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;QACvC,uEAAuE;QACvE,wEAAwE;QACxE,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE;KACrD,CAAC;SACD,MAAM,EAAE;IACX,OAAO,EAAE,CAAC;SACP,MAAM,CAAC;QACN,QAAQ,EAAE,OAAO;QACjB,oEAAoE;QACpE,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QACjD,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QAC/C,UAAU,EAAE,OAAO;KACpB,CAAC;SACD,MAAM,EAAE;IACX,WAAW,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE;IACjG,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAClB,MAA4B,CAAC,IAAI,KAAK,OAAO;QAC5C,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,gBAAgB,EAAE,EAAE,EAAE;QACtC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,gBAAgB,EAAE,GAAG,EAAE;CAC7C,CAAC,CAAC"}
@@ -0,0 +1,37 @@
1
+ export declare const videoLipsyncNode: import("../../engine/define.ts").NodeDefinition<{
2
+ video: {
3
+ sha256: string;
4
+ mime: string;
5
+ kind: "video";
6
+ url?: string | undefined;
7
+ path?: string | undefined;
8
+ metadata?: Record<string, unknown> | undefined;
9
+ width?: number | undefined;
10
+ height?: number | undefined;
11
+ duration_ms?: number | undefined;
12
+ };
13
+ audio: {
14
+ sha256: string;
15
+ mime: string;
16
+ kind: "audio";
17
+ url?: string | undefined;
18
+ path?: string | undefined;
19
+ metadata?: Record<string, unknown> | undefined;
20
+ duration_ms?: number | undefined;
21
+ };
22
+ }, {
23
+ model: "fal/veed-lipsync";
24
+ }, {
25
+ video: {
26
+ sha256: string;
27
+ mime: string;
28
+ kind: "video";
29
+ url?: string | undefined;
30
+ path?: string | undefined;
31
+ metadata?: Record<string, unknown> | undefined;
32
+ width?: number | undefined;
33
+ height?: number | undefined;
34
+ duration_ms?: number | undefined;
35
+ };
36
+ }>;
37
+ //# sourceMappingURL=videoLipsync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"videoLipsync.d.ts","sourceRoot":"","sources":["../../../../src/engine/nodes/remote/videoLipsync.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgB3B,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { z } from "zod";
2
+ import { AudioRef, VideoRef } from "../../schema/refs.js";
3
+ import { delegated } from "./delegate.js";
4
+ const FalLipsyncParams = z
5
+ .object({
6
+ model: z.literal("fal/veed-lipsync"),
7
+ })
8
+ .strict();
9
+ const VideoLipsyncParams = z.discriminatedUnion("model", [FalLipsyncParams]);
10
+ export const videoLipsyncNode = delegated({
11
+ id: "video_lipsync",
12
+ version: "1.0.0",
13
+ category: "video",
14
+ summary: "Lip-sync a video to an audio track. Currently backed by VEED via fal.ai (`fal/veed-lipsync`). $0.40/min of output.",
15
+ inputs: z
16
+ .object({
17
+ video: VideoRef,
18
+ audio: AudioRef,
19
+ })
20
+ .strict(),
21
+ params: VideoLipsyncParams,
22
+ outputs: z.object({ video: VideoRef }).strict(),
23
+ outputKinds: { video: "video" },
24
+ cost: () => ({ credits: 20, seconds_estimate: 120 }),
25
+ });
26
+ //# sourceMappingURL=videoLipsync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"videoLipsync.js","sourceRoot":"","sources":["../../../../src/engine/nodes/remote/videoLipsync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,MAAM,gBAAgB,GAAG,CAAC;KACvB,MAAM,CAAC;IACN,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC;CACrC,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,kBAAkB,GAAG,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAE7E,MAAM,CAAC,MAAM,gBAAgB,GAAG,SAAS,CAAC;IACxC,EAAE,EAAE,eAAe;IACnB,OAAO,EAAE,OAAO;IAChB,QAAQ,EAAE,OAAO;IACjB,OAAO,EACL,oHAAoH;IACtH,MAAM,EAAE,CAAC;SACN,MAAM,CAAC;QACN,KAAK,EAAE,QAAQ;QACf,KAAK,EAAE,QAAQ;KAChB,CAAC;SACD,MAAM,EAAE;IACX,MAAM,EAAE,kBAAkB;IAC1B,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IAC/C,WAAW,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;IAC/B,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,gBAAgB,EAAE,GAAG,EAAE,CAAC;CACrD,CAAC,CAAC"}
@@ -0,0 +1,116 @@
1
+ export declare const videoTranscribeNode: import("../../engine/define.ts").NodeDefinition<{
2
+ video: {
3
+ sha256: string;
4
+ mime: string;
5
+ kind: "video";
6
+ url?: string | undefined;
7
+ path?: string | undefined;
8
+ metadata?: Record<string, unknown> | undefined;
9
+ width?: number | undefined;
10
+ height?: number | undefined;
11
+ duration_ms?: number | undefined;
12
+ };
13
+ }, {
14
+ language?: string | undefined;
15
+ transcriber?: "groq" | "deepgram" | undefined;
16
+ }, {
17
+ transcript: {
18
+ sha256: string;
19
+ mime: string;
20
+ kind: "image";
21
+ url?: string | undefined;
22
+ path?: string | undefined;
23
+ metadata?: Record<string, unknown> | undefined;
24
+ width?: number | undefined;
25
+ height?: number | undefined;
26
+ } | {
27
+ sha256: string;
28
+ mime: string;
29
+ kind: "video";
30
+ url?: string | undefined;
31
+ path?: string | undefined;
32
+ metadata?: Record<string, unknown> | undefined;
33
+ width?: number | undefined;
34
+ height?: number | undefined;
35
+ duration_ms?: number | undefined;
36
+ } | {
37
+ sha256: string;
38
+ mime: string;
39
+ kind: "audio";
40
+ url?: string | undefined;
41
+ path?: string | undefined;
42
+ metadata?: Record<string, unknown> | undefined;
43
+ duration_ms?: number | undefined;
44
+ } | {
45
+ sha256: string;
46
+ mime: string;
47
+ kind: "json";
48
+ url?: string | undefined;
49
+ path?: string | undefined;
50
+ metadata?: Record<string, unknown> | undefined;
51
+ } | {
52
+ sha256: string;
53
+ mime: string;
54
+ kind: "text";
55
+ url?: string | undefined;
56
+ path?: string | undefined;
57
+ metadata?: Record<string, unknown> | undefined;
58
+ } | {
59
+ sha256: string;
60
+ mime: string;
61
+ kind: "font";
62
+ url?: string | undefined;
63
+ path?: string | undefined;
64
+ metadata?: Record<string, unknown> | undefined;
65
+ };
66
+ rich?: {
67
+ sha256: string;
68
+ mime: string;
69
+ kind: "image";
70
+ url?: string | undefined;
71
+ path?: string | undefined;
72
+ metadata?: Record<string, unknown> | undefined;
73
+ width?: number | undefined;
74
+ height?: number | undefined;
75
+ } | {
76
+ sha256: string;
77
+ mime: string;
78
+ kind: "video";
79
+ url?: string | undefined;
80
+ path?: string | undefined;
81
+ metadata?: Record<string, unknown> | undefined;
82
+ width?: number | undefined;
83
+ height?: number | undefined;
84
+ duration_ms?: number | undefined;
85
+ } | {
86
+ sha256: string;
87
+ mime: string;
88
+ kind: "audio";
89
+ url?: string | undefined;
90
+ path?: string | undefined;
91
+ metadata?: Record<string, unknown> | undefined;
92
+ duration_ms?: number | undefined;
93
+ } | {
94
+ sha256: string;
95
+ mime: string;
96
+ kind: "json";
97
+ url?: string | undefined;
98
+ path?: string | undefined;
99
+ metadata?: Record<string, unknown> | undefined;
100
+ } | {
101
+ sha256: string;
102
+ mime: string;
103
+ kind: "text";
104
+ url?: string | undefined;
105
+ path?: string | undefined;
106
+ metadata?: Record<string, unknown> | undefined;
107
+ } | {
108
+ sha256: string;
109
+ mime: string;
110
+ kind: "font";
111
+ url?: string | undefined;
112
+ path?: string | undefined;
113
+ metadata?: Record<string, unknown> | undefined;
114
+ } | undefined;
115
+ }>;
116
+ //# sourceMappingURL=videoTranscribe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"videoTranscribe.d.ts","sourceRoot":"","sources":["../../../../src/engine/nodes/remote/videoTranscribe.ts"],"names":[],"mappings":"AA2CA,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsC9B,CAAC"}