@hypit/hypit 0.1.4 → 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 (449) 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 +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 +32 -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 +28 -17
  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 +11 -0
  63. package/packages/build-result/src/decode.ts +2 -0
  64. package/packages/build-result/src/execution-log.ts +17 -0
  65. package/packages/build-result/src/index.ts +1 -0
  66. package/packages/build-result/src/store.ts +14 -1
  67. package/packages/build-result/src/types.ts +3 -0
  68. package/packages/build-result-s3/src/repository.ts +4 -0
  69. package/packages/caption/README.md +61 -73
  70. package/packages/caption/package.json +3 -2
  71. package/packages/caption/src/activation.ts +2 -2
  72. package/packages/caption/src/component.ts +20 -5
  73. package/packages/caption/src/display.ts +3 -18
  74. package/packages/caption/src/fragment.ts +3 -7
  75. package/packages/caption/src/index.ts +6 -5
  76. package/packages/caption/src/manifest.ts +29 -46
  77. package/packages/caption/src/style.ts +24 -135
  78. package/packages/caption/src/surface.ts +12 -92
  79. package/packages/caption/src/temporalize.ts +18 -53
  80. package/packages/caption/src/types.ts +8 -35
  81. package/packages/caption/src/visibility.ts +23 -0
  82. package/packages/caption-fine/README.md +14 -9
  83. package/packages/caption-fine/package.json +4 -2
  84. package/packages/caption-fine/src/component.ts +3 -3
  85. package/packages/caption-fine/src/fragment.ts +7 -19
  86. package/packages/caption-fine/src/index.ts +2 -0
  87. package/packages/caption-fine/src/manifest.ts +26 -17
  88. package/packages/caption-fine/src/recipe.ts +7 -0
  89. package/packages/caption-fine/src/render.ts +14 -13
  90. package/packages/caption-fine/src/schedule.ts +39 -35
  91. package/packages/caption-fine/src/style.ts +10 -9
  92. package/packages/caption-fine/src/surface.ts +62 -35
  93. package/packages/caption-fine/src/types.ts +2 -0
  94. package/packages/caption-fine-studio/README.md +24 -2
  95. package/packages/caption-fine-studio/package.json +3 -1
  96. package/packages/caption-fine-studio/src/activation.ts +3 -3
  97. package/packages/caption-fine-studio/src/index.ts +54 -42
  98. package/packages/cli/README.md +57 -4
  99. package/packages/cli/package.json +1 -0
  100. package/packages/cli/src/arguments.ts +25 -6
  101. package/packages/cli/src/build-planning.ts +3 -2
  102. package/packages/cli/src/command.ts +6 -0
  103. package/packages/cli/src/commands/environment.ts +28 -18
  104. package/packages/cli/src/commands/execution.ts +81 -26
  105. package/packages/cli/src/commands/results.ts +7 -11
  106. package/packages/cli/src/index.ts +2 -2
  107. package/packages/cli/src/machine-view.ts +3 -2
  108. package/packages/cli/src/main.ts +34 -42
  109. package/packages/cli/src/observation.ts +7 -1
  110. package/packages/cli/src/output.ts +65 -23
  111. package/packages/cli/src/view.ts +64 -18
  112. package/packages/comment-sticker/README.md +3 -3
  113. package/packages/comment-sticker/package.json +1 -1
  114. package/packages/comment-sticker/src/component.ts +4 -4
  115. package/packages/comment-sticker/src/fragment.ts +5 -4
  116. package/packages/comment-sticker/src/manifest.ts +7 -6
  117. package/packages/comment-sticker/src/program.ts +9 -9
  118. package/packages/comment-sticker/src/surface.ts +6 -7
  119. package/packages/composition/README.md +21 -0
  120. package/packages/composition/src/audio-presentation.ts +44 -0
  121. package/packages/composition/src/index.ts +3 -0
  122. package/packages/composition/src/schema.ts +8 -3
  123. package/packages/composition/src/track.ts +15 -1
  124. package/packages/credential-store-env/README.md +1 -1
  125. package/packages/deck-track/README.md +3 -3
  126. package/packages/deck-track/package.json +1 -1
  127. package/packages/deck-track/src/component.ts +5 -5
  128. package/packages/deck-track/src/fragment.ts +6 -5
  129. package/packages/deck-track/src/lower.ts +12 -12
  130. package/packages/deck-track/src/manifest.ts +8 -7
  131. package/packages/deck-track/src/program.ts +13 -16
  132. package/packages/deck-track/src/surface.ts +9 -10
  133. package/packages/driver-node/src/driver.ts +41 -3
  134. package/packages/elevenlabs-speech/README.md +27 -0
  135. package/packages/{provider-xiaomi-mimo → elevenlabs-speech}/package.json +5 -8
  136. package/packages/elevenlabs-speech/src/activation.ts +26 -0
  137. package/packages/elevenlabs-speech/src/fragment.ts +11 -0
  138. package/packages/elevenlabs-speech/src/index.ts +111 -0
  139. package/packages/elevenlabs-speech/src/surface.ts +167 -0
  140. package/packages/endpoint-kit/README.md +24 -0
  141. package/packages/endpoint-kit/src/index.ts +7 -1
  142. package/packages/film/README.md +12 -7
  143. package/packages/film/package.json +1 -1
  144. package/packages/film/src/component.ts +4 -4
  145. package/packages/film/src/fragment.ts +6 -5
  146. package/packages/film/src/manifest.ts +11 -10
  147. package/packages/film/src/program.ts +5 -5
  148. package/packages/film/src/recipe.ts +2 -1
  149. package/packages/film/src/surface.ts +6 -6
  150. package/packages/film-studio/package.json +1 -1
  151. package/packages/film-studio/src/index.ts +2 -2
  152. package/packages/fishaudio-speech/README.md +33 -0
  153. package/packages/fishaudio-speech/package.json +21 -0
  154. package/packages/fishaudio-speech/src/activation.ts +32 -0
  155. package/packages/fishaudio-speech/src/fragment.ts +11 -0
  156. package/packages/fishaudio-speech/src/index.ts +156 -0
  157. package/packages/fishaudio-speech/src/surface.ts +192 -0
  158. package/packages/generation/README.md +11 -1
  159. package/packages/generation/src/mapping.ts +28 -30
  160. package/packages/gpt-image/README.md +1 -2
  161. package/packages/grok-imagine/README.md +1 -2
  162. package/packages/hyperframes/README.md +7 -3
  163. package/packages/hyperframes/src/browser-program.ts +11 -2
  164. package/packages/hyperframes/src/document.ts +15 -2
  165. package/packages/interview-emoji-reveal/README.md +4 -4
  166. package/packages/interview-emoji-reveal/package.json +1 -1
  167. package/packages/interview-emoji-reveal/src/component.ts +4 -4
  168. package/packages/interview-emoji-reveal/src/fragment.ts +6 -5
  169. package/packages/interview-emoji-reveal/src/manifest.ts +9 -8
  170. package/packages/interview-emoji-reveal/src/program.ts +14 -14
  171. package/packages/interview-emoji-reveal/src/surface.ts +8 -9
  172. package/packages/media-execution/README.md +7 -3
  173. package/packages/media-execution/src/audio-presentation.ts +23 -0
  174. package/packages/media-execution/src/execute.ts +2 -0
  175. package/packages/media-pipeline/README.md +7 -3
  176. package/packages/media-pipeline/src/audio-plan.ts +4 -1
  177. package/packages/media-pipeline/src/component.ts +16 -2
  178. package/packages/media-pipeline/src/manifest.ts +3 -1
  179. package/packages/media-pipeline/src/types.ts +2 -1
  180. package/packages/media-track/README.md +14 -47
  181. package/packages/media-track/package.json +1 -1
  182. package/packages/media-track/preview/preview.svml +5 -5
  183. package/packages/media-track/src/author.ts +12 -6
  184. package/packages/media-track/src/component.ts +10 -16
  185. package/packages/media-track/src/fragment.ts +8 -7
  186. package/packages/media-track/src/index.ts +3 -1
  187. package/packages/media-track/src/lower.ts +7 -7
  188. package/packages/media-track/src/manifest.ts +16 -38
  189. package/packages/media-track/src/program.ts +62 -67
  190. package/packages/media-track/src/sampling.ts +6 -6
  191. package/packages/media-track/src/sequence.ts +8 -8
  192. package/packages/media-track/src/surface.ts +25 -43
  193. package/packages/media-track-studio/README.md +9 -0
  194. package/packages/media-track-studio/src/index.ts +16 -11
  195. package/packages/mimo-speech/README.md +1 -1
  196. package/packages/minimax-h3/README.md +1 -1
  197. package/packages/nano-banana/README.md +1 -1
  198. package/packages/narrative/README.md +23 -1
  199. package/packages/narrative/src/identity.ts +11 -0
  200. package/packages/narrative/src/index.ts +3 -0
  201. package/packages/narrative/src/schema.ts +28 -27
  202. package/packages/narrative/src/selection.ts +52 -0
  203. package/packages/narrative/src/types.ts +2 -0
  204. package/packages/package-loader-node/README.md +30 -0
  205. package/packages/package-loader-node/package.json +5 -2
  206. package/packages/package-loader-node/src/distribution-resolution.ts +10 -3
  207. package/packages/package-loader-node/src/index.ts +1 -0
  208. package/packages/package-loader-node/src/loader.ts +12 -15
  209. package/packages/package-loader-node/src/location.ts +27 -1
  210. package/packages/package-loader-node/src/module-scope.ts +183 -0
  211. package/packages/package-loader-node/src/types.ts +4 -0
  212. package/packages/performance/README.md +83 -0
  213. package/packages/performance/package.json +30 -0
  214. package/packages/performance/src/activation.ts +11 -0
  215. package/packages/performance/src/component.ts +46 -0
  216. package/packages/performance/src/index.ts +6 -0
  217. package/packages/performance/src/manifest.ts +53 -0
  218. package/packages/{media-track/src/performance.ts → performance/src/media.ts} +9 -10
  219. package/packages/performance/src/program.ts +51 -0
  220. package/packages/performance/src/style.ts +35 -0
  221. package/packages/performance/src/surface.ts +99 -0
  222. package/packages/performance-studio/README.md +25 -0
  223. package/packages/performance-studio/package.json +21 -0
  224. package/packages/performance-studio/src/activation.ts +6 -0
  225. package/packages/performance-studio/src/index.ts +84 -0
  226. package/packages/program-space/README.md +9 -18
  227. package/packages/program-space/src/activation.ts +1 -5
  228. package/packages/program-space/src/index.ts +2 -11
  229. package/packages/program-space/src/surface.ts +1 -20
  230. package/packages/project-context-node/README.md +20 -0
  231. package/packages/project-context-node/package.json +10 -0
  232. package/packages/project-context-node/src/index.ts +3 -0
  233. package/packages/{cli → project-context-node}/src/runtime-selection.ts +7 -2
  234. package/packages/provider-hyperframes-local/README.md +43 -15
  235. package/packages/provider-hyperframes-local/src/activation.ts +4 -3
  236. package/packages/provider-hyperframes-local/src/capture-process.ts +26 -4
  237. package/packages/provider-hyperframes-local/src/capture.ts +96 -26
  238. package/packages/provider-hyperframes-local/src/concurrency.ts +86 -0
  239. package/packages/provider-hyperframes-local/src/opaque-capture.ts +92 -0
  240. package/packages/provider-hyperframes-local/src/options.ts +2 -0
  241. package/packages/provider-hyperframes-local/src/program.ts +6 -3
  242. package/packages/provider-hyperframes-local/src/progress.ts +53 -0
  243. package/packages/provider-hyperframes-local/src/provider.ts +18 -5
  244. package/packages/provider-hyperframes-local/src/render.ts +48 -7
  245. package/packages/provider-hypihub/README.md +48 -17
  246. package/packages/provider-hypihub/package.json +2 -0
  247. package/packages/provider-hypihub/src/mapping.ts +31 -7
  248. package/packages/provider-hypihub/src/oauth.ts +6 -0
  249. package/packages/provider-hypihub/src/provider.ts +25 -13
  250. package/packages/provider-hypihub/src/routes.ts +1 -2
  251. package/packages/provider-hypihub/src/upload.ts +2 -0
  252. package/packages/provider-media-local/README.md +3 -4
  253. package/packages/provider-whisperx-local/src/program.ts +1 -0
  254. package/packages/provider-whisperx-local/src/provider.ts +3 -0
  255. package/packages/ranking/README.md +8 -6
  256. package/packages/ranking/package.json +1 -1
  257. package/packages/ranking/src/component.ts +6 -6
  258. package/packages/ranking/src/fragment.ts +11 -7
  259. package/packages/ranking/src/manifest.ts +21 -14
  260. package/packages/ranking/src/render.ts +22 -26
  261. package/packages/ranking/src/schedule.ts +16 -19
  262. package/packages/ranking/src/surface.ts +12 -13
  263. package/packages/ranking-studio/README.md +18 -0
  264. package/packages/ranking-studio/src/index.ts +61 -9
  265. package/packages/render-hyperframes/README.md +7 -7
  266. package/packages/render-hyperframes/package.json +1 -1
  267. package/packages/render-hyperframes/src/component.ts +11 -1
  268. package/packages/render-hyperframes/src/fragment.ts +7 -4
  269. package/packages/render-hyperframes/src/manifest.ts +4 -4
  270. package/packages/render-hyperframes/src/surface.ts +6 -6
  271. package/packages/runtime/README.md +8 -1
  272. package/packages/runtime/src/execution.ts +15 -4
  273. package/packages/runtime/src/index.ts +2 -1
  274. package/packages/runtime/src/log.ts +51 -0
  275. package/packages/runtime/src/types.ts +5 -8
  276. package/packages/runtime-host-node/README.md +30 -0
  277. package/packages/runtime-host-node/package.json +1 -0
  278. package/packages/runtime-host-node/src/index.ts +24 -9
  279. package/packages/runtime-host-node/src/packages.ts +47 -50
  280. package/packages/runtime-kit/README.md +5 -0
  281. package/packages/runtime-kit/src/index.ts +3 -1
  282. package/packages/runtime-local/README.md +92 -4
  283. package/packages/runtime-local/src/config.ts +202 -56
  284. package/packages/runtime-local/src/control.ts +9 -1
  285. package/packages/runtime-local/src/executor.ts +66 -0
  286. package/packages/runtime-local/src/host.ts +37 -17
  287. package/packages/runtime-local/src/log.ts +48 -0
  288. package/packages/runtime-local/src/programs.ts +2 -1
  289. package/packages/runtime-local/src/result-writer.ts +2 -0
  290. package/packages/runtime-local/src/runtime.ts +8 -6
  291. package/packages/runtime-local/src/supervisor.ts +142 -0
  292. package/packages/runtime-local/src/types.ts +9 -2
  293. package/packages/runtime-local/src/worker-process.ts +7 -24
  294. package/packages/runtime-local/src/worker.ts +55 -83
  295. package/packages/screen-overlay/README.md +3 -3
  296. package/packages/screen-overlay/package.json +1 -1
  297. package/packages/screen-overlay/src/component.ts +3 -3
  298. package/packages/screen-overlay/src/fragment.ts +5 -4
  299. package/packages/screen-overlay/src/manifest.ts +7 -6
  300. package/packages/screen-overlay/src/program.ts +9 -9
  301. package/packages/screen-overlay/src/surface.ts +6 -7
  302. package/packages/script/README.md +15 -2
  303. package/packages/script/src/manifest.ts +2 -2
  304. package/packages/script/src/narrative.ts +1 -0
  305. package/packages/script/src/surface.ts +4 -3
  306. package/packages/script/src/types.ts +1 -1
  307. package/packages/script-studio/package.json +9 -3
  308. package/packages/script-studio/src/index.ts +2 -0
  309. package/packages/script-studio/src/projection.ts +105 -0
  310. package/packages/seedance/README.md +30 -1
  311. package/packages/seedance/src/index.ts +18 -7
  312. package/packages/seedance/src/surface.ts +17 -4
  313. package/packages/seedance-kits/README.md +7 -1
  314. package/packages/seedream/README.md +1 -1
  315. package/packages/sound/README.md +81 -0
  316. package/packages/sound/package.json +25 -0
  317. package/packages/sound/src/activation.ts +11 -0
  318. package/packages/sound/src/component.ts +28 -0
  319. package/packages/sound/src/index.ts +5 -0
  320. package/packages/sound/src/manifest.ts +47 -0
  321. package/packages/sound/src/program.ts +84 -0
  322. package/packages/sound/src/style.ts +34 -0
  323. package/packages/sound/src/surface.ts +90 -0
  324. package/packages/sound-studio/README.md +22 -0
  325. package/packages/sound-studio/package.json +20 -0
  326. package/packages/sound-studio/src/activation.ts +6 -0
  327. package/packages/sound-studio/src/index.ts +74 -0
  328. package/packages/speech/README.md +2 -2
  329. package/packages/speech-alignment/src/local.ts +8 -0
  330. package/packages/speech-alignment/src/locate.ts +1 -1
  331. package/packages/store-sqlite/README.md +7 -0
  332. package/packages/store-sqlite/src/store.ts +84 -83
  333. package/packages/studio/INSPECTOR.md +15 -2
  334. package/packages/studio/README.md +88 -14
  335. package/packages/studio/package.json +8 -7
  336. package/packages/studio/src/companion-assembly.ts +1 -0
  337. package/packages/studio/src/domain.ts +1 -1
  338. package/packages/studio/src/fallback-companions.ts +3 -3
  339. package/packages/studio/src/feedback-server.ts +51 -0
  340. package/packages/studio/src/feedback-store.ts +66 -0
  341. package/packages/studio/src/feedback.ts +60 -0
  342. package/packages/studio/src/parameter-values.ts +43 -1
  343. package/packages/studio/src/parameters.ts +114 -24
  344. package/packages/studio/src/preview/render.ts +5 -1
  345. package/packages/studio/src/preview/runtime-shim.ts +49 -3
  346. package/packages/studio/src/programme.ts +14 -30
  347. package/packages/studio/src/server.ts +10 -6
  348. package/packages/studio/src/shared.ts +4 -2
  349. package/packages/studio/src/snapshot.ts +21 -132
  350. package/packages/studio/src/studio-preflight.ts +3 -3
  351. package/packages/studio/src/studio-registry.ts +50 -6
  352. package/packages/studio/src/style.css +209 -48
  353. package/packages/studio/src/ui/comments.ts +233 -0
  354. package/packages/studio/src/ui/icons.ts +5 -0
  355. package/packages/studio/src/ui/main.ts +145 -86
  356. package/packages/studio/src/ui/overlay.ts +12 -8
  357. package/packages/studio/src/ui/scrub-preview.ts +108 -0
  358. package/packages/studio/src/ui/stage.ts +67 -4
  359. package/packages/studio/src/ui/timeline.ts +177 -108
  360. package/packages/studio/start.ts +4 -2
  361. package/packages/studio-adapter/README.md +130 -11
  362. package/packages/studio-adapter/src/index.ts +100 -13
  363. package/packages/temporal/README.md +6 -6
  364. package/packages/temporal/package.json +1 -1
  365. package/packages/temporal/src/component.ts +5 -6
  366. package/packages/temporal/src/index.ts +8 -6
  367. package/packages/temporal/src/location.ts +11 -11
  368. package/packages/temporal/src/projection.ts +19 -19
  369. package/packages/temporal/src/rational.ts +4 -4
  370. package/packages/temporal-markup/EDITING.md +2 -2
  371. package/packages/temporal-markup/README.md +27 -11
  372. package/packages/temporal-markup/package.json +1 -1
  373. package/packages/temporal-markup/src/index.ts +20 -25
  374. package/packages/temporal-markup/src/space.ts +10 -41
  375. package/packages/timeline/README.md +31 -0
  376. package/packages/{semantic-track → timeline}/package.json +1 -1
  377. package/packages/timeline/src/activation.ts +8 -0
  378. package/packages/timeline/src/component.ts +24 -0
  379. package/packages/timeline/src/identity.ts +60 -0
  380. package/packages/timeline/src/index.ts +6 -0
  381. package/packages/{semantic-track → timeline}/src/location.ts +20 -20
  382. package/packages/timeline/src/manifest.ts +39 -0
  383. package/packages/{semantic-track → timeline}/src/projection.ts +14 -14
  384. package/packages/timeline/src/types.ts +24 -0
  385. package/packages/timeline-author/README.md +68 -0
  386. package/packages/{speech-track → timeline-author}/package.json +6 -4
  387. package/packages/timeline-author/src/activation.ts +22 -0
  388. package/packages/{speech-track → timeline-author}/src/component.ts +15 -13
  389. package/packages/{speech-track → timeline-author}/src/fragment.ts +14 -23
  390. package/packages/timeline-author/src/index.ts +7 -0
  391. package/packages/timeline-author/src/manifest.ts +78 -0
  392. package/packages/timeline-author/src/program.ts +107 -0
  393. package/packages/timeline-author/src/surface.ts +46 -0
  394. package/packages/timeline-author/src/types.ts +6 -0
  395. package/packages/typography-track/README.md +4 -4
  396. package/packages/typography-track/package.json +1 -1
  397. package/packages/typography-track/src/component.ts +4 -4
  398. package/packages/typography-track/src/fragment.ts +4 -3
  399. package/packages/typography-track/src/manifest.ts +11 -9
  400. package/packages/typography-track/src/program.ts +15 -15
  401. package/packages/typography-track/src/surface.ts +17 -18
  402. package/packages/video-cli/README.md +4 -1
  403. package/packages/video-cli/package.json +2 -1
  404. package/packages/video-cli/src/creation.ts +14 -4
  405. package/packages/video-cli/src/index.ts +1 -1
  406. package/packages/video-cli/src/studio-distribution.ts +2 -1
  407. package/packages/volcengine-matting/README.md +3 -3
  408. package/packages/whisperx/README.md +1 -1
  409. package/services/whisperx/README.md +14 -0
  410. package/services/whisperx/pyproject.toml +2 -0
  411. package/services/whisperx/uv.lock +20 -20
  412. package/packages/provider-hyperframes-aws-lambda/README.md +0 -30
  413. package/packages/provider-hyperframes-aws-lambda/package.json +0 -30
  414. package/packages/provider-hyperframes-aws-lambda/src/activation.ts +0 -97
  415. package/packages/provider-hyperframes-aws-lambda/src/client.ts +0 -114
  416. package/packages/provider-hyperframes-aws-lambda/src/index.ts +0 -21
  417. package/packages/provider-hyperframes-aws-lambda/src/provider.ts +0 -522
  418. package/packages/provider-kie/README.md +0 -134
  419. package/packages/provider-kie/package.json +0 -43
  420. package/packages/provider-kie/src/activation.ts +0 -71
  421. package/packages/provider-kie/src/index.ts +0 -10
  422. package/packages/provider-kie/src/mapping.ts +0 -182
  423. package/packages/provider-kie/src/provider.ts +0 -657
  424. package/packages/provider-kie/src/routes.ts +0 -150
  425. package/packages/provider-xiaomi-mimo/README.md +0 -32
  426. package/packages/provider-xiaomi-mimo/src/activation.ts +0 -57
  427. package/packages/provider-xiaomi-mimo/src/index.ts +0 -5
  428. package/packages/provider-xiaomi-mimo/src/provider.ts +0 -214
  429. package/packages/runtime/src/environment.ts +0 -6
  430. package/packages/semantic-track/README.md +0 -21
  431. package/packages/semantic-track/src/activation.ts +0 -8
  432. package/packages/semantic-track/src/component.ts +0 -24
  433. package/packages/semantic-track/src/identity.ts +0 -58
  434. package/packages/semantic-track/src/index.ts +0 -6
  435. package/packages/semantic-track/src/manifest.ts +0 -38
  436. package/packages/semantic-track/src/types.ts +0 -26
  437. package/packages/speech-track/README.md +0 -51
  438. package/packages/speech-track/src/activation.ts +0 -19
  439. package/packages/speech-track/src/index.ts +0 -7
  440. package/packages/speech-track/src/manifest.ts +0 -73
  441. package/packages/speech-track/src/program.ts +0 -64
  442. package/packages/speech-track/src/surface.ts +0 -35
  443. package/packages/speech-track/src/types.ts +0 -6
  444. package/packages/speech-track-studio/README.md +0 -3
  445. package/packages/speech-track-studio/package.json +0 -14
  446. package/packages/speech-track-studio/src/activation.ts +0 -7
  447. package/packages/speech-track-studio/src/index.ts +0 -40
  448. /package/packages/{cli → project-context-node}/src/project-context.ts +0 -0
  449. /package/packages/{speech-track → timeline-author}/preview/Track.png +0 -0
@@ -11,9 +11,10 @@ export const videoStudioCompanionPackages = [
11
11
  "@hypit/deck-track-studio",
12
12
  "@hypit/film-studio",
13
13
  "@hypit/media-track-studio",
14
+ "@hypit/performance-studio",
14
15
  "@hypit/ranking-studio",
15
16
  "@hypit/screen-overlay-studio",
16
17
  "@hypit/script-studio",
17
- "@hypit/speech-track-studio",
18
+ "@hypit/sound-studio",
18
19
  "@hypit/typography-track-studio",
19
20
  ] as const;
@@ -30,20 +30,20 @@ formats. The service's flat-background MP4 option is a different output treatmen
30
30
  This excerpt assumes the performance and Script exist. Normalize keeps the transparent picture
31
31
  and prepares the selected embedded audio on the program clock. WhisperX and semantic alignment
32
32
  associate that prepared performance with the Script. Use `opening-semantic.take` in
33
- [Speech Track](../speech-track/README.md); its screen position and stack order are independent
33
+ [Timeline assembly](../timeline-author/README.md); its screen position and stack order are independent
34
34
  of its role as A-roll.
35
35
 
36
36
  For B-roll, normalize `cutout.video` with `audio="none"` when its sound is unwanted, then use
37
37
  `cutout-media.media` in [Media Track](../media-track/README.md). No SemanticTake is needed for
38
38
  that overlay. Existing transparency can enter Normalize directly.
39
39
 
40
- For example, this alternative uses the existing program's SemanticTrack and an authored Selection:
40
+ For example, this alternative uses the existing program's Timeline and an authored Selection:
41
41
 
42
42
  ```svml
43
43
  <import as="media-track" from="@hypit/media-track@1"/>
44
44
  <pipeline:Normalize id="overlay-media" source={cutout.video} clock={clock}
45
45
  video="primary-moving" audio="none" span-authority="video"/>
46
- <media-track:Track id="overlay" semantic={speech.semantic} canvas={canvas}>
46
+ <media-track:Track id="overlay" timeline={speech.timeline} canvas={canvas}>
47
47
  <media-track:Item media={overlay-media.media} during={story.selection.example}
48
48
  frame={overlay-frame} appearance={look.media.overlay}/>
49
49
  </media-track:Track>
@@ -33,7 +33,7 @@ so this branch requests no evidence audio and no WhisperX capability:
33
33
  segment={story.segment.pause} media={pause-media.media}/>
34
34
  ```
35
35
 
36
- There is no whole-program WhisperX pass. Speech Track only receives already-semantic Takes and later
36
+ There is no whole-program WhisperX pass. Timeline assembly only receives already-semantic Takes and later
37
37
  translates their local frames when assembling the final ProgramSpace and complete semantic map.
38
38
 
39
39
  `@hypit/provider-hypihub` is the default concrete adapter; it uploads the canonical evidence audio
@@ -71,6 +71,14 @@ Configuration is deployment state:
71
71
  The Node Provider must configure the same model, device, compute, batch size, service version and
72
72
  WhisperX version. A mismatch fails before transcription results are accepted.
73
73
 
74
+ ## Package preparation
75
+
76
+ Local package preparation includes `src/**/*.py` in uv's package cache inputs. Updating service code
77
+ therefore rebuilds its small wheel instead of reusing one selected only by an unchanged
78
+ `pyproject.toml`. This leaves dependency and speech-model caches intact. See
79
+ [uv's local dependency caching](https://docs.astral.sh/uv/concepts/cache/#dynamic-metadata).
80
+ This governs package installation; an already running service continues using its loaded code.
81
+
74
82
  ## Queue and concurrency
75
83
 
76
84
  The SVML Runtime Scheduler decides how many WhisperX Needs may enter this Provider lane. One service
@@ -80,3 +88,9 @@ second direct request receives `503 BUSY` instead of entering a hidden service q
80
88
 
81
89
  Run multiple service processes on different devices/ports only when the Runtime registers and
82
90
  locks them as distinct Provider instances.
91
+
92
+ The local Provider reconciles this packaged project through `uv sync` before a cold service start.
93
+ A passing version probe alone cannot establish that same-version checkout edits were installed;
94
+ the declared uv source cache keys decide whether the service wheel needs rebuilding. A healthy
95
+ running service remains untouched. To adopt edited service code, stop that selected helper when idle
96
+ and start it again through its Profile; restarting only the Build Worker does not reinstall Python.
@@ -24,3 +24,5 @@ where = ["src"]
24
24
 
25
25
  [tool.uv]
26
26
  package = true
27
+ # Rebuild this small service wheel when its packaged Python implementation changes.
28
+ cache-keys = [{ file = "pyproject.toml" }, { file = "src/**/*.py" }]
@@ -867,6 +867,23 @@ wheels = [
867
867
  { url = "https://files.pythonhosted.org/packages/a8/af/48ac8483240de756d2438c380746e7130d1c6f75802ef22f3c6d49982787/huggingface_hub-0.36.2-py3-none-any.whl", hash = "sha256:48f0c8eac16145dfce371e9d2d7772854a4f591bcb56c9cf548accf531d54270", size = 566395, upload-time = "2026-02-06T09:24:11.133Z" },
868
868
  ]
869
869
 
870
+ [[package]]
871
+ name = "hypit-whisperx-service"
872
+ version = "0.1.0"
873
+ source = { editable = "." }
874
+ dependencies = [
875
+ { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" },
876
+ { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*'" },
877
+ { name = "numpy", version = "2.5.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" },
878
+ { name = "whisperx" },
879
+ ]
880
+
881
+ [package.metadata]
882
+ requires-dist = [
883
+ { name = "numpy", specifier = ">=2.1,<3" },
884
+ { name = "whisperx", specifier = "==3.8.6" },
885
+ ]
886
+
870
887
  [[package]]
871
888
  name = "idna"
872
889
  version = "3.18"
@@ -1410,7 +1427,7 @@ wheels = [
1410
1427
 
1411
1428
  [[package]]
1412
1429
  name = "nltk"
1413
- version = "3.10.2"
1430
+ version = "3.10.3"
1414
1431
  source = { registry = "https://pypi.org/simple" }
1415
1432
  dependencies = [
1416
1433
  { name = "click" },
@@ -1419,9 +1436,9 @@ dependencies = [
1419
1436
  { name = "regex" },
1420
1437
  { name = "tqdm" },
1421
1438
  ]
1422
- sdist = { url = "https://files.pythonhosted.org/packages/72/16/24d639531e73cbc6884fb251d116dfe469df9c595e0dcf24668c54d0e8d3/nltk-3.10.2.tar.gz", hash = "sha256:fcfd80fb77931868cea8357573c79838b8abc609942ef9914d1c9f6070d4645c", size = 3101716, upload-time = "2026-08-05T09:56:20.657Z" }
1439
+ sdist = { url = "https://files.pythonhosted.org/packages/e0/e6/fe51d2bb1a3b446f59c5c8165999a9fee208bc346af90a7cbf7657bc0d75/nltk-3.10.3.tar.gz", hash = "sha256:bb9327a461c3811c2fa4900e03840401f2126adfb30c0072827c433bd2444ea4", size = 5137152, upload-time = "2026-08-12T23:46:37.258Z" }
1423
1440
  wheels = [
1424
- { url = "https://files.pythonhosted.org/packages/1f/2b/bf677eb32ca6684b270c0d19ab133c2271e9f3375997e5a8dd2b08e3152d/nltk-3.10.2-py3-none-any.whl", hash = "sha256:2c7ccacb765c5e26b0cb60fb1b57080af522c6924d12a714a243305ba3637412", size = 1725815, upload-time = "2026-08-05T09:56:09.657Z" },
1441
+ { url = "https://files.pythonhosted.org/packages/b6/6d/ebd2af4640b12168fdf0cb74b6118df2f32a2f62ec7e0c06fbfd80706639/nltk-3.10.3-py3-none-any.whl", hash = "sha256:ff9598a8e20518ee0d557745890cc4435b9578489e2dcbc69c4f81fa060caf7c", size = 1798643, upload-time = "2026-08-12T23:44:13.478Z" },
1425
1442
  ]
1426
1443
 
1427
1444
  [[package]]
@@ -2907,23 +2924,6 @@ wheels = [
2907
2924
  { url = "https://files.pythonhosted.org/packages/e2/22/dbf013a12ec759e54a34a119e9e217435b3f71b2dd5c61a7ade0a25dae87/sqlalchemy-2.0.51-py3-none-any.whl", hash = "sha256:bb024d8b621d0be75f4f44ecc7c950450026e76d66dc8f791bb5331d7fed59d5", size = 1944334, upload-time = "2026-06-15T16:09:22.418Z" },
2908
2925
  ]
2909
2926
 
2910
- [[package]]
2911
- name = "hypit-whisperx-service"
2912
- version = "0.1.0"
2913
- source = { editable = "." }
2914
- dependencies = [
2915
- { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" },
2916
- { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*'" },
2917
- { name = "numpy", version = "2.5.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" },
2918
- { name = "whisperx" },
2919
- ]
2920
-
2921
- [package.metadata]
2922
- requires-dist = [
2923
- { name = "numpy", specifier = ">=2.1,<3" },
2924
- { name = "whisperx", specifier = "==3.8.6" },
2925
- ]
2926
-
2927
2927
  [[package]]
2928
2928
  name = "sympy"
2929
2929
  version = "1.14.0"
@@ -1,30 +0,0 @@
1
- # `@hypit/provider-hyperframes-aws-lambda`
2
-
3
- Asynchronous AWS Step Functions/Lambda implementation of the exact
4
- `@hypit/render-hyperframes#render-visual` capability.
5
-
6
- The Endpoint stages the immutable `HyperframesDocument` with the shared
7
- `stageHyperframesProject()` layout, uploads that operation-scoped site, starts one distributed
8
- render and persists its execution ARN in the Operation checkpoint. Its Step Functions execution name is derived from the
9
- Runtime Operation id, so recovery cannot accidentally submit the same attempt twice.
10
- Cancellation uses that same identity to stop the remote Step Functions execution, including the
11
- crash window before the first checkpoint was saved.
12
-
13
- This Provider accepts whole-document requests at integer 24, 30 and 60 fps; it currently declines
14
- requests containing a frame range. Its chunk settings partition a whole render across Lambda workers,
15
- whereas the local Provider also accepts a selected interval. Unsupported Needs
16
- are declined by `supports()` so another Endpoint may satisfy them; no frame rate or GPU intent is
17
- silently changed. The Provider always requests strict SDR H.264, exact CFR assembly, software
18
- browser rendering and plan protocol v2. It also declines Surface-bearing documents until the
19
- remote route owns the same byte verifier as the local Endpoint. Chunking remains deployment
20
- configuration.
21
-
22
- On success the Endpoint requires HyperFrames' plan and completed-frame counts to equal the source
23
- document, then streams the returned S3 object into the current Build's working byte area.
24
- The Endpoint's Runtime Profile entry selects the AWS state machine and deployment settings. The Provider does not repeat
25
- the request or selected endpoint as vendor metadata. Container and stream conformance stays in the explicit media
26
- inspection/mux capabilities, so the orchestrating machine does not acquire a hidden FFmpeg
27
- dependency.
28
-
29
- The production client uses the AWS SDK default credential chain. No access key is accepted by the
30
- package configuration or written into Build state.
@@ -1,30 +0,0 @@
1
- {
2
- "name": "@hypit/provider-hyperframes-aws-lambda",
3
- "version": "0.0.0-dev",
4
- "license": "SEE LICENSE IN LICENSE",
5
- "private": true,
6
- "type": "module",
7
- "exports": {
8
- ".": "./src/index.ts"
9
- },
10
- "hypit": {
11
- "activation": "./src/activation.ts"
12
- },
13
- "dependencies": {
14
- "@aws-sdk/client-s3": "3.1103.0",
15
- "@aws-sdk/client-sfn": "3.1103.0",
16
- "@hyperframes/aws-lambda": "0.7.101",
17
- "@hypit/endpoint-kit": "workspace:*",
18
- "@hypit/hyperframes": "workspace:*",
19
- "@hypit/media": "workspace:*",
20
- "@hypit/protocol": "workspace:*",
21
- "@hypit/render-hyperframes": "workspace:*",
22
- "@hypit/runtime": "workspace:*",
23
- "@hypit/runtime-kit": "workspace:*"
24
- },
25
- "devDependencies": {
26
- "@hypit/composition": "workspace:*",
27
- "@hypit/driver-node": "workspace:*",
28
- "@hypit/program-space": "workspace:*"
29
- }
30
- }
@@ -1,97 +0,0 @@
1
- import type { CanonicalValue } from "@hypit/protocol";
2
- import {
3
- createRuntimeEndpointAdapterFacet,
4
- runtimeConfigExact,
5
- runtimeConfigObject,
6
- runtimeConfigPositiveInteger,
7
- runtimeConfigString,
8
- } from "@hypit/runtime-kit";
9
- import type { RuntimeAdapterFactoryContext } from "@hypit/runtime-kit";
10
-
11
- import { createAwsLambdaHyperframesProvider } from "./provider.js";
12
- import type {
13
- CreateAwsLambdaHyperframesProviderOptions,
14
- HyperframesLambdaQuality,
15
- } from "./provider.js";
16
-
17
- const CONFIG_KEYS = [
18
- "stateMachineArn", "bucketName", "quality", "chunkSize", "maxParallelChunks",
19
- "targetChunkFrames", "defaultMemorySizeMb", "defaultConcurrency", "pollIntervalMs",
20
- "maxOperationMs", "maxRenderedBytes",
21
- ] as const;
22
-
23
- type RuntimeProviderOptions = Omit<
24
- CreateAwsLambdaHyperframesProviderOptions,
25
- "client" | "now"
26
- >;
27
-
28
- function optionalInteger(
29
- config: Record<string, CanonicalValue>,
30
- name: string,
31
- ): number | undefined {
32
- return runtimeConfigPositiveInteger(config[name], `HyperFrames ${name}`);
33
- }
34
-
35
- function providerOptions(context: RuntimeAdapterFactoryContext): RuntimeProviderOptions {
36
- if (context.pool === undefined) throw new Error("AWS Lambda HyperFrames Provider Pool is required");
37
- const config = runtimeConfigObject(context.config, "AWS Lambda HyperFrames");
38
- runtimeConfigExact(config, CONFIG_KEYS, "AWS Lambda HyperFrames");
39
- const stateMachineArn = runtimeConfigString(config.stateMachineArn, "HyperFrames stateMachineArn");
40
- if (stateMachineArn === undefined) throw new Error("AWS Lambda HyperFrames stateMachineArn is required");
41
- const machine = /^(arn:aws(?:-[a-z]+)*:states):([a-z0-9-]+):(\d{12}):stateMachine:([A-Za-z0-9_-]+)$/u
42
- .exec(stateMachineArn);
43
- if (machine === null) {
44
- throw new Error(`HyperFrames stateMachineArn must be an unqualified AWS Step Functions state-machine ARN; got ${stateMachineArn}`);
45
- }
46
- const bucketName = runtimeConfigString(config.bucketName, "HyperFrames bucketName");
47
- if (bucketName === undefined) throw new Error("AWS Lambda HyperFrames bucketName is required");
48
- if (!/^[a-z0-9][a-z0-9.-]{1,61}[a-z0-9]$/u.test(bucketName)
49
- || bucketName.includes("..") || bucketName.includes(".-") || bucketName.includes("-.")
50
- || /^\d{1,3}(?:\.\d{1,3}){3}$/u.test(bucketName)) {
51
- throw new Error("HyperFrames bucketName is invalid");
52
- }
53
- const quality = runtimeConfigString(config.quality, "HyperFrames quality");
54
- if (quality !== undefined && quality !== "draft" && quality !== "standard" && quality !== "high") {
55
- throw new Error("HyperFrames quality is invalid");
56
- }
57
- const chunkSize = optionalInteger(config, "chunkSize");
58
- const maxParallelChunks = optionalInteger(config, "maxParallelChunks");
59
- const targetChunkFrames = optionalInteger(config, "targetChunkFrames");
60
- if (chunkSize !== undefined && targetChunkFrames !== undefined) {
61
- throw new Error("HyperFrames chunkSize and targetChunkFrames are mutually exclusive");
62
- }
63
- const defaultMemorySizeMb = optionalInteger(config, "defaultMemorySizeMb");
64
- const defaultConcurrency = optionalInteger(config, "defaultConcurrency");
65
- const pollIntervalMs = optionalInteger(config, "pollIntervalMs");
66
- const maxOperationMs = optionalInteger(config, "maxOperationMs");
67
- const maxRenderedBytes = optionalInteger(config, "maxRenderedBytes");
68
- return {
69
- instance: context.instance,
70
- pool: context.pool,
71
- stateMachineArn,
72
- bucketName,
73
- ...(quality === undefined ? {} : { quality: quality as HyperframesLambdaQuality }),
74
- ...(chunkSize === undefined ? {} : { chunkSize }),
75
- ...(maxParallelChunks === undefined ? {} : { maxParallelChunks }),
76
- ...(targetChunkFrames === undefined ? {} : { targetChunkFrames }),
77
- ...(defaultMemorySizeMb === undefined ? {} : { defaultMemorySizeMb }),
78
- ...(defaultConcurrency === undefined ? {} : { defaultConcurrency }),
79
- ...(pollIntervalMs === undefined ? {} : { pollIntervalMs }),
80
- ...(maxOperationMs === undefined ? {} : { maxOperationMs }),
81
- ...(maxRenderedBytes === undefined ? {} : { maxRenderedBytes }),
82
- };
83
- }
84
-
85
- const awsLambdaHyperframesRuntimeAdapter = createRuntimeEndpointAdapterFacet({
86
- use: "@hypit/provider-hyperframes-aws-lambda",
87
- activate(context) {
88
- return { endpoint: createAwsLambdaHyperframesProvider(providerOptions(context)) };
89
- },
90
- });
91
-
92
- export const hypitPackage = {
93
- format: "hypit.node-package@1" as const,
94
- hostFacets: [awsLambdaHyperframesRuntimeAdapter],
95
- };
96
-
97
- export default hypitPackage;
@@ -1,114 +0,0 @@
1
- import { GetObjectCommand, S3Client } from "@aws-sdk/client-s3";
2
- import { SFNClient, StopExecutionCommand } from "@aws-sdk/client-sfn";
3
- import {
4
- deploySite,
5
- getRenderProgress,
6
- renderToLambda,
7
- } from "@hyperframes/aws-lambda/sdk";
8
- import type {
9
- RenderHandle,
10
- RenderProgress,
11
- SerializableDistributedRenderConfig,
12
- SiteHandle,
13
- } from "@hyperframes/aws-lambda/sdk";
14
-
15
- export type HyperframesLambdaSite = SiteHandle;
16
- export type HyperframesLambdaRender = RenderHandle;
17
- export type HyperframesLambdaProgress = RenderProgress;
18
- export type HyperframesLambdaRenderConfig = SerializableDistributedRenderConfig;
19
-
20
- export type HyperframesLambdaOutput = {
21
- readonly chunks: AsyncIterable<Uint8Array>;
22
- readonly contentLength?: number;
23
- };
24
-
25
- export interface HyperframesAwsLambdaClient {
26
- deploySite(input: {
27
- readonly projectDir: string;
28
- readonly bucketName: string;
29
- readonly region: string;
30
- }): Promise<HyperframesLambdaSite>;
31
- render(input: {
32
- readonly siteHandle: HyperframesLambdaSite;
33
- readonly config: HyperframesLambdaRenderConfig;
34
- readonly bucketName: string;
35
- readonly stateMachineArn: string;
36
- readonly region: string;
37
- readonly outputKey: string;
38
- readonly executionName: string;
39
- }): Promise<HyperframesLambdaRender>;
40
- progress(input: {
41
- readonly executionArn: string;
42
- readonly defaultMemorySizeMb: number;
43
- readonly region: string;
44
- }): Promise<HyperframesLambdaProgress>;
45
- stop(input: {
46
- readonly executionArn: string;
47
- readonly region: string;
48
- readonly reason: string;
49
- }): Promise<void>;
50
- openOutput(input: {
51
- readonly s3Uri: string;
52
- readonly region: string;
53
- }): Promise<HyperframesLambdaOutput>;
54
- }
55
-
56
- function assert(condition: unknown, message: string): asserts condition {
57
- if (!condition) throw new Error(message);
58
- }
59
-
60
- export function parseS3Uri(uri: string): { readonly bucket: string; readonly key: string } {
61
- let parsed: URL;
62
- try {
63
- parsed = new URL(uri);
64
- } catch {
65
- throw new Error(`HyperFrames output URI is invalid: ${uri}`);
66
- }
67
- assert(parsed.protocol === "s3:" && parsed.hostname.length > 0 && parsed.pathname.length > 1,
68
- `HyperFrames output URI must be s3://bucket/key; got ${uri}`);
69
- assert(parsed.search.length === 0 && parsed.hash.length === 0,
70
- "HyperFrames output URI must not contain a query or fragment");
71
- return { bucket: parsed.hostname, key: decodeURIComponent(parsed.pathname.slice(1)) };
72
- }
73
-
74
- async function* byteChunks(body: unknown): AsyncIterable<Uint8Array> {
75
- assert(body !== null && typeof body === "object" && Symbol.asyncIterator in body,
76
- "HyperFrames S3 output has no streaming body");
77
- for await (const chunk of body as AsyncIterable<unknown>) {
78
- if (typeof chunk === "string") yield Buffer.from(chunk);
79
- else if (chunk instanceof Uint8Array) yield chunk;
80
- else throw new Error("HyperFrames S3 output emitted a non-byte chunk");
81
- }
82
- }
83
-
84
- /** Uses only the AWS SDK default credential chain. No credential bytes enter this package. */
85
- export function createHyperframesAwsLambdaClient(region: string): HyperframesAwsLambdaClient {
86
- const s3 = new S3Client({ region });
87
- const sfn = new SFNClient({ region });
88
- return {
89
- deploySite: async (input) => await deploySite({ ...input, s3 }),
90
- render: async (input) => await renderToLambda({
91
- ...input,
92
- planProtocol: "v2",
93
- s3,
94
- sfn,
95
- }),
96
- progress: async (input) => await getRenderProgress({ ...input, sfn }),
97
- async stop(input) {
98
- await sfn.send(new StopExecutionCommand({
99
- executionArn: input.executionArn,
100
- error: "HypitBuildCancelled",
101
- cause: input.reason,
102
- }));
103
- },
104
- async openOutput(input) {
105
- const target = parseS3Uri(input.s3Uri);
106
- const output = await s3.send(new GetObjectCommand({ Bucket: target.bucket, Key: target.key }));
107
- if (output.Body === undefined) throw new Error(`HyperFrames output ${input.s3Uri} has no body`);
108
- return {
109
- chunks: byteChunks(output.Body),
110
- ...(output.ContentLength === undefined ? {} : { contentLength: output.ContentLength }),
111
- };
112
- },
113
- };
114
- }
@@ -1,21 +0,0 @@
1
- export {
2
- createHyperframesAwsLambdaClient,
3
- parseS3Uri,
4
- } from "./client.js";
5
- export type {
6
- HyperframesAwsLambdaClient,
7
- HyperframesLambdaOutput,
8
- HyperframesLambdaProgress,
9
- HyperframesLambdaRender,
10
- HyperframesLambdaRenderConfig,
11
- HyperframesLambdaSite,
12
- } from "./client.js";
13
- export {
14
- awsLambdaHyperframesProviderModuleRef,
15
- createAwsLambdaHyperframesProvider,
16
- supportsAwsLambdaHyperframes,
17
- } from "./provider.js";
18
- export type {
19
- CreateAwsLambdaHyperframesProviderOptions,
20
- HyperframesLambdaQuality,
21
- } from "./provider.js";