@hypit/hypit 0.1.3 → 0.1.5

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 (486) hide show
  1. package/README.md +5 -3
  2. package/dist/public/caption.d.ts +206 -183
  3. package/dist/public/composition.d.ts +25 -3
  4. package/dist/public/endpoint-kit.d.ts +24 -2
  5. package/dist/public/generation.d.ts +5 -1
  6. package/dist/public/hyperframes.d.ts +19 -1
  7. package/dist/public/narrative.d.ts +17 -3
  8. package/dist/public/performance.d.ts +1590 -0
  9. package/dist/public/program-space.d.ts +179 -32
  10. package/dist/public/runtime-kit.d.ts +21 -8
  11. package/dist/public/sound.d.ts +822 -0
  12. package/dist/public/speech.d.ts +41 -0
  13. package/dist/public/studio-adapter.d.ts +107 -16
  14. package/dist/public/temporal-markup.d.ts +9 -44
  15. package/dist/public/temporal.d.ts +37 -28
  16. package/dist/public/{semantic-track.d.ts → timeline.d.ts} +62 -49
  17. package/examples/README.md +18 -10
  18. package/examples/minimal-author-package/packages/example-component/preview/preview.svml +19 -12
  19. package/examples/minimal-author-package/packages/example-component/src/component.ts +5 -5
  20. package/examples/minimal-author-package/packages/example-component/src/fragment.ts +3 -5
  21. package/examples/minimal-author-package/packages/example-component/src/manifest.ts +8 -10
  22. package/examples/minimal-author-package/packages/example-component/src/surface.ts +2 -2
  23. package/examples/provider-package/README.md +78 -0
  24. package/examples/provider-package/hypit.runtime.json +12 -0
  25. package/examples/provider-package/packages/provider-images/package.json +11 -0
  26. package/examples/provider-package/packages/provider-images/src/activation.ts +24 -0
  27. package/examples/provider-package/packages/provider-images/src/provider.ts +122 -0
  28. package/examples/provider-package/packages/provider-images/tsconfig.json +9 -0
  29. package/examples/semantic-composition/README.md +6 -0
  30. package/examples/semantic-composition/chat.svml +6 -5
  31. package/examples/semantic-composition/packages/chat-scene/README.md +3 -3
  32. package/examples/semantic-composition/packages/chat-scene/src/activation.ts +18 -21
  33. package/examples/semantic-composition/packages/chat-scene/src/render.ts +4 -4
  34. package/examples/semantic-composition/packages/performance-styles/README.md +42 -0
  35. package/examples/semantic-composition/packages/performance-styles/package.json +25 -0
  36. package/examples/semantic-composition/packages/performance-styles/src/activation.ts +57 -0
  37. package/examples/semantic-composition/packages/performance-styles/src/render.ts +54 -0
  38. package/examples/semantic-composition/packages/performance-styles/src/studio.ts +28 -0
  39. package/examples/semantic-composition/packages/performance-styles/tsconfig.json +18 -0
  40. package/examples/semantic-composition/packages/responsive-explainer/README.md +16 -9
  41. package/examples/semantic-composition/packages/responsive-explainer/src/activation.ts +12 -12
  42. package/examples/semantic-composition/packages/responsive-explainer/src/render.ts +5 -5
  43. package/examples/semantic-composition/packages/sound-styles/README.md +36 -0
  44. package/examples/semantic-composition/packages/sound-styles/package.json +25 -0
  45. package/examples/semantic-composition/packages/sound-styles/src/activation.ts +53 -0
  46. package/examples/semantic-composition/packages/sound-styles/src/render.ts +14 -0
  47. package/examples/semantic-composition/packages/sound-styles/tsconfig.json +18 -0
  48. package/package.json +35 -15
  49. package/packages/audio-track/README.md +20 -13
  50. package/packages/audio-track/package.json +1 -1
  51. package/packages/audio-track/src/component.ts +4 -4
  52. package/packages/audio-track/src/fragment.ts +6 -5
  53. package/packages/audio-track/src/index.ts +1 -1
  54. package/packages/audio-track/src/manifest.ts +17 -16
  55. package/packages/audio-track/src/program.ts +21 -25
  56. package/packages/audio-track/src/surface.ts +19 -18
  57. package/packages/audio-track-studio/README.md +23 -0
  58. package/packages/audio-track-studio/src/index.ts +33 -19
  59. package/packages/author-kit/README.md +1 -1
  60. package/packages/background-removal/README.md +4 -7
  61. package/packages/browser-capture/package.json +1 -1
  62. package/packages/build-result/README.md +69 -0
  63. package/packages/build-result/package.json +2 -1
  64. package/packages/build-result/src/decode.ts +12 -8
  65. package/packages/build-result/src/execution-log.ts +17 -0
  66. package/packages/build-result/src/file-reference.ts +42 -0
  67. package/packages/build-result/src/index.ts +4 -0
  68. package/packages/build-result/src/replace-file-windows.ts +58 -0
  69. package/packages/build-result/src/replace-file.ts +11 -0
  70. package/packages/build-result/src/store.ts +58 -14
  71. package/packages/build-result/src/types.ts +41 -8
  72. package/packages/build-result/src/writer.ts +12 -1
  73. package/packages/build-result-fs/README.md +23 -1
  74. package/packages/build-result-s3/README.md +5 -0
  75. package/packages/build-result-s3/src/repository.ts +23 -5
  76. package/packages/caption/README.md +61 -73
  77. package/packages/caption/package.json +3 -2
  78. package/packages/caption/src/activation.ts +2 -2
  79. package/packages/caption/src/component.ts +20 -5
  80. package/packages/caption/src/display.ts +3 -18
  81. package/packages/caption/src/fragment.ts +3 -7
  82. package/packages/caption/src/index.ts +6 -5
  83. package/packages/caption/src/manifest.ts +29 -46
  84. package/packages/caption/src/style.ts +24 -135
  85. package/packages/caption/src/surface.ts +12 -92
  86. package/packages/caption/src/temporalize.ts +18 -53
  87. package/packages/caption/src/types.ts +8 -35
  88. package/packages/caption/src/visibility.ts +23 -0
  89. package/packages/caption-fine/README.md +31 -11
  90. package/packages/caption-fine/package.json +4 -2
  91. package/packages/caption-fine/src/component.ts +3 -3
  92. package/packages/caption-fine/src/fragment.ts +7 -19
  93. package/packages/caption-fine/src/index.ts +2 -0
  94. package/packages/caption-fine/src/manifest.ts +27 -18
  95. package/packages/caption-fine/src/recipe.ts +7 -0
  96. package/packages/caption-fine/src/render.ts +62 -49
  97. package/packages/caption-fine/src/schedule.ts +39 -35
  98. package/packages/caption-fine/src/style.ts +10 -9
  99. package/packages/caption-fine/src/surface.ts +62 -35
  100. package/packages/caption-fine/src/types.ts +2 -0
  101. package/packages/caption-fine-studio/README.md +24 -2
  102. package/packages/caption-fine-studio/package.json +10 -3
  103. package/packages/caption-fine-studio/src/activation.ts +3 -3
  104. package/packages/caption-fine-studio/src/index.ts +61 -40
  105. package/packages/cli/README.md +81 -3
  106. package/packages/cli/package.json +1 -0
  107. package/packages/cli/src/arguments.ts +39 -15
  108. package/packages/cli/src/build-planning.ts +9 -3
  109. package/packages/cli/src/command.ts +7 -1
  110. package/packages/cli/src/commands/environment.ts +66 -27
  111. package/packages/cli/src/commands/execution.ts +81 -26
  112. package/packages/cli/src/commands/results.ts +7 -11
  113. package/packages/cli/src/index.ts +2 -2
  114. package/packages/cli/src/machine-view.ts +15 -5
  115. package/packages/cli/src/main.ts +38 -42
  116. package/packages/cli/src/observation.ts +7 -1
  117. package/packages/cli/src/output.ts +92 -34
  118. package/packages/cli/src/result-export.ts +22 -13
  119. package/packages/cli/src/run-file.ts +19 -8
  120. package/packages/cli/src/view.ts +64 -18
  121. package/packages/comment-sticker/README.md +3 -3
  122. package/packages/comment-sticker/package.json +1 -1
  123. package/packages/comment-sticker/src/component.ts +4 -4
  124. package/packages/comment-sticker/src/fragment.ts +5 -4
  125. package/packages/comment-sticker/src/manifest.ts +7 -6
  126. package/packages/comment-sticker/src/program.ts +9 -9
  127. package/packages/comment-sticker/src/surface.ts +6 -7
  128. package/packages/comment-sticker-studio/src/index.ts +2 -1
  129. package/packages/compiler-node/src/compiler.ts +1 -0
  130. package/packages/composition/README.md +21 -0
  131. package/packages/composition/src/audio-presentation.ts +44 -0
  132. package/packages/composition/src/index.ts +3 -0
  133. package/packages/composition/src/schema.ts +8 -3
  134. package/packages/composition/src/track.ts +15 -1
  135. package/packages/credential-store-env/README.md +1 -1
  136. package/packages/deck-track/README.md +3 -3
  137. package/packages/deck-track/package.json +1 -1
  138. package/packages/deck-track/src/component.ts +5 -5
  139. package/packages/deck-track/src/fragment.ts +6 -5
  140. package/packages/deck-track/src/lower.ts +12 -12
  141. package/packages/deck-track/src/manifest.ts +8 -7
  142. package/packages/deck-track/src/program.ts +13 -16
  143. package/packages/deck-track/src/surface.ts +9 -10
  144. package/packages/driver-node/src/driver.ts +41 -3
  145. package/packages/elevenlabs-speech/README.md +27 -0
  146. package/packages/{provider-xiaomi-mimo → elevenlabs-speech}/package.json +5 -8
  147. package/packages/elevenlabs-speech/src/activation.ts +26 -0
  148. package/packages/elevenlabs-speech/src/fragment.ts +11 -0
  149. package/packages/elevenlabs-speech/src/index.ts +111 -0
  150. package/packages/elevenlabs-speech/src/surface.ts +167 -0
  151. package/packages/endpoint-kit/README.md +24 -0
  152. package/packages/endpoint-kit/src/index.ts +7 -1
  153. package/packages/estimate/README.md +56 -3
  154. package/packages/estimate/src/program.ts +7 -8
  155. package/packages/film/README.md +12 -7
  156. package/packages/film/package.json +1 -1
  157. package/packages/film/src/component.ts +4 -4
  158. package/packages/film/src/fragment.ts +6 -5
  159. package/packages/film/src/manifest.ts +11 -10
  160. package/packages/film/src/program.ts +5 -5
  161. package/packages/film/src/recipe.ts +2 -1
  162. package/packages/film/src/surface.ts +6 -6
  163. package/packages/film-studio/package.json +1 -1
  164. package/packages/film-studio/src/index.ts +2 -2
  165. package/packages/fishaudio-speech/README.md +33 -0
  166. package/packages/fishaudio-speech/package.json +21 -0
  167. package/packages/fishaudio-speech/src/activation.ts +32 -0
  168. package/packages/fishaudio-speech/src/fragment.ts +11 -0
  169. package/packages/fishaudio-speech/src/index.ts +156 -0
  170. package/packages/fishaudio-speech/src/surface.ts +192 -0
  171. package/packages/fonts-open/README.md +5 -0
  172. package/packages/fonts-open/package.json +5 -1
  173. package/packages/fonts-open/src/studio.ts +21 -0
  174. package/packages/generation/README.md +11 -1
  175. package/packages/generation/src/mapping.ts +28 -30
  176. package/packages/gpt-image/README.md +1 -2
  177. package/packages/grok-imagine/README.md +1 -2
  178. package/packages/hyperframes/README.md +7 -3
  179. package/packages/hyperframes/src/browser-program.ts +11 -2
  180. package/packages/hyperframes/src/document.ts +15 -2
  181. package/packages/interview-emoji-reveal/README.md +4 -4
  182. package/packages/interview-emoji-reveal/package.json +1 -1
  183. package/packages/interview-emoji-reveal/src/component.ts +4 -4
  184. package/packages/interview-emoji-reveal/src/fragment.ts +6 -5
  185. package/packages/interview-emoji-reveal/src/manifest.ts +9 -8
  186. package/packages/interview-emoji-reveal/src/program.ts +14 -14
  187. package/packages/interview-emoji-reveal/src/surface.ts +8 -9
  188. package/packages/media-execution/README.md +7 -3
  189. package/packages/media-execution/src/audio-presentation.ts +23 -0
  190. package/packages/media-execution/src/execute.ts +2 -0
  191. package/packages/media-pipeline/README.md +7 -3
  192. package/packages/media-pipeline/src/audio-plan.ts +4 -1
  193. package/packages/media-pipeline/src/component.ts +16 -2
  194. package/packages/media-pipeline/src/manifest.ts +3 -1
  195. package/packages/media-pipeline/src/types.ts +2 -1
  196. package/packages/media-track/README.md +14 -47
  197. package/packages/media-track/package.json +1 -1
  198. package/packages/media-track/preview/preview.svml +5 -5
  199. package/packages/media-track/src/author.ts +12 -6
  200. package/packages/media-track/src/component.ts +10 -16
  201. package/packages/media-track/src/fragment.ts +8 -7
  202. package/packages/media-track/src/index.ts +3 -1
  203. package/packages/media-track/src/lower.ts +7 -7
  204. package/packages/media-track/src/manifest.ts +16 -38
  205. package/packages/media-track/src/program.ts +62 -67
  206. package/packages/media-track/src/sampling.ts +6 -6
  207. package/packages/media-track/src/sequence.ts +8 -8
  208. package/packages/media-track/src/surface.ts +25 -43
  209. package/packages/media-track-studio/README.md +9 -0
  210. package/packages/media-track-studio/src/index.ts +23 -13
  211. package/packages/mimo-speech/README.md +1 -1
  212. package/packages/minimax-h3/README.md +1 -1
  213. package/packages/nano-banana/README.md +1 -1
  214. package/packages/narrative/README.md +23 -1
  215. package/packages/narrative/src/identity.ts +11 -0
  216. package/packages/narrative/src/index.ts +3 -0
  217. package/packages/narrative/src/schema.ts +28 -27
  218. package/packages/narrative/src/selection.ts +52 -0
  219. package/packages/narrative/src/types.ts +2 -0
  220. package/packages/package-loader-node/README.md +30 -0
  221. package/packages/package-loader-node/package.json +5 -2
  222. package/packages/package-loader-node/src/distribution-resolution.ts +10 -3
  223. package/packages/package-loader-node/src/index.ts +1 -0
  224. package/packages/package-loader-node/src/loader.ts +12 -15
  225. package/packages/package-loader-node/src/location.ts +27 -1
  226. package/packages/package-loader-node/src/module-scope.ts +183 -0
  227. package/packages/package-loader-node/src/types.ts +4 -0
  228. package/packages/performance/README.md +83 -0
  229. package/packages/performance/package.json +30 -0
  230. package/packages/performance/src/activation.ts +11 -0
  231. package/packages/performance/src/component.ts +46 -0
  232. package/packages/performance/src/index.ts +6 -0
  233. package/packages/performance/src/manifest.ts +53 -0
  234. package/packages/{media-track/src/performance.ts → performance/src/media.ts} +9 -10
  235. package/packages/performance/src/program.ts +51 -0
  236. package/packages/performance/src/style.ts +35 -0
  237. package/packages/performance/src/surface.ts +99 -0
  238. package/packages/performance-studio/README.md +25 -0
  239. package/packages/performance-studio/package.json +21 -0
  240. package/packages/performance-studio/src/activation.ts +6 -0
  241. package/packages/performance-studio/src/index.ts +84 -0
  242. package/packages/program-space/README.md +9 -18
  243. package/packages/program-space/src/activation.ts +1 -5
  244. package/packages/program-space/src/index.ts +2 -11
  245. package/packages/program-space/src/surface.ts +1 -20
  246. package/packages/project-context-node/README.md +20 -0
  247. package/packages/project-context-node/package.json +10 -0
  248. package/packages/project-context-node/src/index.ts +3 -0
  249. package/packages/{cli → project-context-node}/src/runtime-selection.ts +7 -2
  250. package/packages/provider-hyperframes-local/README.md +43 -15
  251. package/packages/provider-hyperframes-local/src/activation.ts +4 -3
  252. package/packages/provider-hyperframes-local/src/capture-process.ts +26 -4
  253. package/packages/provider-hyperframes-local/src/capture.ts +96 -26
  254. package/packages/provider-hyperframes-local/src/concurrency.ts +86 -0
  255. package/packages/provider-hyperframes-local/src/opaque-capture.ts +92 -0
  256. package/packages/provider-hyperframes-local/src/options.ts +2 -0
  257. package/packages/provider-hyperframes-local/src/program.ts +6 -3
  258. package/packages/provider-hyperframes-local/src/progress.ts +53 -0
  259. package/packages/provider-hyperframes-local/src/provider.ts +18 -5
  260. package/packages/provider-hyperframes-local/src/render.ts +48 -7
  261. package/packages/provider-hypihub/README.md +48 -17
  262. package/packages/provider-hypihub/package.json +2 -0
  263. package/packages/provider-hypihub/src/mapping.ts +31 -7
  264. package/packages/provider-hypihub/src/oauth.ts +6 -0
  265. package/packages/provider-hypihub/src/provider.ts +25 -13
  266. package/packages/provider-hypihub/src/routes.ts +1 -2
  267. package/packages/provider-hypihub/src/upload.ts +2 -0
  268. package/packages/provider-media-local/README.md +3 -4
  269. package/packages/provider-whisperx-local/README.md +57 -0
  270. package/packages/provider-whisperx-local/src/program.ts +1 -0
  271. package/packages/provider-whisperx-local/src/provider.ts +3 -0
  272. package/packages/ranking/README.md +8 -6
  273. package/packages/ranking/package.json +1 -1
  274. package/packages/ranking/src/component.ts +6 -6
  275. package/packages/ranking/src/fragment.ts +11 -7
  276. package/packages/ranking/src/manifest.ts +21 -14
  277. package/packages/ranking/src/render.ts +33 -35
  278. package/packages/ranking/src/schedule.ts +16 -19
  279. package/packages/ranking/src/surface.ts +12 -13
  280. package/packages/ranking-studio/README.md +29 -0
  281. package/packages/ranking-studio/package.json +8 -3
  282. package/packages/ranking-studio/src/index.ts +71 -12
  283. package/packages/render-hyperframes/README.md +7 -7
  284. package/packages/render-hyperframes/package.json +1 -1
  285. package/packages/render-hyperframes/src/component.ts +11 -1
  286. package/packages/render-hyperframes/src/fragment.ts +7 -4
  287. package/packages/render-hyperframes/src/manifest.ts +4 -4
  288. package/packages/render-hyperframes/src/surface.ts +6 -6
  289. package/packages/runtime/README.md +8 -1
  290. package/packages/runtime/src/catalog.ts +2 -0
  291. package/packages/runtime/src/execution.ts +15 -4
  292. package/packages/runtime/src/index.ts +2 -1
  293. package/packages/runtime/src/log.ts +51 -0
  294. package/packages/runtime/src/types.ts +5 -8
  295. package/packages/runtime-host-node/README.md +30 -0
  296. package/packages/runtime-host-node/package.json +1 -0
  297. package/packages/runtime-host-node/src/index.ts +25 -9
  298. package/packages/runtime-host-node/src/packages.ts +47 -50
  299. package/packages/runtime-kit/README.md +5 -0
  300. package/packages/runtime-kit/src/index.ts +3 -1
  301. package/packages/runtime-local/README.md +111 -4
  302. package/packages/runtime-local/src/config.ts +202 -56
  303. package/packages/runtime-local/src/control.ts +9 -1
  304. package/packages/runtime-local/src/executor.ts +66 -0
  305. package/packages/runtime-local/src/host.ts +37 -17
  306. package/packages/runtime-local/src/log.ts +48 -0
  307. package/packages/runtime-local/src/programs.ts +41 -25
  308. package/packages/runtime-local/src/result-writer.ts +2 -0
  309. package/packages/runtime-local/src/runtime.ts +10 -6
  310. package/packages/runtime-local/src/supervisor.ts +142 -0
  311. package/packages/runtime-local/src/types.ts +9 -2
  312. package/packages/runtime-local/src/worker-process.ts +7 -24
  313. package/packages/runtime-local/src/worker.ts +55 -83
  314. package/packages/screen-overlay/README.md +3 -3
  315. package/packages/screen-overlay/package.json +1 -1
  316. package/packages/screen-overlay/src/component.ts +3 -3
  317. package/packages/screen-overlay/src/fragment.ts +5 -4
  318. package/packages/screen-overlay/src/manifest.ts +7 -6
  319. package/packages/screen-overlay/src/program.ts +9 -9
  320. package/packages/screen-overlay/src/surface.ts +6 -7
  321. package/packages/script/README.md +37 -2
  322. package/packages/script/src/edit.ts +123 -73
  323. package/packages/script/src/lexical.ts +40 -6
  324. package/packages/script/src/manifest.ts +2 -2
  325. package/packages/script/src/narrative.ts +1 -0
  326. package/packages/script/src/parser.ts +36 -8
  327. package/packages/script/src/surface.ts +4 -3
  328. package/packages/script/src/types.ts +5 -1
  329. package/packages/script-studio/package.json +9 -3
  330. package/packages/script-studio/src/index.ts +2 -0
  331. package/packages/script-studio/src/projection.ts +105 -0
  332. package/packages/seedance/README.md +30 -1
  333. package/packages/seedance/src/index.ts +18 -7
  334. package/packages/seedance/src/surface.ts +17 -4
  335. package/packages/seedance-kits/README.md +10 -2
  336. package/packages/seedance-kits/kits/speaker-v1.svs +5 -5
  337. package/packages/seedream/README.md +1 -1
  338. package/packages/sound/README.md +81 -0
  339. package/packages/sound/package.json +25 -0
  340. package/packages/sound/src/activation.ts +11 -0
  341. package/packages/sound/src/component.ts +28 -0
  342. package/packages/sound/src/index.ts +5 -0
  343. package/packages/sound/src/manifest.ts +47 -0
  344. package/packages/sound/src/program.ts +84 -0
  345. package/packages/sound/src/style.ts +34 -0
  346. package/packages/sound/src/surface.ts +90 -0
  347. package/packages/sound-studio/README.md +22 -0
  348. package/packages/sound-studio/package.json +20 -0
  349. package/packages/sound-studio/src/activation.ts +6 -0
  350. package/packages/sound-studio/src/index.ts +74 -0
  351. package/packages/speech/README.md +2 -2
  352. package/packages/speech-alignment/src/align.ts +45 -21
  353. package/packages/speech-alignment/src/local.ts +8 -0
  354. package/packages/speech-alignment/src/locate.ts +1 -1
  355. package/packages/store-sqlite/README.md +7 -0
  356. package/packages/store-sqlite/src/store.ts +84 -83
  357. package/packages/studio/INSPECTOR.md +117 -0
  358. package/packages/studio/README.md +149 -14
  359. package/packages/studio/package.json +8 -7
  360. package/packages/studio/src/build-library.ts +99 -84
  361. package/packages/studio/src/companion-assembly.ts +1 -0
  362. package/packages/studio/src/domain.ts +1 -1
  363. package/packages/studio/src/fallback-companions.ts +3 -3
  364. package/packages/studio/src/feedback-server.ts +51 -0
  365. package/packages/studio/src/feedback-store.ts +66 -0
  366. package/packages/studio/src/feedback.ts +60 -0
  367. package/packages/studio/src/library-media.ts +19 -0
  368. package/packages/studio/src/parameter-values.ts +83 -1
  369. package/packages/studio/src/parameters.ts +132 -43
  370. package/packages/studio/src/preview/render.ts +5 -1
  371. package/packages/studio/src/preview/runtime-shim.ts +49 -3
  372. package/packages/studio/src/programme.ts +14 -30
  373. package/packages/studio/src/server.ts +66 -34
  374. package/packages/studio/src/shared.ts +24 -8
  375. package/packages/studio/src/snapshot.ts +21 -132
  376. package/packages/studio/src/studio-preflight.ts +3 -3
  377. package/packages/studio/src/studio-registry.ts +72 -6
  378. package/packages/studio/src/style.css +342 -190
  379. package/packages/studio/src/temporal-edit.ts +131 -0
  380. package/packages/studio/src/ui/artifact-name.ts +80 -0
  381. package/packages/studio/src/ui/artifact-preview.ts +99 -0
  382. package/packages/studio/src/ui/comments.ts +233 -0
  383. package/packages/studio/src/ui/icons.ts +10 -1
  384. package/packages/studio/src/ui/library.ts +373 -192
  385. package/packages/studio/src/ui/main.ts +291 -110
  386. package/packages/studio/src/ui/material-preview.ts +1 -1
  387. package/packages/studio/src/ui/overlay.ts +31 -26
  388. package/packages/studio/src/ui/scrub-preview.ts +108 -0
  389. package/packages/studio/src/ui/sidebar-panel.ts +31 -0
  390. package/packages/studio/src/ui/stage.ts +188 -9
  391. package/packages/studio/src/ui/timeline.ts +187 -281
  392. package/packages/studio/start.ts +19 -5
  393. package/packages/studio-adapter/README.md +151 -11
  394. package/packages/studio-adapter/src/index.ts +126 -14
  395. package/packages/temporal/README.md +6 -6
  396. package/packages/temporal/package.json +1 -1
  397. package/packages/temporal/src/component.ts +5 -6
  398. package/packages/temporal/src/index.ts +8 -6
  399. package/packages/temporal/src/location.ts +11 -11
  400. package/packages/temporal/src/projection.ts +19 -19
  401. package/packages/temporal/src/rational.ts +4 -4
  402. package/packages/temporal-markup/EDITING.md +183 -0
  403. package/packages/temporal-markup/README.md +31 -11
  404. package/packages/temporal-markup/package.json +1 -1
  405. package/packages/temporal-markup/src/index.ts +20 -25
  406. package/packages/temporal-markup/src/space.ts +10 -41
  407. package/packages/timeline/README.md +31 -0
  408. package/packages/{semantic-track → timeline}/package.json +1 -1
  409. package/packages/timeline/src/activation.ts +8 -0
  410. package/packages/timeline/src/component.ts +24 -0
  411. package/packages/timeline/src/identity.ts +60 -0
  412. package/packages/timeline/src/index.ts +6 -0
  413. package/packages/{semantic-track → timeline}/src/location.ts +20 -20
  414. package/packages/timeline/src/manifest.ts +39 -0
  415. package/packages/{semantic-track → timeline}/src/projection.ts +14 -14
  416. package/packages/timeline/src/types.ts +24 -0
  417. package/packages/timeline-author/README.md +68 -0
  418. package/packages/{speech-track → timeline-author}/package.json +6 -4
  419. package/packages/timeline-author/src/activation.ts +22 -0
  420. package/packages/{speech-track → timeline-author}/src/component.ts +15 -13
  421. package/packages/{speech-track → timeline-author}/src/fragment.ts +14 -23
  422. package/packages/timeline-author/src/index.ts +7 -0
  423. package/packages/timeline-author/src/manifest.ts +78 -0
  424. package/packages/timeline-author/src/program.ts +107 -0
  425. package/packages/timeline-author/src/surface.ts +46 -0
  426. package/packages/timeline-author/src/types.ts +6 -0
  427. package/packages/typography-track/README.md +4 -4
  428. package/packages/typography-track/package.json +1 -1
  429. package/packages/typography-track/src/component.ts +4 -4
  430. package/packages/typography-track/src/fragment.ts +4 -3
  431. package/packages/typography-track/src/manifest.ts +11 -9
  432. package/packages/typography-track/src/program.ts +15 -15
  433. package/packages/typography-track/src/surface.ts +17 -18
  434. package/packages/typography-track-studio/package.json +8 -3
  435. package/packages/typography-track-studio/src/index.ts +5 -1
  436. package/packages/video-cli/README.md +16 -4
  437. package/packages/video-cli/package.json +2 -1
  438. package/packages/video-cli/src/creation.ts +25 -9
  439. package/packages/video-cli/src/index.ts +1 -1
  440. package/packages/video-cli/src/studio-distribution.ts +2 -1
  441. package/packages/volcengine-matting/README.md +3 -3
  442. package/packages/whisperx/README.md +8 -1
  443. package/packages/workspace/src/index.ts +2 -0
  444. package/packages/workspace-fs-node/README.md +4 -1
  445. package/packages/workspace-fs-node/src/workspace.ts +3 -1
  446. package/services/whisperx/README.md +14 -0
  447. package/services/whisperx/pyproject.toml +2 -0
  448. package/services/whisperx/uv.lock +20 -20
  449. package/packages/provider-hyperframes-aws-lambda/README.md +0 -30
  450. package/packages/provider-hyperframes-aws-lambda/package.json +0 -30
  451. package/packages/provider-hyperframes-aws-lambda/src/activation.ts +0 -97
  452. package/packages/provider-hyperframes-aws-lambda/src/client.ts +0 -114
  453. package/packages/provider-hyperframes-aws-lambda/src/index.ts +0 -21
  454. package/packages/provider-hyperframes-aws-lambda/src/provider.ts +0 -522
  455. package/packages/provider-kie/README.md +0 -134
  456. package/packages/provider-kie/package.json +0 -43
  457. package/packages/provider-kie/src/activation.ts +0 -71
  458. package/packages/provider-kie/src/index.ts +0 -10
  459. package/packages/provider-kie/src/mapping.ts +0 -182
  460. package/packages/provider-kie/src/provider.ts +0 -657
  461. package/packages/provider-kie/src/routes.ts +0 -150
  462. package/packages/provider-xiaomi-mimo/README.md +0 -32
  463. package/packages/provider-xiaomi-mimo/src/activation.ts +0 -57
  464. package/packages/provider-xiaomi-mimo/src/index.ts +0 -5
  465. package/packages/provider-xiaomi-mimo/src/provider.ts +0 -214
  466. package/packages/runtime/src/environment.ts +0 -6
  467. package/packages/semantic-track/README.md +0 -21
  468. package/packages/semantic-track/src/activation.ts +0 -8
  469. package/packages/semantic-track/src/component.ts +0 -24
  470. package/packages/semantic-track/src/identity.ts +0 -58
  471. package/packages/semantic-track/src/index.ts +0 -6
  472. package/packages/semantic-track/src/manifest.ts +0 -38
  473. package/packages/semantic-track/src/types.ts +0 -26
  474. package/packages/speech-track/README.md +0 -51
  475. package/packages/speech-track/src/activation.ts +0 -19
  476. package/packages/speech-track/src/index.ts +0 -7
  477. package/packages/speech-track/src/manifest.ts +0 -73
  478. package/packages/speech-track/src/program.ts +0 -64
  479. package/packages/speech-track/src/surface.ts +0 -35
  480. package/packages/speech-track/src/types.ts +0 -6
  481. package/packages/speech-track-studio/README.md +0 -3
  482. package/packages/speech-track-studio/package.json +0 -14
  483. package/packages/speech-track-studio/src/activation.ts +0 -7
  484. package/packages/speech-track-studio/src/index.ts +0 -40
  485. /package/packages/{cli → project-context-node}/src/project-context.ts +0 -0
  486. /package/packages/{speech-track → timeline-author}/preview/Track.png +0 -0
@@ -1,6 +1,6 @@
1
1
  import { programFrameSampleBoundary, programSpaceFrameCount } from "@hypit/program-space";
2
2
  import type { ProgramSpace } from "@hypit/program-space";
3
- import { assertCompositionIdentity } from "@hypit/composition";
3
+ import { assertCompositionIdentity, assertAudioPresentation } from "@hypit/composition";
4
4
  import type { Composition } from "@hypit/composition";
5
5
  import { canonicalize, isResourceId } from "@hypit/protocol";
6
6
 
@@ -62,6 +62,7 @@ export function verifyAudioProgramPlan(value: unknown): asserts value is AudioPr
62
62
  assert(clip.pitch === "preserve", `AudioProgramPlan clip ${clip.id} pitch policy is invalid`);
63
63
  assert(Number.isFinite(clip.gain) && clip.gain >= 0 && clip.gain <= 64,
64
64
  `AudioProgramPlan clip ${clip.id} gain is invalid`);
65
+ assertAudioPresentation(clip, { startSample: clip.targetStartSample, endSampleExclusive: clip.targetEndSampleExclusive }, item.sampleFrames);
65
66
  const length = clip.targetEndSampleExclusive - clip.targetStartSample;
66
67
  assert(Number.isSafeInteger(clip.fadeInSamples) && clip.fadeInSamples >= 0 && clip.fadeInSamples <= length
67
68
  && Number.isSafeInteger(clip.fadeOutSamples) && clip.fadeOutSamples >= 0 && clip.fadeOutSamples <= length,
@@ -100,6 +101,8 @@ export function compileAudioProgramPlan(composition: Composition, programSpace:
100
101
  gain: clip.gain,
101
102
  fadeInSamples: clip.fadeInSamples,
102
103
  fadeOutSamples: clip.fadeOutSamples,
104
+ ...(clip.gainEnvelope === undefined ? {} : { gainEnvelope: clip.gainEnvelope }),
105
+ ...(clip.audibility === undefined ? {} : { audibility: clip.audibility }),
103
106
  };
104
107
  }));
105
108
  return sealAudioProgramPlan({
@@ -66,6 +66,7 @@ function plannedMediaNeed(
66
66
  port: string,
67
67
  capability: CapabilityRef,
68
68
  roles: Readonly<Record<string, string>> = {},
69
+ present?: PlannedNeedFacet["present"],
69
70
  ): PlannedNeedFacet {
70
71
  return {
71
72
  producer,
@@ -75,6 +76,7 @@ function plannedMediaNeed(
75
76
  return { constraints: {}, pendingInputs: plannedNeedInputs(state, step, roles) };
76
77
  },
77
78
  present(specification) {
79
+ if (present !== undefined) return present(specification);
78
80
  const references: Record<string, number> = {};
79
81
  for (const item of specification.pendingInputs) {
80
82
  const role = item.role;
@@ -86,6 +88,18 @@ function plannedMediaNeed(
86
88
  };
87
89
  }
88
90
 
91
+ const presentAudioRender: NonNullable<PlannedNeedFacet["present"]> = (specification) => {
92
+ const request = specification.constraints as Partial<RenderAudioNeed>;
93
+ if (request.plan === undefined) return { fields: {}, references: {} };
94
+ const { plan, range } = request;
95
+ return { fields: {
96
+ startFrame: [range?.startFrame ?? 0],
97
+ endFrameExclusive: [range?.endFrameExclusive ?? plan.frameCount],
98
+ frameRate: [`${plan.frameRate.numerator}/${plan.frameRate.denominator}`],
99
+ sampleRate: [plan.sampleRate],
100
+ }, references: {} };
101
+ };
102
+
89
103
  export const mediaPipelineComponent = {
90
104
  validators: [
91
105
  {
@@ -363,8 +377,8 @@ export const mediaPipelineComponent = {
363
377
  mediaPipelineCapabilities.projectSpeechEvidenceAudio,
364
378
  { media: "audio" },
365
379
  ),
366
- plannedMediaNeed(mediaPipelineProducers.renderAudio, "audio", mediaPipelineCapabilities.renderAudio, { plan: "audio" }),
367
- plannedMediaNeed(mediaPipelineProducers.renderAudioRange, "audio", mediaPipelineCapabilities.renderAudio, { plan: "audio" }),
380
+ plannedMediaNeed(mediaPipelineProducers.renderAudio, "audio", mediaPipelineCapabilities.renderAudio, {}, presentAudioRender),
381
+ plannedMediaNeed(mediaPipelineProducers.renderAudioRange, "audio", mediaPipelineCapabilities.renderAudio, {}, presentAudioRender),
368
382
  plannedMediaNeed(mediaPipelineProducers.mux, "media", mediaPipelineCapabilities.mux, { visual: "video", audio: "audio" }),
369
383
  ],
370
384
  } satisfies ComponentPackage;
@@ -3,7 +3,7 @@ import { mediaDependency, mediaTypes } from "@hypit/media";
3
3
  import { programSpaceDependency, programSpaceTypes } from "@hypit/program-space";
4
4
  import { svsModuleRef, svsRecipeType } from "@hypit/svs";
5
5
  import { speechDependency, speechTypes } from "@hypit/speech";
6
- import { compositionDependency, compositionTypes } from "@hypit/composition";
6
+ import { compositionDependency, compositionTypes, audioSampleSpanSchema, audioGainEnvelopeSchema } from "@hypit/composition";
7
7
  import { artifactTypes } from "@hypit/artifact";
8
8
  import type {
9
9
  CapabilityRef,
@@ -237,6 +237,8 @@ export const audioProgramPlanSchema: ValueSchema = {
237
237
  gain: { schema: { kind: "number", minimum: 0, maximum: 64 } },
238
238
  fadeInSamples: { schema: integer },
239
239
  fadeOutSamples: { schema: integer },
240
+ gainEnvelope: { schema: audioGainEnvelopeSchema, optional: true },
241
+ audibility: { schema: { kind: "array", items: audioSampleSpanSchema }, optional: true },
240
242
  },
241
243
  } } },
242
244
  mix: { schema: {
@@ -1,3 +1,4 @@
1
+ import type { AudioPresentation } from "@hypit/composition";
1
2
  import type { BlobRef } from "@hypit/protocol";
2
3
  import type { MediaFrameRange, MediaInspection, MediaRational, MediaStreamSelection, RenderedVisual, TimelineAudio } from "@hypit/media";
3
4
 
@@ -134,7 +135,7 @@ export type ProjectSpeechEvidenceAudioNeed = {
134
135
  readonly evidenceSampleFrames: number;
135
136
  };
136
137
 
137
- export type AudioProgramClip = {
138
+ export type AudioProgramClip = AudioPresentation & {
138
139
  readonly id: string;
139
140
  readonly artifact: BlobRef;
140
141
  readonly targetStartSample: number;
@@ -1,61 +1,28 @@
1
1
  # `@hypit/media-track`
2
2
 
3
- The Track Surface accepts `semantic={speech.semantic}` or `space={animation}`. Semantic context
4
- resolves Script Selections and Moments; authored space supports clock-based animation. Shared `at`
3
+ The Track Surface accepts `timeline={program.timeline}`. The same Timeline supports authored
4
+ positions and, where prepared Takes supply evidence, Script Selections and Moments. Shared `at`
5
5
  inputs accept a Moment or a time such as `2s`; `at` with `for` produces a Window where required.
6
- `Performance` still needs `semantic`, which supplies its ordered prepared footage.
6
+ [Performance](../performance/README.md) separately obtains existing footage and source positions from Timeline.
7
7
 
8
8
  Place images, prepared video or compositable surfaces over the semantic timeline. B-roll is a common
9
- use: the picture can illustrate a phrase while the A-roll's speech continues. Performance presents the semantic material as a full picture, inset or cutout.
9
+ use: the picture can illustrate a phrase while the A-roll's speech continues.
10
10
  Media Items own independently timed pictures;
11
11
  a Sequence owns one visual slot whose Members replace each other through Handoffs.
12
12
 
13
- The Markup Track takes `canvas` and a time source (`semantic` or `space`). Its Surface projects
13
+ The Markup Track takes `canvas` and `timeline`. Its Surface projects
14
14
  authored Selections, Moments, Segments or clock expressions into Windows and Instants. The component
15
- consumes those projected times with Frames, media and appearance; its Fragment receives ProgramSpace.
15
+ consumes those projected times with Frames, media and appearance; its Fragment receives the same Timeline.
16
16
 
17
17
  Moving media enters after [normalization](../media-pipeline/README.md), with the intended streams and
18
18
  frame clock already selected. Still images use their actual intrinsic Extent. Placement, fitting,
19
19
  sampling and motion remain separate authored choices.
20
20
 
21
- ## Display a semantic performance
21
+ ## Present existing Timeline footage
22
22
 
23
- ```svml
24
- <media:Track id="performance" semantic={speech.semantic} canvas={canvas}>
25
- <media:Performance during="program" frame={layout.full}
26
- appearance={look.performance}/>
27
- </media:Track>
28
- ```
29
-
30
- `Performance` displays the prepared material in its enclosing Track's `semantic` input. `during`
31
- selects the whole program, a Segment or a Selection; the other Window forms work as usual. One
32
- Performance can span any number of Takes. Each plays at its original program position: if a Take
33
- begins at program second 5, a Window from seconds 7 to 10 shows source seconds 2 to 5. An audio-only
34
- interval contributes no picture. The presentation shares one frame, appearance and lifecycle across
35
- Take boundaries.
36
-
37
- Its appearance Recipe needs `stack-order` and can set fit, crop anchors, opacity, filters, clipping,
38
- padding, border, shadow and frame paint. `motion` moves the framed presentation, and `Sampling`
39
- children transform the fitted picture over the complete selected Window, without restarting at
40
- Take boundaries. `Sound` children attach prepared effects to its entrance or exit. Its original
41
- sound is independently available as `speech.audio` for Film. Use an Item with direct `media` for
42
- independent playback or source trim; Performance preserves the semantic assembly's source timing.
43
-
44
- ```svml
45
- <media:Performance during={story.segment.explanation} frame={layout.full}
46
- appearance={look.performance}>
47
- <media:Sampling at="start" zoom="1"/>
48
- <media:Sampling at="end" zoom="1.08"/>
49
- </media:Performance>
50
- ```
51
-
52
- This excerpt belongs inside the same Media Track. Its selected passage determines the appearance
53
- interval, while the two Sampling keys direct a gradual push-in inside the unchanged Frame.
54
-
55
- For a fixed card, full picture, circle or cutout this is ordinary Media presentation. If video and
56
- graphics must resize, mask or move together, write a project component that owns that relationship.
57
- `projectSemanticMedia` supplies the same material spans to its drawing function. The component can
58
- use a browser program from `@hypit/hypit/hyperframes` while Caption and independent overlays remain peers.
23
+ [Performance](../performance/README.md) obtains existing footage from Timeline and applies broad
24
+ and local Use rules. Use Media Items here for independently supplied assets and playback choices.
25
+ Both reuse the same geometry and fitting capabilities.
59
26
 
60
27
  ## Place the frame, then fit its contents
61
28
 
@@ -115,10 +82,10 @@ a deliberate pan or rotation may reveal the backing or lower layers.
115
82
  ## Author Items and replacement Sequences
116
83
 
117
84
  These excerpts assume the imports, named assets, normalized media, Frames, Extents, Script,
118
- SemanticTrack and Recipes are already declared:
85
+ Timeline and Recipes are already declared:
119
86
 
120
87
  ```svml
121
- <media-track:Track id="coverage" semantic={speech.semantic} canvas={vertical}>
88
+ <media-track:Track id="coverage" timeline={speech.timeline} canvas={vertical}>
122
89
  <media-track:Item image={photo} extent={photo-extent} frame={full-frame}
123
90
  during={story.selection.example} appearance={recipes.media.still}/>
124
91
  <media-track:Item media={clip-media.media} frame={full-frame}
@@ -132,7 +99,7 @@ Appearance owns stack order, fit, clipping and source sampling; a `motion` Recip
132
99
  movement. `Sampling` children can move the sampled content inside the Frame independently.
133
100
 
134
101
  ```svml
135
- <media-track:Track id="cards" semantic={speech.semantic} canvas={vertical}>
102
+ <media-track:Track id="cards" timeline={speech.timeline} canvas={vertical}>
136
103
  <media-track:Sequence id="steps" frame={card-frame} appearance={recipes.media.card}
137
104
  until={story.selection.demo} until-boundary="end">
138
105
  <media-track:Member id="one" image={first} extent={card-extent}
@@ -177,7 +144,7 @@ separately controls which source frames it occupies there. `playback` defaults t
177
144
  `trim-start` and `trim-end` are a pair of integer source-frame boundaries, with an exclusive end.
178
145
  Omit both to use the full source. The playback rules apply to the trimmed range when present.
179
146
  For `stretch`, the source-frame advance is `sourceLength / targetLength`. For native playback, moving
180
- media has already been normalized to ProgramSpace's frame rate, so one program frame advances one
147
+ media has already been normalized to Timeline's frame rate, so one program frame advances one
181
148
  source frame. These are source sampling choices; they do not move a Selection's semantic boundaries.
182
149
 
183
150
  A two-second Item can use the beginning of a four-second generated clip without requesting a
@@ -19,7 +19,7 @@
19
19
  "@hypit/narrative": "workspace:*",
20
20
  "@hypit/program-space": "workspace:*",
21
21
  "@hypit/protocol": "workspace:*",
22
- "@hypit/semantic-track": "workspace:*",
22
+ "@hypit/timeline": "workspace:*",
23
23
  "@hypit/spatial": "workspace:*",
24
24
  "@hypit/svs": "workspace:*",
25
25
  "@hypit/markup": "workspace:*",
@@ -6,7 +6,7 @@
6
6
  <import from="@hypit/script@1"/>
7
7
  <import as="media" from="@hypit/media@1"/>
8
8
  <import as="pipeline" from="@hypit/media-pipeline@1"/>
9
- <import as="speech" from="@hypit/speech-track@1"/>
9
+ <import as="time" from="@hypit/timeline-author@1"/>
10
10
  <import as="whisperx" from="@hypit/whisperx@1"/>
11
11
  <import as="media-track" from="@hypit/media-track@1"/>
12
12
  <import as="space" from="@hypit/spatial@1"/>
@@ -32,16 +32,16 @@
32
32
  video="primary-moving" audio="none" span-authority="video"/>
33
33
  <whisperx:SemanticTake id="showcase-time" narrative={story}
34
34
  segment={story.segment.empty} media={duration-media.media}/>
35
- <speech:Track id="speech"><speech:Take source={showcase-time.take}/></speech:Track>
35
+ <time:Timeline id="speech" clock={clock}><time:Take source={showcase-time.take}/></time:Timeline>
36
36
 
37
- <media-track:Track id="showcase" semantic={speech.semantic} canvas={vertical}>
37
+ <media-track:Track id="showcase" timeline={speech.timeline} canvas={vertical}>
38
38
  <media-track:Item id="rounded-card" image={picture-a} extent={picture-size} during="program"
39
39
  frame={card-a} appearance={recipes.media.card} motion={recipes.motion.card}/>
40
40
  <media-track:Item id="flush-card" image={picture-b} extent={picture-size} during="program"
41
41
  frame={card-b} appearance={recipes.media.wide} motion={recipes.motion.card}/>
42
42
  </media-track:Track>
43
- <film:Film id="main" canvas={vertical} semantic={speech.semantic} appearance={recipes.film.vertical}>
43
+ <film:Film id="main" canvas={vertical} timeline={speech.timeline} appearance={recipes.film.vertical}>
44
44
  <film:Track source={showcase.visual}/>
45
45
  </film:Film>
46
- <render:Video id="final" composition={main.composition} semantic={speech.semantic}/>
46
+ <render:Video id="final" composition={main.composition} timeline={speech.timeline}/>
47
47
  </svml>
@@ -182,12 +182,18 @@ export function decodeMediaSampleSpec(
182
182
  }
183
183
 
184
184
  /** Decode visual-only sample styling without choosing playback or source trim. */
185
+ /** Public authored defaults shared by decoding and optional editor fields. */
186
+ export const mediaAppearanceDefaults = {
187
+ opacity: 1, blur: 0, brightness: 1, contrast: 1, saturation: 1,
188
+ clip: "frame", radius: 0,
189
+ } as const;
190
+
185
191
  export function decodeMediaSampleAppearance(recipe: SvsRecipe): MediaSampleAppearance {
186
192
  return {
187
- opacity: number(recipe, "opacity", 1),
193
+ opacity: number(recipe, "opacity", mediaAppearanceDefaults.opacity),
188
194
  filter: {
189
- blurPx: number(recipe, "blur", 0), brightness: number(recipe, "brightness", 1),
190
- contrast: number(recipe, "contrast", 1), saturation: number(recipe, "saturation", 1),
195
+ blurPx: number(recipe, "blur", mediaAppearanceDefaults.blur), brightness: number(recipe, "brightness", mediaAppearanceDefaults.brightness),
196
+ contrast: number(recipe, "contrast", mediaAppearanceDefaults.contrast), saturation: number(recipe, "saturation", mediaAppearanceDefaults.saturation),
191
197
  },
192
198
  };
193
199
  }
@@ -236,10 +242,10 @@ export function decodeMediaMotion(recipe: SvsRecipe | undefined): MediaLifecycle
236
242
  }
237
243
 
238
244
  export function decodeMediaPresentation(recipe: SvsRecipe): MediaFramePresentation {
239
- const clip = oneOf(recipe, "clip", ["none", "frame", "rounded"] as const, "frame");
245
+ const clip = oneOf(recipe, "clip", ["none", "frame", "rounded"] as const, mediaAppearanceDefaults.clip);
240
246
  const borderWidth = number(recipe, "border-width", 0);
241
247
  return {
242
- clip: clip === "rounded" ? { kind: "rounded", radiusPx: number(recipe, "radius", 0) } : { kind: clip },
248
+ clip: clip === "rounded" ? { kind: "rounded", radiusPx: number(recipe, "radius", mediaAppearanceDefaults.radius) } : { kind: clip },
243
249
  padding: padding(recipe),
244
250
  ...(borderWidth === 0 ? {} : { border: {
245
251
  widthPx: borderWidth,
@@ -278,7 +284,7 @@ export function decodeMediaFramePaint(recipe: SvsRecipe, id: string): MediaPaint
278
284
  export function decodeMediaPaintSpec(recipe: SvsRecipe, id: string): MediaPaintLayerSpec {
279
285
  assertKeys(recipe, ["paint", "opacity"]);
280
286
  return sealMediaPaintLayerSpec({
281
- id, paint: paint(recipe), opacity: number(recipe, "opacity", 1),
287
+ id, paint: paint(recipe), opacity: number(recipe, "opacity", mediaAppearanceDefaults.opacity),
282
288
  });
283
289
  }
284
290
 
@@ -1,10 +1,8 @@
1
- import { appendMediaPerformance } from "./performance.js";
2
- import type { SemanticTrack } from "@hypit/semantic-track";
1
+ import type { Timeline } from "@hypit/timeline";
3
2
  import type { ComponentPackage, ProducerHandlerContext } from "@hypit/component-kit";
4
3
  import type { CompositableSurfaceRef, SynchronizedMedia } from "@hypit/media";
5
4
  import { canonicalize } from "@hypit/protocol";
6
5
  import type { BlobRef, StoredValue } from "@hypit/protocol";
7
- import type { ProgramSpace } from "@hypit/program-space";
8
6
  import type { CanvasSpace, ContentFit, IntrinsicExtent, SpatialFrame, SpatialPath } from "@hypit/spatial";
9
7
  import type { TemporalInstant, TemporalWindow } from "@hypit/temporal";
10
8
 
@@ -54,7 +52,7 @@ function itemInputs(inputs: ProducerHandlerContext["inputs"]) {
54
52
  return {
55
53
  set: inline<MediaTrackSet>(inputs.set?.value, "MediaTrackSet"),
56
54
  header: inline<MediaTrackHeader>(inputs.header?.value, "MediaTrackHeader"),
57
- space: inline<ProgramSpace>(inputs.space?.value, "ProgramSpace"),
55
+ timeline: inline<Timeline>(inputs.timeline?.value, "Timeline"),
58
56
  canvas: inline<CanvasSpace>(inputs.canvas?.value, "CanvasSpace"),
59
57
  layers: inline<MediaLayerSet>(inputs.layers?.value, "MediaLayerSet"),
60
58
  frame: inline<SpatialFrame>(inputs.frame?.value, "SpatialFrame"),
@@ -67,7 +65,7 @@ function itemInputs(inputs: ProducerHandlerContext["inputs"]) {
67
65
  function memberInputs(inputs: ProducerHandlerContext["inputs"]) {
68
66
  return {
69
67
  members: inline<MediaSequenceMemberSet>(inputs.members?.value, "MediaSequenceMemberSet"),
70
- space: inline<ProgramSpace>(inputs.space?.value, "ProgramSpace"),
68
+ timeline: inline<Timeline>(inputs.timeline?.value, "Timeline"),
71
69
  layers: inline<MediaLayerSet>(inputs.layers?.value, "MediaLayerSet"),
72
70
  spec: inline<MediaSequenceMemberSpec>(inputs.spec?.value, "MediaSequenceMemberSpec"),
73
71
  activation: inline<TemporalInstant>(inputs.activation?.value, "TemporalInstant"),
@@ -78,7 +76,7 @@ function sequenceInputs(inputs: ProducerHandlerContext["inputs"]) {
78
76
  return {
79
77
  set: inline<MediaTrackSet>(inputs.set?.value, "MediaTrackSet"),
80
78
  header: inline<MediaTrackHeader>(inputs.header?.value, "MediaTrackHeader"),
81
- space: inline<ProgramSpace>(inputs.space?.value, "ProgramSpace"),
79
+ timeline: inline<Timeline>(inputs.timeline?.value, "Timeline"),
82
80
  canvas: inline<CanvasSpace>(inputs.canvas?.value, "CanvasSpace"),
83
81
  members: inline<MediaSequenceMemberSet>(inputs.members?.value, "MediaSequenceMemberSet"),
84
82
  frame: inline<SpatialFrame>(inputs.frame?.value, "SpatialFrame"),
@@ -90,10 +88,6 @@ function sequenceInputs(inputs: ProducerHandlerContext["inputs"]) {
90
88
 
91
89
  export const mediaTrackComponent = {
92
90
  producers: [
93
- { producer: mediaTrackProducers.appendPerformance, handler: ({ inputs }) => ({ outputs: { set: output(appendMediaPerformance(
94
- itemInputs(inputs), inline<SemanticTrack>(inputs.semantic?.value, "SemanticTrack"),
95
- inline<ContentFit>(inputs.fit?.value, "ContentFit"), inline<MediaSampleLayerSpec>(inputs.sampleSpec?.value, "MediaSampleLayerSpec"),
96
- )) }, needs: {} }) },
97
91
  { producer: mediaTrackProducers.createLayers, handler: () => ({ outputs: { layers: output(createMediaLayerSet()) }, needs: {} }) },
98
92
  { producer: mediaTrackProducers.appendPaintLayer, handler: ({ inputs }) => ({ outputs: { layers: output(appendMediaPaintLayer(
99
93
  inline<MediaLayerSet>(inputs.layers?.value, "MediaLayerSet"),
@@ -121,7 +115,7 @@ export const mediaTrackComponent = {
121
115
  { producer: mediaTrackProducers.createSet, handler: () => ({ outputs: { set: output(createMediaTrackSet()) }, needs: {} }) },
122
116
  { producer: mediaTrackProducers.appendItem, handler: ({ inputs }) => {
123
117
  const value = itemInputs(inputs);
124
- return { outputs: { set: output(appendMediaItem(value.set, value.header, value.space, value.canvas, value.layers, value.frame, value.spec, value.sounds, value.window)) }, needs: {} };
118
+ return { outputs: { set: output(appendMediaItem(value.set, value.header, value.timeline, value.canvas, value.layers, value.frame, value.spec, value.sounds, value.window)) }, needs: {} };
125
119
  } },
126
120
  { producer: mediaTrackProducers.bindItemClipPath, handler: ({ inputs }) => ({ outputs: { spec: output(bindMediaItemClipPath(
127
121
  inline<MediaItemSpec>(inputs.spec?.value, "MediaItemSpec"),
@@ -135,24 +129,24 @@ export const mediaTrackComponent = {
135
129
  { producer: mediaTrackProducers.appendMember, handler: ({ inputs }) => {
136
130
  const value = memberInputs(inputs);
137
131
  return { outputs: { members: output(appendMediaSequenceMember(
138
- value.members, value.space, value.layers, value.spec, value.activation,
132
+ value.members, value.timeline, value.layers, value.spec, value.activation,
139
133
  )) }, needs: {} };
140
134
  } },
141
135
  { producer: mediaTrackProducers.appendSequence, handler: ({ inputs }) => {
142
136
  const value = sequenceInputs(inputs);
143
137
  return { outputs: { set: output(appendMediaSequence(
144
- value.set, value.header, value.space, value.canvas, value.members, value.frame, value.spec, value.sounds, value.terminal,
138
+ value.set, value.header, value.timeline, value.canvas, value.members, value.frame, value.spec, value.sounds, value.terminal,
145
139
  )) }, needs: {} };
146
140
  } },
147
141
  { producer: mediaTrackProducers.finalize, handler: ({ inputs }) => ({ outputs: { program: output(finalizeMediaTrack(
148
142
  inline<MediaTrackSet>(inputs.set?.value, "MediaTrackSet"), inline<MediaTrackHeader>(inputs.header?.value, "MediaTrackHeader"),
149
- inline<ProgramSpace>(inputs.space?.value, "ProgramSpace"),
143
+ inline<Timeline>(inputs.timeline?.value, "Timeline"),
150
144
  )) }, needs: {} }) },
151
145
  { producer: mediaTrackProducers.projectVisual, handler: ({ inputs }) => ({ outputs: { track: output(projectMediaVisualTrack(
152
- inline<ProgramSpace>(inputs.space?.value, "ProgramSpace"), inline<MediaTrackProgram>(inputs.program?.value, "MediaTrackProgram"),
146
+ inline<Timeline>(inputs.timeline?.value, "Timeline"), inline<MediaTrackProgram>(inputs.program?.value, "MediaTrackProgram"),
153
147
  )) }, needs: {} }) },
154
148
  { producer: mediaTrackProducers.projectAudio, handler: ({ inputs }) => ({ outputs: { track: output(projectMediaAudioTrack(
155
- inline<ProgramSpace>(inputs.space?.value, "ProgramSpace"), inline<MediaTrackProgram>(inputs.program?.value, "MediaTrackProgram"),
149
+ inline<Timeline>(inputs.timeline?.value, "Timeline"), inline<MediaTrackProgram>(inputs.program?.value, "MediaTrackProgram"),
156
150
  )) }, needs: {} }) },
157
151
  ],
158
152
  validators: [{
@@ -1,4 +1,5 @@
1
- import { programSpaceTypes } from "@hypit/program-space";
1
+ import { timelineTypes } from "@hypit/timeline";
2
+
2
3
  import { artifactTypes } from "@hypit/artifact";
3
4
  import { compositionTypes } from "@hypit/composition";
4
5
  import { sealGraphFragment } from "@hypit/elaborator";
@@ -14,7 +15,7 @@ const operation = (id: string) => ({ kind: "fragment-operation" as const, operat
14
15
  export const stillMediaTrackFragment = sealGraphFragment({
15
16
  inputs: [
16
17
  { name: "header", type: mediaTrackTypes.header },
17
- { name: "space", type: programSpaceTypes.programSpace },
18
+ { name: "timeline", type: timelineTypes.track },
18
19
  { name: "canvas", type: spatialTypes.canvas },
19
20
  { name: "source", type: artifactTypes.blob },
20
21
  { name: "extent", type: spatialTypes.extent },
@@ -32,14 +33,14 @@ export const stillMediaTrackFragment = sealGraphFragment({
32
33
  { id: "set", producer: mediaTrackProducers.createSet, inputs: {}, result: { kind: "output", name: "set" } },
33
34
  { id: "sounds", producer: mediaTrackProducers.createSounds, inputs: {}, result: { kind: "output", name: "sounds" } },
34
35
  { id: "append", producer: mediaTrackProducers.appendItem, inputs: {
35
- set: operation("set"), header: input("header"), space: input("space"), canvas: input("canvas"), layers: operation("sample"),
36
+ set: operation("set"), header: input("header"), timeline: input("timeline"), canvas: input("canvas"), layers: operation("sample"),
36
37
  frame: input("frame"), spec: input("item-spec"), sounds: operation("sounds"), window: input("window"),
37
38
  }, result: { kind: "output", name: "set" } },
38
39
  { id: "finalize", producer: mediaTrackProducers.finalize, inputs: {
39
- set: operation("append"), header: input("header"), space: input("space"),
40
+ set: operation("append"), header: input("header"), timeline: input("timeline"),
40
41
  }, result: { kind: "output", name: "program" } },
41
42
  { id: "visual", producer: mediaTrackProducers.projectVisual, inputs: {
42
- space: input("space"), program: operation("finalize"),
43
+ timeline: input("timeline"), program: operation("finalize"),
43
44
  }, result: { kind: "output", name: "track" } },
44
45
  ],
45
46
  exports: [
@@ -49,9 +50,9 @@ export const stillMediaTrackFragment = sealGraphFragment({
49
50
  });
50
51
 
51
52
  export const renderMediaTrackFragment = sealGraphFragment({
52
- inputs: [{ name: "space", type: programSpaceTypes.programSpace }, { name: "program", type: mediaTrackTypes.program }],
53
+ inputs: [{ name: "timeline", type: timelineTypes.track }, { name: "program", type: mediaTrackTypes.program }],
53
54
  operations: [
54
- { id: "visual", producer: mediaTrackProducers.projectVisual, inputs: { space: input("space"), program: input("program") }, result: { kind: "output", name: "track" } },
55
+ { id: "visual", producer: mediaTrackProducers.projectVisual, inputs: { timeline: input("timeline"), program: input("program") }, result: { kind: "output", name: "track" } },
55
56
  ],
56
57
  exports: [{ name: "track", type: compositionTypes.visualTrack, root: operation("visual") }],
57
58
  });
@@ -1,6 +1,7 @@
1
1
  export { mediaTrackComponent } from "./component.js";
2
2
  export {
3
3
  decodeMediaFit,
4
+ decodeMediaItemSpec,
4
5
  decodeMediaFramePaint,
5
6
  decodeMediaMotion,
6
7
  decodeMediaPresentation,
@@ -46,7 +47,6 @@ export {
46
47
  } from "./sounds.js";
47
48
  export { appendMediaItem, appendMediaSequence, bindMediaItemClipPath, bindMediaSequenceClipPath, assertMediaItemSpec, assertMediaTrackHeader, assertMediaTrackProgram, assertMediaTrackProgramIdentity, assertMediaTrackSet, createMediaTrackSet, finalizeMediaTrack, projectMediaAudioTrack, projectMediaVisualTrack, sealMediaItemSpec, sealMediaTrackHeader, sealMediaTrackProgram } from "./program.js";
48
49
  export { resolveVisualSampling } from "./sampling.js";
49
- export { appendMediaPerformance } from "./performance.js";
50
50
  export { decodeMediaSamplingKeyframe, decodeMediaTrackSurface } from "./surface.js";
51
51
  export {
52
52
  appendMediaSequenceMember,
@@ -63,3 +63,5 @@ export {
63
63
  sequenceMemberHandoffAnimation,
64
64
  } from "./sequence.js";
65
65
  export type * from "./types.js";
66
+
67
+ export { mediaAppearanceDefaults } from "./author.js";
@@ -1,10 +1,10 @@
1
+ import type { Timeline } from "@hypit/timeline";
1
2
  import type {
2
3
  VisualAnimation,
3
4
  VisualElement,
4
5
  VisualStyleDeclaration,
5
6
  VisualTimedSampling,
6
7
  } from "@hypit/composition";
7
- import type { ProgramSpace } from "@hypit/program-space";
8
8
  import { fitContent } from "@hypit/spatial";
9
9
  import type { SpatialFrame, SpatialPath } from "@hypit/spatial";
10
10
 
@@ -133,7 +133,7 @@ function sampleElements(
133
133
  item: MediaItemProgram,
134
134
  parent: string,
135
135
  order: { value: number },
136
- space: ProgramSpace,
136
+ timeline: Timeline,
137
137
  samplingOverrides: Readonly<Record<string, VisualTimedSampling>>,
138
138
  samplingAnimationOverrides: Readonly<Record<string, VisualAnimation | null>>,
139
139
  ): VisualElement[] {
@@ -209,7 +209,7 @@ function sampleElements(
209
209
  }];
210
210
  }
211
211
  const sampling = samplingOverrides[layer.id] ?? layer.sampling ?? resolveVisualSampling({
212
- space,
212
+ timeline,
213
213
  sourceFrameRate: sourceTiming.frameRate,
214
214
  sourceFrameCount: sourceTiming.frameCount,
215
215
  targetFrameCount: durationFrames,
@@ -244,12 +244,12 @@ function layerElements(
244
244
  item: MediaItemProgram,
245
245
  parent: string,
246
246
  order: { value: number },
247
- space: ProgramSpace,
247
+ timeline: Timeline,
248
248
  samplingOverrides: Readonly<Record<string, VisualTimedSampling>>,
249
249
  samplingAnimationOverrides: Readonly<Record<string, VisualAnimation | null>>,
250
250
  ): VisualElement[] {
251
251
  if (layer.kind === "sample") {
252
- return sampleElements(layer, item, parent, order, space, samplingOverrides, samplingAnimationOverrides);
252
+ return sampleElements(layer, item, parent, order, timeline, samplingOverrides, samplingAnimationOverrides);
253
253
  }
254
254
  return [{
255
255
  id: layer.id,
@@ -271,7 +271,7 @@ function layerElements(
271
271
  /** Lower one independent Item through the fixed wrapper stack from the Media spec. */
272
272
  export function lowerMediaItemElements(
273
273
  item: MediaItemProgram,
274
- space: ProgramSpace,
274
+ timeline: Timeline,
275
275
  options: {
276
276
  readonly includeHandoffWrapper?: boolean;
277
277
  readonly handoffAnimation?: VisualAnimation;
@@ -326,7 +326,7 @@ export function lowerMediaItemElements(
326
326
  item,
327
327
  frame,
328
328
  order,
329
- space,
329
+ timeline,
330
330
  options.samplingOverrides ?? {},
331
331
  options.samplingAnimationOverrides ?? {},
332
332
  ));