@hypit/hypit 0.1.4 → 0.1.6

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 (462) hide show
  1. package/README.md +4 -2
  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 +77 -15
  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 +8 -1
  30. package/examples/semantic-composition/chat.svml +6 -5
  31. package/examples/semantic-composition/hypit.runtime.json +1 -1
  32. package/examples/semantic-composition/packages/chat-scene/README.md +3 -3
  33. package/examples/semantic-composition/packages/chat-scene/src/activation.ts +18 -21
  34. package/examples/semantic-composition/packages/chat-scene/src/render.ts +4 -4
  35. package/examples/semantic-composition/packages/performance-styles/README.md +42 -0
  36. package/examples/semantic-composition/packages/performance-styles/package.json +25 -0
  37. package/examples/semantic-composition/packages/performance-styles/src/activation.ts +57 -0
  38. package/examples/semantic-composition/packages/performance-styles/src/render.ts +54 -0
  39. package/examples/semantic-composition/packages/performance-styles/src/studio.ts +28 -0
  40. package/examples/semantic-composition/packages/performance-styles/tsconfig.json +18 -0
  41. package/examples/semantic-composition/packages/responsive-explainer/README.md +16 -9
  42. package/examples/semantic-composition/packages/responsive-explainer/src/activation.ts +12 -12
  43. package/examples/semantic-composition/packages/responsive-explainer/src/render.ts +5 -5
  44. package/examples/semantic-composition/packages/sound-styles/README.md +36 -0
  45. package/examples/semantic-composition/packages/sound-styles/package.json +25 -0
  46. package/examples/semantic-composition/packages/sound-styles/src/activation.ts +53 -0
  47. package/examples/semantic-composition/packages/sound-styles/src/render.ts +14 -0
  48. package/examples/semantic-composition/packages/sound-styles/tsconfig.json +18 -0
  49. package/package.json +35 -15
  50. package/packages/audio-track/README.md +20 -13
  51. package/packages/audio-track/package.json +1 -1
  52. package/packages/audio-track/src/component.ts +4 -4
  53. package/packages/audio-track/src/fragment.ts +6 -5
  54. package/packages/audio-track/src/index.ts +1 -1
  55. package/packages/audio-track/src/manifest.ts +17 -16
  56. package/packages/audio-track/src/program.ts +21 -25
  57. package/packages/audio-track/src/surface.ts +19 -18
  58. package/packages/audio-track-studio/README.md +23 -0
  59. package/packages/audio-track-studio/src/index.ts +28 -17
  60. package/packages/author-kit/README.md +1 -1
  61. package/packages/background-removal/README.md +4 -7
  62. package/packages/browser-capture/package.json +1 -1
  63. package/packages/build-result/README.md +11 -0
  64. package/packages/build-result/src/decode.ts +2 -0
  65. package/packages/build-result/src/execution-log.ts +17 -0
  66. package/packages/build-result/src/index.ts +1 -0
  67. package/packages/build-result/src/store.ts +14 -1
  68. package/packages/build-result/src/types.ts +3 -0
  69. package/packages/build-result-s3/src/repository.ts +4 -0
  70. package/packages/caption/README.md +61 -73
  71. package/packages/caption/package.json +3 -2
  72. package/packages/caption/src/activation.ts +2 -2
  73. package/packages/caption/src/component.ts +20 -5
  74. package/packages/caption/src/display.ts +3 -18
  75. package/packages/caption/src/fragment.ts +3 -7
  76. package/packages/caption/src/index.ts +6 -5
  77. package/packages/caption/src/manifest.ts +29 -46
  78. package/packages/caption/src/style.ts +24 -135
  79. package/packages/caption/src/surface.ts +12 -92
  80. package/packages/caption/src/temporalize.ts +18 -53
  81. package/packages/caption/src/types.ts +8 -35
  82. package/packages/caption/src/visibility.ts +23 -0
  83. package/packages/caption-fine/README.md +21 -9
  84. package/packages/caption-fine/package.json +4 -2
  85. package/packages/caption-fine/src/component.ts +3 -3
  86. package/packages/caption-fine/src/fragment.ts +7 -19
  87. package/packages/caption-fine/src/index.ts +2 -0
  88. package/packages/caption-fine/src/manifest.ts +26 -17
  89. package/packages/caption-fine/src/recipe.ts +7 -0
  90. package/packages/caption-fine/src/render.ts +14 -13
  91. package/packages/caption-fine/src/schedule.ts +39 -35
  92. package/packages/caption-fine/src/style.ts +10 -9
  93. package/packages/caption-fine/src/surface.ts +62 -35
  94. package/packages/caption-fine/src/types.ts +2 -0
  95. package/packages/caption-fine-studio/README.md +24 -2
  96. package/packages/caption-fine-studio/package.json +3 -1
  97. package/packages/caption-fine-studio/src/activation.ts +3 -3
  98. package/packages/caption-fine-studio/src/index.ts +54 -42
  99. package/packages/cli/README.md +57 -4
  100. package/packages/cli/package.json +1 -0
  101. package/packages/cli/src/arguments.ts +25 -6
  102. package/packages/cli/src/build-planning.ts +3 -2
  103. package/packages/cli/src/command.ts +6 -0
  104. package/packages/cli/src/commands/environment.ts +28 -18
  105. package/packages/cli/src/commands/execution.ts +81 -26
  106. package/packages/cli/src/commands/results.ts +7 -11
  107. package/packages/cli/src/index.ts +2 -2
  108. package/packages/cli/src/machine-view.ts +3 -2
  109. package/packages/cli/src/main.ts +34 -42
  110. package/packages/cli/src/observation.ts +7 -1
  111. package/packages/cli/src/output.ts +65 -23
  112. package/packages/cli/src/view.ts +66 -19
  113. package/packages/comment-sticker/README.md +3 -3
  114. package/packages/comment-sticker/package.json +1 -1
  115. package/packages/comment-sticker/src/component.ts +4 -4
  116. package/packages/comment-sticker/src/fragment.ts +5 -4
  117. package/packages/comment-sticker/src/manifest.ts +7 -6
  118. package/packages/comment-sticker/src/program.ts +9 -9
  119. package/packages/comment-sticker/src/surface.ts +6 -7
  120. package/packages/composition/README.md +21 -0
  121. package/packages/composition/src/audio-presentation.ts +44 -0
  122. package/packages/composition/src/index.ts +3 -0
  123. package/packages/composition/src/schema.ts +8 -3
  124. package/packages/composition/src/track.ts +15 -1
  125. package/packages/credential-store-env/README.md +1 -1
  126. package/packages/deck-track/README.md +3 -3
  127. package/packages/deck-track/package.json +1 -1
  128. package/packages/deck-track/src/component.ts +5 -5
  129. package/packages/deck-track/src/fragment.ts +6 -5
  130. package/packages/deck-track/src/lower.ts +12 -12
  131. package/packages/deck-track/src/manifest.ts +8 -7
  132. package/packages/deck-track/src/program.ts +13 -16
  133. package/packages/deck-track/src/surface.ts +9 -10
  134. package/packages/driver-node/src/driver.ts +41 -3
  135. package/packages/elevenlabs-speech/README.md +27 -0
  136. package/packages/{provider-xiaomi-mimo → elevenlabs-speech}/package.json +5 -8
  137. package/packages/elevenlabs-speech/src/activation.ts +26 -0
  138. package/packages/elevenlabs-speech/src/fragment.ts +11 -0
  139. package/packages/elevenlabs-speech/src/index.ts +111 -0
  140. package/packages/elevenlabs-speech/src/surface.ts +167 -0
  141. package/packages/endpoint-kit/README.md +24 -0
  142. package/packages/endpoint-kit/src/index.ts +7 -1
  143. package/packages/film/README.md +12 -7
  144. package/packages/film/package.json +1 -1
  145. package/packages/film/src/component.ts +4 -4
  146. package/packages/film/src/fragment.ts +6 -5
  147. package/packages/film/src/manifest.ts +11 -10
  148. package/packages/film/src/program.ts +5 -5
  149. package/packages/film/src/recipe.ts +2 -1
  150. package/packages/film/src/surface.ts +10 -7
  151. package/packages/film-studio/package.json +1 -1
  152. package/packages/film-studio/src/index.ts +2 -2
  153. package/packages/fishaudio-speech/README.md +33 -0
  154. package/packages/fishaudio-speech/package.json +21 -0
  155. package/packages/fishaudio-speech/src/activation.ts +32 -0
  156. package/packages/fishaudio-speech/src/fragment.ts +11 -0
  157. package/packages/fishaudio-speech/src/index.ts +156 -0
  158. package/packages/fishaudio-speech/src/surface.ts +192 -0
  159. package/packages/generation/README.md +11 -1
  160. package/packages/generation/src/mapping.ts +28 -30
  161. package/packages/gpt-image/README.md +1 -2
  162. package/packages/grok-imagine/README.md +1 -2
  163. package/packages/hyperframes/README.md +7 -3
  164. package/packages/hyperframes/src/browser-program.ts +11 -2
  165. package/packages/hyperframes/src/document.ts +15 -2
  166. package/packages/interview-emoji-reveal/README.md +4 -4
  167. package/packages/interview-emoji-reveal/package.json +1 -1
  168. package/packages/interview-emoji-reveal/src/component.ts +4 -4
  169. package/packages/interview-emoji-reveal/src/fragment.ts +6 -5
  170. package/packages/interview-emoji-reveal/src/manifest.ts +9 -8
  171. package/packages/interview-emoji-reveal/src/program.ts +14 -14
  172. package/packages/interview-emoji-reveal/src/surface.ts +8 -9
  173. package/packages/media-execution/README.md +7 -3
  174. package/packages/media-execution/src/audio-presentation.ts +23 -0
  175. package/packages/media-execution/src/execute.ts +2 -0
  176. package/packages/media-pipeline/README.md +7 -3
  177. package/packages/media-pipeline/src/audio-plan.ts +4 -1
  178. package/packages/media-pipeline/src/component.ts +16 -2
  179. package/packages/media-pipeline/src/manifest.ts +3 -1
  180. package/packages/media-pipeline/src/types.ts +2 -1
  181. package/packages/media-track/README.md +14 -47
  182. package/packages/media-track/package.json +1 -1
  183. package/packages/media-track/preview/preview.svml +5 -5
  184. package/packages/media-track/src/author.ts +12 -6
  185. package/packages/media-track/src/component.ts +10 -16
  186. package/packages/media-track/src/fragment.ts +8 -7
  187. package/packages/media-track/src/index.ts +3 -1
  188. package/packages/media-track/src/lower.ts +7 -7
  189. package/packages/media-track/src/manifest.ts +16 -38
  190. package/packages/media-track/src/program.ts +62 -67
  191. package/packages/media-track/src/sampling.ts +6 -6
  192. package/packages/media-track/src/sequence.ts +8 -8
  193. package/packages/media-track/src/surface.ts +25 -43
  194. package/packages/media-track-studio/README.md +9 -0
  195. package/packages/media-track-studio/src/index.ts +16 -11
  196. package/packages/mimo-speech/README.md +1 -1
  197. package/packages/minimax-h3/README.md +1 -1
  198. package/packages/nano-banana/README.md +1 -1
  199. package/packages/narrative/README.md +23 -1
  200. package/packages/narrative/src/identity.ts +11 -0
  201. package/packages/narrative/src/index.ts +3 -0
  202. package/packages/narrative/src/schema.ts +28 -27
  203. package/packages/narrative/src/selection.ts +52 -0
  204. package/packages/narrative/src/types.ts +2 -0
  205. package/packages/package-loader-node/README.md +30 -0
  206. package/packages/package-loader-node/package.json +5 -2
  207. package/packages/package-loader-node/src/distribution-resolution.ts +10 -3
  208. package/packages/package-loader-node/src/index.ts +1 -0
  209. package/packages/package-loader-node/src/loader.ts +12 -15
  210. package/packages/package-loader-node/src/location.ts +27 -1
  211. package/packages/package-loader-node/src/module-scope.ts +183 -0
  212. package/packages/package-loader-node/src/types.ts +4 -0
  213. package/packages/performance/README.md +83 -0
  214. package/packages/performance/package.json +30 -0
  215. package/packages/performance/src/activation.ts +11 -0
  216. package/packages/performance/src/component.ts +46 -0
  217. package/packages/performance/src/index.ts +6 -0
  218. package/packages/performance/src/manifest.ts +53 -0
  219. package/packages/{media-track/src/performance.ts → performance/src/media.ts} +9 -10
  220. package/packages/performance/src/program.ts +51 -0
  221. package/packages/performance/src/style.ts +35 -0
  222. package/packages/performance/src/surface.ts +99 -0
  223. package/packages/performance-studio/README.md +25 -0
  224. package/packages/performance-studio/package.json +21 -0
  225. package/packages/performance-studio/src/activation.ts +6 -0
  226. package/packages/performance-studio/src/index.ts +84 -0
  227. package/packages/program-space/README.md +9 -18
  228. package/packages/program-space/src/activation.ts +1 -5
  229. package/packages/program-space/src/index.ts +2 -11
  230. package/packages/program-space/src/surface.ts +1 -20
  231. package/packages/project-context-node/README.md +20 -0
  232. package/packages/project-context-node/package.json +10 -0
  233. package/packages/project-context-node/src/index.ts +3 -0
  234. package/packages/{cli → project-context-node}/src/runtime-selection.ts +7 -2
  235. package/packages/provider-hyperframes-local/README.md +43 -15
  236. package/packages/provider-hyperframes-local/src/activation.ts +4 -3
  237. package/packages/provider-hyperframes-local/src/capture-process.ts +26 -4
  238. package/packages/provider-hyperframes-local/src/capture.ts +96 -26
  239. package/packages/provider-hyperframes-local/src/concurrency.ts +86 -0
  240. package/packages/provider-hyperframes-local/src/opaque-capture.ts +92 -0
  241. package/packages/provider-hyperframes-local/src/options.ts +2 -0
  242. package/packages/provider-hyperframes-local/src/program.ts +6 -3
  243. package/packages/provider-hyperframes-local/src/progress.ts +53 -0
  244. package/packages/provider-hyperframes-local/src/provider.ts +18 -5
  245. package/packages/provider-hyperframes-local/src/render.ts +48 -7
  246. package/packages/provider-hypihub/README.md +48 -17
  247. package/packages/provider-hypihub/package.json +2 -0
  248. package/packages/provider-hypihub/src/mapping.ts +31 -7
  249. package/packages/provider-hypihub/src/oauth.ts +6 -0
  250. package/packages/provider-hypihub/src/provider.ts +25 -13
  251. package/packages/provider-hypihub/src/routes.ts +1 -2
  252. package/packages/provider-hypihub/src/upload.ts +2 -0
  253. package/packages/provider-media-local/README.md +3 -4
  254. package/packages/provider-whisperx-local/src/program.ts +1 -0
  255. package/packages/provider-whisperx-local/src/provider.ts +3 -0
  256. package/packages/ranking/README.md +8 -6
  257. package/packages/ranking/package.json +1 -1
  258. package/packages/ranking/src/component.ts +6 -6
  259. package/packages/ranking/src/fragment.ts +11 -7
  260. package/packages/ranking/src/manifest.ts +21 -14
  261. package/packages/ranking/src/render.ts +22 -26
  262. package/packages/ranking/src/schedule.ts +16 -19
  263. package/packages/ranking/src/surface.ts +12 -13
  264. package/packages/ranking-studio/README.md +18 -0
  265. package/packages/ranking-studio/src/index.ts +61 -9
  266. package/packages/render-hyperframes/README.md +7 -7
  267. package/packages/render-hyperframes/package.json +1 -1
  268. package/packages/render-hyperframes/src/component.ts +11 -1
  269. package/packages/render-hyperframes/src/fragment.ts +7 -4
  270. package/packages/render-hyperframes/src/manifest.ts +4 -4
  271. package/packages/render-hyperframes/src/surface.ts +6 -6
  272. package/packages/runtime/README.md +8 -1
  273. package/packages/runtime/src/execution.ts +15 -4
  274. package/packages/runtime/src/index.ts +2 -1
  275. package/packages/runtime/src/log.ts +51 -0
  276. package/packages/runtime/src/types.ts +5 -8
  277. package/packages/runtime-host-node/README.md +30 -0
  278. package/packages/runtime-host-node/package.json +1 -0
  279. package/packages/runtime-host-node/src/index.ts +24 -9
  280. package/packages/runtime-host-node/src/packages.ts +47 -50
  281. package/packages/runtime-kit/README.md +5 -0
  282. package/packages/runtime-kit/src/index.ts +3 -1
  283. package/packages/runtime-local/README.md +109 -4
  284. package/packages/runtime-local/src/config.ts +202 -56
  285. package/packages/runtime-local/src/control.ts +9 -1
  286. package/packages/runtime-local/src/executor.ts +66 -0
  287. package/packages/runtime-local/src/host.ts +37 -17
  288. package/packages/runtime-local/src/log.ts +48 -0
  289. package/packages/runtime-local/src/programs.ts +2 -1
  290. package/packages/runtime-local/src/result-writer.ts +2 -0
  291. package/packages/runtime-local/src/runtime.ts +8 -6
  292. package/packages/runtime-local/src/supervisor.ts +142 -0
  293. package/packages/runtime-local/src/types.ts +9 -2
  294. package/packages/runtime-local/src/worker-process.ts +7 -24
  295. package/packages/runtime-local/src/worker.ts +55 -83
  296. package/packages/screen-overlay/README.md +3 -3
  297. package/packages/screen-overlay/package.json +1 -1
  298. package/packages/screen-overlay/src/component.ts +3 -3
  299. package/packages/screen-overlay/src/fragment.ts +5 -4
  300. package/packages/screen-overlay/src/manifest.ts +7 -6
  301. package/packages/screen-overlay/src/program.ts +9 -9
  302. package/packages/screen-overlay/src/surface.ts +6 -7
  303. package/packages/script/README.md +30 -5
  304. package/packages/script/src/manifest.ts +4 -3
  305. package/packages/script/src/narrative.ts +1 -0
  306. package/packages/script/src/parser.ts +45 -6
  307. package/packages/script/src/surface.ts +4 -3
  308. package/packages/script/src/types.ts +1 -1
  309. package/packages/script-studio/package.json +9 -3
  310. package/packages/script-studio/src/index.ts +2 -0
  311. package/packages/script-studio/src/projection.ts +105 -0
  312. package/packages/seedance/README.md +30 -1
  313. package/packages/seedance/src/index.ts +18 -7
  314. package/packages/seedance/src/surface.ts +17 -4
  315. package/packages/seedance-kits/README.md +7 -1
  316. package/packages/seedream/README.md +1 -1
  317. package/packages/sound/README.md +81 -0
  318. package/packages/sound/package.json +25 -0
  319. package/packages/sound/src/activation.ts +11 -0
  320. package/packages/sound/src/component.ts +28 -0
  321. package/packages/sound/src/index.ts +5 -0
  322. package/packages/sound/src/manifest.ts +47 -0
  323. package/packages/sound/src/program.ts +84 -0
  324. package/packages/sound/src/style.ts +34 -0
  325. package/packages/sound/src/surface.ts +90 -0
  326. package/packages/sound-studio/README.md +22 -0
  327. package/packages/sound-studio/package.json +20 -0
  328. package/packages/sound-studio/src/activation.ts +6 -0
  329. package/packages/sound-studio/src/index.ts +74 -0
  330. package/packages/speech/README.md +2 -2
  331. package/packages/speech-alignment/src/local.ts +8 -0
  332. package/packages/speech-alignment/src/locate.ts +1 -1
  333. package/packages/store-sqlite/README.md +7 -0
  334. package/packages/store-sqlite/src/store.ts +84 -83
  335. package/packages/studio/INSPECTOR.md +15 -2
  336. package/packages/studio/LOCALIZATION.md +98 -0
  337. package/packages/studio/README.md +101 -14
  338. package/packages/studio/locales/en.json +197 -0
  339. package/packages/studio/locales/zh-CN.json +191 -0
  340. package/packages/studio/package.json +8 -7
  341. package/packages/studio/src/companion-assembly.ts +1 -0
  342. package/packages/studio/src/domain.ts +1 -1
  343. package/packages/studio/src/fallback-companions.ts +3 -3
  344. package/packages/studio/src/feedback-server.ts +51 -0
  345. package/packages/studio/src/feedback-store.ts +66 -0
  346. package/packages/studio/src/feedback.ts +60 -0
  347. package/packages/studio/src/localization-node.ts +46 -0
  348. package/packages/studio/src/localization.ts +85 -0
  349. package/packages/studio/src/parameter-values.ts +43 -1
  350. package/packages/studio/src/parameters.ts +114 -24
  351. package/packages/studio/src/preview/render.ts +5 -1
  352. package/packages/studio/src/preview/runtime-shim.ts +49 -3
  353. package/packages/studio/src/programme.ts +14 -30
  354. package/packages/studio/src/server.ts +10 -6
  355. package/packages/studio/src/shared.ts +4 -2
  356. package/packages/studio/src/snapshot.ts +21 -132
  357. package/packages/studio/src/studio-preflight.ts +3 -3
  358. package/packages/studio/src/studio-registry.ts +50 -6
  359. package/packages/studio/src/style.css +223 -50
  360. package/packages/studio/src/ui/artifact-name.ts +8 -6
  361. package/packages/studio/src/ui/artifact-preview.ts +5 -4
  362. package/packages/studio/src/ui/code.ts +17 -16
  363. package/packages/studio/src/ui/comments.ts +234 -0
  364. package/packages/studio/src/ui/dropdown.ts +68 -0
  365. package/packages/studio/src/ui/i18n.ts +109 -0
  366. package/packages/studio/src/ui/icons.ts +6 -0
  367. package/packages/studio/src/ui/library.ts +76 -65
  368. package/packages/studio/src/ui/main.ts +223 -211
  369. package/packages/studio/src/ui/overlay.ts +12 -8
  370. package/packages/studio/src/ui/scrub-preview.ts +110 -0
  371. package/packages/studio/src/ui/stage.ts +93 -29
  372. package/packages/studio/src/ui/timeline.ts +190 -118
  373. package/packages/studio/start.ts +41 -22
  374. package/packages/studio-adapter/README.md +130 -11
  375. package/packages/studio-adapter/src/index.ts +100 -13
  376. package/packages/temporal/README.md +6 -6
  377. package/packages/temporal/package.json +1 -1
  378. package/packages/temporal/src/component.ts +5 -6
  379. package/packages/temporal/src/index.ts +8 -6
  380. package/packages/temporal/src/location.ts +11 -11
  381. package/packages/temporal/src/projection.ts +19 -19
  382. package/packages/temporal/src/rational.ts +4 -4
  383. package/packages/temporal-markup/EDITING.md +2 -2
  384. package/packages/temporal-markup/README.md +27 -11
  385. package/packages/temporal-markup/package.json +1 -1
  386. package/packages/temporal-markup/src/index.ts +20 -25
  387. package/packages/temporal-markup/src/space.ts +10 -41
  388. package/packages/timeline/README.md +31 -0
  389. package/packages/{semantic-track → timeline}/package.json +1 -1
  390. package/packages/timeline/src/activation.ts +8 -0
  391. package/packages/timeline/src/component.ts +24 -0
  392. package/packages/timeline/src/identity.ts +60 -0
  393. package/packages/timeline/src/index.ts +6 -0
  394. package/packages/{semantic-track → timeline}/src/location.ts +20 -20
  395. package/packages/timeline/src/manifest.ts +39 -0
  396. package/packages/{semantic-track → timeline}/src/projection.ts +14 -14
  397. package/packages/timeline/src/types.ts +24 -0
  398. package/packages/timeline-author/README.md +68 -0
  399. package/packages/{speech-track → timeline-author}/package.json +6 -4
  400. package/packages/timeline-author/src/activation.ts +22 -0
  401. package/packages/{speech-track → timeline-author}/src/component.ts +15 -13
  402. package/packages/{speech-track → timeline-author}/src/fragment.ts +14 -23
  403. package/packages/timeline-author/src/index.ts +7 -0
  404. package/packages/timeline-author/src/manifest.ts +78 -0
  405. package/packages/timeline-author/src/program.ts +107 -0
  406. package/packages/timeline-author/src/surface.ts +46 -0
  407. package/packages/timeline-author/src/types.ts +6 -0
  408. package/packages/typography-track/README.md +4 -4
  409. package/packages/typography-track/package.json +1 -1
  410. package/packages/typography-track/src/component.ts +4 -4
  411. package/packages/typography-track/src/fragment.ts +4 -3
  412. package/packages/typography-track/src/manifest.ts +11 -9
  413. package/packages/typography-track/src/program.ts +15 -15
  414. package/packages/typography-track/src/surface.ts +17 -18
  415. package/packages/video-cli/README.md +4 -1
  416. package/packages/video-cli/package.json +2 -1
  417. package/packages/video-cli/src/creation.ts +14 -4
  418. package/packages/video-cli/src/index.ts +1 -1
  419. package/packages/video-cli/src/studio-distribution.ts +2 -1
  420. package/packages/volcengine-matting/README.md +3 -3
  421. package/packages/whisperx/README.md +1 -1
  422. package/services/whisperx/README.md +14 -0
  423. package/services/whisperx/pyproject.toml +2 -0
  424. package/services/whisperx/uv.lock +20 -20
  425. package/packages/provider-hyperframes-aws-lambda/README.md +0 -30
  426. package/packages/provider-hyperframes-aws-lambda/package.json +0 -30
  427. package/packages/provider-hyperframes-aws-lambda/src/activation.ts +0 -97
  428. package/packages/provider-hyperframes-aws-lambda/src/client.ts +0 -114
  429. package/packages/provider-hyperframes-aws-lambda/src/index.ts +0 -21
  430. package/packages/provider-hyperframes-aws-lambda/src/provider.ts +0 -522
  431. package/packages/provider-kie/README.md +0 -134
  432. package/packages/provider-kie/package.json +0 -43
  433. package/packages/provider-kie/src/activation.ts +0 -71
  434. package/packages/provider-kie/src/index.ts +0 -10
  435. package/packages/provider-kie/src/mapping.ts +0 -182
  436. package/packages/provider-kie/src/provider.ts +0 -657
  437. package/packages/provider-kie/src/routes.ts +0 -150
  438. package/packages/provider-xiaomi-mimo/README.md +0 -32
  439. package/packages/provider-xiaomi-mimo/src/activation.ts +0 -57
  440. package/packages/provider-xiaomi-mimo/src/index.ts +0 -5
  441. package/packages/provider-xiaomi-mimo/src/provider.ts +0 -214
  442. package/packages/runtime/src/environment.ts +0 -6
  443. package/packages/semantic-track/README.md +0 -21
  444. package/packages/semantic-track/src/activation.ts +0 -8
  445. package/packages/semantic-track/src/component.ts +0 -24
  446. package/packages/semantic-track/src/identity.ts +0 -58
  447. package/packages/semantic-track/src/index.ts +0 -6
  448. package/packages/semantic-track/src/manifest.ts +0 -38
  449. package/packages/semantic-track/src/types.ts +0 -26
  450. package/packages/speech-track/README.md +0 -51
  451. package/packages/speech-track/src/activation.ts +0 -19
  452. package/packages/speech-track/src/index.ts +0 -7
  453. package/packages/speech-track/src/manifest.ts +0 -73
  454. package/packages/speech-track/src/program.ts +0 -64
  455. package/packages/speech-track/src/surface.ts +0 -35
  456. package/packages/speech-track/src/types.ts +0 -6
  457. package/packages/speech-track-studio/README.md +0 -3
  458. package/packages/speech-track-studio/package.json +0 -14
  459. package/packages/speech-track-studio/src/activation.ts +0 -7
  460. package/packages/speech-track-studio/src/index.ts +0 -40
  461. /package/packages/{cli → project-context-node}/src/project-context.ts +0 -0
  462. /package/packages/{speech-track → timeline-author}/preview/Track.png +0 -0
@@ -1,4 +1,4 @@
1
- import { createTemporalSpace, resolveTemporalContext } from "@hypit/temporal-markup";
1
+ import { resolveTemporalContext } from "@hypit/temporal-markup";
2
2
  import { artifactTypes } from "@hypit/artifact";
3
3
  import { mediaTypes } from "@hypit/media";
4
4
  import type { FontStackRef } from "@hypit/media";
@@ -88,11 +88,10 @@ export const decodeCommentStickerStyleSurface: StructuredSurfaceHandler = ({ ele
88
88
  };
89
89
 
90
90
  export const decodeCommentStickerTrackSurface: StructuredSurfaceHandler = ({ element, resolveReference }) => {
91
- allowed(element, ["id", "canvas", "semantic"], ["id", "canvas", "semantic"]);
91
+ allowed(element, ["id", "canvas", "timeline"], ["id", "canvas", "timeline"]);
92
92
  const id = text(element, "id");
93
93
  const canvas = reference(element.attributes.canvas, `${element.name}.canvas`, spatialTypes.canvas, resolveReference);
94
94
  const context = resolveTemporalContext({ element, resolveReference });
95
- const time = createTemporalSpace({ id: id, element, ...context });
96
95
  const headerId = `${id}.__header`;
97
96
  const records: SurfaceRecordDraft[] = [{
98
97
  id: headerId,
@@ -100,9 +99,9 @@ export const decodeCommentStickerTrackSurface: StructuredSurfaceHandler = ({ ele
100
99
  value: { kind: "inline", value: sealCommentStickerHeader({ id }) },
101
100
  range: element.range,
102
101
  }];
103
- const temporalComponents: SurfaceComponentDraft[] = [...time.components];
104
- const temporalFragments: ReturnType<typeof createTemporalWindowProjection>["fragments"][number][] = [...time.fragments];
105
- const inputs: Record<string, typeof canvas.ref> = { canvas: canvas.ref, header: { kind: "record", id: headerId }, space: time.space.ref };
102
+ const temporalComponents: SurfaceComponentDraft[] = [];
103
+ const temporalFragments: ReturnType<typeof createTemporalWindowProjection>["fragments"][number][] = [];
104
+ const inputs: Record<string, typeof canvas.ref> = { canvas: canvas.ref, header: { kind: "record", id: headerId }, timeline: context.timeline.ref };
106
105
  const items: Parameters<typeof createCommentStickerFragment>[0][number][] = [];
107
106
  for (const child of element.children) {
108
107
  if (child.kind === "text") {
@@ -113,7 +112,7 @@ export const decodeCommentStickerTrackSurface: StructuredSurfaceHandler = ({ ele
113
112
  if (child.children.some((node) => node.kind === "element")) throw new Error(`${child.name} accepts plain comment text only.`);
114
113
  allowed(child, ["id", "comment", "frame", "style", "avatar", "author", "header", "meta", ...TIMING], ["id", "frame", "style"]);
115
114
  const itemId = text(child, "id");
116
- const temporal = createTemporalWindowProjection({ id: itemId, element: child, ...context, space: time.space, resolveReference });
115
+ const temporal = createTemporalWindowProjection({ id: itemId, element: child, ...context, resolveReference });
117
116
  records.push(...temporal.records); temporalComponents.push(...temporal.components); temporalFragments.push(...temporal.fragments);
118
117
  const suffix = String(items.length + 1).padStart(4, "0");
119
118
  const frame = reference(child.attributes.frame, `${child.name}.frame`, spatialTypes.frame, resolveReference);
@@ -51,3 +51,24 @@ A Composition carries its id, Canvas with clear color, and peer Tracks. The Trac
51
51
  ProgramSpace identity; assembly and rendering receive the corresponding time domain separately.
52
52
  `@hypit/film` is one author-facing way to assemble it;
53
53
  `@hypit/render-hyperframes` consumes it to produce a video.
54
+
55
+ ### Visibility without a new playback origin
56
+
57
+ A VisualPresent may supply `visibility`, an ordered list of non-overlapping subranges in program
58
+ frames, all inside its `span`. Omission means the full span; an empty list means never visible.
59
+ `span` continues to define local animation and media-sampling time. This permits rule overrides or
60
+ other partial visibility without cutting a program into restarted copies. HyperFrames applies the
61
+ visibility independently when seeking; custom HTML and typed media keep their original clocks.
62
+
63
+ ## Audio presentation on the program clock
64
+
65
+ AudioClip optionally carries `gainEnvelope: { sample, gain }[]` and
66
+ `audibility: { startSample, endSampleExclusive }[]`. Both use absolute 48 kHz program samples.
67
+ Envelope points have strictly increasing sample positions and interpolate linearly, holding the
68
+ outer endpoint gains. They multiply the existing Clip gain and fades. Audible subranges are ordered,
69
+ disjoint and inside the original target; omission means the whole target, an empty list means silence.
70
+ `audioEnvelopeGainAt` evaluates the envelope; `assertAudioPresentation` checks these values.
71
+
72
+ Original target and source sampling remain intact when presentation is partially hidden. Range
73
+ rendering applies envelopes and masks before cropping. These fields express generic sound behavior;
74
+ source selection and Style/Use precedence belong to author components such as Sound.
@@ -0,0 +1,44 @@
1
+ /** Gain and audibility are measured on the complete 48 kHz program clock. */
2
+ export type AudioSampleSpan = { readonly startSample: number; readonly endSampleExclusive: number };
3
+ export type AudioGainPoint = { readonly sample: number; readonly gain: number };
4
+ export type AudioPresentation = {
5
+ /** Linear interpolation; hold the first/last gain outside the supplied points. */
6
+ readonly gainEnvelope?: readonly AudioGainPoint[];
7
+ /** Half-open audible regions; omission means the complete target, [] means silence. */
8
+ readonly audibility?: readonly AudioSampleSpan[];
9
+ };
10
+
11
+ export function assertAudioPresentation(value: AudioPresentation, target: AudioSampleSpan,
12
+ totalSamples = Number.MAX_SAFE_INTEGER): void {
13
+ if (value.gainEnvelope !== undefined) {
14
+ if (!Array.isArray(value.gainEnvelope) || value.gainEnvelope.length === 0) throw new Error("Audio gain envelope needs points.");
15
+ let previous = -1;
16
+ for (const point of value.gainEnvelope) {
17
+ if (!Number.isSafeInteger(point.sample) || point.sample <= previous || point.sample > totalSamples
18
+ || !Number.isFinite(point.gain) || point.gain < 0 || point.gain > 64) throw new Error("Audio gain envelope point is invalid.");
19
+ previous = point.sample;
20
+ }
21
+ }
22
+ if (value.audibility !== undefined) {
23
+ if (!Array.isArray(value.audibility)) throw new Error("Audio audibility must be sample intervals.");
24
+ let previous = target.startSample;
25
+ for (const span of value.audibility) {
26
+ if (!Number.isSafeInteger(span.startSample) || span.startSample < previous
27
+ || !Number.isSafeInteger(span.endSampleExclusive) || span.endSampleExclusive <= span.startSample
28
+ || span.endSampleExclusive > target.endSampleExclusive) throw new Error("Audio audibility is outside its target or overlaps.");
29
+ previous = span.endSampleExclusive;
30
+ }
31
+ }
32
+ }
33
+
34
+ export function audioEnvelopeGainAt(points: readonly AudioGainPoint[] | undefined, sample: number): number {
35
+ if (points === undefined) return 1;
36
+ const first = points[0];
37
+ if (first === undefined) throw new Error("Audio gain envelope needs points.");
38
+ if (sample <= first.sample) return first.gain;
39
+ for (let index = 1; index < points.length; index++) {
40
+ const left = points[index - 1]!, right = points[index]!;
41
+ if (sample <= right.sample) return left.gain + (right.gain - left.gain) * (sample - left.sample) / (right.sample - left.sample);
42
+ }
43
+ return points.at(-1)!.gain;
44
+ }
@@ -16,3 +16,6 @@ export {
16
16
  export { assertAudioTrackIdentity, assertCompositionIdentity, assertVisualTrackIdentity, sealAudioTrack, sealComposition, sealVisualTrack } from "./track.js";
17
17
  export { animatableLocalStyles } from "./track.js";
18
18
  export type * from "./track.js";
19
+
20
+ export * from "./audio-presentation.js";
21
+ export { audioSampleSpanSchema, audioGainEnvelopeSchema } from "./schema.js";
@@ -170,13 +170,16 @@ export const visualSurfaceSchema: ValueSchema = object({ ...base, kind: { schema
170
170
  export const visualProgramSchema: ValueSchema = object({ ...base, kind: { schema: { kind: "literal", value: "program" } }, program: { schema: object({ format: { schema: string }, payload: { schema: object({}, true) }, artifacts: { schema: { kind: "array", items: mediaBlobRef } } }) } });
171
171
  export const visualElementSchema: ValueSchema = { kind: "oneOf", variants: [visualBoxSchema, visualMaskSchema, visualTextSchema, textFlowElement, pathTextElement, visualImageSchema, visualVideoSchema, visualSurfaceSchema, visualProgramSchema] };
172
172
  const span = object({ startFrame: { schema: integer }, endFrameExclusive: { schema: integer } });
173
- const present = object({ id: { schema: string }, span: { schema: span }, stacking: { schema: object({ order: { schema: signedInteger }, tieBreak: { schema: string } }) }, elements: { schema: { kind: "array", minItems: 1, items: visualElementSchema } } });
173
+ const present = object({ id: { schema: string }, subjectId: { schema: string, optional: true }, span: { schema: span }, visibility: { schema: { kind: "array", items: span }, optional: true }, stacking: { schema: object({ order: { schema: signedInteger }, tieBreak: { schema: string } }) }, elements: { schema: { kind: "array", minItems: 1, items: visualElementSchema } } });
174
174
  export const visualTrackSchema: ValueSchema = object({ kind: { schema: { kind: "literal", value: "visual" } }, programSpaceId: { schema: string }, visualIr: { schema: { kind: "literal", value: VISUAL_IR_V1 } }, id: { schema: string }, presents: { schema: { kind: "array", items: present } } });
175
- const audioSampleSpan = object({ startSample: { schema: integer }, endSampleExclusive: { schema: { kind: "number", integer: true, minimum: 1 } } });
175
+ export const audioSampleSpanSchema = object({ startSample: { schema: integer }, endSampleExclusive: { schema: { kind: "number", integer: true, minimum: 1 } } });
176
+ export const audioGainEnvelopeSchema: ValueSchema = { kind: "array", minItems: 1, items: object({
177
+ sample: { schema: integer }, gain: { schema: { kind: "number", minimum: 0, maximum: 64 } },
178
+ }) };
176
179
  const audioClip = object({
177
180
  id: { schema: string },
178
181
  artifact: { schema: audioBlobRef },
179
- target: { schema: audioSampleSpan },
182
+ target: { schema: audioSampleSpanSchema },
180
183
  source: { schema: object({
181
184
  sampleFrames: { schema: { kind: "number", integer: true, minimum: 1 } },
182
185
  startSample: { schema: integer },
@@ -189,6 +192,8 @@ const audioClip = object({
189
192
  gain: { schema: { kind: "number", minimum: 0, maximum: 64 } },
190
193
  fadeInSamples: { schema: integer },
191
194
  fadeOutSamples: { schema: integer },
195
+ gainEnvelope: { schema: audioGainEnvelopeSchema, optional: true },
196
+ audibility: { schema: { kind: "array", items: audioSampleSpanSchema }, optional: true },
192
197
  });
193
198
  export const audioTrackSchema: ValueSchema = object({ kind: { schema: { kind: "literal", value: "audio" } }, programSpaceId: { schema: string }, id: { schema: string }, clips: { schema: { kind: "array", items: audioClip } } });
194
199
  export const compositionSchema: ValueSchema = object({ id: { schema: string }, canvas: { schema: object({ width: { schema: integer }, height: { schema: integer }, clearColor: { schema: string } }) }, tracks: { schema: { kind: "array", items: { kind: "oneOf", variants: [visualTrackSchema, audioTrackSchema] } } } });
@@ -1,3 +1,5 @@
1
+ import { assertAudioPresentation } from "./audio-presentation.js";
2
+ import type { AudioPresentation } from "./audio-presentation.js";
1
3
  import { canonicalStringify, isResourceId } from "@hypit/protocol";
2
4
  import type { BlobRef, CanonicalValue } from "@hypit/protocol";
3
5
 
@@ -361,6 +363,8 @@ export type VisualPresent = {
361
363
  /** Optional domain entity implemented by this renderer Present. */
362
364
  readonly subjectId?: string;
363
365
  readonly span: FrameSpan;
366
+ /** Optional visible subranges in program frames; span remains the animation and sampling origin. */
367
+ readonly visibility?: readonly FrameSpan[];
364
368
  /** Absolute paint position for this Present, not for its authoring Track. */
365
369
  readonly stacking: {
366
370
  readonly order: number;
@@ -380,7 +384,7 @@ export type VisualTrack = {
380
384
  readonly presents: readonly VisualPresent[];
381
385
  };
382
386
 
383
- export type AudioClip = {
387
+ export type AudioClip = AudioPresentation & {
384
388
  readonly id: string;
385
389
  /** Optional domain entity implemented by this renderer Clip. */
386
390
  readonly subjectId?: string;
@@ -935,6 +939,12 @@ function assertPresent(present: VisualPresent, programSpace: ProgramSpace | unde
935
939
  assertNonEmpty(present.id, `${trackId} Present id`);
936
940
  if (present.subjectId !== undefined) assertNonEmpty(present.subjectId, `${trackId}.${present.id} subjectId`);
937
941
  assertFrameSpan(present.span, totalFrames, `${trackId}.${present.id}.span`);
942
+ let previousEnd = present.span.startFrame;
943
+ for (const span of present.visibility ?? []) {
944
+ assertFrameSpan(span, present.span.endFrameExclusive, `${trackId}.${present.id}.visibility`);
945
+ if (span.startFrame < previousEnd) throw new Error(`${trackId}.${present.id} visibility must be ordered within its span.`);
946
+ previousEnd = span.endFrameExclusive;
947
+ }
938
948
  assertNonEmpty(present.stacking.tieBreak, `${trackId}.${present.id} stacking tieBreak`);
939
949
  if (!Number.isSafeInteger(present.stacking.order)) {
940
950
  throw new Error(`${trackId}.${present.id} has invalid stacking order.`);
@@ -1236,6 +1246,7 @@ function visualTrackContent(value: Omit<VisualTrack, "kind">): VisualTrack {
1236
1246
  id: present.id,
1237
1247
  ...(present.subjectId === undefined ? {} : { subjectId: present.subjectId }),
1238
1248
  span: { ...present.span },
1249
+ ...(present.visibility === undefined ? {} : { visibility: present.visibility.map(span => ({ ...span })) }),
1239
1250
  stacking: { ...present.stacking },
1240
1251
  elements: [...present.elements].map(normalizeElement).sort((a, b) => a.order - b.order || a.id.localeCompare(b.id)),
1241
1252
  }))
@@ -1263,6 +1274,8 @@ function audioTrackContent(value: Omit<AudioTrack, "kind">): AudioTrack {
1263
1274
  gain: clip.gain,
1264
1275
  fadeInSamples: clip.fadeInSamples,
1265
1276
  fadeOutSamples: clip.fadeOutSamples,
1277
+ ...(clip.gainEnvelope === undefined ? {} : { gainEnvelope: clip.gainEnvelope.map(point => ({ ...point })) }),
1278
+ ...(clip.audibility === undefined ? {} : { audibility: clip.audibility.map(span => ({ ...span })) }),
1266
1279
  }))
1267
1280
  .sort((a, b) => a.target.startSample - b.target.startSample || a.id.localeCompare(b.id)),
1268
1281
  };
@@ -1337,6 +1350,7 @@ export function assertAudioTrackIdentity(track: AudioTrack, programSpace?: Progr
1337
1350
  if (!Number.isFinite(clip.gain) || clip.gain < 0 || clip.gain > 64) {
1338
1351
  throw new Error(`${track.id}.${clip.id} gain is invalid.`);
1339
1352
  }
1353
+ assertAudioPresentation(clip, clip.target, totalSamples);
1340
1354
  const targetLength = clip.target.endSampleExclusive - clip.target.startSample;
1341
1355
  if (!Number.isSafeInteger(clip.fadeInSamples) || clip.fadeInSamples < 0 || clip.fadeInSamples > targetLength
1342
1356
  || !Number.isSafeInteger(clip.fadeOutSamples) || clip.fadeOutSamples < 0
@@ -3,7 +3,7 @@
3
3
  Read-only `CredentialStore` backed by explicitly named environment variables.
4
4
 
5
5
  ```ts
6
- credentialRef("env", "KIE_API_KEY")
6
+ credentialRef("env", "IMAGE_API_KEY")
7
7
  ```
8
8
 
9
9
  It resolves only the requested key when an Endpoint needs it. It never enumerates or serializes the
@@ -1,7 +1,7 @@
1
1
  # `@hypit/deck-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
6
 
7
7
  The official, deliberately narrow depth-stack Deck author package.
@@ -19,7 +19,7 @@ Media layer lowerer, but Deck is not a Media mode and exports only an ordinary p
19
19
 
20
20
  <deck:DepthStack
21
21
  id="proof-stack"
22
- semantic={speech.semantic}
22
+ timeline={speech.timeline}
23
23
  canvas={vertical}
24
24
  frame={layout.proof-stack}
25
25
  until={story.selection.proof}
@@ -20,7 +20,7 @@
20
20
  "@hypit/narrative": "workspace:*",
21
21
  "@hypit/program-space": "workspace:*",
22
22
  "@hypit/protocol": "workspace:*",
23
- "@hypit/semantic-track": "workspace:*",
23
+ "@hypit/timeline": "workspace:*",
24
24
  "@hypit/spatial": "workspace:*",
25
25
  "@hypit/svs": "workspace:*",
26
26
  "@hypit/temporal": "workspace:*",
@@ -1,7 +1,7 @@
1
+ import type { Timeline } from "@hypit/timeline";
1
2
  import type { ComponentPackage, ProducerHandlerContext } from "@hypit/component-kit";
2
3
  import { canonicalize } from "@hypit/protocol";
3
4
  import type { StoredValue } from "@hypit/protocol";
4
- import type { ProgramSpace } from "@hypit/program-space";
5
5
  import type { CanvasSpace, SpatialFrame } from "@hypit/spatial";
6
6
  import type { TemporalInstant } from "@hypit/temporal";
7
7
  import type { MediaLayerSet } from "@hypit/media-track";
@@ -32,7 +32,7 @@ function finalizeInputs(inputs: ProducerHandlerContext["inputs"]) {
32
32
  header: inline<DepthStackHeader>(inputs.header?.value, "DepthStackHeader"),
33
33
  frame: inline<SpatialFrame>(inputs.frame?.value, "SpatialFrame"),
34
34
  spec: inline<DepthStackSpec>(inputs.spec?.value, "DepthStackSpec"),
35
- space: inline<ProgramSpace>(inputs.space?.value, "ProgramSpace"),
35
+ timeline: inline<Timeline>(inputs.timeline?.value, "Timeline"),
36
36
  };
37
37
  }
38
38
 
@@ -53,7 +53,7 @@ export const depthStackComponent = {
53
53
  producer: depthStackProducers.appendCard,
54
54
  handler: ({ inputs }) => ({ outputs: { set: output(appendDepthStackCard(
55
55
  inline<DepthStackCardSet>(inputs.set?.value, "DepthStackCardSet"),
56
- inline<ProgramSpace>(inputs.space?.value, "ProgramSpace"),
56
+ inline<Timeline>(inputs.timeline?.value, "Timeline"),
57
57
  inline<MediaLayerSet>(inputs.material?.value, "MediaLayerSet"),
58
58
  inline<DepthStackCardLabel>(inputs.label?.value, "DepthStackCardLabel"),
59
59
  inline<DepthStackCardSpec>(inputs.spec?.value, "DepthStackCardSpec"),
@@ -66,7 +66,7 @@ export const depthStackComponent = {
66
66
  const value = finalizeInputs(inputs);
67
67
  return { outputs: { program: output(finalizeDepthStack(
68
68
  value.set, value.header, value.frame, value.spec,
69
- inline<TemporalInstant>(inputs.terminal?.value, "TemporalInstant"), value.space,
69
+ inline<TemporalInstant>(inputs.terminal?.value, "TemporalInstant"), value.timeline,
70
70
  )) }, needs: {} };
71
71
  },
72
72
  },
@@ -74,7 +74,7 @@ export const depthStackComponent = {
74
74
  producer: depthStackProducers.render,
75
75
  handler: ({ inputs }) => ({ outputs: { track: output(renderDepthStack(
76
76
  inline<CanvasSpace>(inputs.canvas?.value, "CanvasSpace"),
77
- inline<ProgramSpace>(inputs.space?.value, "ProgramSpace"),
77
+ inline<Timeline>(inputs.timeline?.value, "Timeline"),
78
78
  inline<DepthStackProgram>(inputs.program?.value, "DepthStackProgram"),
79
79
  )) }, needs: {} }),
80
80
  },
@@ -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";
@@ -42,7 +43,7 @@ export function createDepthStackFragment(
42
43
  { name: "canvas", type: spatialTypes.canvas },
43
44
  { name: "frame", type: spatialTypes.frame },
44
45
  { name: "header", type: depthStackTypes.header },
45
- { name: "space", type: programSpaceTypes.programSpace },
46
+ { name: "timeline", type: timelineTypes.track },
46
47
  { name: "spec", type: depthStackTypes.spec },
47
48
  ];
48
49
  const operations: FragmentOperation[] = [
@@ -107,7 +108,7 @@ export function createDepthStackFragment(
107
108
  producer: depthStackProducers.appendCard,
108
109
  inputs: {
109
110
  set: cardSet,
110
- space: input("space"),
111
+ timeline: input("timeline"),
111
112
  material: operation(sampleId),
112
113
  label: input(card.labelName),
113
114
  spec: input(card.cardSpecName),
@@ -126,7 +127,7 @@ export function createDepthStackFragment(
126
127
  header: input("header"),
127
128
  frame: input("frame"),
128
129
  spec: input("spec"),
129
- space: input("space"),
130
+ timeline: input("timeline"),
130
131
  terminal: input(terminalName),
131
132
  },
132
133
  result: { kind: "output", name: "program" },
@@ -134,7 +135,7 @@ export function createDepthStackFragment(
134
135
  operations.push({
135
136
  id: "track",
136
137
  producer: depthStackProducers.render,
137
- inputs: { canvas: input("canvas"), space: input("space"), program: operation("program") },
138
+ inputs: { canvas: input("canvas"), timeline: input("timeline"), program: operation("program") },
138
139
  result: { kind: "output", name: "track" },
139
140
  });
140
141
  return sealGraphFragment({
@@ -1,3 +1,4 @@
1
+ import type { Timeline } from "@hypit/timeline";
1
2
  import {
2
3
  assertVisualTrackIdentity,
3
4
  sealVisualTrack,
@@ -20,7 +21,6 @@ import type {
20
21
  MediaSampleLayerProgram,
21
22
  MediaVisualTrim,
22
23
  } from "@hypit/media-track";
23
- import type { ProgramSpace } from "@hypit/program-space";
24
24
  import { assertCanvasSpace } from "@hypit/spatial";
25
25
  import type { CanvasSpace, SpatialFrame } from "@hypit/spatial";
26
26
 
@@ -170,17 +170,17 @@ function samplingFor(input: {
170
170
  readonly relation: number;
171
171
  readonly stageStart: number;
172
172
  readonly stageDuration: number;
173
- readonly space: ProgramSpace;
173
+ readonly timeline: Timeline;
174
174
  }): VisualTimedSampling | undefined {
175
175
  const timing = sourceTiming(input.layer);
176
176
  if (timing === undefined) return undefined;
177
- assert(timing.frameRate.numerator === input.space.frameRate.numerator
178
- && timing.frameRate.denominator === input.space.frameRate.denominator,
179
- `DepthStack Card ${input.card.id} timed material must be normalized to ProgramSpace.`);
177
+ assert(timing.frameRate.numerator === input.timeline.frameRate.numerator
178
+ && timing.frameRate.denominator === input.timeline.frameRate.denominator,
179
+ `DepthStack Card ${input.card.id} timed material must be normalized to Timeline.`);
180
180
  const trim = trimFor(input.layer, timing.frameCount);
181
181
  if (input.relation === 0) {
182
182
  return resolveVisualSampling({
183
- space: input.space,
183
+ timeline: input.timeline,
184
184
  sourceFrameRate: timing.frameRate,
185
185
  sourceFrameCount: timing.frameCount,
186
186
  targetFrameCount: input.stageDuration,
@@ -282,10 +282,10 @@ function labelElement(card: DepthStackCard, parent: string, order: number): Visu
282
282
 
283
283
  export function renderDepthStack(
284
284
  canvas: CanvasSpace,
285
- space: ProgramSpace,
285
+ timeline: Timeline,
286
286
  program: DepthStackProgram,
287
287
  ): VisualTrack {
288
- assertDepthStackProgramIdentity(program, space);
288
+ assertDepthStackProgramIdentity(program, timeline);
289
289
  assertCanvasSpace(canvas);
290
290
  const presents: VisualTrack["presents"][number][] = [];
291
291
  for (let stageIndex = 0; stageIndex < program.cards.length; stageIndex += 1) {
@@ -322,7 +322,7 @@ export function renderDepthStack(
322
322
  const samplingAnimationOverrides: Record<string, VisualAnimation | null> = {};
323
323
  for (const layer of card.material.layers) {
324
324
  if (layer.kind !== "sample") continue;
325
- const sampling = samplingFor({ program, card, layer, relation, stageStart, stageDuration, space });
325
+ const sampling = samplingFor({ program, card, layer, relation, stageStart, stageDuration, timeline });
326
326
  if (sampling !== undefined) samplingOverrides[layer.id] = sampling;
327
327
  if (relation !== 0 && layer.samplingMotion !== undefined) samplingAnimationOverrides[layer.id] = null;
328
328
  }
@@ -337,7 +337,7 @@ export function renderDepthStack(
337
337
  stacking: { order: 0, tieBreak: card.id },
338
338
  sounds: [],
339
339
  };
340
- const material = [...lowerMediaItemElements(mediaItem, space, {
340
+ const material = [...lowerMediaItemElements(mediaItem, timeline, {
341
341
  placementParent: group.poseParent,
342
342
  lifecycleAnimationOverride: null,
343
343
  samplingOverrides,
@@ -360,11 +360,11 @@ export function renderDepthStack(
360
360
  }
361
361
  }
362
362
  const track = sealVisualTrack({
363
- programSpaceId: space.id,
363
+ programSpaceId: timeline.id,
364
364
  visualIr: "hypit.visual-ir@1",
365
365
  id: program.id,
366
366
  presents,
367
367
  });
368
- assertVisualTrackIdentity(track, space);
368
+ assertVisualTrackIdentity(track, timeline);
369
369
  return track;
370
370
  }
@@ -1,3 +1,4 @@
1
+ import { timelineTypes } from "@hypit/timeline";
1
2
  import { temporalContextAttributeVocabulary } from "@hypit/temporal-markup";
2
3
  import { readFile } from "node:fs/promises";
3
4
 
@@ -19,9 +20,9 @@ import {
19
20
  mediaTrackTypes,
20
21
  } from "@hypit/media-track";
21
22
  import { narrativeDependency, narrativeTypes } from "@hypit/narrative";
22
- import { programSpaceDependency, programSpaceTypes } from "@hypit/program-space";
23
+
23
24
  import type { ModuleManifest, ProducerRef, TypeRef, ValueSchema } from "@hypit/protocol";
24
- import { semanticTrackDependency } from "@hypit/semantic-track";
25
+ import { timelineDependency } from "@hypit/timeline";
25
26
  import { spatialDependency, spatialFrameSchema, spatialTypes } from "@hypit/spatial";
26
27
  import { svsRecipeType } from "@hypit/svs";
27
28
  import { temporalDependency, temporalTypes } from "@hypit/temporal";
@@ -118,7 +119,7 @@ export const depthStackProgramSchema: ValueSchema = object({
118
119
  const finalizeInputs = [
119
120
  { name: "set", type: depthStackTypes.cardSet }, { name: "header", type: depthStackTypes.header },
120
121
  { name: "frame", type: spatialTypes.frame }, { name: "spec", type: depthStackTypes.spec },
121
- { name: "space", type: programSpaceTypes.programSpace },
122
+ { name: "timeline", type: timelineTypes.track },
122
123
  ] as const;
123
124
 
124
125
  export const depthStackMarkupSurfaces = [
@@ -386,7 +387,7 @@ export const depthStackMarkupSurfaces = [
386
387
  ],
387
388
  example: `<deck:DepthStack
388
389
  id="proof-stack"
389
- semantic={speech.semantic}
390
+ timeline={speech.timeline}
390
391
  canvas={vertical}
391
392
  frame={layout.proof-stack}
392
393
  until={story.selection.proof}
@@ -408,7 +409,7 @@ export const depthStackMarkupSurfaces = [
408
409
 
409
410
  export const depthStackManifest: ModuleManifest = {
410
411
  format: "hypit.module@1", name: depthStackModuleRef.name, version: depthStackModuleRef.version,
411
- dependencies: [narrativeDependency, programSpaceDependency, semanticTrackDependency, spatialDependency, temporalDependency, mediaDependency, mediaTrackDependency, compositionDependency, textDependency],
412
+ dependencies: [narrativeDependency, timelineDependency, spatialDependency, temporalDependency, mediaDependency, mediaTrackDependency, compositionDependency, textDependency],
412
413
  types: [
413
414
  { name: depthStackTypes.header.name },
414
415
  { name: depthStackTypes.spec.name },
@@ -422,7 +423,7 @@ export const depthStackManifest: ModuleManifest = {
422
423
  { name: depthStackProducers.bindLabelText.name, inputs: [{ name: "style", type: depthStackTypes.cardLabelStyle }, { name: "content", type: textTypes.text }], outputs: [{ name: "label", type: depthStackTypes.cardLabel }], needs: [] },
423
424
  { name: depthStackProducers.createCards.name, inputs: [], outputs: [{ name: "set", type: depthStackTypes.cardSet }], needs: [] },
424
425
  { name: depthStackProducers.appendCard.name, inputs: [
425
- { name: "set", type: depthStackTypes.cardSet }, { name: "space", type: programSpaceTypes.programSpace }, { name: "material", type: mediaTrackTypes.layerSet },
426
+ { name: "set", type: depthStackTypes.cardSet }, { name: "timeline", type: timelineTypes.track }, { name: "material", type: mediaTrackTypes.layerSet },
426
427
  { name: "label", type: depthStackTypes.cardLabel }, { name: "spec", type: depthStackTypes.cardSpec },
427
428
  { name: "activation", type: temporalTypes.instant },
428
429
  ], outputs: [{ name: "set", type: depthStackTypes.cardSet }], needs: [] },
@@ -430,7 +431,7 @@ export const depthStackManifest: ModuleManifest = {
430
431
  inputs: [...finalizeInputs, { name: "terminal", type: temporalTypes.instant }],
431
432
  outputs: [{ name: "program", type: depthStackTypes.program }], needs: [] },
432
433
  { name: depthStackProducers.render.name, inputs: [
433
- { name: "canvas", type: spatialTypes.canvas }, { name: "space", type: programSpaceTypes.programSpace },
434
+ { name: "canvas", type: spatialTypes.canvas }, { name: "timeline", type: timelineTypes.track },
434
435
  { name: "program", type: depthStackTypes.program },
435
436
  ], outputs: [{ name: "track", type: compositionTypes.visualTrack }], needs: [] },
436
437
  ],
@@ -1,3 +1,4 @@
1
+ import type { Timeline } from "@hypit/timeline";
1
2
  import {
2
3
  assertFontArtifactRef,
3
4
  } from "@hypit/media";
@@ -6,11 +7,7 @@ import {
6
7
  assertMediaLayerSet,
7
8
  assertMediaLifecycleMotion,
8
9
  } from "@hypit/media-track";
9
- import {
10
- assertProgramSpaceIdentity,
11
- programSpaceFrameCount,
12
- } from "@hypit/program-space";
13
- import type { ProgramSpace } from "@hypit/program-space";
10
+ import { assertProgramSpaceIdentity, programSpaceFrameCount } from "@hypit/program-space";
14
11
  import { canonicalize } from "@hypit/protocol";
15
12
  import { verifyText } from "@hypit/text";
16
13
  import type { Text } from "@hypit/text";
@@ -229,13 +226,13 @@ function appendDepthStackCardAtFrame(
229
226
 
230
227
  export function appendDepthStackCard(
231
228
  set: DepthStackCardSet,
232
- space: ProgramSpace,
229
+ timeline: Timeline,
233
230
  material: DepthStackCardSet["cards"][number]["material"],
234
231
  label: DepthStackCardLabel,
235
232
  spec: DepthStackCardSpec,
236
233
  activation: TemporalInstant,
237
234
  ): DepthStackCardSet {
238
- assertTemporalInstantFor(activation, { subjectId: spec.id, space });
235
+ assertTemporalInstantFor(activation, { subjectId: spec.id, space: timeline });
239
236
  return appendDepthStackCardAtFrame(set, material, label, spec, activation.frame);
240
237
  }
241
238
 
@@ -245,13 +242,13 @@ function finalizeDepthStackAtFrame(
245
242
  frame: SpatialFrame,
246
243
  spec: DepthStackSpec,
247
244
  terminalFrame: number,
248
- space: ProgramSpace,
245
+ timeline: Timeline,
249
246
  ): DepthStackProgram {
250
247
  assertDepthStackCardSet(set);
251
248
  assertDepthStackHeader(header);
252
249
  assertSpatialFrame(frame);
253
250
  assertDepthStackSpec(spec);
254
- assertProgramSpaceIdentity(space);
251
+ assertProgramSpaceIdentity(timeline);
255
252
  assert(set.cards.length > 0, "DepthStack requires at least one Card.");
256
253
  const first = set.cards[0]!;
257
254
  const program: DepthStackProgram = {
@@ -263,7 +260,7 @@ function finalizeDepthStackAtFrame(
263
260
  spec: structuredClone(spec),
264
261
  cards: structuredClone(set.cards),
265
262
  };
266
- assertDepthStackProgramIdentity(program, space);
263
+ assertDepthStackProgramIdentity(program, timeline);
267
264
  return canonicalize(program) as unknown as DepthStackProgram;
268
265
  }
269
266
 
@@ -273,10 +270,10 @@ export function finalizeDepthStack(
273
270
  frame: SpatialFrame,
274
271
  spec: DepthStackSpec,
275
272
  terminal: TemporalInstant,
276
- space: ProgramSpace,
273
+ timeline: Timeline,
277
274
  ): DepthStackProgram {
278
- assertTemporalInstantFor(terminal, { subjectId: header.id, space });
279
- return finalizeDepthStackAtFrame(set, header, frame, spec, terminal.frame, space);
275
+ assertTemporalInstantFor(terminal, { subjectId: header.id, space: timeline });
276
+ return finalizeDepthStackAtFrame(set, header, frame, spec, terminal.frame, timeline);
280
277
  }
281
278
 
282
279
  export function assertDepthStackProgram(program: DepthStackProgram): void {
@@ -307,10 +304,10 @@ export function assertDepthStackProgram(program: DepthStackProgram): void {
307
304
  }
308
305
  }
309
306
 
310
- export function assertDepthStackProgramIdentity(program: DepthStackProgram, space: ProgramSpace): void {
311
- assertProgramSpaceIdentity(space);
307
+ export function assertDepthStackProgramIdentity(program: DepthStackProgram, timeline: Timeline): void {
308
+ assertProgramSpaceIdentity(timeline);
312
309
  assertDepthStackProgram(program);
313
- assert(program.terminalFrame <= programSpaceFrameCount(space), "DepthStack terminal is outside ProgramSpace.");
310
+ assert(program.terminalFrame <= programSpaceFrameCount(timeline), "DepthStack terminal is outside Timeline.");
314
311
  }
315
312
 
316
313
  function modulo(value: number, size: number): number {
@@ -1,4 +1,4 @@
1
- import { createTemporalSpace, resolveTemporalContext } from "@hypit/temporal-markup";
1
+ import { resolveTemporalContext } from "@hypit/temporal-markup";
2
2
  import { artifactTypes } from "@hypit/artifact";
3
3
  import { mediaTypes } from "@hypit/media";
4
4
  import type { FontStackRef } from "@hypit/media";
@@ -181,28 +181,27 @@ export const decodeDepthStackLabelSurface: StructuredSurfaceHandler = ({ element
181
181
  };
182
182
 
183
183
  export const decodeDepthStackSurface: StructuredSurfaceHandler = ({ element, resolveReference }) => {
184
- allowed(element, ["id", "semantic", "space", "canvas", "frame", "appearance", "until", "until-boundary"]);
184
+ allowed(element, ["id", "timeline", "canvas", "frame", "appearance", "until", "until-boundary"]);
185
185
  const id = text(element, "id");
186
186
  const context = resolveTemporalContext({ element, resolveReference });
187
- const time = createTemporalSpace({ id: id, element, ...context });
188
187
  const canvas = reference(element.attributes.canvas, `${element.name}.canvas`, spatialTypes.canvas, resolveReference);
189
188
  const frame = reference(element.attributes.frame, `${element.name}.frame`, spatialTypes.frame, resolveReference);
190
189
  const appearance = recipe(element.attributes.appearance, `${element.name}.appearance`, resolveReference);
191
190
  const terminal = createTemporalInstantProjection({
192
- id: `${id}.terminal`, subjectId: id, element, ...context, space: time.space, resolveReference,
191
+ id: `${id}.terminal`, subjectId: id, element, ...context, resolveReference,
193
192
  semanticAttribute: "until", boundaryAttribute: "until-boundary", boundaryFallback: "end", projectedAttribute: false,
194
193
  });
195
194
  const records: SurfaceRecordDraft[] = [...terminal.records];
196
- const temporalComponents: SurfaceComponentDraft[] = [...time.components, ...terminal.components];
197
- const temporalFragments = [...time.fragments, ...terminal.fragments];
195
+ const temporalComponents: SurfaceComponentDraft[] = [...terminal.components];
196
+ const temporalFragments = [...terminal.fragments];
198
197
  const headerId = `${id}.header`;
199
198
  const specId = `${id}.spec`;
200
199
  records.push(
201
200
  { id: headerId, type: depthStackTypes.header, value: { kind: "inline", value: sealDepthStackHeader({ id }) }, range: element.range },
202
201
  { id: specId, type: depthStackTypes.spec, value: { kind: "inline", value: decodeDepthStackSpec(appearance) }, range: element.range },
203
202
  );
204
- const inputs: Record<string, typeof time.space.ref> = {
205
- canvas: canvas.ref, frame: frame.ref, header: { kind: "record", id: headerId }, space: time.space.ref,
203
+ const inputs: Record<string, typeof context.timeline.ref> = {
204
+ canvas: canvas.ref, frame: frame.ref, header: { kind: "record", id: headerId }, timeline: context.timeline.ref,
206
205
  spec: { kind: "record", id: specId }, terminal: terminal.ref,
207
206
  };
208
207
  const cards: DepthStackFragmentCard[] = [];
@@ -225,7 +224,7 @@ export const decodeDepthStackSurface: StructuredSurfaceHandler = ({ element, res
225
224
  : reference(child.attributes.extent, `${child.name}.extent`, spatialTypes.extent, resolveReference);
226
225
  if (sourceKind === "still" && extent === undefined) throw new Error(`${child.name}.extent is required for a still image.`);
227
226
  if (sourceKind !== "still" && extent !== undefined) throw new Error(`${child.name}.extent belongs only to a still image.`);
228
- const activation = createTemporalInstantProjection({ id: `${id}.${cardId}`, subjectId: cardId, element: child, ...context, space: time.space, resolveReference });
227
+ const activation = createTemporalInstantProjection({ id: `${id}.${cardId}`, subjectId: cardId, element: child, ...context, resolveReference });
229
228
  records.push(...activation.records); temporalComponents.push(...activation.components); temporalFragments.push(...activation.fragments);
230
229
  const cardAppearance = child.attributes.appearance === undefined
231
230
  ? appearance : recipe(child.attributes.appearance, `${child.name}.appearance`, resolveReference);
@@ -249,7 +248,7 @@ export const decodeDepthStackSurface: StructuredSurfaceHandler = ({ element, res
249
248
  inputs[sampleSpecName] = { kind: "record", id: sampleId };
250
249
  inputs[cardSpecName] = { kind: "record", id: cardSpecId };
251
250
  inputs[activationName] = activation.ref;
252
- let labelRef: typeof time.space.ref;
251
+ let labelRef: typeof context.timeline.ref;
253
252
  if (child.attributes.label === undefined) {
254
253
  const labelId = `${id}.card.${suffix}.label-none`;
255
254
  records.push({ id: labelId, type: depthStackTypes.cardLabel, value: { kind: "inline", value: noDepthStackCardLabel() }, range: child.range });