@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,8 +1,8 @@
1
- import { captionTypes } from "@hypit/caption";
1
+ import { captionTypes, captionProducers } from "@hypit/caption";
2
2
  import { assertFontArtifactRef, assertFontStackRef, mediaTypes } from "@hypit/media";
3
3
  import type { FontArtifactRef, FontStackRef } from "@hypit/media";
4
4
  import { narrativeTypes } from "@hypit/narrative";
5
- import { semanticTrackTypes } from "@hypit/semantic-track";
5
+ import { timelineTypes } from "@hypit/timeline";
6
6
  import { spatialTypes } from "@hypit/spatial";
7
7
  import { svsRecipeType } from "@hypit/svs";
8
8
  import type { SvsRecipe } from "@hypit/svs";
@@ -13,7 +13,16 @@ import type {
13
13
  MarkupAttributeValue,
14
14
  } from "@hypit/markup";
15
15
 
16
- import { fineCaptionRegionTrackFragment, fineCaptionTrackFragment } from "./fragment.js";
16
+ import { sealGraphFragment } from "@hypit/elaborator";
17
+ import type { FragmentOperation } from "@hypit/elaborator";
18
+ import type { SurfaceRecordDraft, SurfaceComponentDraft } from "@hypit/markup";
19
+ import { assertEmptyElement, optionalTextAttribute } from "@hypit/markup";
20
+ import { createTemporalWindowProjection, resolveTemporalContext, temporalWindowAttributeNames } from "@hypit/temporal-markup";
21
+ import { temporalTypes } from "@hypit/temporal";
22
+ import { compositionTypes } from "@hypit/composition";
23
+ import { captionFineProducers, captionFineTypes } from "./manifest.js";
24
+ const input = (name: string) => ({ kind: "fragment-input" as const, name });
25
+ const operation = (id: string) => ({ kind: "fragment-operation" as const, operation: id });
17
26
  import { fineCaptionStyle } from "./style.js";
18
27
 
19
28
  function sameType(left: SurfaceResolvedReference["type"], right: SurfaceResolvedReference["type"]): boolean {
@@ -114,39 +123,57 @@ export const decodeFineCaptionStyleSurface: StructuredSurfaceHandler = ({ elemen
114
123
  };
115
124
 
116
125
  export const decodeFineCaptionTrackSurface: StructuredSurfaceHandler = ({ element, resolveReference }) => {
117
- attributes(element, ["id", "document", "semantic", "program"], ["regions"]);
118
- if (element.children.some((child) => child.kind === "element" || child.value.trim())) {
119
- throw new Error(`${element.name} does not accept children`);
120
- }
126
+ attributes(element, ["id", "document", "timeline"], ["regions"]);
121
127
  const id = stringAttribute(element, "id");
122
128
  const document = reference(element, "document", narrativeTypes.captionDocument, resolveReference);
123
- const semantic = reference(element, "semantic", semanticTrackTypes.track, resolveReference);
124
- const program = reference(element, "program", captionTypes.program, resolveReference);
125
- if (element.attributes.regions !== undefined) {
126
- const regions = reference(element, "regions", spatialTypes.regionTimeline, resolveReference);
127
- return {
128
- records: [],
129
- components: [{
130
- id,
131
- fragment: fineCaptionRegionTrackFragment.id,
132
- inputs: { document: document.ref, semantic: semantic.ref, program: program.ref, regions: regions.ref },
133
- outputs: { schedule: `${id}.schedule`, track: `${id}.track` },
134
- range: element.range,
135
- }],
136
- fragments: [fineCaptionRegionTrackFragment],
137
- };
129
+ const context = resolveTemporalContext({ element, resolveReference });
130
+ const regions = element.attributes.regions === undefined ? undefined : reference(element, "regions", spatialTypes.regionTimeline, resolveReference);
131
+ const records: SurfaceRecordDraft[] = [{ id: `${id}.header`, type: captionTypes.header,
132
+ value: { kind: "inline", value: { id } }, range: element.range }];
133
+ const components: SurfaceComponentDraft[] = [];
134
+ const fragments: ReturnType<typeof sealGraphFragment>[] = [];
135
+ const inputs: { name: string; type: SurfaceResolvedReference["type"] }[] = [{ name: "document", type: narrativeTypes.captionDocument }, { name: "timeline", type: timelineTypes.track }, { name: "header", type: captionTypes.header }];
136
+ const bindings: Record<string, SurfaceResolvedReference["ref"]> = { document: document.ref, timeline: context.timeline.ref, header: { kind: "record", id: `${id}.header` } };
137
+ const operations: FragmentOperation[] = [{ id: "create", producer: captionProducers.create,
138
+ inputs: { document: input("document"), header: input("header") }, result: { kind: "output", name: "program" } }];
139
+ let previous = "create", index = 0;
140
+ for (const child of element.children) {
141
+ if (child.kind === "text") { if (child.value.trim()) throw new Error("Caption Track accepts Use children."); continue; }
142
+ if (localName(child.name) !== "Use") throw new Error("Caption Track accepts Use children.");
143
+ attributes(child, ["style"], ["id", "role", ...temporalWindowAttributeNames]);
144
+ assertEmptyElement(child);
145
+ index += 1;
146
+ const useId = optionalTextAttribute(child, "id") ?? `${id}.use.${index}`;
147
+ const hasTime = temporalWindowAttributeNames.some(name => child.attributes[name] !== undefined);
148
+ const temporal = createTemporalWindowProjection({ id: useId, ...context, resolveReference,
149
+ element: hasTime ? child : { ...child, attributes: { ...child.attributes, during: "program" } } });
150
+ records.push(...temporal.records); components.push(...temporal.components); fragments.push(...temporal.fragments);
151
+ const style = reference(child, "style", captionTypes.style, resolveReference);
152
+ const role = optionalTextAttribute(child, "role");
153
+ const filterId = `${useId}.filter`;
154
+ records.push({ id: filterId, type: captionTypes.filter, value: { kind: "inline", value: role === undefined ? {} : { role } }, range: child.range });
155
+ const key = `use-${index}`;
156
+ inputs.push({ name: `${key}-window`, type: temporalTypes.window }, { name: `${key}-style`, type: captionTypes.style }, { name: `${key}-filter`, type: captionTypes.filter });
157
+ bindings[`${key}-window`] = temporal.ref; bindings[`${key}-style`] = style.ref; bindings[`${key}-filter`] = { kind: "record", id: filterId };
158
+ operations.push({ id: key, producer: captionProducers.append,
159
+ inputs: { program: operation(previous), window: input(`${key}-window`), style: input(`${key}-style`), filter: input(`${key}-filter`) }, result: { kind: "output", name: "program" } });
160
+ previous = key;
138
161
  }
139
- return {
140
- records: [],
141
- components: [{
142
- id,
143
- fragment: fineCaptionTrackFragment.id,
144
- inputs: {
145
- document: document.ref, semantic: semantic.ref, program: program.ref,
146
- },
147
- outputs: { schedule: `${id}.schedule`, track: `${id}.track` },
148
- range: element.range,
149
- }],
150
- fragments: [fineCaptionTrackFragment],
151
- };
162
+ operations.push({ id: "content", producer: captionProducers.temporalizeDocument,
163
+ inputs: { document: input("document"), timeline: input("timeline") }, result: { kind: "output", name: "caption" } });
164
+ operations.push({ id: "schedule", producer: captionFineProducers.schedule,
165
+ inputs: { caption: operation("content"), document: input("document"), program: operation(previous) }, result: { kind: "output", name: "schedule" } });
166
+ if (regions !== undefined) { inputs.push({ name: "regions", type: spatialTypes.regionTimeline }); bindings.regions = regions.ref; }
167
+ operations.push({ id: "render", producer: regions === undefined ? captionFineProducers.render : captionFineProducers.renderWithRegions,
168
+ inputs: { schedule: operation("schedule"), document: input("document"), timeline: input("timeline"), program: operation(previous), ...(regions === undefined ? {} : { regions: input("regions") }) }, result: { kind: "output", name: "track" } });
169
+ const collector = sealGraphFragment({ inputs, operations, exports: [
170
+ { name: "content", type: captionTypes.timedProjection, root: operation("content") },
171
+ { name: "program", type: captionTypes.program, root: operation(previous) },
172
+ { name: "schedule", type: captionFineTypes.schedule, root: operation("schedule") },
173
+ { name: "track", type: compositionTypes.visualTrack, root: operation("render") },
174
+ ] });
175
+ fragments.push(collector);
176
+ components.push({ id, fragment: collector.id, inputs: bindings,
177
+ outputs: { content: `${id}.content`, program: `${id}.program`, schedule: `${id}.schedule`, track: `${id}.track` }, range: element.range });
178
+ return { records, components, fragments, exports: [`${id}.content`, `${id}.program`, `${id}.schedule`, `${id}.track`] };
152
179
  };
@@ -173,6 +173,8 @@ export type FineCaptionParameters = {
173
173
  };
174
174
 
175
175
  export type FineCaptionScheduledCue = {
176
+ readonly cueId: string;
177
+ readonly visibility: readonly { readonly startFrame: number; readonly endFrameExclusive: number }[];
176
178
  readonly id: string;
177
179
  readonly styleId: string;
178
180
  readonly semanticStartFrame: number;
@@ -1,3 +1,25 @@
1
- # `@hypit/caption-fine-studio`
1
+ # Caption Fine Studio Companion
2
2
 
3
- Hypit Studio Companion for `@hypit/caption-fine`. It projects the public Caption Schedule and owns the Inspector layout.
3
+ One Caption Track contains Cue blocks and a bottom Uses band declared through the public ABI.
4
+ Each Cue has a numbered title such as `#15` and complete subtitle text in its body.
5
+ Cue ids remain the underlying identities; the number is a display label. Cues retain their measured
6
+ times, including content currently hidden by a Use. Their read-only Range describes the content, independently of its visual treatment.
7
+
8
+ The Uses band shows each authored Window once, with its Style name. A whole-Timeline Use remains one
9
+ block across Segment changes and gaps. Hidden and overridden Uses stay selectable. The Companion
10
+ reads the Track's `content`, `schedule` and `program` exports; it never reconstructs author windows
11
+ from the rendered words.
12
+
13
+ Use entities retain the actual child Source range and standard Temporal lineage. Timeline gestures
14
+ therefore use the same writeback rules as Performance and Sound. Selecting a Use exposes its
15
+ referenced Style's font and Recipe fields. Shared Styles remain shared; changing a time window
16
+ changes presentation without editing Script Cue breaks.
17
+
18
+ Studio owns Track bands, block chrome, overlap selection and generic Inspector controls. This Companion owns
19
+ Caption facts, field grouping and Source bindings. Content, Uses and their renderer stay independent
20
+ of central Studio domain logic.
21
+
22
+ Fine Style parameters are a separate `parameters` Companion matched to the Fine Style Surface.
23
+ The Use band opts its `style` reference into the selected object's Companion. Custom Styles can
24
+ provide their own field table through their project package. Supported omitted defaults appear
25
+ in the Inspector and are inserted into the owning Recipe only when edited.
@@ -4,12 +4,19 @@
4
4
  "license": "SEE LICENSE IN LICENSE",
5
5
  "private": true,
6
6
  "type": "module",
7
- "exports": { ".": "./src/index.ts" },
8
- "hypit": { "activation": "./src/activation.ts" },
7
+ "exports": {
8
+ ".": "./src/index.ts"
9
+ },
10
+ "hypit": {
11
+ "activation": "./src/activation.ts"
12
+ },
9
13
  "dependencies": {
10
14
  "@hypit/caption-fine": "workspace:*",
11
15
  "@hypit/composition": "workspace:*",
12
16
  "@hypit/narrative": "workspace:*",
13
- "@hypit/studio-adapter": "workspace:*"
17
+ "@hypit/studio-adapter": "workspace:*",
18
+ "@hypit/fonts-open": "workspace:*",
19
+ "@hypit/caption": "workspace:*",
20
+ "@hypit/timeline": "workspace:*"
14
21
  }
15
22
  }
@@ -1,7 +1,7 @@
1
- import { createStudioTrackCompanionHostFacet } from "@hypit/studio-adapter";
2
- import { captionFineStudioTrackCompanions } from "./index.js";
1
+ import { createStudioCompanionHostFacet } from "@hypit/studio-adapter";
2
+ import { captionFineStudioTrackCompanions, captionFineStudioParameterCompanions } from "./index.js";
3
3
 
4
4
  export default {
5
5
  format: "hypit.node-package@1" as const,
6
- hostFacets: [createStudioTrackCompanionHostFacet(captionFineStudioTrackCompanions)],
6
+ hostFacets: [createStudioCompanionHostFacet({ tracks: captionFineStudioTrackCompanions, parameters: captionFineStudioParameterCompanions })],
7
7
  };
@@ -1,4 +1,7 @@
1
- import { captionFineMarkupSurfaces, captionFineModuleRef } from "@hypit/caption-fine";
1
+ import { temporalTypes } from "@hypit/temporal";
2
+ import type { CaptionProgram, TimedCaptionProjection } from "@hypit/caption";
3
+ import { openFontStudioFields } from "@hypit/fonts-open/studio";
4
+ import { fineCaptionEditableDefaults, captionFineMarkupSurfaces, captionFineModuleRef } from "@hypit/caption-fine";
2
5
  import type { FineCaptionSchedule } from "@hypit/caption-fine";
3
6
  import { compositionTypes } from "@hypit/composition";
4
7
  import { narrativeTypes } from "@hypit/narrative";
@@ -9,9 +12,12 @@ import type {
9
12
  StudioEntityDraft,
10
13
  StudioInspectorFieldDeclaration,
11
14
  } from "@hypit/studio-adapter";
12
- import { requiredReferencedValue, requiredSurfaceValue, textLayer } from "@hypit/studio-adapter";
15
+ import { authoredChildFor, temporalLineageFor, temporalSemanticSource, requiredReferencedValue, requiredSurfaceValue } from "@hypit/studio-adapter";
13
16
 
14
17
  const styleSurface = captionFineMarkupSurfaces.find((surface) => surface.name === "style");
18
+
19
+ const fontInspector = openFontStudioFields("style");
20
+
15
21
  const recipeVocabulary = styleSurface?.vocabulary.attributes
16
22
  .find((attribute) => attribute.name === "recipe")?.recipe ?? [];
17
23
 
@@ -83,19 +89,23 @@ const captionColorProperties = new Set([
83
89
  "active-underline-color", "active-box-background", "active-box-border-color",
84
90
  ]);
85
91
  const captionTextProperties = new Set(["loop"]);
92
+ const captionPercentProperties = new Set(["x", "y", "width", "height", "opacity", "active-opacity", "active-scale"]);
93
+ const captionPixelProperties = new Set(["size", "letter-spacing", "word-gap", "radius", "stroke-width", "border-width", "shadow-blur", "glow-blur"]);
86
94
 
87
95
  export const captionFineInspectorFields: readonly StudioInspectorFieldDeclaration[] = recipeVocabulary.map((property) => {
88
96
  const placement = captionPlacement.get(property.name);
89
97
  if (placement === undefined) throw new Error(`Caption Studio has no explicit Inspector declaration for ${property.name}.`);
90
98
  const options = valuesFor(property);
91
99
  return {
92
- binding: `program.${property.name}`,
100
+ binding: `style.${property.name}`,
93
101
  label: title(property.name),
94
102
  ...placement,
95
103
  summary: property.summary,
96
104
  control: options !== undefined ? "select" : captionColorProperties.has(property.name) ? "color"
97
105
  : captionTextProperties.has(property.name) ? "text" : "number",
98
106
  ...(options === undefined ? {} : { options }),
107
+ ...(captionPercentProperties.has(property.name) ? { unit: "%", number: { scale: 100, step: 1 } } : {}),
108
+ ...(captionPixelProperties.has(property.name) ? { unit: "px", number: { step: 1 } } : {}),
99
109
  };
100
110
  });
101
111
 
@@ -110,39 +120,40 @@ function cueText(document: CaptionDocument | undefined, unitIds: readonly string
110
120
  .trim();
111
121
  }
112
122
 
113
- function projectCaption(context: StudioTrackCompanionContext): readonly StudioEntityDraft[] {
123
+ export function projectCaptionContents(context: StudioTrackCompanionContext): readonly StudioEntityDraft[] {
124
+ const content = requiredSurfaceValue(context, "content") as TimedCaptionProjection;
114
125
  const schedule = requiredSurfaceValue(context, "schedule") as FineCaptionSchedule;
115
126
  const document = requiredReferencedValue(context, "document", narrativeTypes.captionDocument) as CaptionDocument;
116
- if (document.id !== schedule.documentId) throw new Error("Caption Studio Schedule belongs to another CaptionDocument.");
117
- const rendered = new Map(context.generic().flatMap((entity) =>
118
- entity.presentId === undefined ? [] : [[entity.presentId, entity] as const]));
119
- return schedule.cues.map((cue): StudioEntityDraft => {
120
- const base = rendered.get(cue.id);
121
- const label = cueText(document, cue.units.map((unit) => unit.unitId));
122
- const authoredId = context.placement?.id ?? cue.id;
127
+ if (document.id !== content.documentId) throw new Error("Caption content belongs to another CaptionDocument.");
128
+ return content.cues.map((cue, index): StudioEntityDraft => ({
129
+ id: `${context.track.outputRef}:cue:${cue.id}`, authoredId: cue.id,
130
+ display: { title: `#${index + 1}`, layers: [{ kind: "text", role: "content", text: cueText(document, cue.units.map(unit => unit.unitId)) }] },
131
+ startFrame: cue.startFrame, endFrameExclusive: cue.endFrameExclusive, stackOrder: 0,
132
+ renderIds: schedule.cues.filter(item => item.cueId === cue.id).map(item => item.id),
133
+ presentation: { entity: "caption-cue", chrome: "standard" },
134
+ inspector: [{ id: "range", label: "Range", domain: "when", section: { id: "cue", label: "Cue" }, value: `${cue.startFrame}–${cue.endFrameExclusive}`, unit: "f" }],
135
+ }));
136
+ }
137
+
138
+ export function projectCaption(context: StudioTrackCompanionContext): readonly StudioEntityDraft[] {
139
+ const program = requiredSurfaceValue(context, "program") as CaptionProgram;
140
+ const uses: StudioEntityDraft[] = program.uses.map((use, index) => {
141
+ const authoredId = use.window.subjectId;
142
+ const child = authoredChildFor(context, authoredId, [temporalTypes.windowSpec]);
143
+ if (child === undefined) throw new Error(`Caption Use ${authoredId} has no author provenance.`);
144
+ const temporal = temporalLineageFor(context, authoredId, "window");
145
+ const semantic = temporalSemanticSource(temporal);
123
146
  return {
124
- ...(base ?? {
125
- id: `${context.track.outputRef}:entity:${cue.id}`,
126
- authoredId: cue.id,
127
- display: { title: "Caption", layers: [] },
128
- startFrame: cue.visibleStartFrame,
129
- endFrameExclusive: cue.visibleEndFrameExclusive,
130
- stackOrder: 0,
131
- presentId: cue.id,
132
- renderIds: [cue.id],
133
- }),
134
- authoredId,
135
- ...(context.placement === undefined ? {} : { elementRange: context.placement.range }),
136
- display: {
137
- title: "Caption",
138
- layers: label.length === 0 ? [] : [textLayer(label)],
139
- },
140
- startFrame: cue.visibleStartFrame,
141
- endFrameExclusive: cue.visibleEndFrameExclusive,
142
- presentation: { entity: "caption-cue", chrome: "standard" },
143
- parameterReferences: { program: cue.styleId },
147
+ id: `${context.track.outputRef}:use:${authoredId}`, authoredId,
148
+ display: { title: use.styleId, layers: [] },
149
+ ...use.window.span, stackOrder: index, elementRange: child.range,
150
+ ...(temporal === undefined ? {} : { temporal }),
151
+ ...(semantic === undefined ? {} : { markerId: semantic.id }),
152
+ presentation: { entity: "caption-use", chrome: "standard" }, band: "uses",
153
+ inspector: [{ id: "range", label: "Range", domain: "when", section: { id: "placement", label: "Placement" }, value: `${use.window.span.startFrame}–${use.window.span.endFrameExclusive}`, unit: "f" }],
144
154
  };
145
155
  });
156
+ return [...projectCaptionContents(context), ...uses];
146
157
  }
147
158
 
148
159
  export const captionFineStudioTrackCompanions: readonly StudioTrackCompanion[] = [
@@ -150,14 +161,24 @@ export const captionFineStudioTrackCompanions: readonly StudioTrackCompanion[] =
150
161
  id: "track", role: "track",
151
162
  output: { type: compositionTypes.visualTrack, surface: "track", modules: [captionFineModuleRef] },
152
163
  family: "caption", tone: "magenta", icon: "captions",
153
- bindings: [
154
- {
155
- name: "program",
156
- recipe: { through: ["recipe"], bindings: recipeVocabulary.map(({ name }) => ({ name })) },
157
- },
158
- ],
159
- inspector: captionFineInspectorFields,
160
- requiredValues: ["schedule"], project: projectCaption,
161
- lane: { heightPx: 48 },
164
+ lane: { heightPx: 36 },
165
+ bands: [{
166
+ id: "uses", placement: "after", heightPx: 15, display: "label",
167
+ bindings: [{ name: "style", companion: true }],
168
+ inspector: [{ binding: "style", label: "Style", domain: "how", section: { id: "style", label: "Style" }, control: "text" }],
169
+ }],
170
+ requiredValues: ["content", "schedule", "program"], project: projectCaption,
171
+
162
172
  },
163
173
  ];
174
+
175
+ export const captionFineStudioParameterCompanions: readonly import("@hypit/studio-adapter").StudioParameterCompanion[] = [{
176
+ id: "style", match: { module: captionFineModuleRef, surface: "style" },
177
+ bindings: [fontInspector.binding, { name: "recipe", recipe: { bindings: recipeVocabulary.map(({ name }) => ({ name,
178
+ ...(Object.hasOwn(fineCaptionEditableDefaults, name) ? { fallback: fineCaptionEditableDefaults[name as keyof typeof fineCaptionEditableDefaults] } : {}),
179
+ })) } }],
180
+ inspector: [
181
+ ...fontInspector.fields.map(field => ({ ...field, binding: field.binding.replace(/^style\./u, "") })),
182
+ ...captionFineInspectorFields.map(field => ({ ...field, binding: field.binding.replace(/^style\./u, "recipe.") })),
183
+ ],
184
+ }];
@@ -11,9 +11,63 @@ Source imports decide which language and component packages give the source mean
11
11
  Profile separately selects Credential Stores and Endpoints allowed to execute work. The CLI does not
12
12
  invent targets, candidates or Provider choices.
13
13
 
14
- Human output is compact by default. `--json` emits a command-specific view rather than raw compiler,
15
- Runtime or Repository objects. `--verbose` adds operational detail; it never turns the command into
16
- an internal state dump.
14
+ Human and JSON output answer the same command-specific question. `--json` changes encoding;
15
+ `--verbose` expands scope. Compiler, Runtime and Repository objects are not default reports.
16
+
17
+ | Command | Default scope | Explicit detail |
18
+ | --- | --- | --- |
19
+ | `check` | Validation, targets and counts | `--verbose`: exported names/types and historical references |
20
+ | `plan` | Targets, demanded requests, Endpoint selection and diagnostics | `--verbose`: Run choices, graph step count and unreached declarations |
21
+ | `pricing` | Requests that may incur a Provider charge and their rate material | `--verbose`: declared no-charge requests and original documents |
22
+ | `status`, `activity` | Current work, Provider-reported phases and failures | `--verbose`: individual operations; activity also includes capacity reservations |
23
+ | `inspect` | Targets and explicitly highlighted Outputs, outcome and failure evidence | `--output <name>` selects one Output; `--verbose` browses all available Outputs and receipts |
24
+ | `doctor`, `programs` | Complete diagnostics; program discovery or the unmet result of an explicit lifecycle action | `--verbose`: successful lifecycle details; `--limit` bounds the healthy program list |
25
+
26
+ Run choices count explicit Candidate selections, which can supply existing work or execute an
27
+ alternative producer. They are not a count of reused files. Result output counts describe all
28
+ available named Outputs, including forwarded ones; they are not a count of newly generated assets.
29
+ `history <output>` lists Builds containing that name, including reuse, rather than deduplicating
30
+ generation events or guessing whether mutable external files still contain the same bytes.
31
+ `inspect` chooses names before resolving references, so an unrelated Output cannot delay or break
32
+ inspection of a target. It reports the number of other Outputs without reading their descriptions.
33
+
34
+ `plan` retains every target, demanded request and preflight diagnostic in both encodings. `--limit`
35
+ bounds expanded detail, not the work inventory before grouping. `inspect` likewise keeps its default
36
+ target/highlight selection intact; `--limit` bounds the broader `--verbose` list, with an omitted count.
37
+ No-charge classification continues to belong to the selected Endpoint's pricing declaration.
38
+
39
+ Build follow and status include Provider-reported local Command activity as well as asynchronous
40
+ Operations. Follow coalesces counters into readable updates and continues to distinguish execution
41
+ from Result saving. Status groups identical active Operations and retains failures by default;
42
+ completed receipts are detail. Activity reports the phases that trigger its updates and ignores
43
+ changes confined to Builds outside the displayed page. Providers own the phase vocabulary; the CLI
44
+ does not interpret model or renderer names.
45
+
46
+ ## Project and Runtime context
47
+
48
+ `--workspace` explicitly selects the project. Otherwise the nearest `package.json` above the command's
49
+ current directory establishes its root; with none, the current directory is the root. Source and Run
50
+ arguments locate files within that context. Relative command-line paths are resolved from the current
51
+ directory, including when `--workspace` is supplied.
52
+
53
+ Runtime-aware commands use an explicit `--runtime` for that invocation, or read exactly the resolved
54
+ project's `.hypit/runtime` pointer. `runtime use` writes the pointer; a Profile filename by itself does
55
+ not select it. The pointer is a file, separate from the Profile's `dataRoot`; a directory at that
56
+ path is reported explicitly and preserved. Project selection is also available on `paths`, `doctor`, execution status/control,
57
+ Runtime operations, `programs` and `auth`. Machine-wide `packages` operations have no project selector.
58
+
59
+ `paths` shows the effective locations and whether the Profile came from a command argument, a project
60
+ selection or neither. Its JSON fields `profileSource` and `selectionFile` expose that distinction; the
61
+ selection-file location is shown even when no selection exists. `doctor` states whether it checked
62
+ only project Results or also a selected Runtime. An unselected Runtime is not a completed environment
63
+ diagnosis. Result repository selection and project-package resolution remain independent of Runtime.
64
+
65
+ For a command invoked outside the project, name both the project and its input explicitly:
66
+
67
+ ```bash
68
+ hypit paths --workspace /path/to/video-project
69
+ hypit plan /path/to/video-project/build.svrun --workspace /path/to/video-project
70
+ ```
17
71
 
18
72
  `plan` lists every Endpoint request in the frozen Build graph. Exact-model packages expose their own
19
73
  port tables and request-assembly edges, so the CLI can show authored prompt, duration and generation
@@ -21,6 +75,9 @@ settings without searching arbitrary records for a request-shaped object. When a
21
75
  made by an earlier Build step, that direct graph edge stays symbolic until the file exists; the rest
22
76
  of the request is still shown. A complete request is resolved through the same Endpoint Registry as
23
77
  the Build, including the Endpoint's `supports` check.
78
+ Each component's planned-Need presentation owns its useful request fields. An empty presentation
79
+ means the summary is unavailable, not that the request has no parameters. Structured render inputs
80
+ are summarized by their owning packages; the CLI does not traverse upstream graphs to invent them.
24
81
 
25
82
  `pricing <run>` uses that selected Runtime to read Provider-owned rate material. The default report
26
83
  summarizes requests whose resolved Endpoint explicitly declares `pricing.kind: "local"` as having no
@@ -49,3 +106,24 @@ machine-view union. `main.ts` resolves project and selected Runtime context sepa
49
106
  syntax, then routes these command groups. Result commands do not consult or construct a Runtime,
50
107
  and the generic CLI cannot silently choose a Result Repository or a Provider-specific login
51
108
  flow.
109
+
110
+ ## Execution logs
111
+
112
+ `hypit logs <build-id> [--workspace <project>] [--runtime <profile>] [--lines <count>]` reads Build
113
+ execution phases and Provider diagnostics. It reads a finished Result directly, without opening the
114
+ Runtime; an active Build is read through Runtime control. The selected Repository handles file access.
115
+ `--lines` limits the tail and the report states the omitted count; JSON carries records plus that count.
116
+ `inspect` exposes an available log separately from authored Outputs. `hypit runtime logs` reads the
117
+ Worker process log instead, for Runtime startup or process-level failures.
118
+
119
+ Project context resolution is owned by [`@hypit/project-context-node`](../project-context-node/README.md).
120
+ CLI, Studio and creation tools call that same package; the CLI is not another environment owner.
121
+
122
+ `doctor`, `programs up|status|down`, and `runtime up` accept repeated `--endpoint <instance>` values.
123
+ The same Endpoint scope reaches package preparation and Program operations. Omission means the whole
124
+ Profile. Build preflight instead uses the Endpoints resolved for that Build's concrete requests.
125
+ An unrelated offered capability does not add another credential or Program requirement.
126
+
127
+ Upstream package installation reports an `install.log` path at preparation time. Exact package
128
+ releases coexist below the machine home, each with npm's own package.json and lockfile. `paths` shows
129
+ the home; `packages status <name@version>` checks the requested release rather than a mutable latest copy.
@@ -16,6 +16,7 @@
16
16
  "@hypit/driver-node": "workspace:*",
17
17
  "@hypit/elaborator": "workspace:*",
18
18
  "@hypit/package-loader-node": "workspace:*",
19
+ "@hypit/project-context-node": "workspace:*",
19
20
  "@hypit/protocol": "workspace:*",
20
21
  "@hypit/run": "workspace:*",
21
22
  "@hypit/runtime": "workspace:*",