@nodetool-ai/agents 0.8.1 → 0.8.3

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 (477) hide show
  1. package/dist/.nodetool-build-stamp +1 -1
  2. package/dist/analysis/audio-dsp.d.ts +3 -2
  3. package/dist/analysis/audio-dsp.d.ts.map +1 -1
  4. package/dist/analysis/audio-dsp.js +11 -8
  5. package/dist/analysis/audio-dsp.js.map +1 -1
  6. package/dist/analysis/media-decode.d.ts +13 -0
  7. package/dist/analysis/media-decode.d.ts.map +1 -1
  8. package/dist/analysis/media-decode.js +33 -6
  9. package/dist/analysis/media-decode.js.map +1 -1
  10. package/dist/apify/assets.d.ts.map +1 -1
  11. package/dist/apify/assets.js +4 -0
  12. package/dist/apify/assets.js.map +1 -1
  13. package/dist/author-graph.d.ts +2 -3
  14. package/dist/author-graph.d.ts.map +1 -1
  15. package/dist/author-graph.js +3 -5
  16. package/dist/author-graph.js.map +1 -1
  17. package/dist/browser-gate.d.ts +2 -2
  18. package/dist/browser-gate.js +2 -2
  19. package/dist/capabilities/GamePublishRequest.d.ts +14 -0
  20. package/dist/capabilities/GamePublishRequest.d.ts.map +1 -0
  21. package/dist/capabilities/GamePublishRequest.js +2 -0
  22. package/dist/capabilities/GamePublishRequest.js.map +1 -0
  23. package/dist/capabilities/adapters.d.ts +4 -13
  24. package/dist/capabilities/adapters.d.ts.map +1 -1
  25. package/dist/capabilities/adapters.js +9 -14
  26. package/dist/capabilities/adapters.js.map +1 -1
  27. package/dist/capabilities/agent-activity.d.ts +27 -0
  28. package/dist/capabilities/agent-activity.d.ts.map +1 -0
  29. package/dist/capabilities/agent-activity.js +103 -0
  30. package/dist/capabilities/agent-activity.js.map +1 -0
  31. package/dist/capabilities/agentic-storyboard-finish.d.ts +67 -0
  32. package/dist/capabilities/agentic-storyboard-finish.d.ts.map +1 -0
  33. package/dist/capabilities/agentic-storyboard-finish.js +1321 -0
  34. package/dist/capabilities/agentic-storyboard-finish.js.map +1 -0
  35. package/dist/capabilities/agents.d.ts +5 -2
  36. package/dist/capabilities/agents.d.ts.map +1 -1
  37. package/dist/capabilities/agents.js +14 -4
  38. package/dist/capabilities/agents.js.map +1 -1
  39. package/dist/capabilities/agents.specs.d.ts +3 -0
  40. package/dist/capabilities/agents.specs.d.ts.map +1 -1
  41. package/dist/capabilities/agents.specs.js +71 -1
  42. package/dist/capabilities/agents.specs.js.map +1 -1
  43. package/dist/capabilities/analysis.d.ts.map +1 -1
  44. package/dist/capabilities/analysis.js +33 -22
  45. package/dist/capabilities/analysis.js.map +1 -1
  46. package/dist/capabilities/analysis.specs.js +2 -2
  47. package/dist/capabilities/analysis.specs.js.map +1 -1
  48. package/dist/capabilities/apps.d.ts.map +1 -1
  49. package/dist/capabilities/apps.js +5 -3
  50. package/dist/capabilities/apps.js.map +1 -1
  51. package/dist/capabilities/args.d.ts +2 -5
  52. package/dist/capabilities/args.d.ts.map +1 -1
  53. package/dist/capabilities/args.js +2 -5
  54. package/dist/capabilities/args.js.map +1 -1
  55. package/dist/capabilities/assets.d.ts.map +1 -1
  56. package/dist/capabilities/assets.js +40 -10
  57. package/dist/capabilities/assets.js.map +1 -1
  58. package/dist/capabilities/browser.d.ts +1 -1
  59. package/dist/capabilities/browser.js +1 -1
  60. package/dist/capabilities/browser.specs.d.ts +1 -1
  61. package/dist/capabilities/browser.specs.js +1 -1
  62. package/dist/capabilities/code.d.ts +5 -0
  63. package/dist/capabilities/code.d.ts.map +1 -1
  64. package/dist/capabilities/code.js +128 -89
  65. package/dist/capabilities/code.js.map +1 -1
  66. package/dist/capabilities/collections.d.ts +4 -6
  67. package/dist/capabilities/collections.d.ts.map +1 -1
  68. package/dist/capabilities/collections.js +16 -11
  69. package/dist/capabilities/collections.js.map +1 -1
  70. package/dist/capabilities/derive-shot.d.ts +45 -0
  71. package/dist/capabilities/derive-shot.d.ts.map +1 -0
  72. package/dist/capabilities/derive-shot.js +82 -0
  73. package/dist/capabilities/derive-shot.js.map +1 -0
  74. package/dist/capabilities/documents.d.ts +2 -1
  75. package/dist/capabilities/documents.d.ts.map +1 -1
  76. package/dist/capabilities/documents.js +12 -6
  77. package/dist/capabilities/documents.js.map +1 -1
  78. package/dist/capabilities/email.d.ts +2 -1
  79. package/dist/capabilities/email.d.ts.map +1 -1
  80. package/dist/capabilities/email.js +5 -3
  81. package/dist/capabilities/email.js.map +1 -1
  82. package/dist/capabilities/errors.d.ts +19 -0
  83. package/dist/capabilities/errors.d.ts.map +1 -0
  84. package/dist/capabilities/errors.js +109 -0
  85. package/dist/capabilities/errors.js.map +1 -0
  86. package/dist/capabilities/errors.specs.d.ts +11 -0
  87. package/dist/capabilities/errors.specs.d.ts.map +1 -0
  88. package/dist/capabilities/errors.specs.js +100 -0
  89. package/dist/capabilities/errors.specs.js.map +1 -0
  90. package/dist/capabilities/example-timelines.d.ts.map +1 -1
  91. package/dist/capabilities/example-timelines.js +52 -10
  92. package/dist/capabilities/example-timelines.js.map +1 -1
  93. package/dist/capabilities/example-timelines.specs.d.ts +1 -0
  94. package/dist/capabilities/example-timelines.specs.d.ts.map +1 -1
  95. package/dist/capabilities/example-timelines.specs.js +21 -3
  96. package/dist/capabilities/example-timelines.specs.js.map +1 -1
  97. package/dist/capabilities/finish-storyboard.d.ts +5 -0
  98. package/dist/capabilities/finish-storyboard.d.ts.map +1 -0
  99. package/dist/capabilities/finish-storyboard.js +278 -0
  100. package/dist/capabilities/finish-storyboard.js.map +1 -0
  101. package/dist/capabilities/game-asset-browser.d.ts +11 -0
  102. package/dist/capabilities/game-asset-browser.d.ts.map +1 -0
  103. package/dist/capabilities/game-asset-browser.js +152 -0
  104. package/dist/capabilities/game-asset-browser.js.map +1 -0
  105. package/dist/capabilities/game-asset-source.js +1 -1
  106. package/dist/capabilities/game-asset-source.js.map +1 -1
  107. package/dist/capabilities/game.d.ts +44 -2
  108. package/dist/capabilities/game.d.ts.map +1 -1
  109. package/dist/capabilities/game.js +408 -160
  110. package/dist/capabilities/game.js.map +1 -1
  111. package/dist/capabilities/game.specs.d.ts +4 -0
  112. package/dist/capabilities/game.specs.d.ts.map +1 -1
  113. package/dist/capabilities/game.specs.js +42 -13
  114. package/dist/capabilities/game.specs.js.map +1 -1
  115. package/dist/capabilities/game3d.d.ts +17 -0
  116. package/dist/capabilities/game3d.d.ts.map +1 -0
  117. package/dist/capabilities/game3d.js +434 -0
  118. package/dist/capabilities/game3d.js.map +1 -0
  119. package/dist/capabilities/gate-from-context.d.ts +1 -1
  120. package/dist/capabilities/gate-from-context.js +1 -1
  121. package/dist/capabilities/generations.d.ts +2 -0
  122. package/dist/capabilities/generations.d.ts.map +1 -1
  123. package/dist/capabilities/generations.js +14 -23
  124. package/dist/capabilities/generations.js.map +1 -1
  125. package/dist/capabilities/index.d.ts +2 -2
  126. package/dist/capabilities/index.d.ts.map +1 -1
  127. package/dist/capabilities/index.js +2 -2
  128. package/dist/capabilities/index.js.map +1 -1
  129. package/dist/capabilities/invoke.d.ts +14 -25
  130. package/dist/capabilities/invoke.d.ts.map +1 -1
  131. package/dist/capabilities/invoke.js +72 -35
  132. package/dist/capabilities/invoke.js.map +1 -1
  133. package/dist/capabilities/jobs.d.ts.map +1 -1
  134. package/dist/capabilities/jobs.js +47 -3
  135. package/dist/capabilities/jobs.js.map +1 -1
  136. package/dist/capabilities/jobs.specs.d.ts.map +1 -1
  137. package/dist/capabilities/jobs.specs.js +3 -1
  138. package/dist/capabilities/jobs.specs.js.map +1 -1
  139. package/dist/capabilities/js-scripts.d.ts +19 -1
  140. package/dist/capabilities/js-scripts.d.ts.map +1 -1
  141. package/dist/capabilities/js-scripts.js +109 -2
  142. package/dist/capabilities/js-scripts.js.map +1 -1
  143. package/dist/capabilities/js-scripts.specs.d.ts +2 -0
  144. package/dist/capabilities/js-scripts.specs.d.ts.map +1 -1
  145. package/dist/capabilities/js-scripts.specs.js +50 -0
  146. package/dist/capabilities/js-scripts.specs.js.map +1 -1
  147. package/dist/capabilities/lazy-tool-core.d.ts +23 -0
  148. package/dist/capabilities/lazy-tool-core.d.ts.map +1 -0
  149. package/dist/capabilities/lazy-tool-core.js +56 -0
  150. package/dist/capabilities/lazy-tool-core.js.map +1 -0
  151. package/dist/capabilities/lazy-tool.d.ts +3 -23
  152. package/dist/capabilities/lazy-tool.d.ts.map +1 -1
  153. package/dist/capabilities/lazy-tool.js +6 -64
  154. package/dist/capabilities/lazy-tool.js.map +1 -1
  155. package/dist/capabilities/legacy-tools.d.ts +15 -0
  156. package/dist/capabilities/legacy-tools.d.ts.map +1 -0
  157. package/dist/capabilities/legacy-tools.js +98 -0
  158. package/dist/capabilities/legacy-tools.js.map +1 -0
  159. package/dist/capabilities/media.d.ts +0 -9
  160. package/dist/capabilities/media.d.ts.map +1 -1
  161. package/dist/capabilities/media.js +314 -261
  162. package/dist/capabilities/media.js.map +1 -1
  163. package/dist/capabilities/media.specs.d.ts.map +1 -1
  164. package/dist/capabilities/media.specs.js +17 -0
  165. package/dist/capabilities/media.specs.js.map +1 -1
  166. package/dist/capabilities/metadata.d.ts +62 -0
  167. package/dist/capabilities/metadata.d.ts.map +1 -0
  168. package/dist/capabilities/metadata.js +114 -0
  169. package/dist/capabilities/metadata.js.map +1 -0
  170. package/dist/capabilities/model3d.d.ts.map +1 -1
  171. package/dist/capabilities/model3d.js +4 -0
  172. package/dist/capabilities/model3d.js.map +1 -1
  173. package/dist/capabilities/models.d.ts +2 -2
  174. package/dist/capabilities/models.d.ts.map +1 -1
  175. package/dist/capabilities/models.js +5 -3
  176. package/dist/capabilities/models.js.map +1 -1
  177. package/dist/capabilities/registry.d.ts +6 -19
  178. package/dist/capabilities/registry.d.ts.map +1 -1
  179. package/dist/capabilities/registry.js +72 -113
  180. package/dist/capabilities/registry.js.map +1 -1
  181. package/dist/capabilities/run-agent.d.ts +19 -0
  182. package/dist/capabilities/run-agent.d.ts.map +1 -0
  183. package/dist/capabilities/run-agent.js +183 -0
  184. package/dist/capabilities/run-agent.js.map +1 -0
  185. package/dist/capabilities/runs.d.ts +9 -0
  186. package/dist/capabilities/runs.d.ts.map +1 -0
  187. package/dist/capabilities/runs.js +46 -0
  188. package/dist/capabilities/runs.js.map +1 -0
  189. package/dist/capabilities/runs.specs.d.ts +39 -0
  190. package/dist/capabilities/runs.specs.d.ts.map +1 -0
  191. package/dist/capabilities/runs.specs.js +52 -0
  192. package/dist/capabilities/runs.specs.js.map +1 -0
  193. package/dist/capabilities/scripts.d.ts.map +1 -1
  194. package/dist/capabilities/scripts.js +11 -5
  195. package/dist/capabilities/scripts.js.map +1 -1
  196. package/dist/capabilities/settings.d.ts.map +1 -1
  197. package/dist/capabilities/settings.js +4 -2
  198. package/dist/capabilities/settings.js.map +1 -1
  199. package/dist/capabilities/sketches.d.ts.map +1 -1
  200. package/dist/capabilities/sketches.js +4 -2
  201. package/dist/capabilities/sketches.js.map +1 -1
  202. package/dist/capabilities/skills.d.ts.map +1 -1
  203. package/dist/capabilities/skills.js +22 -2
  204. package/dist/capabilities/skills.js.map +1 -1
  205. package/dist/capabilities/storyboard-layout-check.d.ts +33 -0
  206. package/dist/capabilities/storyboard-layout-check.d.ts.map +1 -0
  207. package/dist/capabilities/storyboard-layout-check.js +229 -0
  208. package/dist/capabilities/storyboard-layout-check.js.map +1 -0
  209. package/dist/capabilities/storyboard-measured-sources.d.ts +10 -0
  210. package/dist/capabilities/storyboard-measured-sources.d.ts.map +1 -0
  211. package/dist/capabilities/storyboard-measured-sources.js +67 -0
  212. package/dist/capabilities/storyboard-measured-sources.js.map +1 -0
  213. package/dist/capabilities/storyboard-review-times.d.ts +4 -0
  214. package/dist/capabilities/storyboard-review-times.d.ts.map +1 -0
  215. package/dist/capabilities/storyboard-review-times.js +39 -0
  216. package/dist/capabilities/storyboard-review-times.js.map +1 -0
  217. package/dist/capabilities/storyboards.d.ts +12 -18
  218. package/dist/capabilities/storyboards.d.ts.map +1 -1
  219. package/dist/capabilities/storyboards.js +779 -96
  220. package/dist/capabilities/storyboards.js.map +1 -1
  221. package/dist/capabilities/storyboards.specs.d.ts +9 -0
  222. package/dist/capabilities/storyboards.specs.d.ts.map +1 -1
  223. package/dist/capabilities/storyboards.specs.js +173 -5
  224. package/dist/capabilities/storyboards.specs.js.map +1 -1
  225. package/dist/capabilities/threads.js +1 -1
  226. package/dist/capabilities/threads.js.map +1 -1
  227. package/dist/capabilities/timeline-bridge.d.ts +368 -0
  228. package/dist/capabilities/timeline-bridge.d.ts.map +1 -0
  229. package/dist/capabilities/timeline-bridge.js +1008 -0
  230. package/dist/capabilities/timeline-bridge.js.map +1 -0
  231. package/dist/capabilities/timeline-clip-frames.d.ts +17 -0
  232. package/dist/capabilities/timeline-clip-frames.d.ts.map +1 -0
  233. package/dist/capabilities/timeline-clip-frames.js +84 -0
  234. package/dist/capabilities/timeline-clip-frames.js.map +1 -0
  235. package/dist/capabilities/timeline-media-edit.d.ts +8 -0
  236. package/dist/capabilities/timeline-media-edit.d.ts.map +1 -0
  237. package/dist/capabilities/timeline-media-edit.js +94 -0
  238. package/dist/capabilities/timeline-media-edit.js.map +1 -0
  239. package/dist/capabilities/timeline-native-media.d.ts.map +1 -1
  240. package/dist/capabilities/timeline-native-media.js +40 -0
  241. package/dist/capabilities/timeline-native-media.js.map +1 -1
  242. package/dist/capabilities/timeline-operations.d.ts +52 -0
  243. package/dist/capabilities/timeline-operations.d.ts.map +1 -0
  244. package/dist/capabilities/timeline-operations.js +413 -0
  245. package/dist/capabilities/timeline-operations.js.map +1 -0
  246. package/dist/capabilities/timelines.d.ts +28 -3
  247. package/dist/capabilities/timelines.d.ts.map +1 -1
  248. package/dist/capabilities/timelines.js +410 -294
  249. package/dist/capabilities/timelines.js.map +1 -1
  250. package/dist/capabilities/timelines.specs.d.ts +8 -0
  251. package/dist/capabilities/timelines.specs.d.ts.map +1 -1
  252. package/dist/capabilities/timelines.specs.js +178 -9
  253. package/dist/capabilities/timelines.specs.js.map +1 -1
  254. package/dist/capabilities/types.d.ts +3 -1
  255. package/dist/capabilities/types.d.ts.map +1 -1
  256. package/dist/capabilities/types.js.map +1 -1
  257. package/dist/capabilities/ui.d.ts.map +1 -1
  258. package/dist/capabilities/ui.js +24 -2
  259. package/dist/capabilities/ui.js.map +1 -1
  260. package/dist/capabilities/web.d.ts.map +1 -1
  261. package/dist/capabilities/web.js +4 -0
  262. package/dist/capabilities/web.js.map +1 -1
  263. package/dist/capabilities/workflows.d.ts +3 -1
  264. package/dist/capabilities/workflows.d.ts.map +1 -1
  265. package/dist/capabilities/workflows.js +244 -39
  266. package/dist/capabilities/workflows.js.map +1 -1
  267. package/dist/capabilities/workflows.specs.d.ts +2 -0
  268. package/dist/capabilities/workflows.specs.d.ts.map +1 -1
  269. package/dist/capabilities/workflows.specs.js +72 -2
  270. package/dist/capabilities/workflows.specs.js.map +1 -1
  271. package/dist/codeact/action-diagnostics.d.ts.map +1 -1
  272. package/dist/codeact/action-diagnostics.js +51 -1
  273. package/dist/codeact/action-diagnostics.js.map +1 -1
  274. package/dist/codeact/codeact-executor.d.ts.map +1 -1
  275. package/dist/codeact/codeact-executor.js +16 -8
  276. package/dist/codeact/codeact-executor.js.map +1 -1
  277. package/dist/codeact/compact-ids.d.ts.map +1 -1
  278. package/dist/codeact/compact-ids.js +5 -1
  279. package/dist/codeact/compact-ids.js.map +1 -1
  280. package/dist/codeact/graph-model.d.ts +1 -1
  281. package/dist/codeact/graph-model.d.ts.map +1 -1
  282. package/dist/codeact/graph-model.js +2 -3
  283. package/dist/codeact/graph-model.js.map +1 -1
  284. package/dist/codeact/nodetool-api.d.ts +1 -1
  285. package/dist/codeact/nodetool-api.d.ts.map +1 -1
  286. package/dist/codeact/nodetool-api.js +202 -284
  287. package/dist/codeact/nodetool-api.js.map +1 -1
  288. package/dist/codeact/sandbox-packages.d.ts +0 -7
  289. package/dist/codeact/sandbox-packages.d.ts.map +1 -1
  290. package/dist/codeact/sandbox-packages.js +1 -10
  291. package/dist/codeact/sandbox-packages.js.map +1 -1
  292. package/dist/codeact/tool-api.d.ts +6 -3
  293. package/dist/codeact/tool-api.d.ts.map +1 -1
  294. package/dist/codeact/tool-api.js +22 -15
  295. package/dist/codeact/tool-api.js.map +1 -1
  296. package/dist/evals/codeact-api-cases.d.ts.map +1 -1
  297. package/dist/evals/codeact-api-cases.js +2 -0
  298. package/dist/evals/codeact-api-cases.js.map +1 -1
  299. package/dist/evals/codeact-api-runs.d.ts +3 -0
  300. package/dist/evals/codeact-api-runs.d.ts.map +1 -0
  301. package/dist/evals/codeact-api-runs.js +33 -0
  302. package/dist/evals/codeact-api-runs.js.map +1 -0
  303. package/dist/evals/surfaces/game.d.ts +8 -2
  304. package/dist/evals/surfaces/game.d.ts.map +1 -1
  305. package/dist/evals/surfaces/game.js +460 -2
  306. package/dist/evals/surfaces/game.js.map +1 -1
  307. package/dist/evals/surfaces/sketch.d.ts +2 -0
  308. package/dist/evals/surfaces/sketch.d.ts.map +1 -1
  309. package/dist/evals/surfaces/sketch.js +11 -3
  310. package/dist/evals/surfaces/sketch.js.map +1 -1
  311. package/dist/evals/surfaces/timeline.d.ts +4 -357
  312. package/dist/evals/surfaces/timeline.d.ts.map +1 -1
  313. package/dist/evals/surfaces/timeline.js +9 -2621
  314. package/dist/evals/surfaces/timeline.js.map +1 -1
  315. package/dist/evals/tool-loop-bridge.d.ts +4 -0
  316. package/dist/evals/tool-loop-bridge.d.ts.map +1 -1
  317. package/dist/evals/tool-loop-bridge.js.map +1 -1
  318. package/dist/evals/tool-loop-eval.d.ts +2 -0
  319. package/dist/evals/tool-loop-eval.d.ts.map +1 -1
  320. package/dist/evals/tool-loop-eval.js +6 -1
  321. package/dist/evals/tool-loop-eval.js.map +1 -1
  322. package/dist/evals/tool-loop-permission.d.ts +1 -15
  323. package/dist/evals/tool-loop-permission.d.ts.map +1 -1
  324. package/dist/evals/tool-loop-permission.js +23 -41
  325. package/dist/evals/tool-loop-permission.js.map +1 -1
  326. package/dist/game-authoring.d.ts +9573 -0
  327. package/dist/game-authoring.d.ts.map +1 -0
  328. package/dist/game-authoring.js +146 -0
  329. package/dist/game-authoring.js.map +1 -0
  330. package/dist/game-build.d.ts +3 -0
  331. package/dist/game-build.d.ts.map +1 -0
  332. package/dist/game-build.js +3 -0
  333. package/dist/game-build.js.map +1 -0
  334. package/dist/game-code-bake.d.ts +26 -0
  335. package/dist/game-code-bake.d.ts.map +1 -0
  336. package/dist/game-code-bake.js +98 -0
  337. package/dist/game-code-bake.js.map +1 -0
  338. package/dist/game-examples.d.ts +2227 -18
  339. package/dist/game-examples.d.ts.map +1 -1
  340. package/dist/game-examples.js +5 -4
  341. package/dist/game-examples.js.map +1 -1
  342. package/dist/generation-cancel.d.ts +31 -0
  343. package/dist/generation-cancel.d.ts.map +1 -0
  344. package/dist/generation-cancel.js +28 -0
  345. package/dist/generation-cancel.js.map +1 -0
  346. package/dist/host-access-gate.d.ts +29 -0
  347. package/dist/host-access-gate.d.ts.map +1 -0
  348. package/dist/host-access-gate.js +39 -0
  349. package/dist/host-access-gate.js.map +1 -0
  350. package/dist/host-modules/dispatcher.d.ts +7 -1
  351. package/dist/host-modules/dispatcher.d.ts.map +1 -1
  352. package/dist/host-modules/dispatcher.js +13 -2
  353. package/dist/host-modules/dispatcher.js.map +1 -1
  354. package/dist/host-modules/docx.d.ts.map +1 -1
  355. package/dist/host-modules/docx.js +2 -2
  356. package/dist/host-modules/docx.js.map +1 -1
  357. package/dist/host-modules/epub.d.ts.map +1 -1
  358. package/dist/host-modules/epub.js +2 -2
  359. package/dist/host-modules/epub.js.map +1 -1
  360. package/dist/host-modules/fabric.d.ts.map +1 -1
  361. package/dist/host-modules/fabric.js +1 -1
  362. package/dist/host-modules/fabric.js.map +1 -1
  363. package/dist/host-modules/limits.d.ts +10 -8
  364. package/dist/host-modules/limits.d.ts.map +1 -1
  365. package/dist/host-modules/limits.js +14 -9
  366. package/dist/host-modules/limits.js.map +1 -1
  367. package/dist/host-modules/mammoth.d.ts.map +1 -1
  368. package/dist/host-modules/mammoth.js +2 -2
  369. package/dist/host-modules/mammoth.js.map +1 -1
  370. package/dist/host-modules/ocr.d.ts.map +1 -1
  371. package/dist/host-modules/ocr.js +1 -1
  372. package/dist/host-modules/ocr.js.map +1 -1
  373. package/dist/host-modules/pdf.d.ts.map +1 -1
  374. package/dist/host-modules/pdf.js +2 -2
  375. package/dist/host-modules/pdf.js.map +1 -1
  376. package/dist/host-modules/pdflib.d.ts.map +1 -1
  377. package/dist/host-modules/pdflib.js +2 -2
  378. package/dist/host-modules/pdflib.js.map +1 -1
  379. package/dist/host-modules/pptx.d.ts.map +1 -1
  380. package/dist/host-modules/pptx.js +2 -2
  381. package/dist/host-modules/pptx.js.map +1 -1
  382. package/dist/host-modules/pptxgen.d.ts.map +1 -1
  383. package/dist/host-modules/pptxgen.js +2 -2
  384. package/dist/host-modules/pptxgen.js.map +1 -1
  385. package/dist/host-modules/tfjs.d.ts.map +1 -1
  386. package/dist/host-modules/tfjs.js +4 -4
  387. package/dist/host-modules/tfjs.js.map +1 -1
  388. package/dist/host-modules/xlsx.d.ts.map +1 -1
  389. package/dist/host-modules/xlsx.js +2 -2
  390. package/dist/host-modules/xlsx.js.map +1 -1
  391. package/dist/index.d.ts +18 -4
  392. package/dist/index.d.ts.map +1 -1
  393. package/dist/index.js +17 -3
  394. package/dist/index.js.map +1 -1
  395. package/dist/js-sandbox-worker/engine.d.ts +4 -0
  396. package/dist/js-sandbox-worker/engine.d.ts.map +1 -0
  397. package/dist/js-sandbox-worker/engine.js +45 -0
  398. package/dist/js-sandbox-worker/engine.js.map +1 -0
  399. package/dist/js-sandbox-worker/host.js +1 -1
  400. package/dist/js-sandbox-worker/host.js.map +1 -1
  401. package/dist/js-sandbox-worker/interpreter.d.ts +1 -1
  402. package/dist/js-sandbox-worker/interpreter.d.ts.map +1 -1
  403. package/dist/js-sandbox-worker/interpreter.js +94 -2
  404. package/dist/js-sandbox-worker/interpreter.js.map +1 -1
  405. package/dist/js-sandbox-worker/worker-entry.d.ts.map +1 -1
  406. package/dist/js-sandbox-worker/worker-entry.js +3 -2
  407. package/dist/js-sandbox-worker/worker-entry.js.map +1 -1
  408. package/dist/js-sandbox.d.ts +9 -1
  409. package/dist/js-sandbox.d.ts.map +1 -1
  410. package/dist/js-sandbox.js +76 -15
  411. package/dist/js-sandbox.js.map +1 -1
  412. package/dist/js-script-app-runner.d.ts +2 -0
  413. package/dist/js-script-app-runner.d.ts.map +1 -1
  414. package/dist/js-script-app-runner.js +8 -3
  415. package/dist/js-script-app-runner.js.map +1 -1
  416. package/dist/js-script-sandbox.d.ts +12 -18
  417. package/dist/js-script-sandbox.d.ts.map +1 -1
  418. package/dist/js-script-sandbox.js +3 -49
  419. package/dist/js-script-sandbox.js.map +1 -1
  420. package/dist/prompts/product-knowledge.d.ts +1 -1
  421. package/dist/prompts/product-knowledge.d.ts.map +1 -1
  422. package/dist/prompts/product-knowledge.js +82 -41
  423. package/dist/prompts/product-knowledge.js.map +1 -1
  424. package/dist/sandbox-pack-resolution.d.ts +21 -0
  425. package/dist/sandbox-pack-resolution.d.ts.map +1 -0
  426. package/dist/sandbox-pack-resolution.js +42 -0
  427. package/dist/sandbox-pack-resolution.js.map +1 -0
  428. package/dist/sandbox-toolbelt.d.ts +3 -1
  429. package/dist/sandbox-toolbelt.d.ts.map +1 -1
  430. package/dist/sandbox-toolbelt.js +8 -2
  431. package/dist/sandbox-toolbelt.js.map +1 -1
  432. package/dist/skill-prompt.d.ts +11 -1
  433. package/dist/skill-prompt.d.ts.map +1 -1
  434. package/dist/skill-prompt.js +17 -6
  435. package/dist/skill-prompt.js.map +1 -1
  436. package/dist/system-skills.d.ts +7 -1
  437. package/dist/system-skills.d.ts.map +1 -1
  438. package/dist/system-skills.js +2 -2
  439. package/dist/system-skills.js.map +1 -1
  440. package/dist/timeline-capture.d.ts +21 -0
  441. package/dist/timeline-capture.d.ts.map +1 -0
  442. package/dist/timeline-capture.js +564 -0
  443. package/dist/timeline-capture.js.map +1 -0
  444. package/dist/timeline-code-bake.d.ts +75 -0
  445. package/dist/timeline-code-bake.d.ts.map +1 -0
  446. package/dist/timeline-code-bake.js +327 -0
  447. package/dist/timeline-code-bake.js.map +1 -0
  448. package/dist/timeline-preview/frames.d.ts +26 -0
  449. package/dist/timeline-preview/frames.d.ts.map +1 -1
  450. package/dist/timeline-preview/frames.js +155 -70
  451. package/dist/timeline-preview/frames.js.map +1 -1
  452. package/dist/tools/base-tool.d.ts +1 -0
  453. package/dist/tools/base-tool.d.ts.map +1 -1
  454. package/dist/tools/base-tool.js +1 -1
  455. package/dist/tools/base-tool.js.map +1 -1
  456. package/dist/tools/builtin-tools.d.ts +4 -3
  457. package/dist/tools/builtin-tools.d.ts.map +1 -1
  458. package/dist/tools/builtin-tools.js +24 -3
  459. package/dist/tools/builtin-tools.js.map +1 -1
  460. package/dist/tools/external-capability-tools.d.ts +1 -1
  461. package/dist/tools/external-capability-tools.js +1 -1
  462. package/dist/tools/mcp-tool-support.d.ts +10 -9
  463. package/dist/tools/mcp-tool-support.d.ts.map +1 -1
  464. package/dist/tools/mcp-tool-support.js +14 -13
  465. package/dist/tools/mcp-tool-support.js.map +1 -1
  466. package/dist/tools/mcp-tools.d.ts +6 -4
  467. package/dist/tools/mcp-tools.d.ts.map +1 -1
  468. package/dist/tools/mcp-tools.js +65 -62
  469. package/dist/tools/mcp-tools.js.map +1 -1
  470. package/dist/tools/tool-permissions.d.ts +1 -1
  471. package/dist/tools/tool-permissions.js +1 -1
  472. package/package.json +124 -41
  473. package/dist/capabilities/gate-tools.d.ts +0 -18
  474. package/dist/capabilities/gate-tools.d.ts.map +0 -1
  475. package/dist/capabilities/gate-tools.js +0 -66
  476. package/dist/capabilities/gate-tools.js.map +0 -1
  477. package/dist/tsconfig.tests.tmp.tsbuildinfo +0 -1
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Bake a timeline's authoring code: run an `@nodetool-ai/sandbox-timeline`
3
+ * program once and hand back the `TimelineDocument` it built, without
4
+ * writing anywhere.
5
+ *
6
+ * The stored code is a retained program (docs/timeline-code-capture.md):
7
+ * research, generation and every other capability call ran once, in the
8
+ * author's run, and their results are literals in the program. So a bake is
9
+ * hermetic by construction. It gets no network, no secrets and no
10
+ * capability except a stub for `nodetool.timelines`:
11
+ *
12
+ * - `create`/`setDocument` capture the document `v.save()` hands them.
13
+ * - `validate` answers `ok: true`. The caller writes the result through the
14
+ * real `set_timeline_document` path afterward, which validates for real.
15
+ * - `edit` records `v.save()`'s `ops`. This function applies them afterward
16
+ * with `applyOps`, the pure op applier `edit_timeline` uses, over an
17
+ * in-memory `TimelineSequence` that is never saved.
18
+ * - `code.set` answers that nothing was attached, so the `v.save()` inside
19
+ * a bake does not start a second bake.
20
+ * - `bakeAudioAnimation` (`el.react()`) needs a real decode and is refused.
21
+ *
22
+ * Any other capability call fails the bake and names the call. The bake runs
23
+ * on a copy of the context with no workspace, and `applyOps` runs without
24
+ * the hooks that write (a 3D render, a retargeted sequence). A bake reads
25
+ * assets and runs custom animation bodies. It writes nothing.
26
+ */
27
+ import type { ProcessingContext } from "@nodetool-ai/runtime";
28
+ import { type TimelineDocumentLike } from "@nodetool-ai/timeline";
29
+ /** Wall-clock ceiling on a bake. Building a document is arithmetic over a
30
+ * bounded scene list; anything slower is a runaway script, and a caller
31
+ * (an agent, or the editor) is waiting on this call. */
32
+ export declare const TIMELINE_CODE_BAKE_TIMEOUT_SECONDS = 20;
33
+ export interface BakeTimelineCodeResult {
34
+ ok: boolean;
35
+ /** Present only when `ok`. */
36
+ document?: TimelineDocumentLike;
37
+ logs: string[];
38
+ error?: string;
39
+ duration_ms: number;
40
+ /**
41
+ * The retained program the code's own `v.save()` printed, when capture
42
+ * ran. Baking this program gives the same document again.
43
+ */
44
+ retainedProgram?: string;
45
+ }
46
+ /**
47
+ * `context` with every path to the run's workspace removed. The sandbox then
48
+ * gives the guest a `workspace` that refuses every call, and so does the
49
+ * sandbox a custom animation body runs in.
50
+ */
51
+ export declare function hermeticBakeContext(context: ProcessingContext): ProcessingContext;
52
+ /**
53
+ * Run one timeline authoring script and return the document its `v.save()`
54
+ * call wrote. Returns rather than throws: a script that fails is a result to
55
+ * report to the caller (and, through it, the agent that wrote the code).
56
+ */
57
+ export declare function bakeTimelineCode(hostContext: ProcessingContext, code: string): Promise<BakeTimelineCodeResult>;
58
+ /**
59
+ * Whether `baked` — a fresh hermetic rebuild of some code — is the same
60
+ * timeline `saved` already is: every scene the two share hashes the same
61
+ * (`hashSceneSubtree`, the same identity check `mergeTimelineSource` uses to
62
+ * tell an untouched scene from a hand-edited one), the two name the same
63
+ * scenes, and everything outside a scene (passthrough clips, tracks, markers,
64
+ * tempo, camera2d, setup, mediaTracks) matches after the same normalization
65
+ * a bake already applies (`normalizeAuthoredDocument`, inside
66
+ * {@link bakeTimelineCode}).
67
+ *
68
+ * This is the gate for attaching the retained program `v.save()` printed:
69
+ * only when a hermetic bake of that program reproduces what was saved is it
70
+ * a faithful record of the document. A mismatch means the capture missed
71
+ * something (a scene clip changed after `v.series()`, a value computed with
72
+ * `Math.random()` or `Date.now()`).
73
+ */
74
+ export declare function bakedDocumentMatchesSaved(saved: TimelineDocumentLike, baked: TimelineDocumentLike): boolean;
75
+ //# sourceMappingURL=timeline-code-bake.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeline-code-bake.d.ts","sourceRoot":"","sources":["../src/timeline-code-bake.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,EAKL,KAAK,oBAAoB,EAC1B,MAAM,uBAAuB,CAAC;AAG/B;;wDAEwD;AACxD,eAAO,MAAM,kCAAkC,KAAK,CAAC;AAErD,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,OAAO,CAAC;IACZ,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAWD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,iBAAiB,GAAG,iBAAiB,CAUjF;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,iBAAiB,EAC9B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,sBAAsB,CAAC,CA6NjC;AAqDD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,oBAAoB,EAC3B,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAoBT"}
@@ -0,0 +1,327 @@
1
+ /**
2
+ * Bake a timeline's authoring code: run an `@nodetool-ai/sandbox-timeline`
3
+ * program once and hand back the `TimelineDocument` it built, without
4
+ * writing anywhere.
5
+ *
6
+ * The stored code is a retained program (docs/timeline-code-capture.md):
7
+ * research, generation and every other capability call ran once, in the
8
+ * author's run, and their results are literals in the program. So a bake is
9
+ * hermetic by construction. It gets no network, no secrets and no
10
+ * capability except a stub for `nodetool.timelines`:
11
+ *
12
+ * - `create`/`setDocument` capture the document `v.save()` hands them.
13
+ * - `validate` answers `ok: true`. The caller writes the result through the
14
+ * real `set_timeline_document` path afterward, which validates for real.
15
+ * - `edit` records `v.save()`'s `ops`. This function applies them afterward
16
+ * with `applyOps`, the pure op applier `edit_timeline` uses, over an
17
+ * in-memory `TimelineSequence` that is never saved.
18
+ * - `code.set` answers that nothing was attached, so the `v.save()` inside
19
+ * a bake does not start a second bake.
20
+ * - `bakeAudioAnimation` (`el.react()`) needs a real decode and is refused.
21
+ *
22
+ * Any other capability call fails the bake and names the call. The bake runs
23
+ * on a copy of the context with no workspace, and `applyOps` runs without
24
+ * the hooks that write (a 3D render, a retargeted sequence). A bake reads
25
+ * assets and runs custom animation bodies. It writes nothing.
26
+ */
27
+ import { normalizeAuthoredDocument, hashSceneSubtree, sceneSubtreeClips } from "@nodetool-ai/timeline";
28
+ import { resolveImportedPacks } from "./sandbox-pack-resolution.js";
29
+ /** Wall-clock ceiling on a bake. Building a document is arithmetic over a
30
+ * bounded scene list; anything slower is a runaway script, and a caller
31
+ * (an agent, or the editor) is waiting on this call. */
32
+ export const TIMELINE_CODE_BAKE_TIMEOUT_SECONDS = 20;
33
+ const TIMELINE_STUB_METHODS = new Set([
34
+ "create_timeline",
35
+ "set_timeline_document",
36
+ "edit_timeline",
37
+ "validate_timeline",
38
+ "bake_audio_animation",
39
+ "set_timeline_code"
40
+ ]);
41
+ /**
42
+ * `context` with every path to the run's workspace removed. The sandbox then
43
+ * gives the guest a `workspace` that refuses every call, and so does the
44
+ * sandbox a custom animation body runs in.
45
+ */
46
+ export function hermeticBakeContext(context) {
47
+ const refuse = (name) => () => {
48
+ throw new Error(`${name} is not available during a timeline code bake.`);
49
+ };
50
+ return Object.create(context, {
51
+ workspace: { value: null },
52
+ resolveWorkspacePath: { value: refuse("resolveWorkspacePath") },
53
+ assetToSandbox: { value: refuse("assetToSandbox") },
54
+ sandboxToAsset: { value: refuse("sandboxToAsset") }
55
+ });
56
+ }
57
+ /**
58
+ * Run one timeline authoring script and return the document its `v.save()`
59
+ * call wrote. Returns rather than throws: a script that fails is a result to
60
+ * report to the caller (and, through it, the agent that wrote the code).
61
+ */
62
+ export async function bakeTimelineCode(hostContext, code) {
63
+ const context = hermeticBakeContext(hostContext);
64
+ const started = Date.now();
65
+ const fail = (error, logs = []) => ({
66
+ ok: false,
67
+ error,
68
+ logs,
69
+ duration_ms: Date.now() - started
70
+ });
71
+ if (!code.trim()) {
72
+ return fail("The timeline's authoring code is empty.");
73
+ }
74
+ // The same fallback a chat session uses: a context built before the host
75
+ // installed its catalog still bakes against the process catalog.
76
+ const { getProcessSandboxModuleCatalog } = await import("@nodetool-ai/runtime");
77
+ const packs = resolveImportedPacks(code, context, {
78
+ subject: "The timeline's authoring code",
79
+ catalog: context.sandboxModuleCatalog ?? getProcessSandboxModuleCatalog()
80
+ });
81
+ if (!packs.ok) {
82
+ return fail(packs.error);
83
+ }
84
+ let captured;
85
+ let createCount = 0;
86
+ let createdFps;
87
+ let createdWidth;
88
+ let createdHeight;
89
+ let capturedOps;
90
+ let retainedProgram;
91
+ function timelineStubDispatch(name, args) {
92
+ switch (name) {
93
+ case "create_timeline": {
94
+ createCount += 1;
95
+ createdFps = typeof args["fps"] === "number" ? args["fps"] : undefined;
96
+ createdWidth =
97
+ typeof args["width"] === "number" ? args["width"] : undefined;
98
+ createdHeight =
99
+ typeof args["height"] === "number" ? args["height"] : undefined;
100
+ return { timeline_id: `bake:${createCount}` };
101
+ }
102
+ case "set_timeline_document": {
103
+ captured = args["document"];
104
+ return { written: true };
105
+ }
106
+ case "edit_timeline": {
107
+ // Recorded, not applied here: `v.save()` only checks
108
+ // `edit.failed`/`edit.ops`, so an empty success report lets the
109
+ // script finish (and its trailing `validate()` run against the
110
+ // still-unedited document, which is fine — the real validate below
111
+ // runs after ops are applied). Ops are applied host-side once the
112
+ // guest is done; see the file header.
113
+ capturedOps = Array.isArray(args["ops"]) ? args["ops"] : [];
114
+ return { failed: 0, ops: [] };
115
+ }
116
+ case "validate_timeline":
117
+ return { ok: true, errors: [], warnings: [] };
118
+ case "bake_audio_animation":
119
+ throw new Error("el.react() bakes an audio-reactive animation with a real decode " +
120
+ "call, which cannot run during a hermetic code bake. Remove " +
121
+ "el.react() from code stored as timeline source, or call " +
122
+ "bake_audio_animation separately after the code is set.");
123
+ case "set_timeline_code":
124
+ if (typeof args["code"] === "string")
125
+ retainedProgram = args["code"];
126
+ return { timeline_id: args["timeline_id"], embedded: false, warnings: [] };
127
+ default:
128
+ throw new Error(`unreachable: ${name} is not a stubbed timeline method`);
129
+ }
130
+ }
131
+ async function callTool(name, argsJson) {
132
+ try {
133
+ if (typeof name !== "string") {
134
+ return { ok: false, error: "callTool: name must be a string" };
135
+ }
136
+ const rawArgs = typeof argsJson === "string" && argsJson
137
+ ? JSON.parse(argsJson)
138
+ : {};
139
+ if (TIMELINE_STUB_METHODS.has(name)) {
140
+ return { ok: true, result: timelineStubDispatch(name, rawArgs) };
141
+ }
142
+ return {
143
+ ok: false,
144
+ error: `The code calls "${name}", which a rebake cannot run. Call it in ` +
145
+ "the run that builds the timeline and use its result: v.save() " +
146
+ "stores that result in the code as a value."
147
+ };
148
+ }
149
+ catch (error) {
150
+ return {
151
+ ok: false,
152
+ error: error instanceof Error ? error.message : String(error)
153
+ };
154
+ }
155
+ }
156
+ const { NODETOOL_PRELUDE } = await import("./sandbox-toolbelt.js");
157
+ const { listCapabilitySpecs } = await import("./capabilities/metadata.js");
158
+ // Every catalog name, not just the timeline stub's: a membership miss
159
+ // throws "not in this toolbelt" before `callTool` runs, which would hide
160
+ // the message naming the capability behind a confusing one.
161
+ const toolNames = listCapabilitySpecs().map((spec) => spec.name);
162
+ const { runInSandbox } = await import("./js-sandbox.js");
163
+ const result = await runInSandbox({
164
+ code: `${NODETOOL_PRELUDE}\n${code}`,
165
+ context,
166
+ timeoutMs: TIMELINE_CODE_BAKE_TIMEOUT_SECONDS * 1000,
167
+ globals: {
168
+ __toolNames: toolNames,
169
+ __toolModules: {},
170
+ __callTool: callTool
171
+ },
172
+ // Hermetic: no secrets, no network. `maxFetchCalls: 0` makes the
173
+ // guest's first raw `fetch()` fail rather than reach the network, so a
174
+ // build is a function of the code alone.
175
+ limits: { secretScope: [], maxFetchCalls: 0 },
176
+ modules: packs.modules
177
+ });
178
+ const logs = result.logs ?? [];
179
+ if (!result.success) {
180
+ return fail(result.error ?? "The timeline's authoring code failed.", logs);
181
+ }
182
+ if (!captured) {
183
+ return fail("The code ran without calling v.save(nodetool.timelines, {...}) — " +
184
+ "nothing was built.", logs);
185
+ }
186
+ // The real `nodetool.timelines.setDocument` (`set_timeline_document`'s
187
+ // impl) runs every document through `normalizeAuthoredDocument` before it
188
+ // is stored — filling in the schema's bookkeeping fields
189
+ // (track `index`/`visible`/`locked`, clip `sourceType`/`status`/`locked`/
190
+ // `versions`, animation ids) that a hand-authored or freshly-built document
191
+ // leaves out. `edit_timeline`'s `applyOps` then runs against that
192
+ // normalized, stored document, never the raw one `v.save()` built. A bake
193
+ // has to do the same normalization before its own `applyOps` call below —
194
+ // otherwise an op whose result depends on a field normalization fills in
195
+ // (`hashSceneSubtree` sees whatever `snap_to_beats` left the clip at)
196
+ // computes against a document shaped differently than what a real save
197
+ // would have produced, and its hash cannot match the shipped one.
198
+ captured = normalizeAuthoredDocument(captured).document;
199
+ if (capturedOps && capturedOps.length > 0) {
200
+ const { parseOps, applyOps } = await import("./capabilities/timeline-operations.js");
201
+ const { ungatedCapabilityRun } = await import("./capabilities/invoke.js");
202
+ const { TimelineSequence } = await import("@nodetool-ai/models");
203
+ const parsed = parseOps(capturedOps);
204
+ if ("error" in parsed) {
205
+ return fail(`v.save()'s \`ops\`: ${parsed.error}`, logs);
206
+ }
207
+ // Never saved: `applyOps` mutates nothing outside the bridge it builds
208
+ // over this row's fields, and `sequence.save()` is never called. The id
209
+ // only has to be a string — nothing looks it up.
210
+ const sequence = new TimelineSequence({
211
+ id: "bake",
212
+ user_id: context.userId ?? "bake",
213
+ project_id: "bake",
214
+ fps: createdFps ?? 30,
215
+ width: createdWidth ?? 1920,
216
+ height: createdHeight ?? 1080
217
+ });
218
+ const run = ungatedCapabilityRun(context);
219
+ const { records, state } = await applyOps(run, sequence, captured, parsed, { hermetic: true });
220
+ const failedOps = records.filter((record) => !record.ok);
221
+ if (failedOps.length > 0) {
222
+ return fail(`edit_timeline: ${JSON.stringify(failedOps, null, 2)}`, logs);
223
+ }
224
+ // Same merge `edit_timeline` writes back to the row with — see
225
+ // `editTimeline.impl` in `capabilities/timelines.ts`.
226
+ const next = {
227
+ ...captured,
228
+ tracks: state.documentTracks,
229
+ clips: state.documentClips,
230
+ markers: state.markers
231
+ };
232
+ if (state.tempo)
233
+ next.tempo = state.tempo;
234
+ if (state.setup)
235
+ next.setup = state.setup;
236
+ if (state.mediaTracks.length > 0 ||
237
+ captured.mediaTracks !== undefined) {
238
+ next.mediaTracks = state.mediaTracks;
239
+ }
240
+ captured = next;
241
+ }
242
+ const baked = {
243
+ ok: true,
244
+ document: captured,
245
+ logs,
246
+ duration_ms: Date.now() - started
247
+ };
248
+ if (retainedProgram !== undefined)
249
+ baked.retainedProgram = retainedProgram;
250
+ return baked;
251
+ }
252
+ /** Scene group clips, keyed by `sourceScene`. Local to `sceneGroupsByName` in `@nodetool-ai/timeline`, which is not exported. */
253
+ function sceneGroupIdsByName(clips) {
254
+ const byName = new Map();
255
+ for (const clip of clips) {
256
+ if (typeof clip.sourceScene === "string" && clip.sourceScene !== "") {
257
+ byName.set(clip.sourceScene, clip.id);
258
+ }
259
+ }
260
+ return byName;
261
+ }
262
+ /** Every clip id belonging to one of `groups`' scene subtrees. */
263
+ function sceneClipIds(clips, groups) {
264
+ const ids = new Set();
265
+ for (const groupId of groups.values()) {
266
+ for (const clip of sceneSubtreeClips(clips, groupId))
267
+ ids.add(clip.id);
268
+ }
269
+ return ids;
270
+ }
271
+ /** A stable string for everything in a document outside its own scenes. */
272
+ function nonSceneFingerprint(document, sceneIds) {
273
+ const byId = (a, b) => a.id < b.id ? -1 : a.id > b.id ? 1 : 0;
274
+ const outsideClips = document.clips
275
+ .filter((clip) => !sceneIds.has(clip.id))
276
+ .slice()
277
+ .sort(byId);
278
+ const record = document;
279
+ const markers = Array.isArray(record["markers"])
280
+ ? [...record["markers"]].sort(byId)
281
+ : record["markers"] ?? null;
282
+ return JSON.stringify({
283
+ outsideClips,
284
+ tracks: record["tracks"] ?? null,
285
+ markers,
286
+ tempo: record["tempo"] ?? null,
287
+ camera2d: record["camera2d"] ?? null,
288
+ setup: record["setup"] ?? null,
289
+ mediaTracks: record["mediaTracks"] ?? null
290
+ });
291
+ }
292
+ /**
293
+ * Whether `baked` — a fresh hermetic rebuild of some code — is the same
294
+ * timeline `saved` already is: every scene the two share hashes the same
295
+ * (`hashSceneSubtree`, the same identity check `mergeTimelineSource` uses to
296
+ * tell an untouched scene from a hand-edited one), the two name the same
297
+ * scenes, and everything outside a scene (passthrough clips, tracks, markers,
298
+ * tempo, camera2d, setup, mediaTracks) matches after the same normalization
299
+ * a bake already applies (`normalizeAuthoredDocument`, inside
300
+ * {@link bakeTimelineCode}).
301
+ *
302
+ * This is the gate for attaching the retained program `v.save()` printed:
303
+ * only when a hermetic bake of that program reproduces what was saved is it
304
+ * a faithful record of the document. A mismatch means the capture missed
305
+ * something (a scene clip changed after `v.series()`, a value computed with
306
+ * `Math.random()` or `Date.now()`).
307
+ */
308
+ export function bakedDocumentMatchesSaved(saved, baked) {
309
+ const savedGroups = sceneGroupIdsByName(saved.clips);
310
+ const bakedGroups = sceneGroupIdsByName(baked.clips);
311
+ if (savedGroups.size !== bakedGroups.size)
312
+ return false;
313
+ for (const [name, savedGroupId] of savedGroups) {
314
+ const bakedGroupId = bakedGroups.get(name);
315
+ if (bakedGroupId === undefined)
316
+ return false;
317
+ if (hashSceneSubtree(saved.clips, savedGroupId) !==
318
+ hashSceneSubtree(baked.clips, bakedGroupId)) {
319
+ return false;
320
+ }
321
+ }
322
+ const savedSceneIds = sceneClipIds(saved.clips, savedGroups);
323
+ const bakedSceneIds = sceneClipIds(baked.clips, bakedGroups);
324
+ return (nonSceneFingerprint(saved, savedSceneIds) ===
325
+ nonSceneFingerprint(baked, bakedSceneIds));
326
+ }
327
+ //# sourceMappingURL=timeline-code-bake.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeline-code-bake.js","sourceRoot":"","sources":["../src/timeline-code-bake.ts"],"names":[],"mappings":"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"}
@@ -29,6 +29,8 @@ export interface RenderTimelineFramesOptions {
29
29
  width?: number;
30
30
  /** Resolve a clip's asset id to its encoded bytes, or null when unavailable. */
31
31
  loadAsset: (assetId: string) => Promise<Uint8Array | null>;
32
+ /** Draw these clips only, while resolving their layout and animations against the full sequence. */
33
+ onlyClipIds?: readonly string[];
32
34
  /**
33
35
  * Average N sub-frame instants into every frame instead of sampling one (D10).
34
36
  * Absent or one sample is blur off, which is what every caller that does not
@@ -134,12 +136,27 @@ export interface PreviewDroppedLayer {
134
136
  /** Why the scene model refused it. */
135
137
  reason: DroppedLayerReason;
136
138
  }
139
+ /** A failure across the shutter window, separate from representative geometry. */
140
+ export interface PreviewSampleFailure {
141
+ kind: "skipped" | "dropped" | "degraded";
142
+ clip_id?: string;
143
+ clip_name?: string;
144
+ reason: string;
145
+ /** Every contributing sample affected by this failure. Index is zero-based. */
146
+ samples: {
147
+ index: number;
148
+ time_ms: number;
149
+ }[];
150
+ }
137
151
  export interface PreviewFrame {
152
+ /** False when any requested visual content was skipped or approximated. */
153
+ complete: boolean;
138
154
  time_ms: number;
139
155
  /** PNG bytes of the composited frame. */
140
156
  png: Uint8Array;
141
157
  width: number;
142
158
  height: number;
159
+ /** Geometry from the first contributing sample. See failures for the full window. */
143
160
  layers: PreviewLayerReport[];
144
161
  /**
145
162
  * Clips the scene model left out of this frame. Empty on almost every
@@ -153,11 +170,20 @@ export interface PreviewFrame {
153
170
  * degraded version of the one an export would produce.
154
171
  */
155
172
  degraded: PreviewDegradation[];
173
+ /** Failures from every contributing sample, deduplicated with affected taps. */
174
+ failures: PreviewSampleFailure[];
156
175
  }
157
176
  export interface RenderTimelineFramesResult {
177
+ /** True only when every requested frame rendered without missing content. */
178
+ complete: boolean;
158
179
  frames: PreviewFrame[];
159
180
  /** Effect types present on the timeline that Canvas 2D cannot draw. */
160
181
  effectsNotApplied: string[];
182
+ /**
183
+ * Families a text or caption layer names that are neither bundled nor
184
+ * resolvable from Google Fonts — drawn in the fallback face (D8).
185
+ */
186
+ fontsUnavailable: string[];
161
187
  }
162
188
  /**
163
189
  * Composite `timesMs` and return the PNG of each, plus what each layer
@@ -1 +1 @@
1
- {"version":3,"file":"frames.d.ts","sourceRoot":"","sources":["../../src/timeline-preview/frames.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"frames.d.ts","sourceRoot":"","sources":["../../src/timeline-preview/frames.ts"],"names":[],"mappings":"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"}