@hypit/hypit 0.1.4 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (462) hide show
  1. package/README.md +4 -2
  2. package/dist/public/caption.d.ts +206 -183
  3. package/dist/public/composition.d.ts +25 -3
  4. package/dist/public/endpoint-kit.d.ts +24 -2
  5. package/dist/public/generation.d.ts +5 -1
  6. package/dist/public/hyperframes.d.ts +19 -1
  7. package/dist/public/narrative.d.ts +17 -3
  8. package/dist/public/performance.d.ts +1590 -0
  9. package/dist/public/program-space.d.ts +179 -32
  10. package/dist/public/runtime-kit.d.ts +21 -8
  11. package/dist/public/sound.d.ts +822 -0
  12. package/dist/public/speech.d.ts +41 -0
  13. package/dist/public/studio-adapter.d.ts +77 -15
  14. package/dist/public/temporal-markup.d.ts +9 -44
  15. package/dist/public/temporal.d.ts +37 -28
  16. package/dist/public/{semantic-track.d.ts → timeline.d.ts} +62 -49
  17. package/examples/README.md +18 -10
  18. package/examples/minimal-author-package/packages/example-component/preview/preview.svml +19 -12
  19. package/examples/minimal-author-package/packages/example-component/src/component.ts +5 -5
  20. package/examples/minimal-author-package/packages/example-component/src/fragment.ts +3 -5
  21. package/examples/minimal-author-package/packages/example-component/src/manifest.ts +8 -10
  22. package/examples/minimal-author-package/packages/example-component/src/surface.ts +2 -2
  23. package/examples/provider-package/README.md +78 -0
  24. package/examples/provider-package/hypit.runtime.json +12 -0
  25. package/examples/provider-package/packages/provider-images/package.json +11 -0
  26. package/examples/provider-package/packages/provider-images/src/activation.ts +24 -0
  27. package/examples/provider-package/packages/provider-images/src/provider.ts +122 -0
  28. package/examples/provider-package/packages/provider-images/tsconfig.json +9 -0
  29. package/examples/semantic-composition/README.md +8 -1
  30. package/examples/semantic-composition/chat.svml +6 -5
  31. package/examples/semantic-composition/hypit.runtime.json +1 -1
  32. package/examples/semantic-composition/packages/chat-scene/README.md +3 -3
  33. package/examples/semantic-composition/packages/chat-scene/src/activation.ts +18 -21
  34. package/examples/semantic-composition/packages/chat-scene/src/render.ts +4 -4
  35. package/examples/semantic-composition/packages/performance-styles/README.md +42 -0
  36. package/examples/semantic-composition/packages/performance-styles/package.json +25 -0
  37. package/examples/semantic-composition/packages/performance-styles/src/activation.ts +57 -0
  38. package/examples/semantic-composition/packages/performance-styles/src/render.ts +54 -0
  39. package/examples/semantic-composition/packages/performance-styles/src/studio.ts +28 -0
  40. package/examples/semantic-composition/packages/performance-styles/tsconfig.json +18 -0
  41. package/examples/semantic-composition/packages/responsive-explainer/README.md +16 -9
  42. package/examples/semantic-composition/packages/responsive-explainer/src/activation.ts +12 -12
  43. package/examples/semantic-composition/packages/responsive-explainer/src/render.ts +5 -5
  44. package/examples/semantic-composition/packages/sound-styles/README.md +36 -0
  45. package/examples/semantic-composition/packages/sound-styles/package.json +25 -0
  46. package/examples/semantic-composition/packages/sound-styles/src/activation.ts +53 -0
  47. package/examples/semantic-composition/packages/sound-styles/src/render.ts +14 -0
  48. package/examples/semantic-composition/packages/sound-styles/tsconfig.json +18 -0
  49. package/package.json +35 -15
  50. package/packages/audio-track/README.md +20 -13
  51. package/packages/audio-track/package.json +1 -1
  52. package/packages/audio-track/src/component.ts +4 -4
  53. package/packages/audio-track/src/fragment.ts +6 -5
  54. package/packages/audio-track/src/index.ts +1 -1
  55. package/packages/audio-track/src/manifest.ts +17 -16
  56. package/packages/audio-track/src/program.ts +21 -25
  57. package/packages/audio-track/src/surface.ts +19 -18
  58. package/packages/audio-track-studio/README.md +23 -0
  59. package/packages/audio-track-studio/src/index.ts +28 -17
  60. package/packages/author-kit/README.md +1 -1
  61. package/packages/background-removal/README.md +4 -7
  62. package/packages/browser-capture/package.json +1 -1
  63. package/packages/build-result/README.md +11 -0
  64. package/packages/build-result/src/decode.ts +2 -0
  65. package/packages/build-result/src/execution-log.ts +17 -0
  66. package/packages/build-result/src/index.ts +1 -0
  67. package/packages/build-result/src/store.ts +14 -1
  68. package/packages/build-result/src/types.ts +3 -0
  69. package/packages/build-result-s3/src/repository.ts +4 -0
  70. package/packages/caption/README.md +61 -73
  71. package/packages/caption/package.json +3 -2
  72. package/packages/caption/src/activation.ts +2 -2
  73. package/packages/caption/src/component.ts +20 -5
  74. package/packages/caption/src/display.ts +3 -18
  75. package/packages/caption/src/fragment.ts +3 -7
  76. package/packages/caption/src/index.ts +6 -5
  77. package/packages/caption/src/manifest.ts +29 -46
  78. package/packages/caption/src/style.ts +24 -135
  79. package/packages/caption/src/surface.ts +12 -92
  80. package/packages/caption/src/temporalize.ts +18 -53
  81. package/packages/caption/src/types.ts +8 -35
  82. package/packages/caption/src/visibility.ts +23 -0
  83. package/packages/caption-fine/README.md +21 -9
  84. package/packages/caption-fine/package.json +4 -2
  85. package/packages/caption-fine/src/component.ts +3 -3
  86. package/packages/caption-fine/src/fragment.ts +7 -19
  87. package/packages/caption-fine/src/index.ts +2 -0
  88. package/packages/caption-fine/src/manifest.ts +26 -17
  89. package/packages/caption-fine/src/recipe.ts +7 -0
  90. package/packages/caption-fine/src/render.ts +14 -13
  91. package/packages/caption-fine/src/schedule.ts +39 -35
  92. package/packages/caption-fine/src/style.ts +10 -9
  93. package/packages/caption-fine/src/surface.ts +62 -35
  94. package/packages/caption-fine/src/types.ts +2 -0
  95. package/packages/caption-fine-studio/README.md +24 -2
  96. package/packages/caption-fine-studio/package.json +3 -1
  97. package/packages/caption-fine-studio/src/activation.ts +3 -3
  98. package/packages/caption-fine-studio/src/index.ts +54 -42
  99. package/packages/cli/README.md +57 -4
  100. package/packages/cli/package.json +1 -0
  101. package/packages/cli/src/arguments.ts +25 -6
  102. package/packages/cli/src/build-planning.ts +3 -2
  103. package/packages/cli/src/command.ts +6 -0
  104. package/packages/cli/src/commands/environment.ts +28 -18
  105. package/packages/cli/src/commands/execution.ts +81 -26
  106. package/packages/cli/src/commands/results.ts +7 -11
  107. package/packages/cli/src/index.ts +2 -2
  108. package/packages/cli/src/machine-view.ts +3 -2
  109. package/packages/cli/src/main.ts +34 -42
  110. package/packages/cli/src/observation.ts +7 -1
  111. package/packages/cli/src/output.ts +65 -23
  112. package/packages/cli/src/view.ts +66 -19
  113. package/packages/comment-sticker/README.md +3 -3
  114. package/packages/comment-sticker/package.json +1 -1
  115. package/packages/comment-sticker/src/component.ts +4 -4
  116. package/packages/comment-sticker/src/fragment.ts +5 -4
  117. package/packages/comment-sticker/src/manifest.ts +7 -6
  118. package/packages/comment-sticker/src/program.ts +9 -9
  119. package/packages/comment-sticker/src/surface.ts +6 -7
  120. package/packages/composition/README.md +21 -0
  121. package/packages/composition/src/audio-presentation.ts +44 -0
  122. package/packages/composition/src/index.ts +3 -0
  123. package/packages/composition/src/schema.ts +8 -3
  124. package/packages/composition/src/track.ts +15 -1
  125. package/packages/credential-store-env/README.md +1 -1
  126. package/packages/deck-track/README.md +3 -3
  127. package/packages/deck-track/package.json +1 -1
  128. package/packages/deck-track/src/component.ts +5 -5
  129. package/packages/deck-track/src/fragment.ts +6 -5
  130. package/packages/deck-track/src/lower.ts +12 -12
  131. package/packages/deck-track/src/manifest.ts +8 -7
  132. package/packages/deck-track/src/program.ts +13 -16
  133. package/packages/deck-track/src/surface.ts +9 -10
  134. package/packages/driver-node/src/driver.ts +41 -3
  135. package/packages/elevenlabs-speech/README.md +27 -0
  136. package/packages/{provider-xiaomi-mimo → elevenlabs-speech}/package.json +5 -8
  137. package/packages/elevenlabs-speech/src/activation.ts +26 -0
  138. package/packages/elevenlabs-speech/src/fragment.ts +11 -0
  139. package/packages/elevenlabs-speech/src/index.ts +111 -0
  140. package/packages/elevenlabs-speech/src/surface.ts +167 -0
  141. package/packages/endpoint-kit/README.md +24 -0
  142. package/packages/endpoint-kit/src/index.ts +7 -1
  143. package/packages/film/README.md +12 -7
  144. package/packages/film/package.json +1 -1
  145. package/packages/film/src/component.ts +4 -4
  146. package/packages/film/src/fragment.ts +6 -5
  147. package/packages/film/src/manifest.ts +11 -10
  148. package/packages/film/src/program.ts +5 -5
  149. package/packages/film/src/recipe.ts +2 -1
  150. package/packages/film/src/surface.ts +10 -7
  151. package/packages/film-studio/package.json +1 -1
  152. package/packages/film-studio/src/index.ts +2 -2
  153. package/packages/fishaudio-speech/README.md +33 -0
  154. package/packages/fishaudio-speech/package.json +21 -0
  155. package/packages/fishaudio-speech/src/activation.ts +32 -0
  156. package/packages/fishaudio-speech/src/fragment.ts +11 -0
  157. package/packages/fishaudio-speech/src/index.ts +156 -0
  158. package/packages/fishaudio-speech/src/surface.ts +192 -0
  159. package/packages/generation/README.md +11 -1
  160. package/packages/generation/src/mapping.ts +28 -30
  161. package/packages/gpt-image/README.md +1 -2
  162. package/packages/grok-imagine/README.md +1 -2
  163. package/packages/hyperframes/README.md +7 -3
  164. package/packages/hyperframes/src/browser-program.ts +11 -2
  165. package/packages/hyperframes/src/document.ts +15 -2
  166. package/packages/interview-emoji-reveal/README.md +4 -4
  167. package/packages/interview-emoji-reveal/package.json +1 -1
  168. package/packages/interview-emoji-reveal/src/component.ts +4 -4
  169. package/packages/interview-emoji-reveal/src/fragment.ts +6 -5
  170. package/packages/interview-emoji-reveal/src/manifest.ts +9 -8
  171. package/packages/interview-emoji-reveal/src/program.ts +14 -14
  172. package/packages/interview-emoji-reveal/src/surface.ts +8 -9
  173. package/packages/media-execution/README.md +7 -3
  174. package/packages/media-execution/src/audio-presentation.ts +23 -0
  175. package/packages/media-execution/src/execute.ts +2 -0
  176. package/packages/media-pipeline/README.md +7 -3
  177. package/packages/media-pipeline/src/audio-plan.ts +4 -1
  178. package/packages/media-pipeline/src/component.ts +16 -2
  179. package/packages/media-pipeline/src/manifest.ts +3 -1
  180. package/packages/media-pipeline/src/types.ts +2 -1
  181. package/packages/media-track/README.md +14 -47
  182. package/packages/media-track/package.json +1 -1
  183. package/packages/media-track/preview/preview.svml +5 -5
  184. package/packages/media-track/src/author.ts +12 -6
  185. package/packages/media-track/src/component.ts +10 -16
  186. package/packages/media-track/src/fragment.ts +8 -7
  187. package/packages/media-track/src/index.ts +3 -1
  188. package/packages/media-track/src/lower.ts +7 -7
  189. package/packages/media-track/src/manifest.ts +16 -38
  190. package/packages/media-track/src/program.ts +62 -67
  191. package/packages/media-track/src/sampling.ts +6 -6
  192. package/packages/media-track/src/sequence.ts +8 -8
  193. package/packages/media-track/src/surface.ts +25 -43
  194. package/packages/media-track-studio/README.md +9 -0
  195. package/packages/media-track-studio/src/index.ts +16 -11
  196. package/packages/mimo-speech/README.md +1 -1
  197. package/packages/minimax-h3/README.md +1 -1
  198. package/packages/nano-banana/README.md +1 -1
  199. package/packages/narrative/README.md +23 -1
  200. package/packages/narrative/src/identity.ts +11 -0
  201. package/packages/narrative/src/index.ts +3 -0
  202. package/packages/narrative/src/schema.ts +28 -27
  203. package/packages/narrative/src/selection.ts +52 -0
  204. package/packages/narrative/src/types.ts +2 -0
  205. package/packages/package-loader-node/README.md +30 -0
  206. package/packages/package-loader-node/package.json +5 -2
  207. package/packages/package-loader-node/src/distribution-resolution.ts +10 -3
  208. package/packages/package-loader-node/src/index.ts +1 -0
  209. package/packages/package-loader-node/src/loader.ts +12 -15
  210. package/packages/package-loader-node/src/location.ts +27 -1
  211. package/packages/package-loader-node/src/module-scope.ts +183 -0
  212. package/packages/package-loader-node/src/types.ts +4 -0
  213. package/packages/performance/README.md +83 -0
  214. package/packages/performance/package.json +30 -0
  215. package/packages/performance/src/activation.ts +11 -0
  216. package/packages/performance/src/component.ts +46 -0
  217. package/packages/performance/src/index.ts +6 -0
  218. package/packages/performance/src/manifest.ts +53 -0
  219. package/packages/{media-track/src/performance.ts → performance/src/media.ts} +9 -10
  220. package/packages/performance/src/program.ts +51 -0
  221. package/packages/performance/src/style.ts +35 -0
  222. package/packages/performance/src/surface.ts +99 -0
  223. package/packages/performance-studio/README.md +25 -0
  224. package/packages/performance-studio/package.json +21 -0
  225. package/packages/performance-studio/src/activation.ts +6 -0
  226. package/packages/performance-studio/src/index.ts +84 -0
  227. package/packages/program-space/README.md +9 -18
  228. package/packages/program-space/src/activation.ts +1 -5
  229. package/packages/program-space/src/index.ts +2 -11
  230. package/packages/program-space/src/surface.ts +1 -20
  231. package/packages/project-context-node/README.md +20 -0
  232. package/packages/project-context-node/package.json +10 -0
  233. package/packages/project-context-node/src/index.ts +3 -0
  234. package/packages/{cli → project-context-node}/src/runtime-selection.ts +7 -2
  235. package/packages/provider-hyperframes-local/README.md +43 -15
  236. package/packages/provider-hyperframes-local/src/activation.ts +4 -3
  237. package/packages/provider-hyperframes-local/src/capture-process.ts +26 -4
  238. package/packages/provider-hyperframes-local/src/capture.ts +96 -26
  239. package/packages/provider-hyperframes-local/src/concurrency.ts +86 -0
  240. package/packages/provider-hyperframes-local/src/opaque-capture.ts +92 -0
  241. package/packages/provider-hyperframes-local/src/options.ts +2 -0
  242. package/packages/provider-hyperframes-local/src/program.ts +6 -3
  243. package/packages/provider-hyperframes-local/src/progress.ts +53 -0
  244. package/packages/provider-hyperframes-local/src/provider.ts +18 -5
  245. package/packages/provider-hyperframes-local/src/render.ts +48 -7
  246. package/packages/provider-hypihub/README.md +48 -17
  247. package/packages/provider-hypihub/package.json +2 -0
  248. package/packages/provider-hypihub/src/mapping.ts +31 -7
  249. package/packages/provider-hypihub/src/oauth.ts +6 -0
  250. package/packages/provider-hypihub/src/provider.ts +25 -13
  251. package/packages/provider-hypihub/src/routes.ts +1 -2
  252. package/packages/provider-hypihub/src/upload.ts +2 -0
  253. package/packages/provider-media-local/README.md +3 -4
  254. package/packages/provider-whisperx-local/src/program.ts +1 -0
  255. package/packages/provider-whisperx-local/src/provider.ts +3 -0
  256. package/packages/ranking/README.md +8 -6
  257. package/packages/ranking/package.json +1 -1
  258. package/packages/ranking/src/component.ts +6 -6
  259. package/packages/ranking/src/fragment.ts +11 -7
  260. package/packages/ranking/src/manifest.ts +21 -14
  261. package/packages/ranking/src/render.ts +22 -26
  262. package/packages/ranking/src/schedule.ts +16 -19
  263. package/packages/ranking/src/surface.ts +12 -13
  264. package/packages/ranking-studio/README.md +18 -0
  265. package/packages/ranking-studio/src/index.ts +61 -9
  266. package/packages/render-hyperframes/README.md +7 -7
  267. package/packages/render-hyperframes/package.json +1 -1
  268. package/packages/render-hyperframes/src/component.ts +11 -1
  269. package/packages/render-hyperframes/src/fragment.ts +7 -4
  270. package/packages/render-hyperframes/src/manifest.ts +4 -4
  271. package/packages/render-hyperframes/src/surface.ts +6 -6
  272. package/packages/runtime/README.md +8 -1
  273. package/packages/runtime/src/execution.ts +15 -4
  274. package/packages/runtime/src/index.ts +2 -1
  275. package/packages/runtime/src/log.ts +51 -0
  276. package/packages/runtime/src/types.ts +5 -8
  277. package/packages/runtime-host-node/README.md +30 -0
  278. package/packages/runtime-host-node/package.json +1 -0
  279. package/packages/runtime-host-node/src/index.ts +24 -9
  280. package/packages/runtime-host-node/src/packages.ts +47 -50
  281. package/packages/runtime-kit/README.md +5 -0
  282. package/packages/runtime-kit/src/index.ts +3 -1
  283. package/packages/runtime-local/README.md +109 -4
  284. package/packages/runtime-local/src/config.ts +202 -56
  285. package/packages/runtime-local/src/control.ts +9 -1
  286. package/packages/runtime-local/src/executor.ts +66 -0
  287. package/packages/runtime-local/src/host.ts +37 -17
  288. package/packages/runtime-local/src/log.ts +48 -0
  289. package/packages/runtime-local/src/programs.ts +2 -1
  290. package/packages/runtime-local/src/result-writer.ts +2 -0
  291. package/packages/runtime-local/src/runtime.ts +8 -6
  292. package/packages/runtime-local/src/supervisor.ts +142 -0
  293. package/packages/runtime-local/src/types.ts +9 -2
  294. package/packages/runtime-local/src/worker-process.ts +7 -24
  295. package/packages/runtime-local/src/worker.ts +55 -83
  296. package/packages/screen-overlay/README.md +3 -3
  297. package/packages/screen-overlay/package.json +1 -1
  298. package/packages/screen-overlay/src/component.ts +3 -3
  299. package/packages/screen-overlay/src/fragment.ts +5 -4
  300. package/packages/screen-overlay/src/manifest.ts +7 -6
  301. package/packages/screen-overlay/src/program.ts +9 -9
  302. package/packages/screen-overlay/src/surface.ts +6 -7
  303. package/packages/script/README.md +30 -5
  304. package/packages/script/src/manifest.ts +4 -3
  305. package/packages/script/src/narrative.ts +1 -0
  306. package/packages/script/src/parser.ts +45 -6
  307. package/packages/script/src/surface.ts +4 -3
  308. package/packages/script/src/types.ts +1 -1
  309. package/packages/script-studio/package.json +9 -3
  310. package/packages/script-studio/src/index.ts +2 -0
  311. package/packages/script-studio/src/projection.ts +105 -0
  312. package/packages/seedance/README.md +30 -1
  313. package/packages/seedance/src/index.ts +18 -7
  314. package/packages/seedance/src/surface.ts +17 -4
  315. package/packages/seedance-kits/README.md +7 -1
  316. package/packages/seedream/README.md +1 -1
  317. package/packages/sound/README.md +81 -0
  318. package/packages/sound/package.json +25 -0
  319. package/packages/sound/src/activation.ts +11 -0
  320. package/packages/sound/src/component.ts +28 -0
  321. package/packages/sound/src/index.ts +5 -0
  322. package/packages/sound/src/manifest.ts +47 -0
  323. package/packages/sound/src/program.ts +84 -0
  324. package/packages/sound/src/style.ts +34 -0
  325. package/packages/sound/src/surface.ts +90 -0
  326. package/packages/sound-studio/README.md +22 -0
  327. package/packages/sound-studio/package.json +20 -0
  328. package/packages/sound-studio/src/activation.ts +6 -0
  329. package/packages/sound-studio/src/index.ts +74 -0
  330. package/packages/speech/README.md +2 -2
  331. package/packages/speech-alignment/src/local.ts +8 -0
  332. package/packages/speech-alignment/src/locate.ts +1 -1
  333. package/packages/store-sqlite/README.md +7 -0
  334. package/packages/store-sqlite/src/store.ts +84 -83
  335. package/packages/studio/INSPECTOR.md +15 -2
  336. package/packages/studio/LOCALIZATION.md +98 -0
  337. package/packages/studio/README.md +101 -14
  338. package/packages/studio/locales/en.json +197 -0
  339. package/packages/studio/locales/zh-CN.json +191 -0
  340. package/packages/studio/package.json +8 -7
  341. package/packages/studio/src/companion-assembly.ts +1 -0
  342. package/packages/studio/src/domain.ts +1 -1
  343. package/packages/studio/src/fallback-companions.ts +3 -3
  344. package/packages/studio/src/feedback-server.ts +51 -0
  345. package/packages/studio/src/feedback-store.ts +66 -0
  346. package/packages/studio/src/feedback.ts +60 -0
  347. package/packages/studio/src/localization-node.ts +46 -0
  348. package/packages/studio/src/localization.ts +85 -0
  349. package/packages/studio/src/parameter-values.ts +43 -1
  350. package/packages/studio/src/parameters.ts +114 -24
  351. package/packages/studio/src/preview/render.ts +5 -1
  352. package/packages/studio/src/preview/runtime-shim.ts +49 -3
  353. package/packages/studio/src/programme.ts +14 -30
  354. package/packages/studio/src/server.ts +10 -6
  355. package/packages/studio/src/shared.ts +4 -2
  356. package/packages/studio/src/snapshot.ts +21 -132
  357. package/packages/studio/src/studio-preflight.ts +3 -3
  358. package/packages/studio/src/studio-registry.ts +50 -6
  359. package/packages/studio/src/style.css +223 -50
  360. package/packages/studio/src/ui/artifact-name.ts +8 -6
  361. package/packages/studio/src/ui/artifact-preview.ts +5 -4
  362. package/packages/studio/src/ui/code.ts +17 -16
  363. package/packages/studio/src/ui/comments.ts +234 -0
  364. package/packages/studio/src/ui/dropdown.ts +68 -0
  365. package/packages/studio/src/ui/i18n.ts +109 -0
  366. package/packages/studio/src/ui/icons.ts +6 -0
  367. package/packages/studio/src/ui/library.ts +76 -65
  368. package/packages/studio/src/ui/main.ts +223 -211
  369. package/packages/studio/src/ui/overlay.ts +12 -8
  370. package/packages/studio/src/ui/scrub-preview.ts +110 -0
  371. package/packages/studio/src/ui/stage.ts +93 -29
  372. package/packages/studio/src/ui/timeline.ts +190 -118
  373. package/packages/studio/start.ts +41 -22
  374. package/packages/studio-adapter/README.md +130 -11
  375. package/packages/studio-adapter/src/index.ts +100 -13
  376. package/packages/temporal/README.md +6 -6
  377. package/packages/temporal/package.json +1 -1
  378. package/packages/temporal/src/component.ts +5 -6
  379. package/packages/temporal/src/index.ts +8 -6
  380. package/packages/temporal/src/location.ts +11 -11
  381. package/packages/temporal/src/projection.ts +19 -19
  382. package/packages/temporal/src/rational.ts +4 -4
  383. package/packages/temporal-markup/EDITING.md +2 -2
  384. package/packages/temporal-markup/README.md +27 -11
  385. package/packages/temporal-markup/package.json +1 -1
  386. package/packages/temporal-markup/src/index.ts +20 -25
  387. package/packages/temporal-markup/src/space.ts +10 -41
  388. package/packages/timeline/README.md +31 -0
  389. package/packages/{semantic-track → timeline}/package.json +1 -1
  390. package/packages/timeline/src/activation.ts +8 -0
  391. package/packages/timeline/src/component.ts +24 -0
  392. package/packages/timeline/src/identity.ts +60 -0
  393. package/packages/timeline/src/index.ts +6 -0
  394. package/packages/{semantic-track → timeline}/src/location.ts +20 -20
  395. package/packages/timeline/src/manifest.ts +39 -0
  396. package/packages/{semantic-track → timeline}/src/projection.ts +14 -14
  397. package/packages/timeline/src/types.ts +24 -0
  398. package/packages/timeline-author/README.md +68 -0
  399. package/packages/{speech-track → timeline-author}/package.json +6 -4
  400. package/packages/timeline-author/src/activation.ts +22 -0
  401. package/packages/{speech-track → timeline-author}/src/component.ts +15 -13
  402. package/packages/{speech-track → timeline-author}/src/fragment.ts +14 -23
  403. package/packages/timeline-author/src/index.ts +7 -0
  404. package/packages/timeline-author/src/manifest.ts +78 -0
  405. package/packages/timeline-author/src/program.ts +107 -0
  406. package/packages/timeline-author/src/surface.ts +46 -0
  407. package/packages/timeline-author/src/types.ts +6 -0
  408. package/packages/typography-track/README.md +4 -4
  409. package/packages/typography-track/package.json +1 -1
  410. package/packages/typography-track/src/component.ts +4 -4
  411. package/packages/typography-track/src/fragment.ts +4 -3
  412. package/packages/typography-track/src/manifest.ts +11 -9
  413. package/packages/typography-track/src/program.ts +15 -15
  414. package/packages/typography-track/src/surface.ts +17 -18
  415. package/packages/video-cli/README.md +4 -1
  416. package/packages/video-cli/package.json +2 -1
  417. package/packages/video-cli/src/creation.ts +14 -4
  418. package/packages/video-cli/src/index.ts +1 -1
  419. package/packages/video-cli/src/studio-distribution.ts +2 -1
  420. package/packages/volcengine-matting/README.md +3 -3
  421. package/packages/whisperx/README.md +1 -1
  422. package/services/whisperx/README.md +14 -0
  423. package/services/whisperx/pyproject.toml +2 -0
  424. package/services/whisperx/uv.lock +20 -20
  425. package/packages/provider-hyperframes-aws-lambda/README.md +0 -30
  426. package/packages/provider-hyperframes-aws-lambda/package.json +0 -30
  427. package/packages/provider-hyperframes-aws-lambda/src/activation.ts +0 -97
  428. package/packages/provider-hyperframes-aws-lambda/src/client.ts +0 -114
  429. package/packages/provider-hyperframes-aws-lambda/src/index.ts +0 -21
  430. package/packages/provider-hyperframes-aws-lambda/src/provider.ts +0 -522
  431. package/packages/provider-kie/README.md +0 -134
  432. package/packages/provider-kie/package.json +0 -43
  433. package/packages/provider-kie/src/activation.ts +0 -71
  434. package/packages/provider-kie/src/index.ts +0 -10
  435. package/packages/provider-kie/src/mapping.ts +0 -182
  436. package/packages/provider-kie/src/provider.ts +0 -657
  437. package/packages/provider-kie/src/routes.ts +0 -150
  438. package/packages/provider-xiaomi-mimo/README.md +0 -32
  439. package/packages/provider-xiaomi-mimo/src/activation.ts +0 -57
  440. package/packages/provider-xiaomi-mimo/src/index.ts +0 -5
  441. package/packages/provider-xiaomi-mimo/src/provider.ts +0 -214
  442. package/packages/runtime/src/environment.ts +0 -6
  443. package/packages/semantic-track/README.md +0 -21
  444. package/packages/semantic-track/src/activation.ts +0 -8
  445. package/packages/semantic-track/src/component.ts +0 -24
  446. package/packages/semantic-track/src/identity.ts +0 -58
  447. package/packages/semantic-track/src/index.ts +0 -6
  448. package/packages/semantic-track/src/manifest.ts +0 -38
  449. package/packages/semantic-track/src/types.ts +0 -26
  450. package/packages/speech-track/README.md +0 -51
  451. package/packages/speech-track/src/activation.ts +0 -19
  452. package/packages/speech-track/src/index.ts +0 -7
  453. package/packages/speech-track/src/manifest.ts +0 -73
  454. package/packages/speech-track/src/program.ts +0 -64
  455. package/packages/speech-track/src/surface.ts +0 -35
  456. package/packages/speech-track/src/types.ts +0 -6
  457. package/packages/speech-track-studio/README.md +0 -3
  458. package/packages/speech-track-studio/package.json +0 -14
  459. package/packages/speech-track-studio/src/activation.ts +0 -7
  460. package/packages/speech-track-studio/src/index.ts +0 -40
  461. /package/packages/{cli → project-context-node}/src/project-context.ts +0 -0
  462. /package/packages/{speech-track → timeline-author}/preview/Track.png +0 -0
@@ -1,4 +1,5 @@
1
- import { programSpaceTypes } from "@hypit/program-space";
1
+ import { timelineTypes } from "@hypit/timeline";
2
+
2
3
  import { spatialTypes } from "@hypit/spatial";
3
4
  import { compositionTypes } from "@hypit/composition";
4
5
  import type { Track } from "@hypit/composition";
@@ -12,7 +13,7 @@ const input = (name: string) => ({ kind: "fragment-input" as const, name });
12
13
  const operation = (id: string) => ({ kind: "fragment-operation" as const, operation: id });
13
14
 
14
15
  function assertTrackInputs(tracks: readonly FilmTrackInput[]): FilmTrackInput[] {
15
- const names = new Set(["program", "canvas", "space"]);
16
+ const names = new Set(["program", "canvas", "timeline"]);
16
17
  return [...tracks]
17
18
  .map((track) => ({ name: track.name.trim(), kind: track.kind }))
18
19
  .sort((left, right) => left.name.localeCompare(right.name))
@@ -45,7 +46,7 @@ export function createFilmAssemblyFragment(options: FilmAssemblyFragmentOptions)
45
46
  operations.push({
46
47
  id,
47
48
  producer: track.kind === "visual" ? filmProducers.appendVisualTrack : filmProducers.appendAudioTrack,
48
- inputs: { set: operation(current), space: input("space"), track: input(track.name) },
49
+ inputs: { set: operation(current), timeline: input("timeline"), track: input(track.name) },
49
50
  result: { kind: "output" as const, name: "set" },
50
51
  });
51
52
  current = id;
@@ -56,7 +57,7 @@ export function createFilmAssemblyFragment(options: FilmAssemblyFragmentOptions)
56
57
  inputs: {
57
58
  program: input("program"),
58
59
  canvas: input("canvas"),
59
- space: input("space"),
60
+ timeline: input("timeline"),
60
61
  set: operation(current),
61
62
  },
62
63
  result: { kind: "output" as const, name: "composition" },
@@ -65,7 +66,7 @@ export function createFilmAssemblyFragment(options: FilmAssemblyFragmentOptions)
65
66
  inputs: [
66
67
  { name: "program", type: filmTypes.program },
67
68
  { name: "canvas", type: spatialTypes.canvas },
68
- { name: "space", type: programSpaceTypes.programSpace },
69
+ { name: "timeline", type: timelineTypes.track },
69
70
  ...tracks.map((track) => ({
70
71
  name: track.name,
71
72
  type: track.kind === "visual" ? compositionTypes.visualTrack : compositionTypes.audioTrack,
@@ -1,8 +1,10 @@
1
+ import { timelineTypes } from "@hypit/timeline";
2
+ import type { Timeline } from "@hypit/timeline";
1
3
  import { temporalContextAttributeVocabulary } from "@hypit/temporal-markup";
2
4
  import { audioTrackSchema, compositionDependency, compositionTypes, visualTrackSchema } from "@hypit/composition";
3
- import { programSpaceDependency, programSpaceTypes } from "@hypit/program-space";
5
+
4
6
  import type { ModuleManifest, ProducerRef, TypeRef, ValueSchema } from "@hypit/protocol";
5
- import { semanticTrackDependency } from "@hypit/semantic-track";
7
+ import { timelineDependency } from "@hypit/timeline";
6
8
  import { spatialDependency, spatialTypes } from "@hypit/spatial";
7
9
  import { svsManifest, svsModuleRef, svsRecipeType } from "@hypit/svs";
8
10
 
@@ -47,7 +49,7 @@ export const filmMarkupSurfaces = [{
47
49
  outputs: [filmTypes.program],
48
50
  vocabulary: {
49
51
  summary:
50
- "Assembles any number of peer VisualTrack and AudioTrack references into one Composition against a Canvas and a SemanticTrack.",
52
+ "Assembles any number of peer VisualTrack and AudioTrack references into one Composition against a Canvas and a Timeline.",
51
53
  appearance:
52
54
  "One flat fill of the entire Canvas, in the single hexadecimal color the Recipe's `background` carries, lying behind everything else in the Frame. It covers the full Canvas width and height, holds that one color from the first Frame to the last, and never moves, fades or changes. Wherever nothing is painted over it, that color is what the Frame shows; the Film puts no mark of its own on top of it.",
53
55
  attributes: [
@@ -79,9 +81,9 @@ export const filmMarkupSurfaces = [{
79
81
  summary: "The assembled Composition, addressed as `<id>.composition`." },
80
82
  ],
81
83
  example: [
82
- '<film:Film id="main" canvas={vertical} semantic={speech.semantic} appearance={recipes.film.vertical}>',
84
+ '<film:Film id="main" canvas={vertical} timeline={speech.timeline} appearance={recipes.film.vertical}>',
83
85
  " <film:Track source={performance.visual}/>",
84
- " <film:Track source={speech.audio}/>",
86
+ " <film:Track source={voice.audio}/>",
85
87
  " <film:Track source={captions.track}/>",
86
88
  "</film:Film>",
87
89
  ].join("\n"),
@@ -99,8 +101,7 @@ export const filmManifest: ModuleManifest = {
99
101
  name: filmModuleRef.name,
100
102
  version: filmModuleRef.version,
101
103
  dependencies: [
102
- programSpaceDependency,
103
- semanticTrackDependency,
104
+ timelineDependency,
104
105
  spatialDependency,
105
106
  compositionDependency,
106
107
  { module: svsModuleRef },
@@ -121,7 +122,7 @@ export const filmManifest: ModuleManifest = {
121
122
  name: filmProducers.appendVisualTrack.name,
122
123
  inputs: [
123
124
  { name: "set", type: filmTypes.trackSet },
124
- { name: "space", type: programSpaceTypes.programSpace },
125
+ { name: "timeline", type: timelineTypes.track },
125
126
  { name: "track", type: compositionTypes.visualTrack },
126
127
  ],
127
128
  outputs: [{ name: "set", type: filmTypes.trackSet }],
@@ -131,7 +132,7 @@ export const filmManifest: ModuleManifest = {
131
132
  name: filmProducers.appendAudioTrack.name,
132
133
  inputs: [
133
134
  { name: "set", type: filmTypes.trackSet },
134
- { name: "space", type: programSpaceTypes.programSpace },
135
+ { name: "timeline", type: timelineTypes.track },
135
136
  { name: "track", type: compositionTypes.audioTrack },
136
137
  ],
137
138
  outputs: [{ name: "set", type: filmTypes.trackSet }],
@@ -142,7 +143,7 @@ export const filmManifest: ModuleManifest = {
142
143
  inputs: [
143
144
  { name: "program", type: filmTypes.program },
144
145
  { name: "canvas", type: spatialTypes.canvas },
145
- { name: "space", type: programSpaceTypes.programSpace },
146
+ { name: "timeline", type: timelineTypes.track },
146
147
  { name: "set", type: filmTypes.trackSet },
147
148
  ],
148
149
  outputs: [{ name: "composition", type: compositionTypes.composition }],
@@ -1,5 +1,5 @@
1
+ import type { Timeline } from "@hypit/timeline";
1
2
  import { assertProgramSpaceIdentity } from "@hypit/program-space";
2
- import type { ProgramSpace } from "@hypit/program-space";
3
3
  import { assertCanvasSpace } from "@hypit/spatial";
4
4
  import type { CanvasSpace } from "@hypit/spatial";
5
5
  import { assertAudioTrackIdentity, assertCompositionIdentity, assertVisualTrackIdentity, sealComposition } from "@hypit/composition";
@@ -64,7 +64,7 @@ export function createFilmTrackSet(): FilmTrackSet {
64
64
  });
65
65
  }
66
66
 
67
- function appendTrack(set: FilmTrackSet, programSpace: ProgramSpace, track: Track): FilmTrackSet {
67
+ function appendTrack(set: FilmTrackSet, programSpace: Timeline, track: Track): FilmTrackSet {
68
68
  assertFilmTrackSetIdentity(set);
69
69
  assertProgramSpaceIdentity(programSpace);
70
70
  if (track.kind === "visual") assertVisualTrackIdentity(track, programSpace);
@@ -78,18 +78,18 @@ function appendTrack(set: FilmTrackSet, programSpace: ProgramSpace, track: Track
78
78
  });
79
79
  }
80
80
 
81
- export function appendFilmVisualTrack(set: FilmTrackSet, programSpace: ProgramSpace, track: VisualTrack): FilmTrackSet {
81
+ export function appendFilmVisualTrack(set: FilmTrackSet, programSpace: Timeline, track: VisualTrack): FilmTrackSet {
82
82
  return appendTrack(set, programSpace, track);
83
83
  }
84
84
 
85
- export function appendFilmAudioTrack(set: FilmTrackSet, programSpace: ProgramSpace, track: AudioTrack): FilmTrackSet {
85
+ export function appendFilmAudioTrack(set: FilmTrackSet, programSpace: Timeline, track: AudioTrack): FilmTrackSet {
86
86
  return appendTrack(set, programSpace, track);
87
87
  }
88
88
 
89
89
  export function compileFilmComposition(
90
90
  program: FilmProgram,
91
91
  canvas: CanvasSpace,
92
- programSpace: ProgramSpace,
92
+ programSpace: Timeline,
93
93
  set: FilmTrackSet,
94
94
  ): Composition {
95
95
  assertFilmProgramIdentity(program);
@@ -1,7 +1,8 @@
1
+ import type { Timeline } from "@hypit/timeline";
1
2
  import type { SvsRecipe } from "@hypit/svs";
2
3
 
3
4
  /**
4
- * The Film Recipe owns Film appearance only. Canvas geometry and ProgramSpace
5
+ * The Film Recipe owns Film appearance only. Canvas geometry and Timeline
5
6
  * remain separate graph inputs and cannot be smuggled into a stylesheet.
6
7
  */
7
8
 
@@ -1,4 +1,4 @@
1
- import { createTemporalSpace, resolveTemporalContext } from "@hypit/temporal-markup";
1
+ import { resolveTemporalContext } from "@hypit/temporal-markup";
2
2
  import { spatialTypes } from "@hypit/spatial";
3
3
  import { compositionTypes } from "@hypit/composition";
4
4
  import type { AudioTrack, Track, VisualTrack } from "@hypit/composition";
@@ -93,13 +93,13 @@ function trackKind(reference: SurfaceResolvedReference): "visual" | "audio" {
93
93
  }
94
94
 
95
95
  export const decodeFilmSurface: StructuredSurfaceHandler = ({ element, resolveReference }) => {
96
- exactAttributes(element, ["id", "canvas", element.attributes.space === undefined ? "semantic" : "space", "appearance"]);
96
+ exactAttributes(element, ["id", "canvas", "timeline", "appearance"]);
97
97
  const id = stringAttribute(element, "id");
98
98
  const canvas = requiredReference(element, "canvas", resolveReference);
99
99
  if (!sameType(canvas.type, spatialTypes.canvas)) {
100
100
  throw new Error(`${element.name}.canvas must reference CanvasSpace`);
101
101
  }
102
- const time = createTemporalSpace({ id, element, ...resolveTemporalContext({ element, resolveReference }) });
102
+ const context = resolveTemporalContext({ element, resolveReference });
103
103
  const appearanceReference = requiredReference(element, "appearance", resolveReference);
104
104
  const appearance = filmAppearanceFromRecipe(
105
105
  recipe(appearanceReference, `${element.name}.appearance`).properties,
@@ -117,7 +117,10 @@ export const decodeFilmSurface: StructuredSurfaceHandler = ({ element, resolveRe
117
117
  const name = `track-${index + 1}`;
118
118
  return { name, kind: trackKind(source), source };
119
119
  });
120
- if (new Set(tracks.map((track) => track.name)).size !== tracks.length) {
120
+ const sourceKeys = tracks.map(({ source: { ref } }) => ref.kind === "record"
121
+ ? `record\u0000${ref.id}`
122
+ : `component-output\u0000${ref.component}\u0000${ref.output}`);
123
+ if (new Set(sourceKeys).size !== tracks.length) {
121
124
  throw new Error(`${element.name} cannot include the same Track more than once`);
122
125
  }
123
126
  const fragment = createFilmAssemblyFragment({ name: "@hypit/film/surface-assembly@1", tracks });
@@ -129,18 +132,18 @@ export const decodeFilmSurface: StructuredSurfaceHandler = ({ element, resolveRe
129
132
  value: { kind: "inline", value: program },
130
133
  range: element.range,
131
134
  }],
132
- components: [...time.components, {
135
+ components: [{
133
136
  id,
134
137
  fragment: fragment.id,
135
138
  inputs: {
136
139
  program: { kind: "record", id: programId },
137
140
  canvas: canvas.ref,
138
- space: time.space.ref,
141
+ timeline: context.timeline.ref,
139
142
  ...Object.fromEntries(tracks.map((track) => [track.name, track.source.ref])),
140
143
  },
141
144
  outputs: { composition: `${id}.composition` },
142
145
  range: element.range,
143
146
  }],
144
- fragments: [...time.fragments, fragment],
147
+ fragments: [fragment],
145
148
  };
146
149
  };
@@ -9,7 +9,7 @@
9
9
  "dependencies": {
10
10
  "@hypit/composition": "workspace:*",
11
11
  "@hypit/film": "workspace:*",
12
- "@hypit/semantic-track": "workspace:*",
12
+ "@hypit/timeline": "workspace:*",
13
13
  "@hypit/studio-adapter": "workspace:*",
14
14
  "@hypit/program-space": "workspace:*"
15
15
  }
@@ -2,13 +2,13 @@ import { programSpaceTypes } from "@hypit/program-space";
2
2
  import type { StudioFilmCompanion } from "@hypit/studio-adapter";
3
3
  import { compositionTypes } from "@hypit/composition";
4
4
  import { filmModuleRef } from "@hypit/film";
5
- import { semanticTrackTypes } from "@hypit/semantic-track";
5
+ import { timelineTypes } from "@hypit/timeline";
6
6
 
7
7
  /** Film owns the author vocabulary that selects its time source and peer Tracks. */
8
8
  export const filmStudioCompanions: readonly StudioFilmCompanion[] = [{
9
9
  id: "film",
10
10
  match: { module: filmModuleRef, surface: "film", outputType: compositionTypes.composition },
11
- timeSources: [{ attribute: "semantic", type: semanticTrackTypes.track }, { attribute: "space", type: programSpaceTypes.programSpace }],
11
+ timeSources: [{ attribute: "timeline", type: timelineTypes.track }],
12
12
  tracks: {
13
13
  childSurface: "Track",
14
14
  sourceAttribute: "source",
@@ -0,0 +1,33 @@
1
+ # `@hypit/fishaudio-speech`
2
+
3
+ Exact model contracts and author Surfaces for Fish Audio Voice Design and Voice Clone.
4
+
5
+ The package owns two distinct speech operations:
6
+
7
+ - `voice-design-1` creates an ordinary audio voice reference from a natural-language description
8
+ and a short authored speech sample;
9
+ - `voice-clone` uses one accepted audio voice reference to create independent speech.
10
+
11
+ It contains no API URL, credential, retry, queue or Fish Audio wire encoding. Those belong to a
12
+ Runtime Endpoint such as `@hypit/provider-hypihub`. Both models return the shared
13
+ `GeneratedAudioSet`; the author Surfaces expose its primary member as an ordinary audio Resource.
14
+
15
+ ```xml
16
+ <import as="fish" from="@hypit/fishaudio-speech@1"/>
17
+
18
+ <fish:VoiceDesign id="host" speech={story.segment.voiceSample.speech}>
19
+ A clear young woman with a grounded, confident conversational delivery.
20
+ </fish:VoiceDesign>
21
+
22
+ <fish:VoiceClone id="narration" speech={story.segment.reveal.speech} voice={host.reference}/>
23
+ ```
24
+
25
+ `host.reference` is not a special identity record. It is a normal audio Resource, so the same
26
+ accepted reference can also feed an A-roll video model that accepts reference audio.
27
+ `VoiceClone` takes spoken text and a voice reference. It has no separate natural-language delivery
28
+ instruction input; the description in `VoiceDesign` establishes the reference voice.
29
+
30
+ Official API reference: <https://docs.fish.audio/>
31
+
32
+ The Source import selects author syntax and exact model semantics only. The Runtime Profile
33
+ independently selects the Provider that fulfils either capability.
@@ -0,0 +1,21 @@
1
+ {
2
+ "name": "@hypit/fishaudio-speech",
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
+ "@hypit/artifact": "workspace:*",
15
+ "@hypit/generation": "workspace:*",
16
+ "@hypit/model-kit": "workspace:*",
17
+ "@hypit/protocol": "workspace:*",
18
+ "@hypit/text": "workspace:*",
19
+ "@hypit/markup": "workspace:*"
20
+ }
21
+ }
@@ -0,0 +1,32 @@
1
+ import { createMarkupSurfaceHostFacet } from "@hypit/markup";
2
+
3
+ import {
4
+ decodeFishAudioVoiceCloneSurface,
5
+ decodeFishAudioVoiceDesignSurface,
6
+ fishAudioSpeechComponent,
7
+ fishAudioSpeechDefinition,
8
+ fishAudioSpeechManifest,
9
+ fishAudioSpeechMarkupSurfaces,
10
+ fishAudioSpeechModuleRef,
11
+ } from "./index.js";
12
+
13
+ export const hypitPackage = {
14
+ format: "hypit.node-package@1" as const,
15
+ modules: [{ manifest: fishAudioSpeechManifest }],
16
+ components: [fishAudioSpeechComponent],
17
+ hostFacets: [
18
+ fishAudioSpeechDefinition.hostFacet,
19
+ createMarkupSurfaceHostFacet({
20
+ module: fishAudioSpeechModuleRef,
21
+ declaration: fishAudioSpeechMarkupSurfaces.find((item) => item.name === "voiceDesign")!,
22
+ handler: decodeFishAudioVoiceDesignSurface,
23
+ }),
24
+ createMarkupSurfaceHostFacet({
25
+ module: fishAudioSpeechModuleRef,
26
+ declaration: fishAudioSpeechMarkupSurfaces.find((item) => item.name === "voiceClone")!,
27
+ handler: decodeFishAudioVoiceCloneSurface,
28
+ }),
29
+ ],
30
+ };
31
+
32
+ export default hypitPackage;
@@ -0,0 +1,11 @@
1
+ import { createExactModelPrimaryGenerationFragment } from "@hypit/model-kit";
2
+ import type { ExactModelEndpoint, ExactModelMediaInput, ExactModelTextInput } from "@hypit/model-kit";
3
+
4
+ /** Model result projection over the same graph-native request assembly as every exact model. */
5
+ export function createFishAudioSpeechAudioFragment(
6
+ endpoint: ExactModelEndpoint,
7
+ mediaInputs: readonly ExactModelMediaInput[] = [],
8
+ textInputs: readonly ExactModelTextInput[] = [],
9
+ ) {
10
+ return createExactModelPrimaryGenerationFragment(endpoint, mediaInputs, textInputs);
11
+ }
@@ -0,0 +1,156 @@
1
+ import { artifactTypes } from "@hypit/artifact";
2
+ import { sealGenerationPortRequest, sealGenerationRequestDraft, sealGenerationPortTable } from "@hypit/generation";
3
+ import type { GenerationPortTable, GenerationPortValue, GenerationRequest } from "@hypit/generation";
4
+ import type { SurfaceAttributeVocabulary, SurfacePortVocabulary } from "@hypit/markup";
5
+ import { defineExactModelModule } from "@hypit/model-kit";
6
+ import { textTypes } from "@hypit/text";
7
+
8
+ export const fishAudioSpeechModuleRef = { name: "@hypit/fishaudio-speech", version: "1" } as const;
9
+ export const fishAudioSpeechModels = [
10
+ "voice-design-1",
11
+ "voice-clone",
12
+ ] as const;
13
+ export type FishAudioSpeechModel = typeof fishAudioSpeechModels[number];
14
+
15
+ // Fish Audio documents no fixed character ceiling. Service-side limits stay service-side
16
+ // instead of becoming an invented model constraint in Author Source.
17
+ const spokenText = { kind: "text" } as const;
18
+ const voiceDescription = { kind: "text" } as const;
19
+
20
+ function table(model: FishAudioSpeechModel): GenerationPortTable {
21
+ if (model === "voice-design-1") {
22
+ return sealGenerationPortTable({
23
+ model,
24
+ result: "audio",
25
+ ports: [
26
+ { name: "text", value: spokenText, minItems: 1, maxItems: 1 },
27
+ { name: "voiceDescription", value: voiceDescription, minItems: 1, maxItems: 1 },
28
+ ],
29
+ requires: [],
30
+ });
31
+ }
32
+ return sealGenerationPortTable({
33
+ model,
34
+ result: "audio",
35
+ ports: [
36
+ { name: "text", value: spokenText, minItems: 1, maxItems: 1 },
37
+ { name: "voiceReference", value: { kind: "media", accepts: ["audio"] }, minItems: 1, maxItems: 1 },
38
+ ],
39
+ requires: [],
40
+ });
41
+ }
42
+
43
+ export const fishAudioSpeechPorts: Readonly<Record<FishAudioSpeechModel, GenerationPortTable>> = {
44
+ "voice-design-1": table("voice-design-1"),
45
+ "voice-clone": table("voice-clone"),
46
+ };
47
+
48
+ export function sealFishAudioSpeechRequest(
49
+ model: FishAudioSpeechModel,
50
+ ports: Readonly<Record<string, readonly GenerationPortValue[]>>,
51
+ ): GenerationRequest {
52
+ return sealGenerationPortRequest(fishAudioSpeechPorts[model], ports);
53
+ }
54
+
55
+ export function sealFishAudioSpeechRequestDraft(
56
+ model: FishAudioSpeechModel,
57
+ ports: Readonly<Record<string, readonly GenerationPortValue[]>>,
58
+ ) {
59
+ return sealGenerationRequestDraft(fishAudioSpeechPorts[model], ports);
60
+ }
61
+
62
+ const base = defineExactModelModule({
63
+ module: fishAudioSpeechModuleRef,
64
+ endpoints: ([
65
+ ["voiceDesign", "voice-design-1", "FishAudioVoiceDesignRequest"],
66
+ ["voiceClone", "voice-clone", "FishAudioVoiceCloneRequest"],
67
+ ] as const).map(([key, model, requestTypeName]) => ({
68
+ key,
69
+ requestTypeName,
70
+ producerName: `request-${model}`,
71
+ ports: fishAudioSpeechPorts[model],
72
+ })),
73
+ });
74
+
75
+ export const fishAudioSpeechEndpoints = base.endpoints;
76
+
77
+ const spokenAttributes: readonly SurfaceAttributeVocabulary[] = [
78
+ {
79
+ name: "id",
80
+ kind: "identifier",
81
+ required: true,
82
+ summary: "Names this speech request and prefixes the binding it publishes.",
83
+ },
84
+ {
85
+ name: "speech",
86
+ kind: "reference",
87
+ required: true,
88
+ summary: "The Text edge whose exact words are spoken.",
89
+ accepts: [textTypes.text],
90
+ },
91
+ ];
92
+
93
+ const referencePort: readonly SurfacePortVocabulary[] = [{
94
+ name: "reference",
95
+ type: artifactTypes.blob,
96
+ summary: "The designed voice reference, addressed as `<id>.reference`.",
97
+ }];
98
+
99
+ const audioPort: readonly SurfacePortVocabulary[] = [{
100
+ name: "audio",
101
+ type: artifactTypes.blob,
102
+ summary: "The independent speech, addressed as `<id>.audio`.",
103
+ }];
104
+
105
+ export const fishAudioSpeechMarkupSurfaces = [
106
+ {
107
+ name: "voiceDesign", tag: "VoiceDesign", mode: "structured",
108
+ outputs: [fishAudioSpeechEndpoints.voiceDesign.draftType],
109
+ vocabulary: {
110
+ summary: "Creates a reusable voice reference from a natural-language voice description.",
111
+ attributes: spokenAttributes,
112
+ ports: referencePort,
113
+ text: "The element's own text is the voice description and is required.",
114
+ example: `<fish:VoiceDesign id="host" speech={story.segment.voiceSample.speech}>
115
+ A clear young woman with a grounded, confident conversational delivery.
116
+ </fish:VoiceDesign>`,
117
+ notes: [
118
+ "The element accepts no child elements; only its text is read.",
119
+ "The result is an ordinary audio Resource that can be supplied anywhere an audio reference is accepted.",
120
+ ],
121
+ },
122
+ },
123
+ {
124
+ name: "voiceClone", tag: "VoiceClone", mode: "structured",
125
+ outputs: [
126
+ fishAudioSpeechEndpoints.voiceClone.draftType,
127
+ ...Object.values(fishAudioSpeechEndpoints.voiceClone.mediaBindings).map((binding) => binding.type),
128
+ ],
129
+ vocabulary: {
130
+ summary: "Creates independent speech in the voice heard in one accepted audio reference.",
131
+ attributes: [
132
+ ...spokenAttributes,
133
+ {
134
+ name: "voice",
135
+ kind: "reference",
136
+ required: true,
137
+ summary: "The audio Resource carrying the voice identity to reproduce.",
138
+ accepts: [artifactTypes.blob],
139
+ },
140
+ ],
141
+ ports: audioPort,
142
+ example: `<fish:VoiceClone id="narration" speech={story.segment.reveal.speech} voice={host.reference}/>`,
143
+ notes: [
144
+ "The element takes its spoken words from speech and voice identity from voice; it has no body input.",
145
+ "The voice reference remains a normal audio Resource rather than a separate identity record.",
146
+ ],
147
+ },
148
+ },
149
+ ] as const;
150
+
151
+ export const fishAudioSpeechManifest = { ...base.manifest } as const;
152
+ export const fishAudioSpeechComponent = base.component;
153
+ export const fishAudioSpeechDefinition = { ...base, manifest: fishAudioSpeechManifest };
154
+
155
+ export { createFishAudioSpeechAudioFragment } from "./fragment.js";
156
+ export { decodeFishAudioVoiceCloneSurface, decodeFishAudioVoiceDesignSurface } from "./surface.js";