@hypit/hypit 0.0.1 → 0.1.1

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 (961) hide show
  1. package/LICENSE +26 -0
  2. package/README.md +142 -0
  3. package/bin/hypit.mjs +46 -0
  4. package/dist/public/artifact.d.ts +75 -0
  5. package/dist/public/author-kit.d.ts +559 -0
  6. package/dist/public/browser-capture.d.ts +56 -0
  7. package/dist/public/caption.d.ts +751 -0
  8. package/dist/public/composition.d.ts +672 -0
  9. package/dist/public/endpoint-kit.d.ts +366 -0
  10. package/dist/public/generation.d.ts +591 -0
  11. package/dist/public/hyperframes.d.ts +774 -0
  12. package/dist/public/media.d.ts +708 -0
  13. package/dist/public/model-kit.d.ts +523 -0
  14. package/dist/public/narrative.d.ts +315 -0
  15. package/dist/public/program-space.d.ts +193 -0
  16. package/dist/public/runtime-kit.d.ts +427 -0
  17. package/dist/public/semantic-track.d.ts +418 -0
  18. package/dist/public/spatial.d.ts +1193 -0
  19. package/dist/public/speech.d.ts +391 -0
  20. package/dist/public/studio-adapter.d.ts +686 -0
  21. package/dist/public/svs.d.ts +311 -0
  22. package/dist/public/temporal-markup.d.ts +343 -0
  23. package/dist/public/temporal.d.ts +497 -0
  24. package/dist/public/text.d.ts +817 -0
  25. package/dist/public/visual-ir.d.ts +98 -0
  26. package/docs/public/hypit-logo-dark.svg +36 -0
  27. package/docs/public/hypit-logo-light.svg +38 -0
  28. package/examples/README.md +24 -0
  29. package/examples/minimal-author-package/README.md +18 -0
  30. package/examples/minimal-author-package/packages/example-component/README.md +44 -0
  31. package/examples/minimal-author-package/packages/example-component/package.json +27 -0
  32. package/examples/minimal-author-package/packages/example-component/preview/Box.png +0 -0
  33. package/examples/minimal-author-package/packages/example-component/preview/build.svrun +6 -0
  34. package/examples/minimal-author-package/packages/example-component/preview/preview.svml +47 -0
  35. package/examples/minimal-author-package/packages/example-component/preview/recipes.svs +8 -0
  36. package/examples/minimal-author-package/packages/example-component/src/activation.ts +10 -0
  37. package/examples/minimal-author-package/packages/example-component/src/component.ts +44 -0
  38. package/examples/minimal-author-package/packages/example-component/src/fragment.ts +32 -0
  39. package/examples/minimal-author-package/packages/example-component/src/index.ts +6 -0
  40. package/examples/minimal-author-package/packages/example-component/src/manifest.ts +82 -0
  41. package/examples/minimal-author-package/packages/example-component/src/style.ts +13 -0
  42. package/examples/minimal-author-package/packages/example-component/src/surface.ts +41 -0
  43. package/examples/minimal-author-package/packages/example-component/src/temporal.ts +6 -0
  44. package/examples/minimal-author-package/packages/example-component/tsconfig.json +18 -0
  45. package/examples/semantic-composition/README.md +35 -0
  46. package/examples/semantic-composition/chat.svml +25 -0
  47. package/examples/semantic-composition/chat.svrun +6 -0
  48. package/examples/semantic-composition/chat.svs +4 -0
  49. package/examples/semantic-composition/hypit.runtime.json +8 -0
  50. package/examples/semantic-composition/packages/chat-scene/README.md +29 -0
  51. package/examples/semantic-composition/packages/chat-scene/package.json +11 -0
  52. package/examples/semantic-composition/packages/chat-scene/src/activation.ts +112 -0
  53. package/examples/semantic-composition/packages/chat-scene/src/render.ts +64 -0
  54. package/examples/semantic-composition/packages/chat-scene/tsconfig.json +18 -0
  55. package/examples/semantic-composition/packages/responsive-explainer/README.md +45 -0
  56. package/examples/semantic-composition/packages/responsive-explainer/package.json +11 -0
  57. package/examples/semantic-composition/packages/responsive-explainer/src/activation.ts +90 -0
  58. package/examples/semantic-composition/packages/responsive-explainer/src/render.ts +68 -0
  59. package/examples/semantic-composition/packages/responsive-explainer/tsconfig.json +18 -0
  60. package/package.json +263 -5
  61. package/packages/artifact/README.md +10 -0
  62. package/packages/artifact/package.json +16 -0
  63. package/packages/artifact/src/activation.ts +8 -0
  64. package/packages/artifact/src/index.ts +24 -0
  65. package/packages/audio-track/README.md +43 -0
  66. package/packages/audio-track/package.json +36 -0
  67. package/packages/audio-track/src/activation.ts +20 -0
  68. package/packages/audio-track/src/component.ts +40 -0
  69. package/packages/audio-track/src/fragment.ts +63 -0
  70. package/packages/audio-track/src/index.ts +7 -0
  71. package/packages/audio-track/src/manifest.ts +151 -0
  72. package/packages/audio-track/src/program.ts +254 -0
  73. package/packages/audio-track/src/surface.ts +187 -0
  74. package/packages/audio-track/src/types.ts +62 -0
  75. package/packages/audio-track-studio/README.md +3 -0
  76. package/packages/audio-track-studio/package.json +14 -0
  77. package/packages/audio-track-studio/src/activation.ts +7 -0
  78. package/packages/audio-track-studio/src/index.ts +72 -0
  79. package/packages/author-kit/README.md +31 -0
  80. package/packages/author-kit/package.json +16 -0
  81. package/packages/author-kit/src/index.ts +59 -0
  82. package/packages/background-removal/README.md +29 -0
  83. package/packages/background-removal/package.json +16 -0
  84. package/packages/background-removal/src/activation.ts +18 -0
  85. package/packages/background-removal/src/component.ts +32 -0
  86. package/packages/background-removal/src/fragment.ts +18 -0
  87. package/packages/background-removal/src/index.ts +6 -0
  88. package/packages/background-removal/src/manifest.ts +45 -0
  89. package/packages/background-removal/src/program.ts +19 -0
  90. package/packages/background-removal/src/surface.ts +27 -0
  91. package/packages/background-removal/src/types.ts +5 -0
  92. package/packages/browser-capture/README.md +82 -0
  93. package/packages/browser-capture/package.json +15 -0
  94. package/packages/browser-capture/src/browser.ts +19 -0
  95. package/packages/browser-capture/src/index.ts +198 -0
  96. package/packages/build-result/package.json +13 -0
  97. package/packages/build-result/src/decode.ts +286 -0
  98. package/packages/build-result/src/index.ts +25 -0
  99. package/packages/build-result/src/store.ts +505 -0
  100. package/packages/build-result/src/types.ts +354 -0
  101. package/packages/build-result/src/writer.ts +184 -0
  102. package/packages/build-result-fs/README.md +29 -0
  103. package/packages/build-result-fs/package.json +17 -0
  104. package/packages/build-result-fs/src/activation.ts +62 -0
  105. package/packages/build-result-fs/src/index.ts +1 -0
  106. package/packages/build-result-kit/README.md +10 -0
  107. package/packages/build-result-kit/package.json +15 -0
  108. package/packages/build-result-kit/src/index.ts +144 -0
  109. package/packages/build-result-s3/README.md +49 -0
  110. package/packages/build-result-s3/package.json +19 -0
  111. package/packages/build-result-s3/src/activation.ts +71 -0
  112. package/packages/build-result-s3/src/client.ts +254 -0
  113. package/packages/build-result-s3/src/index.ts +4 -0
  114. package/packages/build-result-s3/src/repository.ts +361 -0
  115. package/packages/caption/README.md +77 -0
  116. package/packages/caption/package.json +28 -0
  117. package/packages/caption/src/activation.ts +17 -0
  118. package/packages/caption/src/component.ts +38 -0
  119. package/packages/caption/src/display.ts +111 -0
  120. package/packages/caption/src/error.ts +9 -0
  121. package/packages/caption/src/fragment.ts +26 -0
  122. package/packages/caption/src/index.ts +33 -0
  123. package/packages/caption/src/manifest.ts +97 -0
  124. package/packages/caption/src/style.ts +170 -0
  125. package/packages/caption/src/surface.ts +96 -0
  126. package/packages/caption/src/temporalize.ts +124 -0
  127. package/packages/caption/src/types.ts +71 -0
  128. package/packages/caption-fine/README.md +108 -0
  129. package/packages/caption-fine/package.json +30 -0
  130. package/packages/caption-fine/preview/Track.png +0 -0
  131. package/packages/caption-fine/src/activation.ts +32 -0
  132. package/packages/caption-fine/src/component.ts +58 -0
  133. package/packages/caption-fine/src/fragment.ts +112 -0
  134. package/packages/caption-fine/src/index.ts +19 -0
  135. package/packages/caption-fine/src/manifest.ts +383 -0
  136. package/packages/caption-fine/src/recipe.ts +120 -0
  137. package/packages/caption-fine/src/render.ts +1133 -0
  138. package/packages/caption-fine/src/schedule.ts +126 -0
  139. package/packages/caption-fine/src/spacing.ts +69 -0
  140. package/packages/caption-fine/src/style.ts +370 -0
  141. package/packages/caption-fine/src/surface.ts +152 -0
  142. package/packages/caption-fine/src/types.ts +191 -0
  143. package/packages/caption-fine-studio/README.md +3 -0
  144. package/packages/caption-fine-studio/package.json +15 -0
  145. package/packages/caption-fine-studio/src/activation.ts +7 -0
  146. package/packages/caption-fine-studio/src/index.ts +163 -0
  147. package/packages/cli/README.md +51 -0
  148. package/packages/cli/package.json +33 -0
  149. package/packages/cli/src/arguments.ts +605 -0
  150. package/packages/cli/src/build-planning.ts +460 -0
  151. package/packages/cli/src/command.ts +202 -0
  152. package/packages/cli/src/commands/environment.ts +391 -0
  153. package/packages/cli/src/commands/execution.ts +321 -0
  154. package/packages/cli/src/commands/results.ts +187 -0
  155. package/packages/cli/src/commands/types.ts +9 -0
  156. package/packages/cli/src/distribution.ts +74 -0
  157. package/packages/cli/src/index.ts +30 -0
  158. package/packages/cli/src/machine-view.ts +28 -0
  159. package/packages/cli/src/main.ts +654 -0
  160. package/packages/cli/src/oauth.ts +228 -0
  161. package/packages/cli/src/observation.ts +203 -0
  162. package/packages/cli/src/output.ts +1007 -0
  163. package/packages/cli/src/paths.ts +7 -0
  164. package/packages/cli/src/project-context.ts +38 -0
  165. package/packages/cli/src/reachability.ts +91 -0
  166. package/packages/cli/src/result-export.ts +148 -0
  167. package/packages/cli/src/result-query.ts +46 -0
  168. package/packages/cli/src/run-file.ts +186 -0
  169. package/packages/cli/src/runtime-port.ts +13 -0
  170. package/packages/cli/src/runtime-selection.ts +94 -0
  171. package/packages/cli/src/runtime-view.ts +15 -0
  172. package/packages/cli/src/source-discovery.ts +150 -0
  173. package/packages/cli/src/source-packages.ts +91 -0
  174. package/packages/cli/src/view.ts +228 -0
  175. package/packages/comment-sticker/README.md +41 -0
  176. package/packages/comment-sticker/package.json +29 -0
  177. package/packages/comment-sticker/preview/Track.png +0 -0
  178. package/packages/comment-sticker/src/activation.ts +32 -0
  179. package/packages/comment-sticker/src/author.ts +148 -0
  180. package/packages/comment-sticker/src/component.ts +97 -0
  181. package/packages/comment-sticker/src/fragment.ts +124 -0
  182. package/packages/comment-sticker/src/index.ts +8 -0
  183. package/packages/comment-sticker/src/manifest.ts +373 -0
  184. package/packages/comment-sticker/src/program.ts +610 -0
  185. package/packages/comment-sticker/src/surface.ts +172 -0
  186. package/packages/comment-sticker/src/types.ts +109 -0
  187. package/packages/comment-sticker-studio/README.md +3 -0
  188. package/packages/comment-sticker-studio/package.json +14 -0
  189. package/packages/comment-sticker-studio/src/activation.ts +7 -0
  190. package/packages/comment-sticker-studio/src/index.ts +132 -0
  191. package/packages/compiler-markup-node/README.md +12 -0
  192. package/packages/compiler-markup-node/package.json +22 -0
  193. package/packages/compiler-markup-node/src/index.ts +59 -0
  194. package/packages/compiler-node/README.md +60 -0
  195. package/packages/compiler-node/package.json +25 -0
  196. package/packages/compiler-node/src/compiler.ts +207 -0
  197. package/packages/compiler-node/src/error.ts +11 -0
  198. package/packages/compiler-node/src/graph-query.ts +51 -0
  199. package/packages/compiler-node/src/index.ts +27 -0
  200. package/packages/compiler-node/src/modules.ts +107 -0
  201. package/packages/compiler-node/src/run.ts +355 -0
  202. package/packages/component-kit/README.md +97 -0
  203. package/packages/component-kit/package.json +13 -0
  204. package/packages/component-kit/src/index.ts +155 -0
  205. package/packages/composition/README.md +53 -0
  206. package/packages/composition/package.json +29 -0
  207. package/packages/composition/src/activation.ts +3 -0
  208. package/packages/composition/src/component.ts +10 -0
  209. package/packages/composition/src/index.ts +18 -0
  210. package/packages/composition/src/manifest.ts +13 -0
  211. package/packages/composition/src/schema.ts +194 -0
  212. package/packages/composition/src/track.ts +1403 -0
  213. package/packages/core/README.md +22 -0
  214. package/packages/core/package.json +13 -0
  215. package/packages/core/src/error.ts +12 -0
  216. package/packages/core/src/graph.ts +341 -0
  217. package/packages/core/src/index.ts +32 -0
  218. package/packages/core/src/link.ts +240 -0
  219. package/packages/core/src/machine.ts +60 -0
  220. package/packages/core/src/plan.ts +504 -0
  221. package/packages/core/src/reducer.ts +428 -0
  222. package/packages/core/src/reference.ts +25 -0
  223. package/packages/core/src/slice.ts +108 -0
  224. package/packages/credential-store-env/README.md +11 -0
  225. package/packages/credential-store-env/package.json +17 -0
  226. package/packages/credential-store-env/src/activation.ts +25 -0
  227. package/packages/credential-store-env/src/index.ts +23 -0
  228. package/packages/credential-store-os/README.md +13 -0
  229. package/packages/credential-store-os/package.json +22 -0
  230. package/packages/credential-store-os/runtime/windows-credential.ps1 +59 -0
  231. package/packages/credential-store-os/src/activation.ts +32 -0
  232. package/packages/credential-store-os/src/index.ts +2 -0
  233. package/packages/credential-store-os/src/store.ts +196 -0
  234. package/packages/deck-track/README.md +52 -0
  235. package/packages/deck-track/package.json +35 -0
  236. package/packages/deck-track/preview/DepthStack.png +0 -0
  237. package/packages/deck-track/src/activation.ts +32 -0
  238. package/packages/deck-track/src/author.ts +217 -0
  239. package/packages/deck-track/src/component.ts +86 -0
  240. package/packages/deck-track/src/fragment.ts +148 -0
  241. package/packages/deck-track/src/index.ts +16 -0
  242. package/packages/deck-track/src/lower.ts +370 -0
  243. package/packages/deck-track/src/manifest.ts +438 -0
  244. package/packages/deck-track/src/program.ts +367 -0
  245. package/packages/deck-track/src/surface.ts +286 -0
  246. package/packages/deck-track/src/types.ts +119 -0
  247. package/packages/deck-track-studio/README.md +3 -0
  248. package/packages/deck-track-studio/package.json +14 -0
  249. package/packages/deck-track-studio/src/activation.ts +7 -0
  250. package/packages/deck-track-studio/src/index.ts +134 -0
  251. package/packages/driver-node/README.md +23 -0
  252. package/packages/driver-node/package.json +18 -0
  253. package/packages/driver-node/src/driver.ts +616 -0
  254. package/packages/driver-node/src/index.ts +10 -0
  255. package/packages/driver-node/src/planning.ts +67 -0
  256. package/packages/driver-node/src/registry.ts +234 -0
  257. package/packages/driver-node/src/resources.ts +36 -0
  258. package/packages/driver-node/src/types.ts +69 -0
  259. package/packages/elaborator/README.md +74 -0
  260. package/packages/elaborator/package.json +16 -0
  261. package/packages/elaborator/src/author.ts +308 -0
  262. package/packages/elaborator/src/fragment.ts +505 -0
  263. package/packages/elaborator/src/frontend-facet.ts +30 -0
  264. package/packages/elaborator/src/index.ts +78 -0
  265. package/packages/elaborator/src/source.ts +608 -0
  266. package/packages/endpoint-kit/README.md +111 -0
  267. package/packages/endpoint-kit/package.json +14 -0
  268. package/packages/endpoint-kit/src/index.ts +488 -0
  269. package/packages/estimate/README.md +32 -0
  270. package/packages/estimate/package.json +20 -0
  271. package/packages/estimate/src/activation.ts +11 -0
  272. package/packages/estimate/src/index.ts +16 -0
  273. package/packages/estimate/src/manifest.ts +34 -0
  274. package/packages/estimate/src/policy.ts +70 -0
  275. package/packages/estimate/src/program.ts +196 -0
  276. package/packages/estimate/src/types.ts +15 -0
  277. package/packages/film/README.md +49 -0
  278. package/packages/film/package.json +34 -0
  279. package/packages/film/src/activation.ts +16 -0
  280. package/packages/film/src/component.ts +61 -0
  281. package/packages/film/src/fragment.ts +83 -0
  282. package/packages/film/src/index.ts +11 -0
  283. package/packages/film/src/manifest.ts +152 -0
  284. package/packages/film/src/program.ts +110 -0
  285. package/packages/film/src/recipe.ts +24 -0
  286. package/packages/film/src/surface.ts +146 -0
  287. package/packages/film/src/types.ts +26 -0
  288. package/packages/film-studio/package.json +16 -0
  289. package/packages/film-studio/src/activation.ts +8 -0
  290. package/packages/film-studio/src/index.ts +17 -0
  291. package/packages/fonts-open/README.md +77 -0
  292. package/packages/fonts-open/package.json +130 -0
  293. package/packages/fonts-open/src/activation.ts +30 -0
  294. package/packages/fonts-open/src/catalog.ts +317 -0
  295. package/packages/fonts-open/src/index.ts +13 -0
  296. package/packages/fonts-open/src/manifest.ts +83 -0
  297. package/packages/fonts-open/src/surface.ts +239 -0
  298. package/packages/generation/README.md +19 -0
  299. package/packages/generation/package.json +23 -0
  300. package/packages/generation/src/activation.ts +9 -0
  301. package/packages/generation/src/component.ts +77 -0
  302. package/packages/generation/src/identity.ts +80 -0
  303. package/packages/generation/src/index.ts +79 -0
  304. package/packages/generation/src/manifest.ts +65 -0
  305. package/packages/generation/src/mapping.ts +231 -0
  306. package/packages/generation/src/ports.ts +222 -0
  307. package/packages/generation/src/request.ts +427 -0
  308. package/packages/generation/src/schema.ts +62 -0
  309. package/packages/generation/src/types.ts +17 -0
  310. package/packages/gpt-image/README.md +54 -0
  311. package/packages/gpt-image/package.json +34 -0
  312. package/packages/gpt-image/src/activation.ts +39 -0
  313. package/packages/gpt-image/src/fragment.ts +101 -0
  314. package/packages/gpt-image/src/index.ts +203 -0
  315. package/packages/gpt-image/src/surface.ts +194 -0
  316. package/packages/gpt-image-kits/README.md +44 -0
  317. package/packages/gpt-image-kits/kits/phone-ugc-v1.svs +34 -0
  318. package/packages/gpt-image-kits/package.json +15 -0
  319. package/packages/grok-imagine/README.md +21 -0
  320. package/packages/grok-imagine/package.json +21 -0
  321. package/packages/grok-imagine/src/activation.ts +29 -0
  322. package/packages/grok-imagine/src/index.ts +174 -0
  323. package/packages/grok-imagine/src/surface.ts +149 -0
  324. package/packages/host/README.md +5 -0
  325. package/packages/host/package.json +10 -0
  326. package/packages/host/src/facet.ts +6 -0
  327. package/packages/host/src/frontend.ts +56 -0
  328. package/packages/host/src/index.ts +9 -0
  329. package/packages/hyperframes/README.md +69 -0
  330. package/packages/hyperframes/package.json +36 -0
  331. package/packages/hyperframes/src/activation.ts +8 -0
  332. package/packages/hyperframes/src/browser-program.ts +79 -0
  333. package/packages/hyperframes/src/component.ts +32 -0
  334. package/packages/hyperframes/src/document.ts +827 -0
  335. package/packages/hyperframes/src/fragment.ts +32 -0
  336. package/packages/hyperframes/src/index.ts +13 -0
  337. package/packages/hyperframes/src/manifest.ts +67 -0
  338. package/packages/hyperframes/src/project.ts +118 -0
  339. package/packages/hyperframes/src/text.ts +1179 -0
  340. package/packages/hyperframes/src/types.ts +38 -0
  341. package/packages/image-compose/README.md +25 -0
  342. package/packages/image-compose/package.json +18 -0
  343. package/packages/image-compose/src/activation.ts +21 -0
  344. package/packages/image-compose/src/component.ts +100 -0
  345. package/packages/image-compose/src/fragment.ts +54 -0
  346. package/packages/image-compose/src/index.ts +10 -0
  347. package/packages/image-compose/src/manifest.ts +119 -0
  348. package/packages/image-compose/src/program.ts +75 -0
  349. package/packages/image-compose/src/surface.ts +83 -0
  350. package/packages/image-compose/src/types.ts +22 -0
  351. package/packages/image-transform/README.md +29 -0
  352. package/packages/image-transform/package.json +21 -0
  353. package/packages/image-transform/src/activation.ts +33 -0
  354. package/packages/image-transform/src/component.ts +67 -0
  355. package/packages/image-transform/src/fragment.ts +25 -0
  356. package/packages/image-transform/src/index.ts +13 -0
  357. package/packages/image-transform/src/manifest.ts +209 -0
  358. package/packages/image-transform/src/program.ts +23 -0
  359. package/packages/image-transform/src/surface.ts +216 -0
  360. package/packages/image-transform/src/types.ts +20 -0
  361. package/packages/interview-emoji-reveal/README.md +39 -0
  362. package/packages/interview-emoji-reveal/package.json +23 -0
  363. package/packages/interview-emoji-reveal/preview/Track.png +0 -0
  364. package/packages/interview-emoji-reveal/src/activation.ts +14 -0
  365. package/packages/interview-emoji-reveal/src/component.ts +45 -0
  366. package/packages/interview-emoji-reveal/src/fragment.ts +62 -0
  367. package/packages/interview-emoji-reveal/src/index.ts +16 -0
  368. package/packages/interview-emoji-reveal/src/manifest.ts +174 -0
  369. package/packages/interview-emoji-reveal/src/program.ts +242 -0
  370. package/packages/interview-emoji-reveal/src/style.ts +47 -0
  371. package/packages/interview-emoji-reveal/src/surface.ts +110 -0
  372. package/packages/interview-emoji-reveal/src/types.ts +52 -0
  373. package/packages/markup/README.md +81 -0
  374. package/packages/markup/package.json +16 -0
  375. package/packages/markup/src/element.ts +39 -0
  376. package/packages/markup/src/error.ts +20 -0
  377. package/packages/markup/src/frontend.ts +518 -0
  378. package/packages/markup/src/host-facet.ts +115 -0
  379. package/packages/markup/src/index.ts +25 -0
  380. package/packages/markup/src/registry.ts +83 -0
  381. package/packages/markup/src/syntax.ts +271 -0
  382. package/packages/markup/src/types.ts +246 -0
  383. package/packages/media/README.md +37 -0
  384. package/packages/media/package.json +19 -0
  385. package/packages/media/src/activation.ts +38 -0
  386. package/packages/media/src/component.ts +16 -0
  387. package/packages/media/src/frame-range.ts +33 -0
  388. package/packages/media/src/identity.ts +227 -0
  389. package/packages/media/src/index.ts +15 -0
  390. package/packages/media/src/manifest.ts +122 -0
  391. package/packages/media/src/render.ts +140 -0
  392. package/packages/media/src/schema.ts +69 -0
  393. package/packages/media/src/surface.ts +150 -0
  394. package/packages/media/src/types.ts +121 -0
  395. package/packages/media-execution/README.md +28 -0
  396. package/packages/media-execution/package.json +17 -0
  397. package/packages/media-execution/src/execute.ts +1322 -0
  398. package/packages/media-execution/src/index.ts +16 -0
  399. package/packages/media-execution/src/probe.ts +315 -0
  400. package/packages/media-execution/src/surface.ts +286 -0
  401. package/packages/media-execution/src/toolchain.ts +81 -0
  402. package/packages/media-execution/src/webp.ts +200 -0
  403. package/packages/media-pipeline/README.md +113 -0
  404. package/packages/media-pipeline/package.json +27 -0
  405. package/packages/media-pipeline/src/activation.ts +47 -0
  406. package/packages/media-pipeline/src/audio-plan.ts +113 -0
  407. package/packages/media-pipeline/src/component.ts +373 -0
  408. package/packages/media-pipeline/src/fragment.ts +167 -0
  409. package/packages/media-pipeline/src/index.ts +46 -0
  410. package/packages/media-pipeline/src/manifest.ts +653 -0
  411. package/packages/media-pipeline/src/operations.ts +248 -0
  412. package/packages/media-pipeline/src/selection.ts +110 -0
  413. package/packages/media-pipeline/src/surface.ts +389 -0
  414. package/packages/media-pipeline/src/types.ts +175 -0
  415. package/packages/media-track/README.md +197 -0
  416. package/packages/media-track/package.json +29 -0
  417. package/packages/media-track/preview/Track.png +0 -0
  418. package/packages/media-track/preview/build.svrun +5 -0
  419. package/packages/media-track/preview/flush.png +0 -0
  420. package/packages/media-track/preview/preview.svml +47 -0
  421. package/packages/media-track/preview/recipes.svs +23 -0
  422. package/packages/media-track/preview/rounded.png +0 -0
  423. package/packages/media-track/src/activation.ts +20 -0
  424. package/packages/media-track/src/author.ts +317 -0
  425. package/packages/media-track/src/component.ts +162 -0
  426. package/packages/media-track/src/fragment.ts +57 -0
  427. package/packages/media-track/src/index.ts +65 -0
  428. package/packages/media-track/src/layers.ts +308 -0
  429. package/packages/media-track/src/lower.ts +335 -0
  430. package/packages/media-track/src/manifest.ts +624 -0
  431. package/packages/media-track/src/motion.ts +387 -0
  432. package/packages/media-track/src/performance.ts +37 -0
  433. package/packages/media-track/src/presentation.ts +35 -0
  434. package/packages/media-track/src/program.ts +565 -0
  435. package/packages/media-track/src/sampling.ts +118 -0
  436. package/packages/media-track/src/sequence.ts +403 -0
  437. package/packages/media-track/src/sounds.ts +71 -0
  438. package/packages/media-track/src/surface.ts +668 -0
  439. package/packages/media-track/src/types.ts +311 -0
  440. package/packages/media-track-studio/README.md +3 -0
  441. package/packages/media-track-studio/package.json +15 -0
  442. package/packages/media-track-studio/src/activation.ts +7 -0
  443. package/packages/media-track-studio/src/index.ts +235 -0
  444. package/packages/mimo-speech/README.md +33 -0
  445. package/packages/mimo-speech/package.json +21 -0
  446. package/packages/mimo-speech/src/activation.ts +32 -0
  447. package/packages/mimo-speech/src/fragment.ts +11 -0
  448. package/packages/mimo-speech/src/index.ts +160 -0
  449. package/packages/mimo-speech/src/surface.ts +193 -0
  450. package/packages/minimax-h3/README.md +21 -0
  451. package/packages/minimax-h3/package.json +21 -0
  452. package/packages/minimax-h3/src/activation.ts +14 -0
  453. package/packages/minimax-h3/src/index.ts +188 -0
  454. package/packages/minimax-h3/src/surface.ts +87 -0
  455. package/packages/model-kit/README.md +52 -0
  456. package/packages/model-kit/package.json +19 -0
  457. package/packages/model-kit/src/index.ts +728 -0
  458. package/packages/nano-banana/README.md +23 -0
  459. package/packages/nano-banana/package.json +21 -0
  460. package/packages/nano-banana/src/activation.ts +14 -0
  461. package/packages/nano-banana/src/index.ts +172 -0
  462. package/packages/nano-banana/src/surface.ts +120 -0
  463. package/packages/narrative/README.md +7 -0
  464. package/packages/narrative/package.json +17 -0
  465. package/packages/narrative/src/activation.ts +7 -0
  466. package/packages/narrative/src/component.ts +33 -0
  467. package/packages/narrative/src/identity.ts +131 -0
  468. package/packages/narrative/src/index.ts +11 -0
  469. package/packages/narrative/src/manifest.ts +30 -0
  470. package/packages/narrative/src/schema.ts +89 -0
  471. package/packages/narrative/src/types.ts +141 -0
  472. package/packages/package-loader-node/README.md +23 -0
  473. package/packages/package-loader-node/package.json +15 -0
  474. package/packages/package-loader-node/src/contribution.ts +97 -0
  475. package/packages/package-loader-node/src/distribution-resolution.ts +146 -0
  476. package/packages/package-loader-node/src/index.ts +27 -0
  477. package/packages/package-loader-node/src/loader.ts +301 -0
  478. package/packages/package-loader-node/src/location.ts +279 -0
  479. package/packages/package-loader-node/src/types.ts +60 -0
  480. package/packages/program-space/README.md +20 -0
  481. package/packages/program-space/package.json +17 -0
  482. package/packages/program-space/src/activation.ts +19 -0
  483. package/packages/program-space/src/index.ts +107 -0
  484. package/packages/program-space/src/surface.ts +55 -0
  485. package/packages/protocol/README.md +11 -0
  486. package/packages/protocol/package.json +10 -0
  487. package/packages/protocol/src/build-id.ts +52 -0
  488. package/packages/protocol/src/build.ts +265 -0
  489. package/packages/protocol/src/canonical.ts +37 -0
  490. package/packages/protocol/src/error.ts +11 -0
  491. package/packages/protocol/src/identity.ts +59 -0
  492. package/packages/protocol/src/index.ts +9 -0
  493. package/packages/protocol/src/module.ts +67 -0
  494. package/packages/protocol/src/value.ts +88 -0
  495. package/packages/provider-hyperframes-aws-lambda/README.md +30 -0
  496. package/packages/provider-hyperframes-aws-lambda/package.json +30 -0
  497. package/packages/provider-hyperframes-aws-lambda/src/activation.ts +97 -0
  498. package/packages/provider-hyperframes-aws-lambda/src/client.ts +114 -0
  499. package/packages/provider-hyperframes-aws-lambda/src/index.ts +21 -0
  500. package/packages/provider-hyperframes-aws-lambda/src/provider.ts +522 -0
  501. package/packages/provider-hyperframes-local/README.md +129 -0
  502. package/packages/provider-hyperframes-local/package.json +34 -0
  503. package/packages/provider-hyperframes-local/src/activation.ts +107 -0
  504. package/packages/provider-hyperframes-local/src/capture-process.ts +110 -0
  505. package/packages/provider-hyperframes-local/src/capture-worker.ts +17 -0
  506. package/packages/provider-hyperframes-local/src/capture.ts +184 -0
  507. package/packages/provider-hyperframes-local/src/index.ts +10 -0
  508. package/packages/provider-hyperframes-local/src/options.ts +19 -0
  509. package/packages/provider-hyperframes-local/src/output.ts +73 -0
  510. package/packages/provider-hyperframes-local/src/process.ts +83 -0
  511. package/packages/provider-hyperframes-local/src/program.ts +58 -0
  512. package/packages/provider-hyperframes-local/src/provider.ts +62 -0
  513. package/packages/provider-hyperframes-local/src/render.ts +114 -0
  514. package/packages/provider-hyperframes-local/src/sampling.ts +89 -0
  515. package/packages/provider-hypihub/README.md +143 -0
  516. package/packages/provider-hypihub/package.json +26 -0
  517. package/packages/provider-hypihub/src/activation.ts +91 -0
  518. package/packages/provider-hypihub/src/index.ts +2 -0
  519. package/packages/provider-hypihub/src/mapping.ts +145 -0
  520. package/packages/provider-hypihub/src/oauth.ts +113 -0
  521. package/packages/provider-hypihub/src/provider.ts +566 -0
  522. package/packages/provider-hypihub/src/routes.ts +134 -0
  523. package/packages/provider-hypihub/src/upload.ts +402 -0
  524. package/packages/provider-image-opencv-local/README.md +16 -0
  525. package/packages/provider-image-opencv-local/package.json +27 -0
  526. package/packages/provider-image-opencv-local/runtime/raster_execute.py +299 -0
  527. package/packages/provider-image-opencv-local/src/activation.ts +61 -0
  528. package/packages/provider-image-opencv-local/src/deployment.ts +68 -0
  529. package/packages/provider-image-opencv-local/src/index.ts +2 -0
  530. package/packages/provider-image-opencv-local/src/program.ts +60 -0
  531. package/packages/provider-image-opencv-local/src/provider.ts +155 -0
  532. package/packages/provider-kie/README.md +134 -0
  533. package/packages/provider-kie/package.json +43 -0
  534. package/packages/provider-kie/src/activation.ts +71 -0
  535. package/packages/provider-kie/src/index.ts +10 -0
  536. package/packages/provider-kie/src/mapping.ts +182 -0
  537. package/packages/provider-kie/src/provider.ts +657 -0
  538. package/packages/provider-kie/src/routes.ts +150 -0
  539. package/packages/provider-media-local/README.md +58 -0
  540. package/packages/provider-media-local/package.json +28 -0
  541. package/packages/provider-media-local/src/activation.ts +65 -0
  542. package/packages/provider-media-local/src/index.ts +2 -0
  543. package/packages/provider-media-local/src/program.ts +19 -0
  544. package/packages/provider-media-local/src/provider.ts +150 -0
  545. package/packages/provider-whisperx-local/README.md +44 -0
  546. package/packages/provider-whisperx-local/package.json +27 -0
  547. package/packages/provider-whisperx-local/src/activation.ts +93 -0
  548. package/packages/provider-whisperx-local/src/index.ts +5 -0
  549. package/packages/provider-whisperx-local/src/program.ts +157 -0
  550. package/packages/provider-whisperx-local/src/provider.ts +191 -0
  551. package/packages/provider-xiaomi-mimo/README.md +32 -0
  552. package/packages/provider-xiaomi-mimo/package.json +24 -0
  553. package/packages/provider-xiaomi-mimo/src/activation.ts +57 -0
  554. package/packages/provider-xiaomi-mimo/src/index.ts +5 -0
  555. package/packages/provider-xiaomi-mimo/src/provider.ts +214 -0
  556. package/packages/ranking/README.md +67 -0
  557. package/packages/ranking/package.json +33 -0
  558. package/packages/ranking/preview/Column.svg +29 -0
  559. package/packages/ranking/preview/TierBoard.png +0 -0
  560. package/packages/ranking/preview/TierBoard.svg +36 -0
  561. package/packages/ranking/preview/TopThree.png +0 -0
  562. package/packages/ranking/src/activation.ts +38 -0
  563. package/packages/ranking/src/component.ts +271 -0
  564. package/packages/ranking/src/fragment.ts +206 -0
  565. package/packages/ranking/src/index.ts +26 -0
  566. package/packages/ranking/src/manifest.ts +807 -0
  567. package/packages/ranking/src/render.ts +698 -0
  568. package/packages/ranking/src/schedule.ts +895 -0
  569. package/packages/ranking/src/style.ts +272 -0
  570. package/packages/ranking/src/surface.ts +322 -0
  571. package/packages/ranking/src/tier.ts +176 -0
  572. package/packages/ranking/src/types.ts +277 -0
  573. package/packages/ranking-studio/README.md +3 -0
  574. package/packages/ranking-studio/package.json +14 -0
  575. package/packages/ranking-studio/src/activation.ts +7 -0
  576. package/packages/ranking-studio/src/index.ts +255 -0
  577. package/packages/raster/README.md +7 -0
  578. package/packages/raster/package.json +14 -0
  579. package/packages/raster/src/activation.ts +7 -0
  580. package/packages/raster/src/index.ts +7 -0
  581. package/packages/raster/src/manifest.ts +14 -0
  582. package/packages/raster/src/program.ts +128 -0
  583. package/packages/raster/src/schema.ts +53 -0
  584. package/packages/raster/src/types.ts +61 -0
  585. package/packages/render-hyperframes/README.md +58 -0
  586. package/packages/render-hyperframes/package.json +33 -0
  587. package/packages/render-hyperframes/src/activation.ts +18 -0
  588. package/packages/render-hyperframes/src/component.ts +37 -0
  589. package/packages/render-hyperframes/src/fragment.ts +73 -0
  590. package/packages/render-hyperframes/src/index.ts +6 -0
  591. package/packages/render-hyperframes/src/manifest.ts +100 -0
  592. package/packages/render-hyperframes/src/product.ts +29 -0
  593. package/packages/render-hyperframes/src/surface.ts +65 -0
  594. package/packages/resource-store-fs/README.md +13 -0
  595. package/packages/resource-store-fs/package.json +14 -0
  596. package/packages/resource-store-fs/src/index.ts +2 -0
  597. package/packages/resource-store-fs/src/store.ts +154 -0
  598. package/packages/resource-store-s3/README.md +15 -0
  599. package/packages/resource-store-s3/package.json +15 -0
  600. package/packages/resource-store-s3/src/client.ts +138 -0
  601. package/packages/resource-store-s3/src/index.ts +10 -0
  602. package/packages/resource-store-s3/src/store.ts +258 -0
  603. package/packages/run/README.md +23 -0
  604. package/packages/run/package.json +16 -0
  605. package/packages/run/src/candidate.ts +33 -0
  606. package/packages/run/src/facet.ts +59 -0
  607. package/packages/run/src/frontend-facet.ts +23 -0
  608. package/packages/run/src/frontend.ts +62 -0
  609. package/packages/run/src/graph.ts +65 -0
  610. package/packages/run/src/index.ts +33 -0
  611. package/packages/run/src/registry.ts +24 -0
  612. package/packages/run/src/resolve.ts +213 -0
  613. package/packages/run/src/types.ts +147 -0
  614. package/packages/run-markup/README.md +60 -0
  615. package/packages/run-markup/package.json +22 -0
  616. package/packages/run-markup/src/activation.ts +10 -0
  617. package/packages/run-markup/src/frontend.ts +16 -0
  618. package/packages/run-markup/src/index.ts +5 -0
  619. package/packages/run-markup/src/syntax.ts +304 -0
  620. package/packages/runtime/README.md +39 -0
  621. package/packages/runtime/package.json +15 -0
  622. package/packages/runtime/src/capacity.ts +51 -0
  623. package/packages/runtime/src/catalog.ts +30 -0
  624. package/packages/runtime/src/credentials.ts +124 -0
  625. package/packages/runtime/src/environment.ts +6 -0
  626. package/packages/runtime/src/execution.ts +125 -0
  627. package/packages/runtime/src/index.ts +24 -0
  628. package/packages/runtime/src/operations.ts +99 -0
  629. package/packages/runtime/src/scheduler.ts +281 -0
  630. package/packages/runtime/src/submission.ts +24 -0
  631. package/packages/runtime/src/types.ts +157 -0
  632. package/packages/runtime-host-node/README.md +25 -0
  633. package/packages/runtime-host-node/package.json +19 -0
  634. package/packages/runtime-host-node/src/index.ts +421 -0
  635. package/packages/runtime-host-node/src/packages.ts +158 -0
  636. package/packages/runtime-kit/README.md +42 -0
  637. package/packages/runtime-kit/package.json +16 -0
  638. package/packages/runtime-kit/src/index.ts +307 -0
  639. package/packages/runtime-kit/src/request-deadline.ts +17 -0
  640. package/packages/runtime-local/README.md +119 -0
  641. package/packages/runtime-local/package.json +33 -0
  642. package/packages/runtime-local/src/actions.ts +20 -0
  643. package/packages/runtime-local/src/config.ts +1229 -0
  644. package/packages/runtime-local/src/control.ts +120 -0
  645. package/packages/runtime-local/src/credentials.ts +61 -0
  646. package/packages/runtime-local/src/host.ts +174 -0
  647. package/packages/runtime-local/src/index.ts +36 -0
  648. package/packages/runtime-local/src/process-control.ts +59 -0
  649. package/packages/runtime-local/src/process-logs.ts +33 -0
  650. package/packages/runtime-local/src/programs.ts +441 -0
  651. package/packages/runtime-local/src/result-writer.ts +246 -0
  652. package/packages/runtime-local/src/runtime.ts +342 -0
  653. package/packages/runtime-local/src/types.ts +100 -0
  654. package/packages/runtime-local/src/worker-process.ts +343 -0
  655. package/packages/runtime-local/src/worker.ts +449 -0
  656. package/packages/screen-overlay/README.md +17 -0
  657. package/packages/screen-overlay/package.json +31 -0
  658. package/packages/screen-overlay/preview/Track.png +0 -0
  659. package/packages/screen-overlay/src/activation.ts +15 -0
  660. package/packages/screen-overlay/src/component.ts +20 -0
  661. package/packages/screen-overlay/src/fragment.ts +40 -0
  662. package/packages/screen-overlay/src/index.ts +7 -0
  663. package/packages/screen-overlay/src/manifest.ts +305 -0
  664. package/packages/screen-overlay/src/program.ts +321 -0
  665. package/packages/screen-overlay/src/surface.ts +90 -0
  666. package/packages/screen-overlay/src/types.ts +69 -0
  667. package/packages/screen-overlay-studio/README.md +3 -0
  668. package/packages/screen-overlay-studio/package.json +14 -0
  669. package/packages/screen-overlay-studio/src/activation.ts +7 -0
  670. package/packages/screen-overlay-studio/src/index.ts +80 -0
  671. package/packages/script/README.md +137 -0
  672. package/packages/script/package.json +22 -0
  673. package/packages/script/src/activation.ts +20 -0
  674. package/packages/script/src/edit.ts +174 -0
  675. package/packages/script/src/error.ts +13 -0
  676. package/packages/script/src/format.ts +83 -0
  677. package/packages/script/src/index.ts +20 -0
  678. package/packages/script/src/lexical.ts +133 -0
  679. package/packages/script/src/manifest.ts +95 -0
  680. package/packages/script/src/narrative.ts +232 -0
  681. package/packages/script/src/parser.ts +850 -0
  682. package/packages/script/src/surface.ts +132 -0
  683. package/packages/script/src/types.ts +125 -0
  684. package/packages/script-studio/package.json +13 -0
  685. package/packages/script-studio/src/activation.ts +8 -0
  686. package/packages/script-studio/src/index.ts +61 -0
  687. package/packages/seedance/README.md +19 -0
  688. package/packages/seedance/package.json +22 -0
  689. package/packages/seedance/src/activation.ts +38 -0
  690. package/packages/seedance/src/fragment.ts +46 -0
  691. package/packages/seedance/src/index.ts +329 -0
  692. package/packages/seedance/src/surface.ts +355 -0
  693. package/packages/seedance-kits/README.md +153 -0
  694. package/packages/seedance-kits/kits/broll-v1.svs +52 -0
  695. package/packages/seedance-kits/kits/call-v1.svs +55 -0
  696. package/packages/seedance-kits/kits/camera-reference-v1.svs +9 -0
  697. package/packages/seedance-kits/kits/motion-reference-v1.svs +9 -0
  698. package/packages/seedance-kits/kits/podcast-v1.svs +55 -0
  699. package/packages/seedance-kits/kits/speaker-v1.svs +136 -0
  700. package/packages/seedance-kits/kits/street-interview-v1.svs +49 -0
  701. package/packages/seedance-kits/package.json +24 -0
  702. package/packages/seedream/README.md +21 -0
  703. package/packages/seedream/package.json +21 -0
  704. package/packages/seedream/src/activation.ts +12 -0
  705. package/packages/seedream/src/index.ts +162 -0
  706. package/packages/seedream/src/surface.ts +84 -0
  707. package/packages/semantic-take-adjust/package.json +21 -0
  708. package/packages/semantic-take-adjust/src/activation.ts +22 -0
  709. package/packages/semantic-take-adjust/src/component.ts +31 -0
  710. package/packages/semantic-take-adjust/src/fragment.ts +24 -0
  711. package/packages/semantic-take-adjust/src/index.ts +12 -0
  712. package/packages/semantic-take-adjust/src/manifest.ts +57 -0
  713. package/packages/semantic-take-adjust/src/program.ts +49 -0
  714. package/packages/semantic-take-adjust/src/surface.ts +96 -0
  715. package/packages/semantic-take-adjust/src/types.ts +9 -0
  716. package/packages/semantic-track/README.md +21 -0
  717. package/packages/semantic-track/package.json +22 -0
  718. package/packages/semantic-track/src/activation.ts +8 -0
  719. package/packages/semantic-track/src/component.ts +24 -0
  720. package/packages/semantic-track/src/identity.ts +58 -0
  721. package/packages/semantic-track/src/index.ts +6 -0
  722. package/packages/semantic-track/src/location.ts +81 -0
  723. package/packages/semantic-track/src/manifest.ts +38 -0
  724. package/packages/semantic-track/src/projection.ts +71 -0
  725. package/packages/semantic-track/src/types.ts +26 -0
  726. package/packages/source/README.md +13 -0
  727. package/packages/source/package.json +13 -0
  728. package/packages/source/src/header.ts +80 -0
  729. package/packages/source/src/index.ts +17 -0
  730. package/packages/source/src/unit.ts +38 -0
  731. package/packages/spatial/README.md +77 -0
  732. package/packages/spatial/package.json +24 -0
  733. package/packages/spatial/src/activation.ts +43 -0
  734. package/packages/spatial/src/author.ts +59 -0
  735. package/packages/spatial/src/component.ts +45 -0
  736. package/packages/spatial/src/fragment.ts +36 -0
  737. package/packages/spatial/src/geometry.ts +238 -0
  738. package/packages/spatial/src/index.ts +37 -0
  739. package/packages/spatial/src/manifest.ts +341 -0
  740. package/packages/spatial/src/region-timeline.ts +69 -0
  741. package/packages/spatial/src/schema.ts +47 -0
  742. package/packages/spatial/src/surface.ts +319 -0
  743. package/packages/spatial/src/types.ts +101 -0
  744. package/packages/speech/README.md +16 -0
  745. package/packages/speech/package.json +19 -0
  746. package/packages/speech/src/activation.ts +7 -0
  747. package/packages/speech/src/component.ts +43 -0
  748. package/packages/speech/src/identity.ts +73 -0
  749. package/packages/speech/src/index.ts +6 -0
  750. package/packages/speech/src/manifest.ts +30 -0
  751. package/packages/speech/src/materialize.ts +103 -0
  752. package/packages/speech/src/schema.ts +42 -0
  753. package/packages/speech/src/types.ts +54 -0
  754. package/packages/speech-alignment/README.md +29 -0
  755. package/packages/speech-alignment/package.json +25 -0
  756. package/packages/speech-alignment/src/activation.ts +8 -0
  757. package/packages/speech-alignment/src/align.ts +235 -0
  758. package/packages/speech-alignment/src/component.ts +37 -0
  759. package/packages/speech-alignment/src/error.ts +9 -0
  760. package/packages/speech-alignment/src/index.ts +7 -0
  761. package/packages/speech-alignment/src/local.ts +64 -0
  762. package/packages/speech-alignment/src/locate.ts +473 -0
  763. package/packages/speech-alignment/src/manifest.ts +37 -0
  764. package/packages/speech-alignment/src/normalize.ts +79 -0
  765. package/packages/speech-alignment/src/types.ts +30 -0
  766. package/packages/speech-evidence/README.md +3 -0
  767. package/packages/speech-evidence/package.json +16 -0
  768. package/packages/speech-evidence/src/activation.ts +3 -0
  769. package/packages/speech-evidence/src/index.ts +102 -0
  770. package/packages/speech-track/README.md +51 -0
  771. package/packages/speech-track/package.json +28 -0
  772. package/packages/speech-track/preview/Track.png +0 -0
  773. package/packages/speech-track/src/activation.ts +19 -0
  774. package/packages/speech-track/src/component.ts +45 -0
  775. package/packages/speech-track/src/fragment.ts +74 -0
  776. package/packages/speech-track/src/index.ts +7 -0
  777. package/packages/speech-track/src/manifest.ts +73 -0
  778. package/packages/speech-track/src/program.ts +64 -0
  779. package/packages/speech-track/src/surface.ts +35 -0
  780. package/packages/speech-track/src/types.ts +6 -0
  781. package/packages/speech-track-studio/README.md +3 -0
  782. package/packages/speech-track-studio/package.json +14 -0
  783. package/packages/speech-track-studio/src/activation.ts +7 -0
  784. package/packages/speech-track-studio/src/index.ts +40 -0
  785. package/packages/store-sqlite/README.md +14 -0
  786. package/packages/store-sqlite/package.json +18 -0
  787. package/packages/store-sqlite/src/index.ts +2 -0
  788. package/packages/store-sqlite/src/store.ts +1101 -0
  789. package/packages/studio/README.md +125 -0
  790. package/packages/studio/index.html +10 -0
  791. package/packages/studio/package.json +50 -0
  792. package/packages/studio/src/build-library.ts +281 -0
  793. package/packages/studio/src/companion-assembly.ts +39 -0
  794. package/packages/studio/src/compile.ts +166 -0
  795. package/packages/studio/src/domain.ts +139 -0
  796. package/packages/studio/src/execute.ts +57 -0
  797. package/packages/studio/src/fallback-companions.ts +98 -0
  798. package/packages/studio/src/observe.ts +202 -0
  799. package/packages/studio/src/parameter-values.ts +81 -0
  800. package/packages/studio/src/parameters.ts +550 -0
  801. package/packages/studio/src/preview/render.ts +51 -0
  802. package/packages/studio/src/preview/runtime-shim.ts +184 -0
  803. package/packages/studio/src/programme.ts +276 -0
  804. package/packages/studio/src/run.ts +85 -0
  805. package/packages/studio/src/server.ts +725 -0
  806. package/packages/studio/src/session.ts +111 -0
  807. package/packages/studio/src/shared.ts +315 -0
  808. package/packages/studio/src/snapshot.ts +454 -0
  809. package/packages/studio/src/source-transaction.ts +57 -0
  810. package/packages/studio/src/storyboard.ts +133 -0
  811. package/packages/studio/src/studio-preflight.ts +198 -0
  812. package/packages/studio/src/studio-registry.ts +406 -0
  813. package/packages/studio/src/studio-trace.ts +136 -0
  814. package/packages/studio/src/style.css +1525 -0
  815. package/packages/studio/src/surface-preview.ts +35 -0
  816. package/packages/studio/src/temporal-graph.ts +227 -0
  817. package/packages/studio/src/ui/code.ts +450 -0
  818. package/packages/studio/src/ui/icons.ts +51 -0
  819. package/packages/studio/src/ui/library.ts +378 -0
  820. package/packages/studio/src/ui/main.ts +1001 -0
  821. package/packages/studio/src/ui/markers.ts +152 -0
  822. package/packages/studio/src/ui/material-preview.ts +176 -0
  823. package/packages/studio/src/ui/overlay.ts +144 -0
  824. package/packages/studio/src/ui/resize.ts +74 -0
  825. package/packages/studio/src/ui/selection.ts +178 -0
  826. package/packages/studio/src/ui/stage.ts +231 -0
  827. package/packages/studio/src/ui/syntax.ts +195 -0
  828. package/packages/studio/src/ui/timeline.ts +1041 -0
  829. package/packages/studio/src/ui/writeback.ts +10 -0
  830. package/packages/studio/src/ui/zoom.ts +129 -0
  831. package/packages/studio/start.ts +143 -0
  832. package/packages/studio-adapter/README.md +186 -0
  833. package/packages/studio-adapter/package.json +14 -0
  834. package/packages/studio-adapter/src/index.ts +850 -0
  835. package/packages/svs/README.md +37 -0
  836. package/packages/svs/package.json +21 -0
  837. package/packages/svs/src/activation.ts +11 -0
  838. package/packages/svs/src/format.ts +16 -0
  839. package/packages/svs/src/frontend.ts +33 -0
  840. package/packages/svs/src/index.ts +5 -0
  841. package/packages/svs/src/manifest.ts +17 -0
  842. package/packages/svs/src/parser.ts +279 -0
  843. package/packages/svs/src/types.ts +26 -0
  844. package/packages/temporal/README.md +31 -0
  845. package/packages/temporal/package.json +20 -0
  846. package/packages/temporal/src/activation.ts +9 -0
  847. package/packages/temporal/src/component.ts +68 -0
  848. package/packages/temporal/src/index.ts +110 -0
  849. package/packages/temporal/src/location.ts +67 -0
  850. package/packages/temporal/src/projection.ts +280 -0
  851. package/packages/temporal/src/rational.ts +80 -0
  852. package/packages/temporal/src/sample.ts +43 -0
  853. package/packages/temporal/src/schedule.ts +52 -0
  854. package/packages/temporal/src/types.ts +124 -0
  855. package/packages/temporal-markup/README.md +75 -0
  856. package/packages/temporal-markup/package.json +18 -0
  857. package/packages/temporal-markup/src/index.ts +537 -0
  858. package/packages/temporal-markup/src/space.ts +59 -0
  859. package/packages/text/README.md +59 -0
  860. package/packages/text/package.json +21 -0
  861. package/packages/text/src/activation.ts +33 -0
  862. package/packages/text/src/component.ts +72 -0
  863. package/packages/text/src/fragment.ts +57 -0
  864. package/packages/text/src/frontend.ts +39 -0
  865. package/packages/text/src/index.ts +27 -0
  866. package/packages/text/src/manifest.ts +170 -0
  867. package/packages/text/src/program.ts +418 -0
  868. package/packages/text/src/surface.ts +212 -0
  869. package/packages/text/src/svs.ts +189 -0
  870. package/packages/text/src/types.ts +82 -0
  871. package/packages/transport-aws-lambda/README.md +20 -0
  872. package/packages/transport-aws-lambda/package.json +14 -0
  873. package/packages/transport-aws-lambda/src/index.ts +131 -0
  874. package/packages/typography-track/README.md +50 -0
  875. package/packages/typography-track/package.json +34 -0
  876. package/packages/typography-track/preview/Mask.png +0 -0
  877. package/packages/typography-track/preview/Track.png +0 -0
  878. package/packages/typography-track/src/activation.ts +36 -0
  879. package/packages/typography-track/src/component.ts +93 -0
  880. package/packages/typography-track/src/fragment.ts +30 -0
  881. package/packages/typography-track/src/index.ts +11 -0
  882. package/packages/typography-track/src/manifest.ts +556 -0
  883. package/packages/typography-track/src/program.ts +622 -0
  884. package/packages/typography-track/src/surface.ts +842 -0
  885. package/packages/typography-track/src/types.ts +109 -0
  886. package/packages/typography-track-studio/README.md +3 -0
  887. package/packages/typography-track-studio/package.json +14 -0
  888. package/packages/typography-track-studio/src/activation.ts +7 -0
  889. package/packages/typography-track-studio/src/index.ts +116 -0
  890. package/packages/validation/README.md +11 -0
  891. package/packages/validation/package.json +15 -0
  892. package/packages/validation/src/index.ts +100 -0
  893. package/packages/video-cli/README.md +181 -0
  894. package/packages/video-cli/package.json +37 -0
  895. package/packages/video-cli/src/capture.ts +174 -0
  896. package/packages/video-cli/src/cli.ts +109 -0
  897. package/packages/video-cli/src/compiler.ts +32 -0
  898. package/packages/video-cli/src/creation.ts +449 -0
  899. package/packages/video-cli/src/distribution.ts +88 -0
  900. package/packages/video-cli/src/index.ts +50 -0
  901. package/packages/video-cli/src/media.ts +701 -0
  902. package/packages/video-cli/src/package-selection.ts +34 -0
  903. package/packages/video-cli/src/process.ts +71 -0
  904. package/packages/video-cli/src/studio-distribution.ts +19 -0
  905. package/packages/video-cli/src/transcript.ts +71 -0
  906. package/packages/video-cli/src/vocabulary.ts +386 -0
  907. package/packages/visual-ir/README.md +36 -0
  908. package/packages/visual-ir/package.json +16 -0
  909. package/packages/visual-ir/src/activation.ts +3 -0
  910. package/packages/visual-ir/src/index.ts +7 -0
  911. package/packages/visual-ir/src/style.ts +222 -0
  912. package/packages/volcengine-matting/README.md +89 -0
  913. package/packages/volcengine-matting/package.json +16 -0
  914. package/packages/volcengine-matting/src/activation.ts +13 -0
  915. package/packages/volcengine-matting/src/index.ts +45 -0
  916. package/packages/volcengine-matting/src/surface.ts +48 -0
  917. package/packages/whisperx/README.md +34 -0
  918. package/packages/whisperx/package.json +28 -0
  919. package/packages/whisperx/src/activation.ts +18 -0
  920. package/packages/whisperx/src/component.ts +64 -0
  921. package/packages/whisperx/src/evidence.ts +69 -0
  922. package/packages/whisperx/src/fragment.ts +76 -0
  923. package/packages/whisperx/src/index.ts +14 -0
  924. package/packages/whisperx/src/manifest.ts +92 -0
  925. package/packages/whisperx/src/surface.ts +90 -0
  926. package/packages/whisperx/src/transcript.ts +97 -0
  927. package/packages/whisperx/src/types.ts +9 -0
  928. package/packages/workspace/README.md +4 -0
  929. package/packages/workspace/package.json +14 -0
  930. package/packages/workspace/src/index.ts +38 -0
  931. package/packages/workspace-fs-node/README.md +13 -0
  932. package/packages/workspace-fs-node/package.json +15 -0
  933. package/packages/workspace-fs-node/src/index.ts +6 -0
  934. package/packages/workspace-fs-node/src/workspace.ts +226 -0
  935. package/packages/yt-dlp/README.md +31 -0
  936. package/packages/yt-dlp/package.json +10 -0
  937. package/packages/yt-dlp/src/download.ts +104 -0
  938. package/packages/yt-dlp/src/index.ts +1 -0
  939. package/services/image-opencv/README.md +33 -0
  940. package/services/image-opencv/package.json +14 -0
  941. package/services/image-opencv/pyproject.toml +13 -0
  942. package/services/image-opencv/uv.lock +56 -0
  943. package/services/whisperx/README.md +82 -0
  944. package/services/whisperx/package.json +15 -0
  945. package/services/whisperx/pyproject.toml +26 -0
  946. package/services/whisperx/src/hypit_whisperx_service/__init__.py +6 -0
  947. package/services/whisperx/src/hypit_whisperx_service/__main__.py +29 -0
  948. package/services/whisperx/src/hypit_whisperx_service/application.py +88 -0
  949. package/services/whisperx/src/hypit_whisperx_service/audio.py +66 -0
  950. package/services/whisperx/src/hypit_whisperx_service/check.py +35 -0
  951. package/services/whisperx/src/hypit_whisperx_service/config.py +81 -0
  952. package/services/whisperx/src/hypit_whisperx_service/engine.py +173 -0
  953. package/services/whisperx/src/hypit_whisperx_service/prepare.py +19 -0
  954. package/services/whisperx/src/hypit_whisperx_service/resources.py +41 -0
  955. package/services/whisperx/src/hypit_whisperx_service/server.py +101 -0
  956. package/services/whisperx/uv.lock +3381 -0
  957. package/services/yt-dlp/README.md +19 -0
  958. package/services/yt-dlp/package.json +14 -0
  959. package/services/yt-dlp/pyproject.toml +13 -0
  960. package/services/yt-dlp/uv.lock +23 -0
  961. package/index.js +0 -1
@@ -0,0 +1,807 @@
1
+ import { temporalContextAttributeVocabulary } from "@hypit/temporal-markup";
2
+ import { readFile } from "node:fs/promises";
3
+
4
+ import { artifactDependency } from "@hypit/artifact";
5
+ import { compositionDependency, compositionTypes } from "@hypit/composition";
6
+ import { mediaDependency, mediaTypes } from "@hypit/media";
7
+ import { narrativeDependency, narrativeTypes } from "@hypit/narrative";
8
+ import { programSpaceDependency, programSpaceTypes } from "@hypit/program-space";
9
+ import type { ModuleManifest, ProducerRef, TypeRef, ValueSchema } from "@hypit/protocol";
10
+ import { semanticTrackDependency } from "@hypit/semantic-track";
11
+ import { spatialDependency, spatialFrameSchema, spatialTypes } from "@hypit/spatial";
12
+ import { svsRecipeType } from "@hypit/svs";
13
+ import { temporalDependency, temporalInstantSchema, temporalTypes, temporalWindowSchema } from "@hypit/temporal";
14
+ import { temporalInstantAttributeVocabulary } from "@hypit/temporal-markup";
15
+ import { textDependency, textTypes } from "@hypit/text";
16
+
17
+ const previewImage = (file: string, mediaType = "image/png") => ({
18
+ mediaType,
19
+ path: `preview/${file}`,
20
+ open: async () => Uint8Array.from(await readFile(new URL(`../preview/${file}`, import.meta.url))),
21
+ });
22
+
23
+ export const rankingModuleRef = { name: "@hypit/ranking", version: "1" } as const;
24
+ export const rankingTypes = {
25
+ header: { module: rankingModuleRef, name: "RankingHeader" },
26
+ itemSpec: { module: rankingModuleRef, name: "RankingItemSpec" },
27
+ textItemShell: { module: rankingModuleRef, name: "RankingTextItemShell" },
28
+ itemSpecs: { module: rankingModuleRef, name: "RankingItemSpecSet" },
29
+ triggeredCandidates: { module: rankingModuleRef, name: "TriggeredRankingCandidateSet" },
30
+ tierWindows: { module: rankingModuleRef, name: "TierBoardWindowSet" },
31
+ columnWindows: { module: rankingModuleRef, name: "ColumnWindowSet" },
32
+ schedule: { module: rankingModuleRef, name: "RankingSchedule" },
33
+ soundStyle: { module: rankingModuleRef, name: "RankingSoundStyle" },
34
+ soundEvents: { module: rankingModuleRef, name: "RankingSoundEventPlan" },
35
+ sounds: { module: rankingModuleRef, name: "RankingSoundSet" },
36
+ tierStyle: { module: rankingModuleRef, name: "TierBoardStyle" },
37
+ columnStyle: { module: rankingModuleRef, name: "ColumnStyle" },
38
+ topThreeStyle: { module: rankingModuleRef, name: "TopThreeStyle" },
39
+ tierItems: { module: rankingModuleRef, name: "TierBoardItemSet" },
40
+ columnItems: { module: rankingModuleRef, name: "ColumnItemSet" },
41
+ topThreeItems: { module: rankingModuleRef, name: "TopThreeItemSet" },
42
+ tierProgram: { module: rankingModuleRef, name: "TierBoardProgram" },
43
+ columnProgram: { module: rankingModuleRef, name: "ColumnProgram" },
44
+ topThreeProgram: { module: rankingModuleRef, name: "TopThreeProgram" },
45
+ } satisfies Record<string, TypeRef>;
46
+
47
+ export const rankingProducers = {
48
+ createSpecs: { module: rankingModuleRef, name: "create-ranking-item-specs" },
49
+ appendSpec: { module: rankingModuleRef, name: "append-ranking-item-spec" },
50
+ createTriggeredCandidates: { module: rankingModuleRef, name: "create-triggered-ranking-candidates" },
51
+ appendTriggeredCandidate: { module: rankingModuleRef, name: "append-triggered-ranking-candidate" },
52
+ schedule: { module: rankingModuleRef, name: "build-ranking-schedule" },
53
+ createTierWindows: { module: rankingModuleRef, name: "create-tier-board-windows" },
54
+ appendTierWindow: { module: rankingModuleRef, name: "append-tier-board-window" },
55
+ tierSchedule: { module: rankingModuleRef, name: "build-tier-board-schedule" },
56
+ createColumnWindows: { module: rankingModuleRef, name: "create-column-windows" },
57
+ appendColumnWindow: { module: rankingModuleRef, name: "append-column-window" },
58
+ columnSchedule: { module: rankingModuleRef, name: "build-column-schedule" },
59
+ createTierItems: { module: rankingModuleRef, name: "create-tier-board-items" },
60
+ appendTierItem: { module: rankingModuleRef, name: "append-tier-board-item" },
61
+ createColumnItems: { module: rankingModuleRef, name: "create-column-items" },
62
+ appendColumnItem: { module: rankingModuleRef, name: "append-column-item" },
63
+ appendColumnIconItem: { module: rankingModuleRef, name: "append-column-icon-item" },
64
+ createTopThreeItems: { module: rankingModuleRef, name: "create-top-three-items" },
65
+ appendTopThreeItem: { module: rankingModuleRef, name: "append-top-three-item" },
66
+ appendTopThreeIconItem: { module: rankingModuleRef, name: "append-top-three-icon-item" },
67
+ tierProgram: { module: rankingModuleRef, name: "build-tier-board-program" },
68
+ columnProgram: { module: rankingModuleRef, name: "build-column-program" },
69
+ topThreeProgram: { module: rankingModuleRef, name: "build-top-three-program" },
70
+ tierEvents: { module: rankingModuleRef, name: "build-tier-board-sound-events" },
71
+ columnEvents: { module: rankingModuleRef, name: "build-column-sound-events" },
72
+ topThreeEvents: { module: rankingModuleRef, name: "build-top-three-sound-events" },
73
+ createSounds: { module: rankingModuleRef, name: "create-ranking-sounds" },
74
+ appendAppearSound: { module: rankingModuleRef, name: "append-ranking-appear-sound" },
75
+ appendMoveSound: { module: rankingModuleRef, name: "append-ranking-move-sound" },
76
+ renderAudio: { module: rankingModuleRef, name: "render-ranking-audio" },
77
+ renderTier: { module: rankingModuleRef, name: "render-tier-board" },
78
+ renderColumn: { module: rankingModuleRef, name: "render-column" },
79
+ renderTopThree: { module: rankingModuleRef, name: "render-top-three" },
80
+ materializeTextItem: { module: rankingModuleRef, name: "materialize-text-item" },
81
+ } satisfies Record<string, ProducerRef>;
82
+
83
+ const string = { kind: "string", minLength: 1 } as const;
84
+ const integer = { kind: "number", integer: true } as const;
85
+ const unsigned = { kind: "number", integer: true, minimum: 0 } as const;
86
+ const object = (fields: Readonly<Record<string, { readonly schema: ValueSchema; readonly optional?: boolean }>>, allowUnknown = false): ValueSchema => ({
87
+ kind: "object", fields, ...(allowUnknown ? { allowUnknown: true } : {}),
88
+ });
89
+ const recipeColor = { kind: "string", format: "color", minLength: 7, maxLength: 9 } as const satisfies ValueSchema;
90
+ const rankingRecipeSchemas = {
91
+ rows: { kind: "array", minItems: 1, items: object({
92
+ id: { schema: { kind: "string", minLength: 1 } },
93
+ label: { schema: { kind: "string", minLength: 1 } },
94
+ color: { schema: recipeColor },
95
+ }) },
96
+ "rank-colors": { kind: "array", minItems: 1, items: recipeColor },
97
+ "slot-colors": { kind: "array", minItems: 3, maxItems: 3, items: recipeColor },
98
+ "font-size": { kind: "number", minimum: 0 },
99
+ "font-weight": { kind: "number", integer: true, minimum: 1 },
100
+ "text-color": recipeColor,
101
+ "label-text-color": recipeColor,
102
+ "label-size": { kind: "number", minimum: 0 },
103
+ "line-height": { kind: "number", minimum: 0 },
104
+ "board-background": recipeColor,
105
+ "board-border-color": recipeColor,
106
+ "board-border-width": { kind: "number", minimum: 0 },
107
+ "board-radius": { kind: "number", minimum: 0 },
108
+ "board-shadow-x": { kind: "number" },
109
+ "board-shadow-y": { kind: "number" },
110
+ "board-shadow-blur": { kind: "number", minimum: 0 },
111
+ "board-shadow-spread": { kind: "number" },
112
+ "board-shadow-color": recipeColor,
113
+ "appear-frames": { kind: "number", integer: true, minimum: 1 },
114
+ "move-frames": { kind: "number", integer: true, minimum: 1 },
115
+ "motion-easing": { kind: "string", enum: ["linear", "ease-in", "ease-out", "ease-in-out"] },
116
+ "label-width": { kind: "number", minimum: 0.08, maximum: 0.3 },
117
+ "icon-radius-ratio": { kind: "number", minimum: 0 },
118
+ padding: { kind: "number", minimum: 0 },
119
+ "row-height": { kind: "number", minimum: 0 },
120
+ "row-gap": { kind: "number", minimum: 0 },
121
+ "cell-gap": { kind: "number", minimum: 0 },
122
+ "icon-size": { kind: "number", minimum: 0 },
123
+ "icon-radius": { kind: "number", minimum: 0 },
124
+ "icon-fit": { kind: "string", enum: ["contain", "cover"] },
125
+ "stage-x": { kind: "number", minimum: 0, maximum: 1 },
126
+ "stage-y": { kind: "number", minimum: 0, maximum: 1 },
127
+ "stage-size": { kind: "number", minimum: 0 },
128
+ "center-x": { kind: "number" },
129
+ "baseline-y": { kind: "number" },
130
+ "slot-gap": { kind: "number", minimum: 0 },
131
+ "ring-width": { kind: "number", minimum: 0 },
132
+ "label-gap": { kind: "number", minimum: 0 },
133
+ "board-stack": { kind: "number", integer: true },
134
+ "stage-stack": { kind: "number", integer: true },
135
+ "item-stack": { kind: "number", integer: true },
136
+ "appear-gain": { kind: "number", minimum: 0 },
137
+ "move-gain": { kind: "number", minimum: 0 },
138
+ "sound-fade-frames": { kind: "number", integer: true, minimum: 0 },
139
+ } as const satisfies Readonly<Record<string, ValueSchema>>;
140
+
141
+ function typedRecipeProperties<const T extends readonly {
142
+ readonly name: string;
143
+ readonly required: boolean;
144
+ readonly summary: string;
145
+ readonly values?: readonly string[];
146
+ readonly fallback?: import("@hypit/protocol").CanonicalValue;
147
+ }[]>(properties: T) {
148
+ return properties.map((property) => {
149
+ const schema = rankingRecipeSchemas[property.name as keyof typeof rankingRecipeSchemas];
150
+ if (schema === undefined) throw new Error(`Ranking Recipe property ${property.name} has no public schema.`);
151
+ const fallback = schema.kind === "number" && typeof property.fallback === "string"
152
+ ? Number(property.fallback)
153
+ : property.fallback;
154
+ return {
155
+ ...property,
156
+ schema,
157
+ ...(fallback === undefined ? {} : { fallback }),
158
+ };
159
+ });
160
+ }
161
+ const variants = { kind: "string", enum: ["tier-board", "column", "top-three"] } as const;
162
+ const itemBase = {
163
+ id: { schema: string },
164
+ stackingOrder: { schema: integer, optional: true },
165
+ } as const;
166
+ export const rankingHeaderSchema: ValueSchema = object({
167
+ id: { schema: string }, variant: { schema: variants },
168
+ });
169
+ export const rankingItemSpecSchema: ValueSchema = { kind: "oneOf", variants: [
170
+ object({ variant: { schema: { kind: "literal", value: "tier-board" } }, ...itemBase,
171
+ tier: { schema: string }, preset: { schema: { kind: "literal", value: true } },
172
+ }),
173
+ object({ variant: { schema: { kind: "literal", value: "tier-board" } }, ...itemBase,
174
+ tier: { schema: string }, preset: { schema: { kind: "literal", value: false } }, entry: { schema: { kind: "string", enum: ["direct", "drop"] } },
175
+ }),
176
+ object({ variant: { schema: { kind: "literal", value: "column" } }, ...itemBase,
177
+ label: { schema: string }, rank: { schema: { kind: "number", integer: true, minimum: 1 } }, preset: { schema: { kind: "boolean" } },
178
+ }),
179
+ object({ variant: { schema: { kind: "literal", value: "top-three" } }, ...itemBase, label: { schema: string } }),
180
+ ] };
181
+ export const rankingTextItemShellSchema: ValueSchema = { kind: "oneOf", variants: [
182
+ object({ variant: { schema: { kind: "literal", value: "column" } }, ...itemBase,
183
+ rank: { schema: { kind: "number", integer: true, minimum: 1 } }, preset: { schema: { kind: "boolean" } },
184
+ }),
185
+ object({ variant: { schema: { kind: "literal", value: "top-three" } }, ...itemBase }),
186
+ ] };
187
+ export const rankingItemSpecSetSchema: ValueSchema = object({
188
+
189
+ variant: { schema: variants }, items: { schema: { kind: "array", items: rankingItemSpecSchema } },
190
+ });
191
+ const frameSpan = object({ startFrame: { schema: unsigned }, endFrameExclusive: { schema: unsigned } });
192
+ export const triggeredRankingCandidateSetSchema: ValueSchema = object({
193
+ entries: { schema: { kind: "array", items: object({
194
+ itemId: { schema: string }, activation: { schema: temporalInstantSchema },
195
+ }) } },
196
+ });
197
+ export const rankingWindowSetSchema: ValueSchema = object({
198
+ entries: { schema: { kind: "array", items: object({
199
+ itemId: { schema: string }, window: { schema: temporalWindowSchema },
200
+ }) } },
201
+ });
202
+ export const tierBoardWindowSetSchema = rankingWindowSetSchema;
203
+ export const columnWindowSetSchema = rankingWindowSetSchema;
204
+ const triggeredScheduleSchema: ValueSchema = object({
205
+ id: { schema: string },
206
+ variant: { schema: { kind: "literal", value: "top-three" } },
207
+ outer: { schema: frameSpan }, terminalFrame: { schema: unsigned },
208
+ entries: { schema: { kind: "array", minItems: 1, items: object({
209
+ itemId: { schema: string }, triggerFrame: { schema: unsigned },
210
+ stage: { schema: frameSpan }, cumulative: { schema: frameSpan }, settled: { schema: frameSpan },
211
+ }) } },
212
+ });
213
+ const windowedScheduleSchema = (variant: "tier-board" | "column"): ValueSchema => object({
214
+ id: { schema: string }, variant: { schema: { kind: "literal", value: variant } }, outer: { schema: frameSpan },
215
+ entries: { schema: { kind: "array", minItems: 1, items: { kind: "oneOf", variants: [
216
+ object({ itemId: { schema: string }, mode: { schema: { kind: "literal", value: "preset" } }, settled: { schema: frameSpan } }),
217
+ object({ itemId: { schema: string }, mode: { schema: { kind: "literal", value: "reveal" } },
218
+ window: { schema: frameSpan }, settled: { schema: frameSpan },
219
+ }),
220
+ ] } } },
221
+ });
222
+ export const rankingScheduleSchema: ValueSchema = { kind: "oneOf", variants: [
223
+ triggeredScheduleSchema, windowedScheduleSchema("tier-board"), windowedScheduleSchema("column"),
224
+ ] };
225
+ const styleSchema = (): ValueSchema => object({}, true);
226
+ const setSchema = (): ValueSchema => object({
227
+ items: { schema: { kind: "array", items: object({}, true) } },
228
+ });
229
+ const programSchema = (): ValueSchema => object({
230
+ id: { schema: string }, frame: { schema: spatialFrameSchema },
231
+ schedule: { schema: rankingScheduleSchema }, style: { schema: object({}, true) }, items: { schema: { kind: "array", minItems: 1, items: object({}, true) } },
232
+ }, true);
233
+ export const rankingSoundStyleSchema = styleSchema();
234
+ export const rankingSoundEventsSchema: ValueSchema = object({
235
+ id: { schema: string }, variant: { schema: variants },
236
+ events: { schema: { kind: "array", items: object({ id: { schema: string }, itemId: { schema: string }, kind: { schema: { kind: "string", enum: ["appear", "move"] } }, frame: { schema: unsigned } }) } },
237
+ });
238
+ export const rankingSoundSetSchema: ValueSchema = object({
239
+
240
+ appear: { schema: object({}, true), optional: true }, move: { schema: object({}, true), optional: true },
241
+ });
242
+ const programDefinitions = [
243
+ [rankingTypes.tierProgram, rankingTypes.tierStyle, rankingTypes.tierItems, rankingProducers.tierProgram, rankingProducers.tierEvents, rankingProducers.renderTier],
244
+ [rankingTypes.columnProgram, rankingTypes.columnStyle, rankingTypes.columnItems, rankingProducers.columnProgram, rankingProducers.columnEvents, rankingProducers.renderColumn],
245
+ [rankingTypes.topThreeProgram, rankingTypes.topThreeStyle, rankingTypes.topThreeItems, rankingProducers.topThreeProgram, rankingProducers.topThreeEvents, rankingProducers.renderTopThree],
246
+ ] as const;
247
+
248
+ const allRankingMarkupSurfaces = [
249
+ { name: "tier-style", tag: "TierBoardStyle", mode: "structured", outputs: [rankingTypes.tierStyle, rankingTypes.soundStyle],
250
+ vocabulary: {
251
+ summary: "Compiles one SVS Recipe and one exact font into the Style a TierBoard is drawn in, and the private sound Style it connects.",
252
+ attributes: [
253
+ { name: "id", kind: "identifier", required: true,
254
+ summary: "Names this Style so a TierBoard can reference it." },
255
+ { name: "recipe", kind: "reference", required: true, accepts: [svsRecipeType],
256
+ summary: "Chooses the Recipe carrying the tier rows, board Paint, row and cell geometry, icon treatment and entrance motion.",
257
+ recipe: typedRecipeProperties([
258
+ { name: "rows", required: false, fallback: [
259
+ { id: "s", label: "S", color: "#EE5F52" },
260
+ { id: "a", label: "A", color: "#F0A04C" },
261
+ { id: "b", label: "B", color: "#F0C84D" },
262
+ { id: "c", label: "C", color: "#EDE356" },
263
+ { id: "d", label: "D", color: "#A6DA7B" },
264
+ ], summary: "Defines the ordered tier rows the board draws, each with an id, label and color." },
265
+ { name: "label-text-color", required: false, fallback: "#2c2c2c",
266
+ summary: "Sets the color of the row letters." },
267
+ { name: "label-size", required: false, fallback: "0.3",
268
+ summary: "Sets each row letter's size as a fraction of the row height." },
269
+ { name: "line-height", required: false, fallback: "1",
270
+ summary: "Sets the row letter line height as a multiple of its size." },
271
+ { name: "board-background", required: false, fallback: "#2b2b30",
272
+ summary: "Sets the grey content area behind the placed icons." },
273
+ { name: "board-border-color", required: false, fallback: "#111315",
274
+ summary: "Sets the continuous grid-line color around and between the tier rows." },
275
+ { name: "board-border-width", required: false, fallback: "3",
276
+ summary: "Sets the grid-line width in pixels." },
277
+ { name: "label-width", required: false,
278
+ summary: "Overrides the label column width as a fraction of the board Frame width; when absent it is derived from row height." },
279
+ { name: "stage-x", required: false, fallback: "0.2",
280
+ summary: "Places the independent explanation stage horizontally as a fraction of the Canvas width." },
281
+ { name: "stage-y", required: false, fallback: "0.3",
282
+ summary: "Places the independent explanation stage vertically as a fraction of the Canvas height." },
283
+ { name: "stage-size", required: false, fallback: "168",
284
+ summary: "Sets the staged Item size in Canvas pixels independently from its settled tier cell." },
285
+ { name: "icon-radius-ratio", required: false, fallback: "0.12",
286
+ summary: "Sets icon corner radius as a fraction of one tier row's height." },
287
+ { name: "icon-fit", required: false, fallback: "cover",
288
+ values: ["contain", "cover"],
289
+ summary: "Decides whether an Item's icon fits inside its box or fills it." },
290
+ { name: "appear-frames", required: false, fallback: "8",
291
+ summary: "Sets the quick in-place scale-and-fade entrance duration for both entry modes." },
292
+ { name: "move-frames", required: false, fallback: "14",
293
+ summary: "Sets the final eased curved glide duration of a staged Item; it always ends at the Item window's end." },
294
+ { name: "board-stack", required: false, fallback: "20",
295
+ summary: "Sets the draw order the board itself is placed at." },
296
+ { name: "stage-stack", required: false, fallback: "25",
297
+ summary: "Sets the draw order a drop Item uses while it occupies the independent stage." },
298
+ { name: "item-stack", required: false, fallback: "30",
299
+ summary: "Sets the draw order every Item is placed at, unless the Item overrides it." },
300
+ { name: "appear-gain", required: false, fallback: "1",
301
+ summary: "Sets the gain the appear sound is played at." },
302
+ { name: "move-gain", required: false, fallback: "1",
303
+ summary: "Sets the gain the move sound is played at." },
304
+ { name: "sound-fade-frames", required: false, fallback: "0",
305
+ summary: "Sets how many frames each sound fades in and out over." },
306
+ ]) },
307
+ { name: "font", kind: "reference", required: true,
308
+ accepts: [mediaTypes.fontArtifact, mediaTypes.fontStack],
309
+ summary: "Chooses the exact face, or a whole stack that already carries its own fallbacks, the board copy is set in." },
310
+ ],
311
+ ports: [
312
+ { name: "", type: rankingTypes.tierStyle,
313
+ summary: "The compiled visual Style, addressed by the element's own id." },
314
+ { name: "sound", type: rankingTypes.soundStyle,
315
+ summary: "The compiled sound Style, connected only when the board authors a sound." },
316
+ ],
317
+ example: `<ranking:TierBoardStyle id="tier-style" recipe={recipes.ranking.tier} font={ui-font}/>`,
318
+ notes: [
319
+ "The element is empty; it accepts no children and no text.",
320
+ "The Recipe is validated against the variant, so a Recipe holding another board's keys is refused by name.",
321
+ "The Recipe accepts exactly the properties listed here; every other property is refused by name.",
322
+ "Tier row ids, labels and colors are Recipe configuration, because they define the board vocabulary rather than item copy.",
323
+ ],
324
+ } },
325
+ { name: "column-style", tag: "ColumnStyle", mode: "structured", outputs: [rankingTypes.columnStyle, rankingTypes.soundStyle],
326
+ vocabulary: {
327
+ summary: "Compiles one SVS Recipe and one exact font into the Style a Column is drawn in, and the private sound Style it connects.",
328
+ attributes: [
329
+ { name: "id", kind: "identifier", required: true,
330
+ summary: "Names this Style so a Column can reference it." },
331
+ { name: "recipe", kind: "reference", required: true, accepts: [svsRecipeType],
332
+ summary: "Chooses the Recipe carrying the rank colors, board Paint, row geometry, icon treatment, staging pose and motion.",
333
+ recipe: typedRecipeProperties([
334
+ { name: "rank-colors", required: false, fallback: ["#facc15", "#d1d5db", "#fb923c", "#60a5fa", "#a78bfa"],
335
+ summary: "Defines the ordered colors rank badges use, cycling after the last color." },
336
+ { name: "font-size", required: false, fallback: "28",
337
+ summary: "Sets the size in pixels the row copy is set at." },
338
+ { name: "font-weight", required: false, fallback: "700",
339
+ summary: "Sets the weight the row copy is set at." },
340
+ { name: "text-color", required: false, fallback: "#ffffff",
341
+ summary: "Sets the color the row copy is drawn in." },
342
+ { name: "line-height", required: false, fallback: "1.15",
343
+ summary: "Sets the line height the row copy is set on, as a multiple of its size." },
344
+ { name: "board-background", required: false, fallback: "#151821",
345
+ summary: "Sets the color the board fills with." },
346
+ { name: "board-border-color", required: false, fallback: "#ffffff33",
347
+ summary: "Sets the color of the board's border." },
348
+ { name: "board-border-width", required: false, fallback: "1",
349
+ summary: "Sets the width in pixels of the board's border." },
350
+ { name: "board-radius", required: false, fallback: "18",
351
+ summary: "Sets the corner radius in pixels of the board." },
352
+ { name: "board-shadow-x", required: false, fallback: "0",
353
+ summary: "Offsets the board's shadow horizontally in pixels." },
354
+ { name: "board-shadow-y", required: false, fallback: "10",
355
+ summary: "Offsets the board's shadow vertically in pixels." },
356
+ { name: "board-shadow-blur", required: false, fallback: "24",
357
+ summary: "Sets the blur radius in pixels of the board's shadow." },
358
+ { name: "board-shadow-spread", required: false, fallback: "0",
359
+ summary: "Sets the spread in pixels of the board's shadow." },
360
+ { name: "board-shadow-color", required: false, fallback: "#00000066",
361
+ summary: "Sets the color of the board's shadow." },
362
+ { name: "appear-frames", required: false, fallback: "6",
363
+ summary: "Sets how many frames a row takes to appear." },
364
+ { name: "move-frames", required: false, fallback: "8",
365
+ summary: "Sets how many frames a staged row takes to move into the column." },
366
+ { name: "motion-easing", required: false, fallback: "ease-in-out",
367
+ values: ["linear", "ease-in", "ease-out", "ease-in-out"],
368
+ summary: "Selects the easing both the appearance and the move are timed with." },
369
+ { name: "padding", required: false, fallback: "18",
370
+ summary: "Sets the inset in pixels between the board's edge and its rows." },
371
+ { name: "row-height", required: false, fallback: "74",
372
+ summary: "Sets the height in pixels of one row." },
373
+ { name: "row-gap", required: false, fallback: "10",
374
+ summary: "Sets the gap in pixels between rows." },
375
+ { name: "icon-size", required: false, fallback: "58",
376
+ summary: "Sets the size in pixels a row's icon is drawn at." },
377
+ { name: "icon-radius", required: false, fallback: "10",
378
+ summary: "Sets the corner radius in pixels of a row's icon." },
379
+ { name: "icon-fit", required: false, fallback: "cover",
380
+ values: ["contain", "cover"],
381
+ summary: "Decides whether a row's icon fits inside its box or fills it." },
382
+ { name: "stage-x", required: false, fallback: "0.5",
383
+ summary: "Places the staging point horizontally, as a fraction of the Frame's width." },
384
+ { name: "stage-y", required: false, fallback: "0.24",
385
+ summary: "Places the staging point vertically, as a fraction of the Frame's height." },
386
+ { name: "stage-size", required: false, fallback: "132",
387
+ summary: "Sets the size in pixels a staged row is drawn at before it moves in." },
388
+ { name: "board-stack", required: false, fallback: "20",
389
+ summary: "Sets the draw order the board itself is placed at." },
390
+ { name: "stage-stack", required: false, fallback: "25",
391
+ summary: "Sets the draw order the staging area is placed at." },
392
+ { name: "item-stack", required: false, fallback: "30",
393
+ summary: "Sets the draw order every row is placed at, unless the Item overrides it." },
394
+ { name: "appear-gain", required: false, fallback: "1",
395
+ summary: "Sets the gain the appear sound is played at." },
396
+ { name: "move-gain", required: false, fallback: "1",
397
+ summary: "Sets the gain the move sound is played at." },
398
+ { name: "sound-fade-frames", required: false, fallback: "0",
399
+ summary: "Sets how many frames each sound fades in and out over." },
400
+ ]) },
401
+ { name: "font", kind: "reference", required: true,
402
+ accepts: [mediaTypes.fontArtifact, mediaTypes.fontStack],
403
+ summary: "Chooses the exact face, or a whole stack that already carries its own fallbacks, the board copy is set in." },
404
+ ],
405
+ ports: [
406
+ { name: "", type: rankingTypes.columnStyle,
407
+ summary: "The compiled visual Style, addressed by the element's own id." },
408
+ { name: "sound", type: rankingTypes.soundStyle,
409
+ summary: "The compiled sound Style, connected only when the board authors a sound." },
410
+ ],
411
+ example: `<ranking:ColumnStyle id="board-style" recipe={recipes.ranking.board} font={ui-font}/>`,
412
+ notes: [
413
+ "The element is empty; it accepts no children and no text.",
414
+ "The Recipe is validated against the variant, so a Recipe holding another board's keys is refused by name.",
415
+ "The Recipe accepts exactly the properties listed here; every other property is refused by name.",
416
+ ],
417
+ } },
418
+ { name: "top-three-style", tag: "TopThreeStyle", mode: "structured", outputs: [rankingTypes.topThreeStyle, rankingTypes.soundStyle],
419
+ vocabulary: {
420
+ summary: "Compiles one SVS Recipe and one exact font into the Style a TopThree is drawn in, and the private sound Style it connects.",
421
+ attributes: [
422
+ { name: "id", kind: "identifier", required: true,
423
+ summary: "Names this Style so a TopThree can reference it." },
424
+ { name: "recipe", kind: "reference", required: true, accepts: [svsRecipeType],
425
+ summary: "Chooses the Recipe carrying the slot colors, podium geometry, ring and label spacing, board Paint and motion.",
426
+ recipe: typedRecipeProperties([
427
+ { name: "slot-colors", required: false, fallback: ["#facc15", "#d1d5db", "#fb923c"],
428
+ summary: "Defines the three ordered colors used by the three podium slots." },
429
+ { name: "font-size", required: false, fallback: "28",
430
+ summary: "Sets the size in pixels the slot copy is set at." },
431
+ { name: "font-weight", required: false, fallback: "700",
432
+ summary: "Sets the weight the slot copy is set at." },
433
+ { name: "text-color", required: false, fallback: "#ffffff",
434
+ summary: "Sets the color the slot copy is drawn in, before the slot's own color replaces it." },
435
+ { name: "line-height", required: false, fallback: "1.15",
436
+ summary: "Sets the line height the slot copy is set on, as a multiple of its size." },
437
+ { name: "center-x", required: false, fallback: "0.5",
438
+ summary: "Places the podium's center horizontally, as a fraction of the Frame's width." },
439
+ { name: "baseline-y", required: false, fallback: "0.55",
440
+ summary: "Places the podium's baseline vertically, as a fraction of the Frame's height." },
441
+ { name: "slot-gap", required: false, fallback: "24",
442
+ summary: "Sets the gap in pixels between podium slots." },
443
+ { name: "icon-size", required: false, fallback: "104",
444
+ summary: "Sets the size in pixels a slot's icon is drawn at." },
445
+ { name: "icon-radius", required: false, fallback: "52",
446
+ summary: "Sets the corner radius in pixels of a slot's icon." },
447
+ { name: "icon-fit", required: false, fallback: "cover",
448
+ values: ["contain", "cover"],
449
+ summary: "Decides whether a slot's icon fits inside its box or fills it." },
450
+ { name: "ring-width", required: false, fallback: "5",
451
+ summary: "Sets the width in pixels of the ring drawn around a slot." },
452
+ { name: "label-gap", required: false, fallback: "12",
453
+ summary: "Sets the gap in pixels between a slot's icon and its label." },
454
+ { name: "appear-frames", required: false, fallback: "6",
455
+ summary: "Sets how many frames a slot takes to appear." },
456
+ { name: "move-frames", required: false, fallback: "8",
457
+ summary: "Sets how many frames a move is timed over, though a podium never moves a slot." },
458
+ { name: "motion-easing", required: false, fallback: "ease-in-out",
459
+ values: ["linear", "ease-in", "ease-out", "ease-in-out"],
460
+ summary: "Selects the easing the appearance is timed with." },
461
+ { name: "board-stack", required: false, fallback: "20",
462
+ summary: "Sets the draw order the empty podium is placed at." },
463
+ { name: "item-stack", required: false, fallback: "30",
464
+ summary: "Sets the draw order every filled slot is placed at, unless the Item overrides it." },
465
+ { name: "appear-gain", required: false, fallback: "1",
466
+ summary: "Sets the gain the appear sound is played at." },
467
+ { name: "move-gain", required: false, fallback: "1",
468
+ summary: "Sets the gain a move sound would be played at, though a podium authors none." },
469
+ { name: "sound-fade-frames", required: false, fallback: "0",
470
+ summary: "Sets how many frames each sound fades in and out over." },
471
+ ]) },
472
+ { name: "font", kind: "reference", required: true,
473
+ accepts: [mediaTypes.fontArtifact, mediaTypes.fontStack],
474
+ summary: "Chooses the exact face, or a whole stack that already carries its own fallbacks, the board copy is set in." },
475
+ ],
476
+ ports: [
477
+ { name: "", type: rankingTypes.topThreeStyle,
478
+ summary: "The compiled visual Style, addressed by the element's own id." },
479
+ { name: "sound", type: rankingTypes.soundStyle,
480
+ summary: "The compiled sound Style, connected only when the board authors a sound." },
481
+ ],
482
+ example: `<ranking:TopThreeStyle id="podium-style" recipe={recipes.ranking.podium} font={ui-font}/>`,
483
+ notes: [
484
+ "The element is empty; it accepts no children and no text.",
485
+ "The Recipe is validated against the variant, so a Recipe holding another board's keys is refused by name.",
486
+ "The Recipe carries one color per podium slot, so a TopThree Style always resolves three of them.",
487
+ "Every other property is refused by name.",
488
+ ],
489
+ } },
490
+ { name: "tier", tag: "TierBoard", mode: "structured", outputs: [rankingTypes.header, rankingTypes.itemSpec, temporalTypes.instantSpec, temporalTypes.windowSpec, temporalTypes.instant, temporalTypes.window, rankingTypes.schedule, rankingTypes.tierProgram, compositionTypes.visualTrack, compositionTypes.audioTrack],
491
+ vocabulary: {
492
+ summary: "Places Items into tier rows from preset state or explicit reveal Selections, and publishes the board and the Tracks it renders to.",
493
+ appearance:
494
+ "The board occupies only its Frame: one continuous tier table with colored label cells, a dark content field and dark grid lines. An independent explanation stage is positioned in Canvas space. Preset tiles occupy the innermost cells from the first frame. Every other tile takes one explicit Segment or Selection window; sorting those disjoint windows gives the strict reveal order and fills each tier from inside to outside. Both entry modes appear in place with a quick overshoot and soft settle. A direct tile appears in its final cell. A drop tile appears on the stage, remains still while that Item is discussed, then follows an eased curved glide into its final cell during the window's last move interval. Every placed tile remains settled while later ones arrive.",
495
+ preview: previewImage("TierBoard.svg", "image/svg+xml"),
496
+ attributes: [
497
+ { name: "id", kind: "identifier", required: true,
498
+ summary: "Names this board so its Schedule, Program and Tracks can be referenced elsewhere in the Source." },
499
+ ...temporalContextAttributeVocabulary,
500
+ { name: "canvas", kind: "reference", required: true, accepts: [spatialTypes.canvas],
501
+ summary: "Chooses the Canvas coordinate space used by the independent explanation stage." },
502
+ { name: "frame", kind: "reference", required: true, accepts: [spatialTypes.frame],
503
+ summary: "Chooses the compact Frame occupied only by the tier table." },
504
+ { name: "during", kind: "expression", required: true, values: ["program"], accepts: [narrativeTypes.selection, narrativeTypes.excerpt],
505
+ summary: "Spans the complete film clock when written as program, or projects the referenced Segment or Selection into the board lifetime." },
506
+ { name: "style", kind: "reference", required: true, accepts: [rankingTypes.tierStyle],
507
+ summary: "Chooses the TierBoardStyle this board is drawn in, and only that variant's." },
508
+ { name: "appear-sound", kind: "reference", required: false, accepts: [mediaTypes.synchronized],
509
+ summary: "Chooses the Synchronized Medium played as each Item appears." },
510
+ { name: "move-sound", kind: "reference", required: false, accepts: [mediaTypes.synchronized],
511
+ summary: "Chooses the Synchronized Medium played when a drop Item leaves the independent stage near the end of its window." },
512
+ ],
513
+ children: [
514
+ { tag: "TierItem", cardinality: "many",
515
+ summary: "One icon tile of the board; it is either preset or owns one Segment or Selection reveal window and is empty.",
516
+ attributes: [
517
+ { name: "id", kind: "identifier", required: false,
518
+ summary: "Names this Item within the board; an omitted id is generated from the Item's position." },
519
+ { name: "tier", kind: "literal", required: true,
520
+ summary: "Chooses the row of the Style Recipe this Item is placed into." },
521
+ { name: "preset", kind: "literal", required: false, values: ["true", "false"],
522
+ summary: "Makes the Item occupy its tier from the start; a preset Item has no during or entry." },
523
+ { name: "entry", kind: "literal", required: false, values: ["direct", "drop"],
524
+ summary: "Chooses an in-place entrance in the final cell or on the independent stage; a staged Item holds for the explanation, then glides into the tier at the window end. It is required for non-preset Items and forbidden for preset Items." },
525
+ { name: "icon", kind: "reference", required: true, accepts: [mediaTypes.blobArtifact],
526
+ summary: "Chooses the image drawn beside the Item." },
527
+ { name: "during", kind: "reference", required: false, accepts: [narrativeTypes.selection, narrativeTypes.excerpt],
528
+ summary: "Chooses this non-preset Item's exact Segment or Selection interval; all sibling intervals must be disjoint." },
529
+ { name: "stack", kind: "literal", required: false,
530
+ summary: "Overrides the Style's draw order for this Item alone." },
531
+ ] },
532
+ ],
533
+ ports: [
534
+ { name: "schedule", type: rankingTypes.schedule,
535
+ summary: "The resolved Schedule: preset occupancy plus each revealed Item's exact window and settled span." },
536
+ { name: "program", type: rankingTypes.tierProgram,
537
+ summary: "The resolved board: its Frame, Style, Schedule and ordered Items." },
538
+ { name: "visual", type: compositionTypes.visualTrack,
539
+ summary: "The rendered board, an ordinary peer VisualTrack." },
540
+ { name: "audio", type: compositionTypes.audioTrack,
541
+ summary: "The rendered board sound, published only when a sound is authored." },
542
+ ],
543
+ example: `<ranking:TierBoardStyle id="tier-style" recipe={recipes.ranking.tier} font={ui-font}/>
544
+ <ranking:TierBoard id="tiers" semantic={speech.semantic} canvas={vertical} frame={board-frame}
545
+ during="program"
546
+ style={tier-style}>
547
+ <ranking:TierItem id="row-regen" tier="s" preset="true" icon={icon-regen}/>
548
+ <ranking:TierItem id="row-remini" tier="a" entry="drop" icon={icon-remini} during={story.selection.remini}/>
549
+ </ranking:TierBoard>`,
550
+ notes: [
551
+ "The board requires at least one TierItem, accepts no other child and no text of its own, and Item ids must be unique within it.",
552
+ "Every non-preset Item consumes a non-empty Segment or Selection of at least two frames; windows must be inside the board and non-overlapping.",
553
+ "Preset Items occupy the inner cells in author order. Revealed Items follow in strict window order, independent of child order.",
554
+ "`move-sound` requires at least one TierItem written `entry=\"drop\"`; a sound with nothing to sound on is refused.",
555
+ "Authoring either sound also connects the Style's `.sound` output, so `style` must name a TierBoardStyle written in this Source.",
556
+ ],
557
+ } },
558
+ { name: "column", tag: "Column", mode: "structured", outputs: [rankingTypes.header, rankingTypes.itemSpec, rankingTypes.textItemShell, temporalTypes.instantSpec, temporalTypes.windowSpec, temporalTypes.instant, temporalTypes.window, rankingTypes.schedule, rankingTypes.columnProgram, compositionTypes.visualTrack, compositionTypes.audioTrack],
559
+ vocabulary: {
560
+ summary: "Places rows by explicit rank, reveals each non-preset row in its own Segment or Selection, and publishes the board and the Tracks it renders to.",
561
+ appearance:
562
+ "A narrow vertical rank rail occupies its Frame while a large reveal stage is positioned independently in Canvas space. Preset rows are settled from the first frame. Each other row rises into the stage during its own projected Segment or Selection, then shrinks and moves into the content slot beside its numbered rank. Rank, child order and reveal time are independent.",
563
+ preview: previewImage("Column.svg", "image/svg+xml"),
564
+ attributes: [
565
+ { name: "id", kind: "identifier", required: true,
566
+ summary: "Names this board so its Schedule, Program and Tracks can be referenced elsewhere in the Source." },
567
+ ...temporalContextAttributeVocabulary,
568
+ { name: "canvas", kind: "reference", required: true, accepts: [spatialTypes.canvas],
569
+ summary: "Chooses the Canvas coordinate space used by the independent reveal stage." },
570
+ { name: "frame", kind: "reference", required: true, accepts: [spatialTypes.frame],
571
+ summary: "Chooses the fixed Frame occupied by the vertical rank rail." },
572
+ { name: "during", kind: "expression", required: true, values: ["program"], accepts: [narrativeTypes.selection, narrativeTypes.excerpt],
573
+ summary: "Spans the complete film clock when written as program, or projects the referenced Segment or Selection into the Column lifetime." },
574
+ { name: "style", kind: "reference", required: true, accepts: [rankingTypes.columnStyle],
575
+ summary: "Chooses the ColumnStyle this board is drawn in, and only that variant's." },
576
+ { name: "appear-sound", kind: "reference", required: false, accepts: [mediaTypes.synchronized],
577
+ summary: "Chooses the Synchronized Medium played as each row appears." },
578
+ { name: "move-sound", kind: "reference", required: false, accepts: [mediaTypes.synchronized],
579
+ summary: "Chooses the Synchronized Medium played as a staged row moves into the settled column." },
580
+ ],
581
+ children: [
582
+ { tag: "ColumnItem", cardinality: "many",
583
+ summary: "One explicitly ranked row; it is either preset or owns one Segment or Selection reveal window.",
584
+ attributes: [
585
+ { name: "id", kind: "identifier", required: false,
586
+ summary: "Names this row within the board; an omitted id is generated from the row's position." },
587
+ { name: "label", kind: "expression", required: true, accepts: [textTypes.text],
588
+ summary: "Sets the row's copy, written literally or chosen from an existing Text." },
589
+ { name: "rank", kind: "literal", required: true,
590
+ summary: "Sets the positive rank number and final row position independently from reveal order." },
591
+ { name: "preset", kind: "literal", required: false, values: ["true", "false"],
592
+ summary: "Settles the row from the start of the outer window; defaults to false." },
593
+ { name: "during", kind: "reference", required: false, accepts: [narrativeTypes.selection, narrativeTypes.excerpt],
594
+ summary: "Chooses this row's Segment or Selection reveal window; required unless preset is true." },
595
+ { name: "icon", kind: "reference", required: false, accepts: [mediaTypes.blobArtifact],
596
+ summary: "Chooses the image drawn beside the row." },
597
+ { name: "stack", kind: "literal", required: false,
598
+ summary: "Overrides the Style's draw order for this row alone." },
599
+ ] },
600
+ ],
601
+ ports: [
602
+ { name: "schedule", type: rankingTypes.schedule,
603
+ summary: "The resolved Schedule: preset spans and non-overlapping reveal windows inside the outer lifetime." },
604
+ { name: "program", type: rankingTypes.columnProgram,
605
+ summary: "The resolved board: its Frame, Style, Schedule and ordered Items." },
606
+ { name: "visual", type: compositionTypes.visualTrack,
607
+ summary: "The rendered board, an ordinary peer VisualTrack." },
608
+ { name: "audio", type: compositionTypes.audioTrack,
609
+ summary: "The rendered board sound, published only when a sound is authored." },
610
+ ],
611
+ example: `<ranking:ColumnStyle id="board-style" recipe={recipes.ranking.board} font={ui-font}/>
612
+ <ranking:Column id="board" semantic={speech.semantic} canvas={vertical} frame={board-frame}
613
+ during={story.segment.ranking}
614
+ style={board-style}>
615
+ <ranking:ColumnItem id="row-regen" rank="1" label="ReGen" icon={icon-regen} during={story.selection.regen}/>
616
+ <ranking:ColumnItem id="row-chatgpt" rank="2" label="ChatGPT" icon={icon-chatgpt} during={story.selection.chatgpt}/>
617
+ <ranking:ColumnItem id="row-remini" rank="5" preset="true" label="Remini" icon={icon-remini}/>
618
+ </ranking:Column>`,
619
+ notes: [
620
+ "The board requires at least one ColumnItem, accepts no other child and no text of its own, and Item ids must be unique within it.",
621
+ "Ranks must be unique; child order does not determine either final placement or reveal order.",
622
+ "Every non-preset Selection window must already lie inside the outer window and be disjoint from every sibling; invalid input is refused, never repaired.",
623
+ "A `label` written as a reference materializes the row from that exact Text before the board is scheduled.",
624
+ "Authoring either sound also connects the Style's `.sound` output, so `style` must name a ColumnStyle written in this Source.",
625
+ ],
626
+ } },
627
+ { name: "top-three", tag: "TopThree", mode: "structured", outputs: [rankingTypes.header, rankingTypes.itemSpec, rankingTypes.textItemShell, temporalTypes.instantSpec, temporalTypes.windowSpec, temporalTypes.instant, temporalTypes.window, rankingTypes.schedule, rankingTypes.topThreeProgram, compositionTypes.visualTrack, compositionTypes.audioTrack],
628
+ vocabulary: {
629
+ summary: "Fills a podium one slot at a time at the Moment owned by each Item, and publishes the board and the Tracks it renders to.",
630
+ appearance:
631
+ "No board, no fill and no shadow: at most three empty rings — circles at the Style's default corner radius — sit side by side in one row, centered on the Style's center point and standing on a shared baseline across the Frame, each outlined faintly in its own slot color. At each Item's Moment, its slot fades and rises into place, its ring brightening to the full slot color and swelling once slightly larger before settling back; the Item's icon fills the ring, or its rank number is set inside the ring in the slot color when no icon is written. The Item's label appears centered on its own line directly beneath the ring. Slots fill in chronological Moment order and never move afterwards, so the row only gains brightness and copy as it goes.",
632
+ preview: previewImage("TopThree.png"),
633
+ attributes: [
634
+ { name: "id", kind: "identifier", required: true,
635
+ summary: "Names this board so its Schedule, Program and Tracks can be referenced elsewhere in the Source." },
636
+ ...temporalContextAttributeVocabulary,
637
+ { name: "frame", kind: "reference", required: true, accepts: [spatialTypes.frame],
638
+ summary: "Chooses the Frame the whole board occupies." },
639
+ { name: "during", kind: "expression", required: true, values: ["program"], accepts: [narrativeTypes.selection, narrativeTypes.excerpt],
640
+ summary: "Chooses the board's whole-program, Selection or Segment lifetime." },
641
+ { name: "terminal", kind: "expression", required: true, accepts: [narrativeTypes.moment],
642
+ summary: "Chooses the terminal Moment or authored time, such as 8s." },
643
+ { name: "style", kind: "reference", required: true, accepts: [rankingTypes.topThreeStyle],
644
+ summary: "Chooses the TopThreeStyle this board is drawn in, and only that variant's." },
645
+ { name: "appear-sound", kind: "reference", required: false, accepts: [mediaTypes.synchronized],
646
+ summary: "Chooses the Synchronized Medium played as each slot appears." },
647
+ ],
648
+ children: [
649
+ { tag: "TopThreeItem", cardinality: "many",
650
+ summary: "One slot of the podium, placed at its own Moment; it is empty.",
651
+ attributes: [
652
+ { name: "id", kind: "identifier", required: false,
653
+ summary: "Names this slot within the board; an omitted id is generated from the slot's position." },
654
+ { name: "label", kind: "expression", required: true, accepts: [textTypes.text],
655
+ summary: "Sets the slot's copy, written literally or chosen from an existing Text." },
656
+ { name: "icon", kind: "reference", required: false, accepts: [mediaTypes.blobArtifact],
657
+ summary: "Chooses the image drawn beside the slot." },
658
+ ...temporalInstantAttributeVocabulary,
659
+ { name: "stack", kind: "literal", required: false,
660
+ summary: "Overrides the Style's draw order for this slot alone." },
661
+ ] },
662
+ ],
663
+ ports: [
664
+ { name: "schedule", type: rankingTypes.schedule,
665
+ summary: "The resolved Schedule: each Item's trigger frame and its staged, cumulative and settled spans." },
666
+ { name: "program", type: rankingTypes.topThreeProgram,
667
+ summary: "The resolved board: its Frame, Style, Schedule and ordered Items." },
668
+ { name: "visual", type: compositionTypes.visualTrack,
669
+ summary: "The rendered board, an ordinary peer VisualTrack." },
670
+ { name: "audio", type: compositionTypes.audioTrack,
671
+ summary: "The rendered board sound, published only when a sound is authored." },
672
+ ],
673
+ example: `<ranking:TopThreeStyle id="podium-style" recipe={recipes.ranking.podium} font={ui-font}/>
674
+ <ranking:TopThree id="podium" semantic={speech.semantic} frame={board-frame}
675
+ during={story.selection.board} terminal={story.moment.done}
676
+ style={podium-style}>
677
+ <ranking:TopThreeItem id="slot-gold" label="ReGen" icon={icon-regen} at={story.moment.regen}/>
678
+ <ranking:TopThreeItem id="slot-silver" label="ChatGPT" at={story.moment.chatgpt}/>
679
+ <ranking:TopThreeItem id="slot-bronze" label="Remini" at={story.moment.remini}/>
680
+ </ranking:TopThree>`,
681
+ notes: [
682
+ "The board requires at least one TopThreeItem, accepts no other child and no text of its own, and Item ids must be unique within it.",
683
+ "A `label` written as a reference materializes the slot from that exact Text before the board is scheduled.",
684
+ "The podium has no move phase, so it takes no `move-sound`; writing one is refused.",
685
+ "The podium holds at most three Items; a fourth is refused when the Program is built.",
686
+ "Authoring the appear sound also connects the Style's `.sound` output, so `style` must name a TopThreeStyle written in this Source.",
687
+ ],
688
+ } },
689
+ ] as const;
690
+
691
+ export const rankingMarkupSurfaces = allRankingMarkupSurfaces;
692
+
693
+ export const rankingManifest: ModuleManifest = {
694
+ format: "hypit.module@1", name: rankingModuleRef.name, version: rankingModuleRef.version,
695
+ dependencies: [artifactDependency, mediaDependency, narrativeDependency, programSpaceDependency, semanticTrackDependency, spatialDependency, temporalDependency, compositionDependency, textDependency],
696
+ types: [
697
+ { name: rankingTypes.header.name },
698
+ { name: rankingTypes.itemSpec.name },
699
+ { name: rankingTypes.textItemShell.name },
700
+ { name: rankingTypes.itemSpecs.name },
701
+ { name: rankingTypes.triggeredCandidates.name },
702
+ { name: rankingTypes.tierWindows.name },
703
+ { name: rankingTypes.columnWindows.name },
704
+ { name: rankingTypes.schedule.name },
705
+ { name: rankingTypes.soundStyle.name },
706
+ { name: rankingTypes.soundEvents.name },
707
+ { name: rankingTypes.sounds.name },
708
+ { name: rankingTypes.tierStyle.name },
709
+ { name: rankingTypes.columnStyle.name },
710
+ { name: rankingTypes.topThreeStyle.name },
711
+ { name: rankingTypes.tierItems.name },
712
+ { name: rankingTypes.columnItems.name },
713
+ { name: rankingTypes.topThreeItems.name },
714
+ { name: rankingTypes.tierProgram.name },
715
+ { name: rankingTypes.columnProgram.name },
716
+ { name: rankingTypes.topThreeProgram.name },
717
+ ],
718
+ capabilities: [],
719
+ producers: [
720
+ { name: rankingProducers.materializeTextItem.name, inputs: [{ name: "shell", type: rankingTypes.textItemShell }, { name: "content", type: textTypes.text }], outputs: [{ name: "spec", type: rankingTypes.itemSpec }], needs: [] },
721
+ { name: rankingProducers.createSpecs.name, inputs: [{ name: "header", type: rankingTypes.header }], outputs: [{ name: "set", type: rankingTypes.itemSpecs }], needs: [] },
722
+ { name: rankingProducers.appendSpec.name, inputs: [{ name: "set", type: rankingTypes.itemSpecs }, { name: "spec", type: rankingTypes.itemSpec }], outputs: [{ name: "set", type: rankingTypes.itemSpecs }], needs: [] },
723
+ { name: rankingProducers.createTriggeredCandidates.name, inputs: [], outputs: [
724
+ { name: "set", type: rankingTypes.triggeredCandidates },
725
+ ], needs: [] },
726
+ { name: rankingProducers.appendTriggeredCandidate.name, inputs: [
727
+ { name: "set", type: rankingTypes.triggeredCandidates }, { name: "spec", type: rankingTypes.itemSpec },
728
+ { name: "activation", type: temporalTypes.instant },
729
+ ], outputs: [{ name: "set", type: rankingTypes.triggeredCandidates }], needs: [] },
730
+ { name: rankingProducers.schedule.name, inputs: [
731
+ { name: "header", type: rankingTypes.header }, { name: "items", type: rankingTypes.itemSpecs },
732
+ { name: "space", type: programSpaceTypes.programSpace },
733
+ { name: "outer", type: temporalTypes.window }, { name: "candidates", type: rankingTypes.triggeredCandidates },
734
+ { name: "terminal", type: temporalTypes.instant },
735
+ ], outputs: [{ name: "schedule", type: rankingTypes.schedule }], needs: [] },
736
+ { name: rankingProducers.createTierWindows.name, inputs: [], outputs: [
737
+ { name: "set", type: rankingTypes.tierWindows },
738
+ ], needs: [] },
739
+ { name: rankingProducers.appendTierWindow.name, inputs: [
740
+ { name: "set", type: rankingTypes.tierWindows }, { name: "spec", type: rankingTypes.itemSpec },
741
+ { name: "window", type: temporalTypes.window },
742
+ ], outputs: [{ name: "set", type: rankingTypes.tierWindows }], needs: [] },
743
+ { name: rankingProducers.tierSchedule.name, inputs: [
744
+ { name: "header", type: rankingTypes.header }, { name: "items", type: rankingTypes.itemSpecs },
745
+ { name: "space", type: programSpaceTypes.programSpace },
746
+ { name: "outer", type: temporalTypes.window }, { name: "windows", type: rankingTypes.tierWindows },
747
+ ], outputs: [{ name: "schedule", type: rankingTypes.schedule }], needs: [] },
748
+ { name: rankingProducers.createColumnWindows.name, inputs: [], outputs: [
749
+ { name: "set", type: rankingTypes.columnWindows },
750
+ ], needs: [] },
751
+ { name: rankingProducers.appendColumnWindow.name, inputs: [
752
+ { name: "set", type: rankingTypes.columnWindows }, { name: "spec", type: rankingTypes.itemSpec },
753
+ { name: "window", type: temporalTypes.window },
754
+ ], outputs: [{ name: "set", type: rankingTypes.columnWindows }], needs: [] },
755
+ { name: rankingProducers.columnSchedule.name, inputs: [
756
+ { name: "header", type: rankingTypes.header }, { name: "items", type: rankingTypes.itemSpecs },
757
+ { name: "space", type: programSpaceTypes.programSpace },
758
+ { name: "outer", type: temporalTypes.window }, { name: "windows", type: rankingTypes.columnWindows },
759
+ ], outputs: [{ name: "schedule", type: rankingTypes.schedule }], needs: [] },
760
+ ...([
761
+ [rankingProducers.createTierItems, rankingTypes.tierItems],
762
+ [rankingProducers.createColumnItems, rankingTypes.columnItems],
763
+ [rankingProducers.createTopThreeItems, rankingTypes.topThreeItems],
764
+ ] as const).map(([producer, type]) => ({
765
+ name: producer.name, inputs: [], outputs: [{ name: "set", type }], needs: [],
766
+ })),
767
+ { name: rankingProducers.appendTierItem.name, inputs: [{ name: "set", type: rankingTypes.tierItems }, { name: "spec", type: rankingTypes.itemSpec }, { name: "icon", type: mediaTypes.blobArtifact }], outputs: [{ name: "set", type: rankingTypes.tierItems }], needs: [] },
768
+ ...([
769
+ [rankingProducers.appendColumnItem, rankingTypes.columnItems],
770
+ [rankingProducers.appendTopThreeItem, rankingTypes.topThreeItems],
771
+ ] as const).map(([producer, type]) => ({
772
+ name: producer.name, inputs: [{ name: "set", type }, { name: "spec", type: rankingTypes.itemSpec }], outputs: [{ name: "set", type }], needs: [],
773
+ })),
774
+ ...([
775
+ [rankingProducers.appendColumnIconItem, rankingTypes.columnItems],
776
+ [rankingProducers.appendTopThreeIconItem, rankingTypes.topThreeItems],
777
+ ] as const).map(([producer, type]) => ({
778
+ name: producer.name, inputs: [{ name: "set", type }, { name: "spec", type: rankingTypes.itemSpec }, { name: "icon", type: mediaTypes.blobArtifact }], outputs: [{ name: "set", type }], needs: [],
779
+ })),
780
+ ...programDefinitions.flatMap(([programType, styleType, setType, programProducer, eventProducer, renderProducer]) => [
781
+ { name: programProducer.name, inputs: [
782
+ { name: "header", type: rankingTypes.header },
783
+ ...(programType === rankingTypes.columnProgram || programType === rankingTypes.tierProgram
784
+ ? [{ name: "canvas", type: spatialTypes.canvas }] : []),
785
+ { name: "frame", type: spatialTypes.frame }, { name: "schedule", type: rankingTypes.schedule },
786
+ { name: "style", type: styleType }, { name: "set", type: setType },
787
+ ], outputs: [{ name: "program", type: programType }], needs: [] },
788
+ { name: eventProducer.name, inputs: [
789
+ { name: "schedule", type: rankingTypes.schedule }, { name: "style", type: styleType }, { name: "specs", type: rankingTypes.itemSpecs },
790
+ ], outputs: [{ name: "events", type: rankingTypes.soundEvents }], needs: [] },
791
+ { name: renderProducer.name, inputs: [{ name: "space", type: programSpaceTypes.programSpace }, { name: "program", type: programType }], outputs: [{ name: "track", type: compositionTypes.visualTrack }], needs: [] },
792
+ ]),
793
+ { name: rankingProducers.createSounds.name, inputs: [], outputs: [{ name: "sounds", type: rankingTypes.sounds }], needs: [] },
794
+ ...([
795
+ rankingProducers.appendAppearSound,
796
+ rankingProducers.appendMoveSound,
797
+ ] as const).map((producer) => ({
798
+ name: producer.name, inputs: [{ name: "sounds", type: rankingTypes.sounds }, { name: "media", type: mediaTypes.synchronized }], outputs: [{ name: "sounds", type: rankingTypes.sounds }], needs: [],
799
+ })),
800
+ { name: rankingProducers.renderAudio.name, inputs: [
801
+ { name: "space", type: programSpaceTypes.programSpace }, { name: "events", type: rankingTypes.soundEvents },
802
+ { name: "style", type: rankingTypes.soundStyle }, { name: "sounds", type: rankingTypes.sounds },
803
+ ], outputs: [{ name: "track", type: compositionTypes.audioTrack }], needs: [] },
804
+ ],
805
+ };
806
+
807
+ export const rankingDependency = { module: rankingModuleRef } as const;