@hypit/hypit 0.1.4 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (462) hide show
  1. package/README.md +4 -2
  2. package/dist/public/caption.d.ts +206 -183
  3. package/dist/public/composition.d.ts +25 -3
  4. package/dist/public/endpoint-kit.d.ts +24 -2
  5. package/dist/public/generation.d.ts +5 -1
  6. package/dist/public/hyperframes.d.ts +19 -1
  7. package/dist/public/narrative.d.ts +17 -3
  8. package/dist/public/performance.d.ts +1590 -0
  9. package/dist/public/program-space.d.ts +179 -32
  10. package/dist/public/runtime-kit.d.ts +21 -8
  11. package/dist/public/sound.d.ts +822 -0
  12. package/dist/public/speech.d.ts +41 -0
  13. package/dist/public/studio-adapter.d.ts +77 -15
  14. package/dist/public/temporal-markup.d.ts +9 -44
  15. package/dist/public/temporal.d.ts +37 -28
  16. package/dist/public/{semantic-track.d.ts → timeline.d.ts} +62 -49
  17. package/examples/README.md +18 -10
  18. package/examples/minimal-author-package/packages/example-component/preview/preview.svml +19 -12
  19. package/examples/minimal-author-package/packages/example-component/src/component.ts +5 -5
  20. package/examples/minimal-author-package/packages/example-component/src/fragment.ts +3 -5
  21. package/examples/minimal-author-package/packages/example-component/src/manifest.ts +8 -10
  22. package/examples/minimal-author-package/packages/example-component/src/surface.ts +2 -2
  23. package/examples/provider-package/README.md +78 -0
  24. package/examples/provider-package/hypit.runtime.json +12 -0
  25. package/examples/provider-package/packages/provider-images/package.json +11 -0
  26. package/examples/provider-package/packages/provider-images/src/activation.ts +24 -0
  27. package/examples/provider-package/packages/provider-images/src/provider.ts +122 -0
  28. package/examples/provider-package/packages/provider-images/tsconfig.json +9 -0
  29. package/examples/semantic-composition/README.md +8 -1
  30. package/examples/semantic-composition/chat.svml +6 -5
  31. package/examples/semantic-composition/hypit.runtime.json +1 -1
  32. package/examples/semantic-composition/packages/chat-scene/README.md +3 -3
  33. package/examples/semantic-composition/packages/chat-scene/src/activation.ts +18 -21
  34. package/examples/semantic-composition/packages/chat-scene/src/render.ts +4 -4
  35. package/examples/semantic-composition/packages/performance-styles/README.md +42 -0
  36. package/examples/semantic-composition/packages/performance-styles/package.json +25 -0
  37. package/examples/semantic-composition/packages/performance-styles/src/activation.ts +57 -0
  38. package/examples/semantic-composition/packages/performance-styles/src/render.ts +54 -0
  39. package/examples/semantic-composition/packages/performance-styles/src/studio.ts +28 -0
  40. package/examples/semantic-composition/packages/performance-styles/tsconfig.json +18 -0
  41. package/examples/semantic-composition/packages/responsive-explainer/README.md +16 -9
  42. package/examples/semantic-composition/packages/responsive-explainer/src/activation.ts +12 -12
  43. package/examples/semantic-composition/packages/responsive-explainer/src/render.ts +5 -5
  44. package/examples/semantic-composition/packages/sound-styles/README.md +36 -0
  45. package/examples/semantic-composition/packages/sound-styles/package.json +25 -0
  46. package/examples/semantic-composition/packages/sound-styles/src/activation.ts +53 -0
  47. package/examples/semantic-composition/packages/sound-styles/src/render.ts +14 -0
  48. package/examples/semantic-composition/packages/sound-styles/tsconfig.json +18 -0
  49. package/package.json +35 -15
  50. package/packages/audio-track/README.md +20 -13
  51. package/packages/audio-track/package.json +1 -1
  52. package/packages/audio-track/src/component.ts +4 -4
  53. package/packages/audio-track/src/fragment.ts +6 -5
  54. package/packages/audio-track/src/index.ts +1 -1
  55. package/packages/audio-track/src/manifest.ts +17 -16
  56. package/packages/audio-track/src/program.ts +21 -25
  57. package/packages/audio-track/src/surface.ts +19 -18
  58. package/packages/audio-track-studio/README.md +23 -0
  59. package/packages/audio-track-studio/src/index.ts +28 -17
  60. package/packages/author-kit/README.md +1 -1
  61. package/packages/background-removal/README.md +4 -7
  62. package/packages/browser-capture/package.json +1 -1
  63. package/packages/build-result/README.md +11 -0
  64. package/packages/build-result/src/decode.ts +2 -0
  65. package/packages/build-result/src/execution-log.ts +17 -0
  66. package/packages/build-result/src/index.ts +1 -0
  67. package/packages/build-result/src/store.ts +14 -1
  68. package/packages/build-result/src/types.ts +3 -0
  69. package/packages/build-result-s3/src/repository.ts +4 -0
  70. package/packages/caption/README.md +61 -73
  71. package/packages/caption/package.json +3 -2
  72. package/packages/caption/src/activation.ts +2 -2
  73. package/packages/caption/src/component.ts +20 -5
  74. package/packages/caption/src/display.ts +3 -18
  75. package/packages/caption/src/fragment.ts +3 -7
  76. package/packages/caption/src/index.ts +6 -5
  77. package/packages/caption/src/manifest.ts +29 -46
  78. package/packages/caption/src/style.ts +24 -135
  79. package/packages/caption/src/surface.ts +12 -92
  80. package/packages/caption/src/temporalize.ts +18 -53
  81. package/packages/caption/src/types.ts +8 -35
  82. package/packages/caption/src/visibility.ts +23 -0
  83. package/packages/caption-fine/README.md +21 -9
  84. package/packages/caption-fine/package.json +4 -2
  85. package/packages/caption-fine/src/component.ts +3 -3
  86. package/packages/caption-fine/src/fragment.ts +7 -19
  87. package/packages/caption-fine/src/index.ts +2 -0
  88. package/packages/caption-fine/src/manifest.ts +26 -17
  89. package/packages/caption-fine/src/recipe.ts +7 -0
  90. package/packages/caption-fine/src/render.ts +14 -13
  91. package/packages/caption-fine/src/schedule.ts +39 -35
  92. package/packages/caption-fine/src/style.ts +10 -9
  93. package/packages/caption-fine/src/surface.ts +62 -35
  94. package/packages/caption-fine/src/types.ts +2 -0
  95. package/packages/caption-fine-studio/README.md +24 -2
  96. package/packages/caption-fine-studio/package.json +3 -1
  97. package/packages/caption-fine-studio/src/activation.ts +3 -3
  98. package/packages/caption-fine-studio/src/index.ts +54 -42
  99. package/packages/cli/README.md +57 -4
  100. package/packages/cli/package.json +1 -0
  101. package/packages/cli/src/arguments.ts +25 -6
  102. package/packages/cli/src/build-planning.ts +3 -2
  103. package/packages/cli/src/command.ts +6 -0
  104. package/packages/cli/src/commands/environment.ts +28 -18
  105. package/packages/cli/src/commands/execution.ts +81 -26
  106. package/packages/cli/src/commands/results.ts +7 -11
  107. package/packages/cli/src/index.ts +2 -2
  108. package/packages/cli/src/machine-view.ts +3 -2
  109. package/packages/cli/src/main.ts +34 -42
  110. package/packages/cli/src/observation.ts +7 -1
  111. package/packages/cli/src/output.ts +65 -23
  112. package/packages/cli/src/view.ts +66 -19
  113. package/packages/comment-sticker/README.md +3 -3
  114. package/packages/comment-sticker/package.json +1 -1
  115. package/packages/comment-sticker/src/component.ts +4 -4
  116. package/packages/comment-sticker/src/fragment.ts +5 -4
  117. package/packages/comment-sticker/src/manifest.ts +7 -6
  118. package/packages/comment-sticker/src/program.ts +9 -9
  119. package/packages/comment-sticker/src/surface.ts +6 -7
  120. package/packages/composition/README.md +21 -0
  121. package/packages/composition/src/audio-presentation.ts +44 -0
  122. package/packages/composition/src/index.ts +3 -0
  123. package/packages/composition/src/schema.ts +8 -3
  124. package/packages/composition/src/track.ts +15 -1
  125. package/packages/credential-store-env/README.md +1 -1
  126. package/packages/deck-track/README.md +3 -3
  127. package/packages/deck-track/package.json +1 -1
  128. package/packages/deck-track/src/component.ts +5 -5
  129. package/packages/deck-track/src/fragment.ts +6 -5
  130. package/packages/deck-track/src/lower.ts +12 -12
  131. package/packages/deck-track/src/manifest.ts +8 -7
  132. package/packages/deck-track/src/program.ts +13 -16
  133. package/packages/deck-track/src/surface.ts +9 -10
  134. package/packages/driver-node/src/driver.ts +41 -3
  135. package/packages/elevenlabs-speech/README.md +27 -0
  136. package/packages/{provider-xiaomi-mimo → elevenlabs-speech}/package.json +5 -8
  137. package/packages/elevenlabs-speech/src/activation.ts +26 -0
  138. package/packages/elevenlabs-speech/src/fragment.ts +11 -0
  139. package/packages/elevenlabs-speech/src/index.ts +111 -0
  140. package/packages/elevenlabs-speech/src/surface.ts +167 -0
  141. package/packages/endpoint-kit/README.md +24 -0
  142. package/packages/endpoint-kit/src/index.ts +7 -1
  143. package/packages/film/README.md +12 -7
  144. package/packages/film/package.json +1 -1
  145. package/packages/film/src/component.ts +4 -4
  146. package/packages/film/src/fragment.ts +6 -5
  147. package/packages/film/src/manifest.ts +11 -10
  148. package/packages/film/src/program.ts +5 -5
  149. package/packages/film/src/recipe.ts +2 -1
  150. package/packages/film/src/surface.ts +10 -7
  151. package/packages/film-studio/package.json +1 -1
  152. package/packages/film-studio/src/index.ts +2 -2
  153. package/packages/fishaudio-speech/README.md +33 -0
  154. package/packages/fishaudio-speech/package.json +21 -0
  155. package/packages/fishaudio-speech/src/activation.ts +32 -0
  156. package/packages/fishaudio-speech/src/fragment.ts +11 -0
  157. package/packages/fishaudio-speech/src/index.ts +156 -0
  158. package/packages/fishaudio-speech/src/surface.ts +192 -0
  159. package/packages/generation/README.md +11 -1
  160. package/packages/generation/src/mapping.ts +28 -30
  161. package/packages/gpt-image/README.md +1 -2
  162. package/packages/grok-imagine/README.md +1 -2
  163. package/packages/hyperframes/README.md +7 -3
  164. package/packages/hyperframes/src/browser-program.ts +11 -2
  165. package/packages/hyperframes/src/document.ts +15 -2
  166. package/packages/interview-emoji-reveal/README.md +4 -4
  167. package/packages/interview-emoji-reveal/package.json +1 -1
  168. package/packages/interview-emoji-reveal/src/component.ts +4 -4
  169. package/packages/interview-emoji-reveal/src/fragment.ts +6 -5
  170. package/packages/interview-emoji-reveal/src/manifest.ts +9 -8
  171. package/packages/interview-emoji-reveal/src/program.ts +14 -14
  172. package/packages/interview-emoji-reveal/src/surface.ts +8 -9
  173. package/packages/media-execution/README.md +7 -3
  174. package/packages/media-execution/src/audio-presentation.ts +23 -0
  175. package/packages/media-execution/src/execute.ts +2 -0
  176. package/packages/media-pipeline/README.md +7 -3
  177. package/packages/media-pipeline/src/audio-plan.ts +4 -1
  178. package/packages/media-pipeline/src/component.ts +16 -2
  179. package/packages/media-pipeline/src/manifest.ts +3 -1
  180. package/packages/media-pipeline/src/types.ts +2 -1
  181. package/packages/media-track/README.md +14 -47
  182. package/packages/media-track/package.json +1 -1
  183. package/packages/media-track/preview/preview.svml +5 -5
  184. package/packages/media-track/src/author.ts +12 -6
  185. package/packages/media-track/src/component.ts +10 -16
  186. package/packages/media-track/src/fragment.ts +8 -7
  187. package/packages/media-track/src/index.ts +3 -1
  188. package/packages/media-track/src/lower.ts +7 -7
  189. package/packages/media-track/src/manifest.ts +16 -38
  190. package/packages/media-track/src/program.ts +62 -67
  191. package/packages/media-track/src/sampling.ts +6 -6
  192. package/packages/media-track/src/sequence.ts +8 -8
  193. package/packages/media-track/src/surface.ts +25 -43
  194. package/packages/media-track-studio/README.md +9 -0
  195. package/packages/media-track-studio/src/index.ts +16 -11
  196. package/packages/mimo-speech/README.md +1 -1
  197. package/packages/minimax-h3/README.md +1 -1
  198. package/packages/nano-banana/README.md +1 -1
  199. package/packages/narrative/README.md +23 -1
  200. package/packages/narrative/src/identity.ts +11 -0
  201. package/packages/narrative/src/index.ts +3 -0
  202. package/packages/narrative/src/schema.ts +28 -27
  203. package/packages/narrative/src/selection.ts +52 -0
  204. package/packages/narrative/src/types.ts +2 -0
  205. package/packages/package-loader-node/README.md +30 -0
  206. package/packages/package-loader-node/package.json +5 -2
  207. package/packages/package-loader-node/src/distribution-resolution.ts +10 -3
  208. package/packages/package-loader-node/src/index.ts +1 -0
  209. package/packages/package-loader-node/src/loader.ts +12 -15
  210. package/packages/package-loader-node/src/location.ts +27 -1
  211. package/packages/package-loader-node/src/module-scope.ts +183 -0
  212. package/packages/package-loader-node/src/types.ts +4 -0
  213. package/packages/performance/README.md +83 -0
  214. package/packages/performance/package.json +30 -0
  215. package/packages/performance/src/activation.ts +11 -0
  216. package/packages/performance/src/component.ts +46 -0
  217. package/packages/performance/src/index.ts +6 -0
  218. package/packages/performance/src/manifest.ts +53 -0
  219. package/packages/{media-track/src/performance.ts → performance/src/media.ts} +9 -10
  220. package/packages/performance/src/program.ts +51 -0
  221. package/packages/performance/src/style.ts +35 -0
  222. package/packages/performance/src/surface.ts +99 -0
  223. package/packages/performance-studio/README.md +25 -0
  224. package/packages/performance-studio/package.json +21 -0
  225. package/packages/performance-studio/src/activation.ts +6 -0
  226. package/packages/performance-studio/src/index.ts +84 -0
  227. package/packages/program-space/README.md +9 -18
  228. package/packages/program-space/src/activation.ts +1 -5
  229. package/packages/program-space/src/index.ts +2 -11
  230. package/packages/program-space/src/surface.ts +1 -20
  231. package/packages/project-context-node/README.md +20 -0
  232. package/packages/project-context-node/package.json +10 -0
  233. package/packages/project-context-node/src/index.ts +3 -0
  234. package/packages/{cli → project-context-node}/src/runtime-selection.ts +7 -2
  235. package/packages/provider-hyperframes-local/README.md +43 -15
  236. package/packages/provider-hyperframes-local/src/activation.ts +4 -3
  237. package/packages/provider-hyperframes-local/src/capture-process.ts +26 -4
  238. package/packages/provider-hyperframes-local/src/capture.ts +96 -26
  239. package/packages/provider-hyperframes-local/src/concurrency.ts +86 -0
  240. package/packages/provider-hyperframes-local/src/opaque-capture.ts +92 -0
  241. package/packages/provider-hyperframes-local/src/options.ts +2 -0
  242. package/packages/provider-hyperframes-local/src/program.ts +6 -3
  243. package/packages/provider-hyperframes-local/src/progress.ts +53 -0
  244. package/packages/provider-hyperframes-local/src/provider.ts +18 -5
  245. package/packages/provider-hyperframes-local/src/render.ts +48 -7
  246. package/packages/provider-hypihub/README.md +48 -17
  247. package/packages/provider-hypihub/package.json +2 -0
  248. package/packages/provider-hypihub/src/mapping.ts +31 -7
  249. package/packages/provider-hypihub/src/oauth.ts +6 -0
  250. package/packages/provider-hypihub/src/provider.ts +25 -13
  251. package/packages/provider-hypihub/src/routes.ts +1 -2
  252. package/packages/provider-hypihub/src/upload.ts +2 -0
  253. package/packages/provider-media-local/README.md +3 -4
  254. package/packages/provider-whisperx-local/src/program.ts +1 -0
  255. package/packages/provider-whisperx-local/src/provider.ts +3 -0
  256. package/packages/ranking/README.md +8 -6
  257. package/packages/ranking/package.json +1 -1
  258. package/packages/ranking/src/component.ts +6 -6
  259. package/packages/ranking/src/fragment.ts +11 -7
  260. package/packages/ranking/src/manifest.ts +21 -14
  261. package/packages/ranking/src/render.ts +22 -26
  262. package/packages/ranking/src/schedule.ts +16 -19
  263. package/packages/ranking/src/surface.ts +12 -13
  264. package/packages/ranking-studio/README.md +18 -0
  265. package/packages/ranking-studio/src/index.ts +61 -9
  266. package/packages/render-hyperframes/README.md +7 -7
  267. package/packages/render-hyperframes/package.json +1 -1
  268. package/packages/render-hyperframes/src/component.ts +11 -1
  269. package/packages/render-hyperframes/src/fragment.ts +7 -4
  270. package/packages/render-hyperframes/src/manifest.ts +4 -4
  271. package/packages/render-hyperframes/src/surface.ts +6 -6
  272. package/packages/runtime/README.md +8 -1
  273. package/packages/runtime/src/execution.ts +15 -4
  274. package/packages/runtime/src/index.ts +2 -1
  275. package/packages/runtime/src/log.ts +51 -0
  276. package/packages/runtime/src/types.ts +5 -8
  277. package/packages/runtime-host-node/README.md +30 -0
  278. package/packages/runtime-host-node/package.json +1 -0
  279. package/packages/runtime-host-node/src/index.ts +24 -9
  280. package/packages/runtime-host-node/src/packages.ts +47 -50
  281. package/packages/runtime-kit/README.md +5 -0
  282. package/packages/runtime-kit/src/index.ts +3 -1
  283. package/packages/runtime-local/README.md +109 -4
  284. package/packages/runtime-local/src/config.ts +202 -56
  285. package/packages/runtime-local/src/control.ts +9 -1
  286. package/packages/runtime-local/src/executor.ts +66 -0
  287. package/packages/runtime-local/src/host.ts +37 -17
  288. package/packages/runtime-local/src/log.ts +48 -0
  289. package/packages/runtime-local/src/programs.ts +2 -1
  290. package/packages/runtime-local/src/result-writer.ts +2 -0
  291. package/packages/runtime-local/src/runtime.ts +8 -6
  292. package/packages/runtime-local/src/supervisor.ts +142 -0
  293. package/packages/runtime-local/src/types.ts +9 -2
  294. package/packages/runtime-local/src/worker-process.ts +7 -24
  295. package/packages/runtime-local/src/worker.ts +55 -83
  296. package/packages/screen-overlay/README.md +3 -3
  297. package/packages/screen-overlay/package.json +1 -1
  298. package/packages/screen-overlay/src/component.ts +3 -3
  299. package/packages/screen-overlay/src/fragment.ts +5 -4
  300. package/packages/screen-overlay/src/manifest.ts +7 -6
  301. package/packages/screen-overlay/src/program.ts +9 -9
  302. package/packages/screen-overlay/src/surface.ts +6 -7
  303. package/packages/script/README.md +30 -5
  304. package/packages/script/src/manifest.ts +4 -3
  305. package/packages/script/src/narrative.ts +1 -0
  306. package/packages/script/src/parser.ts +45 -6
  307. package/packages/script/src/surface.ts +4 -3
  308. package/packages/script/src/types.ts +1 -1
  309. package/packages/script-studio/package.json +9 -3
  310. package/packages/script-studio/src/index.ts +2 -0
  311. package/packages/script-studio/src/projection.ts +105 -0
  312. package/packages/seedance/README.md +30 -1
  313. package/packages/seedance/src/index.ts +18 -7
  314. package/packages/seedance/src/surface.ts +17 -4
  315. package/packages/seedance-kits/README.md +7 -1
  316. package/packages/seedream/README.md +1 -1
  317. package/packages/sound/README.md +81 -0
  318. package/packages/sound/package.json +25 -0
  319. package/packages/sound/src/activation.ts +11 -0
  320. package/packages/sound/src/component.ts +28 -0
  321. package/packages/sound/src/index.ts +5 -0
  322. package/packages/sound/src/manifest.ts +47 -0
  323. package/packages/sound/src/program.ts +84 -0
  324. package/packages/sound/src/style.ts +34 -0
  325. package/packages/sound/src/surface.ts +90 -0
  326. package/packages/sound-studio/README.md +22 -0
  327. package/packages/sound-studio/package.json +20 -0
  328. package/packages/sound-studio/src/activation.ts +6 -0
  329. package/packages/sound-studio/src/index.ts +74 -0
  330. package/packages/speech/README.md +2 -2
  331. package/packages/speech-alignment/src/local.ts +8 -0
  332. package/packages/speech-alignment/src/locate.ts +1 -1
  333. package/packages/store-sqlite/README.md +7 -0
  334. package/packages/store-sqlite/src/store.ts +84 -83
  335. package/packages/studio/INSPECTOR.md +15 -2
  336. package/packages/studio/LOCALIZATION.md +98 -0
  337. package/packages/studio/README.md +101 -14
  338. package/packages/studio/locales/en.json +197 -0
  339. package/packages/studio/locales/zh-CN.json +191 -0
  340. package/packages/studio/package.json +8 -7
  341. package/packages/studio/src/companion-assembly.ts +1 -0
  342. package/packages/studio/src/domain.ts +1 -1
  343. package/packages/studio/src/fallback-companions.ts +3 -3
  344. package/packages/studio/src/feedback-server.ts +51 -0
  345. package/packages/studio/src/feedback-store.ts +66 -0
  346. package/packages/studio/src/feedback.ts +60 -0
  347. package/packages/studio/src/localization-node.ts +46 -0
  348. package/packages/studio/src/localization.ts +85 -0
  349. package/packages/studio/src/parameter-values.ts +43 -1
  350. package/packages/studio/src/parameters.ts +114 -24
  351. package/packages/studio/src/preview/render.ts +5 -1
  352. package/packages/studio/src/preview/runtime-shim.ts +49 -3
  353. package/packages/studio/src/programme.ts +14 -30
  354. package/packages/studio/src/server.ts +10 -6
  355. package/packages/studio/src/shared.ts +4 -2
  356. package/packages/studio/src/snapshot.ts +21 -132
  357. package/packages/studio/src/studio-preflight.ts +3 -3
  358. package/packages/studio/src/studio-registry.ts +50 -6
  359. package/packages/studio/src/style.css +223 -50
  360. package/packages/studio/src/ui/artifact-name.ts +8 -6
  361. package/packages/studio/src/ui/artifact-preview.ts +5 -4
  362. package/packages/studio/src/ui/code.ts +17 -16
  363. package/packages/studio/src/ui/comments.ts +234 -0
  364. package/packages/studio/src/ui/dropdown.ts +68 -0
  365. package/packages/studio/src/ui/i18n.ts +109 -0
  366. package/packages/studio/src/ui/icons.ts +6 -0
  367. package/packages/studio/src/ui/library.ts +76 -65
  368. package/packages/studio/src/ui/main.ts +223 -211
  369. package/packages/studio/src/ui/overlay.ts +12 -8
  370. package/packages/studio/src/ui/scrub-preview.ts +110 -0
  371. package/packages/studio/src/ui/stage.ts +93 -29
  372. package/packages/studio/src/ui/timeline.ts +190 -118
  373. package/packages/studio/start.ts +41 -22
  374. package/packages/studio-adapter/README.md +130 -11
  375. package/packages/studio-adapter/src/index.ts +100 -13
  376. package/packages/temporal/README.md +6 -6
  377. package/packages/temporal/package.json +1 -1
  378. package/packages/temporal/src/component.ts +5 -6
  379. package/packages/temporal/src/index.ts +8 -6
  380. package/packages/temporal/src/location.ts +11 -11
  381. package/packages/temporal/src/projection.ts +19 -19
  382. package/packages/temporal/src/rational.ts +4 -4
  383. package/packages/temporal-markup/EDITING.md +2 -2
  384. package/packages/temporal-markup/README.md +27 -11
  385. package/packages/temporal-markup/package.json +1 -1
  386. package/packages/temporal-markup/src/index.ts +20 -25
  387. package/packages/temporal-markup/src/space.ts +10 -41
  388. package/packages/timeline/README.md +31 -0
  389. package/packages/{semantic-track → timeline}/package.json +1 -1
  390. package/packages/timeline/src/activation.ts +8 -0
  391. package/packages/timeline/src/component.ts +24 -0
  392. package/packages/timeline/src/identity.ts +60 -0
  393. package/packages/timeline/src/index.ts +6 -0
  394. package/packages/{semantic-track → timeline}/src/location.ts +20 -20
  395. package/packages/timeline/src/manifest.ts +39 -0
  396. package/packages/{semantic-track → timeline}/src/projection.ts +14 -14
  397. package/packages/timeline/src/types.ts +24 -0
  398. package/packages/timeline-author/README.md +68 -0
  399. package/packages/{speech-track → timeline-author}/package.json +6 -4
  400. package/packages/timeline-author/src/activation.ts +22 -0
  401. package/packages/{speech-track → timeline-author}/src/component.ts +15 -13
  402. package/packages/{speech-track → timeline-author}/src/fragment.ts +14 -23
  403. package/packages/timeline-author/src/index.ts +7 -0
  404. package/packages/timeline-author/src/manifest.ts +78 -0
  405. package/packages/timeline-author/src/program.ts +107 -0
  406. package/packages/timeline-author/src/surface.ts +46 -0
  407. package/packages/timeline-author/src/types.ts +6 -0
  408. package/packages/typography-track/README.md +4 -4
  409. package/packages/typography-track/package.json +1 -1
  410. package/packages/typography-track/src/component.ts +4 -4
  411. package/packages/typography-track/src/fragment.ts +4 -3
  412. package/packages/typography-track/src/manifest.ts +11 -9
  413. package/packages/typography-track/src/program.ts +15 -15
  414. package/packages/typography-track/src/surface.ts +17 -18
  415. package/packages/video-cli/README.md +4 -1
  416. package/packages/video-cli/package.json +2 -1
  417. package/packages/video-cli/src/creation.ts +14 -4
  418. package/packages/video-cli/src/index.ts +1 -1
  419. package/packages/video-cli/src/studio-distribution.ts +2 -1
  420. package/packages/volcengine-matting/README.md +3 -3
  421. package/packages/whisperx/README.md +1 -1
  422. package/services/whisperx/README.md +14 -0
  423. package/services/whisperx/pyproject.toml +2 -0
  424. package/services/whisperx/uv.lock +20 -20
  425. package/packages/provider-hyperframes-aws-lambda/README.md +0 -30
  426. package/packages/provider-hyperframes-aws-lambda/package.json +0 -30
  427. package/packages/provider-hyperframes-aws-lambda/src/activation.ts +0 -97
  428. package/packages/provider-hyperframes-aws-lambda/src/client.ts +0 -114
  429. package/packages/provider-hyperframes-aws-lambda/src/index.ts +0 -21
  430. package/packages/provider-hyperframes-aws-lambda/src/provider.ts +0 -522
  431. package/packages/provider-kie/README.md +0 -134
  432. package/packages/provider-kie/package.json +0 -43
  433. package/packages/provider-kie/src/activation.ts +0 -71
  434. package/packages/provider-kie/src/index.ts +0 -10
  435. package/packages/provider-kie/src/mapping.ts +0 -182
  436. package/packages/provider-kie/src/provider.ts +0 -657
  437. package/packages/provider-kie/src/routes.ts +0 -150
  438. package/packages/provider-xiaomi-mimo/README.md +0 -32
  439. package/packages/provider-xiaomi-mimo/src/activation.ts +0 -57
  440. package/packages/provider-xiaomi-mimo/src/index.ts +0 -5
  441. package/packages/provider-xiaomi-mimo/src/provider.ts +0 -214
  442. package/packages/runtime/src/environment.ts +0 -6
  443. package/packages/semantic-track/README.md +0 -21
  444. package/packages/semantic-track/src/activation.ts +0 -8
  445. package/packages/semantic-track/src/component.ts +0 -24
  446. package/packages/semantic-track/src/identity.ts +0 -58
  447. package/packages/semantic-track/src/index.ts +0 -6
  448. package/packages/semantic-track/src/manifest.ts +0 -38
  449. package/packages/semantic-track/src/types.ts +0 -26
  450. package/packages/speech-track/README.md +0 -51
  451. package/packages/speech-track/src/activation.ts +0 -19
  452. package/packages/speech-track/src/index.ts +0 -7
  453. package/packages/speech-track/src/manifest.ts +0 -73
  454. package/packages/speech-track/src/program.ts +0 -64
  455. package/packages/speech-track/src/surface.ts +0 -35
  456. package/packages/speech-track/src/types.ts +0 -6
  457. package/packages/speech-track-studio/README.md +0 -3
  458. package/packages/speech-track-studio/package.json +0 -14
  459. package/packages/speech-track-studio/src/activation.ts +0 -7
  460. package/packages/speech-track-studio/src/index.ts +0 -40
  461. /package/packages/{cli → project-context-node}/src/project-context.ts +0 -0
  462. /package/packages/{speech-track → timeline-author}/preview/Track.png +0 -0
@@ -16,7 +16,6 @@ import type {
16
16
  CredentialRef,
17
17
  OperationSnapshot,
18
18
  ResourceStore,
19
- RuntimeWorkerRunOptions,
20
19
  } from "@hypit/runtime";
21
20
  import type { RuntimeDoctorDiagnostic } from "@hypit/runtime-kit";
22
21
 
@@ -63,6 +62,12 @@ export type BuildView = {
63
62
  readonly acceptedRecords: number;
64
63
  readonly outstandingCommands: number;
65
64
  readonly operations: readonly BuildOperationView[];
65
+ /** Activity reported by calls running in the local Worker. */
66
+ readonly commands?: readonly {
67
+ readonly id: string;
68
+ readonly endpoint: string;
69
+ readonly progress: NonNullable<OperationSnapshot["progress"]>;
70
+ }[];
66
71
  };
67
72
 
68
73
  export type RuntimeHostCredentialStatus = {
@@ -77,6 +82,8 @@ export type RuntimeHostCredentialStatus = {
77
82
  };
78
83
 
79
84
  export type RuntimeHostControl = {
85
+ /** Build evidence while active. Finished evidence is read through its Result Repository. */
86
+ logs?(build: string, lines: number): Promise<import("@hypit/runtime").ExecutionLogView | undefined>;
80
87
  inspect(build: string): Promise<BuildView | undefined>;
81
88
  activity(): Promise<{
82
89
  readonly builds: readonly BuildView[];
@@ -127,7 +134,6 @@ export type RuntimeHostExecution = RuntimeHostControl & RuntimeHostCredentialCon
127
134
  readonly maxWaitMs?: number;
128
135
  readonly signal?: AbortSignal;
129
136
  }): Promise<RuntimeHostBuildSubmission>;
130
- work(options: RuntimeWorkerRunOptions): Promise<void>;
131
137
  };
132
138
 
133
139
  export type RuntimeHostDoctorResult = {
@@ -214,7 +220,6 @@ export type ManagedProgramReport = {
214
220
 
215
221
  export type RuntimeWorkerState = {
216
222
  readonly state: "running" | "stopped";
217
- readonly configuration?: "current" | "changed";
218
223
  readonly profile: string;
219
224
  readonly pid?: number;
220
225
  readonly startedAt?: number;
@@ -235,9 +240,10 @@ export type RuntimeController = {
235
240
  readonly maxWaitMs?: number;
236
241
  readonly onProgress?: (event: ManagedProgramProgress) => void;
237
242
  readonly capabilities?: readonly CapabilityRef[];
243
+ readonly endpoints?: readonly string[];
238
244
  }): Promise<{ readonly dataRoot: string; readonly programs: readonly ManagedProgramReport[] }>;
239
- down(): Promise<{ readonly dataRoot: string; readonly programs: readonly ManagedProgramReport[] }>;
240
- report(): Promise<{ readonly dataRoot: string; readonly programs: readonly ManagedProgramReport[] }>;
245
+ down(options?: { readonly endpoints?: readonly string[] }): Promise<{ readonly dataRoot: string; readonly programs: readonly ManagedProgramReport[] }>;
246
+ report(options?: { readonly endpoints?: readonly string[] }): Promise<{ readonly dataRoot: string; readonly programs: readonly ManagedProgramReport[] }>;
241
247
  };
242
248
  };
243
249
 
@@ -255,7 +261,7 @@ export type NodeRuntimeHost = {
255
261
  controller(options?: {
256
262
  readonly packageRoot?: string;
257
263
  }): Promise<RuntimeController>;
258
- createRuntime(): Promise<RuntimeHostExecution>;
264
+ createRuntime(options?: { readonly endpoints?: readonly string[] }): Promise<RuntimeHostExecution>;
259
265
  openControl(options?: { readonly readOnly?: boolean }): Promise<RuntimeHostControl>;
260
266
  /** Open only Result-writing dependencies; never construct execution Providers. */
261
267
  openResultControl(): Promise<RuntimeHostResultControl>;
@@ -263,6 +269,7 @@ export type NodeRuntimeHost = {
263
269
  /** Explicitly prepare upstream packages selected by this Runtime Profile. */
264
270
  prepare(options?: {
265
271
  readonly onProgress?: (event: import("./packages.js").HostPackageProgress) => void;
272
+ readonly endpoints?: readonly string[];
266
273
  }): Promise<readonly import("./packages.js").HostPackageReport[]>;
267
274
  /**
268
275
  * Read-only, bounded deployment validation for one demanded Build slice.
@@ -271,10 +278,12 @@ export type NodeRuntimeHost = {
271
278
  */
272
279
  preflight(options?: {
273
280
  readonly capabilities?: readonly CapabilityRef[];
281
+ readonly endpoints?: readonly string[];
274
282
  }): Promise<RuntimeHostDoctorResult>;
275
283
  /** Active deployment diagnosis. Unlike preflight, adapters may contact their configured services. */
276
284
  doctor(options?: {
277
285
  readonly capabilities?: readonly CapabilityRef[];
286
+ readonly endpoints?: readonly string[];
278
287
  }): Promise<RuntimeHostDoctorResult>;
279
288
  /**
280
289
  * Which selected Endpoint would serve each capability and where its Provider publishes prices.
@@ -288,10 +297,16 @@ export type NodeRuntimeHost = {
288
297
  * The creation-time boundary for observation, transcription and other quick capabilities; it
289
298
  * creates no Build, Result or state, and refuses asynchronous capabilities.
290
299
  */
291
- invoke(need: Need, resources: ResourceStore): Promise<{ readonly value: StoredValue }>;
300
+ invoke(need: Need, resources: ResourceStore, observation?: RuntimeInvocationObservation): Promise<{ readonly value: StoredValue }>;
292
301
  /** Open one disposable authoring execution. It creates no Build, Result or recoverable Operation. */
293
302
  openTransientExecution(): Promise<RuntimeHostTransientExecution>;
294
- runWorker(readyFile: string, owner: string): Promise<void>;
303
+ runWorker(readyFile: string, owner: string, execution?: { readonly dataRoot: string }): Promise<void>;
304
+ };
305
+
306
+ /** Progress stays with the selected Provider; immediate calls need no synthetic Build. */
307
+ export type RuntimeInvocationObservation = {
308
+ readonly reportProgress?: (progress: import("@hypit/runtime").OperationProgress) => Promise<void>;
309
+ readonly reportDiagnostic?: (diagnostic: import("@hypit/runtime").ExecutionDiagnostic) => Promise<void>;
295
310
  };
296
311
 
297
312
  /**
@@ -321,7 +336,7 @@ export function hypitHostStateRoot(options: {
321
336
  : state, "hypit");
322
337
  }
323
338
 
324
- /** Upstream npm packages shared by every Hypit project and future session on this machine. */
339
+ /** Home of version-isolated upstream npm installations shared across projects. */
325
340
  export function hypitHostPackageRoot(hostStateRoot = hypitHostStateRoot()): string {
326
341
  return join(resolve(hostStateRoot), "packages");
327
342
  }
@@ -1,6 +1,7 @@
1
1
  import { spawn } from "node:child_process";
2
- import { mkdir, readFile, writeFile } from "node:fs/promises";
2
+ import { mkdir, open, readFile, realpath, writeFile } from "node:fs/promises";
3
3
  import { join, resolve } from "node:path";
4
+ import { externalPackageInstallRoot } from "@hypit/package-loader-node";
4
5
 
5
6
  export type RegistryPackageSpec = {
6
7
  readonly name: string;
@@ -10,11 +11,13 @@ export type RegistryPackageSpec = {
10
11
 
11
12
  export type HostPackageReport = RegistryPackageSpec & {
12
13
  readonly root: string;
14
+ readonly logPath?: string;
13
15
  readonly action: "already-installed" | "installed";
14
16
  };
15
17
 
16
18
  export type HostPackageProgress = RegistryPackageSpec & {
17
19
  readonly phase: "checking" | "installing" | "ready";
20
+ readonly logPath?: string;
18
21
  };
19
22
 
20
23
  function exactVersion(value: string): boolean {
@@ -63,18 +66,20 @@ export async function inspectHostPackage(
63
66
  root: string,
64
67
  ): Promise<HostPackageReport | undefined> {
65
68
  const required = parseRegistryPackageSpec(specifier);
66
- const version = await installedVersion(resolve(root), required.name);
69
+ const installation = externalPackageInstallRoot(root, required.name, required.version);
70
+ const version = await installedVersion(installation, required.name);
67
71
  return version === required.version
68
- ? { ...required, root: resolve(root), action: "already-installed" }
72
+ ? { ...required, root: installation, action: "already-installed" }
69
73
  : undefined;
70
74
  }
71
75
 
72
- function runNpm(root: string, specifiers: readonly string[]): Promise<void> {
76
+ async function runNpm(root: string, specifiers: readonly string[], logPath: string): Promise<void> {
77
+ // npm's prefix and cwd must denote the same physical project (not /tmp vs /private/tmp).
78
+ const cwd = await realpath(root);
73
79
  const npmArgs = [
74
80
  "install",
75
- "--prefix", root,
81
+ "--prefix", cwd,
76
82
  "--save-exact",
77
- "--package-lock=false",
78
83
  "--no-audit",
79
84
  "--no-fund",
80
85
  "--omit=dev",
@@ -83,27 +88,30 @@ function runNpm(root: string, specifiers: readonly string[]): Promise<void> {
83
88
  const windows = process.platform === "win32";
84
89
  const command = windows ? (process.env.ComSpec ?? "cmd.exe") : "npm";
85
90
  const args = windows ? ["/d", "/s", "/c", "npm.cmd", ...npmArgs] : npmArgs;
86
- return new Promise((done, reject) => {
87
- const child = spawn(command, args, {
88
- shell: false,
89
- windowsHide: true,
90
- stdio: ["ignore", "pipe", "pipe"],
91
- });
92
- let output = "";
93
- child.stdout.on("data", (chunk: Buffer) => { output = `${output}${chunk.toString()}`.slice(-32_000); });
94
- child.stderr.on("data", (chunk: Buffer) => { output = `${output}${chunk.toString()}`.slice(-32_000); });
95
- child.on("error", reject);
96
- child.on("close", (code) => {
97
- if (code === 0) done();
98
- else reject(new Error(`npm install failed${output.trim().length === 0 ? "" : `: ${output.trim().split("\n").at(-1)}`}`));
91
+ const log = await open(logPath, "a");
92
+ await log.write(`\n${new Date().toISOString()} npm ${npmArgs.join(" ")}\n`);
93
+ try {
94
+ await new Promise<void>((done, reject) => {
95
+ const child = spawn(command, args, {
96
+ cwd,
97
+ shell: false,
98
+ windowsHide: true,
99
+ stdio: ["ignore", log.fd, log.fd],
100
+ });
101
+ child.on("error", (error) => reject(new Error(`Cannot start npm: ${error.message}. Log: ${logPath}`, { cause: error })));
102
+ child.on("close", (code) => {
103
+ if (code === 0) done();
104
+ else reject(new Error(`npm install failed (exit ${code ?? "signal"}). Log: ${logPath}`));
105
+ });
99
106
  });
100
- });
107
+ } finally {
108
+ await log.close();
109
+ }
101
110
  }
102
111
 
103
112
  /**
104
- * Install missing upstream packages into one user/machine npm home.
105
- * npm's ordinary package.json is the only persistent package-set record; Hypit
106
- * creates no lock, receipt, hash inventory or project-local copy.
113
+ * Reuse each exact upstream release in its own npm installation. npm owns its
114
+ * package.json, lockfile and dependencies; Hypit keeps no parallel inventory.
107
115
  */
108
116
  export async function prepareHostPackages(
109
117
  specifiers: readonly string[],
@@ -113,46 +121,35 @@ export async function prepareHostPackages(
113
121
  },
114
122
  ): Promise<readonly HostPackageReport[]> {
115
123
  const root = resolve(options.root);
116
- const byName = new Map<string, RegistryPackageSpec>();
124
+ const bySpecifier = new Map<string, RegistryPackageSpec>();
117
125
  for (const specifier of specifiers) {
118
126
  const parsed = parseRegistryPackageSpec(specifier);
119
- const previous = byName.get(parsed.name);
120
- if (previous !== undefined && previous.version !== parsed.version) {
121
- throw new Error(`${parsed.name} is required at both ${previous.version} and ${parsed.version}`);
122
- }
123
- byName.set(parsed.name, parsed);
127
+ bySpecifier.set(parsed.specifier, parsed);
124
128
  }
125
- const required = [...byName.values()].sort((left, right) => left.name.localeCompare(right.name));
126
- const missing: RegistryPackageSpec[] = [];
129
+ const required = [...bySpecifier.values()].sort((left, right) => left.specifier.localeCompare(right.specifier));
130
+ const reports: HostPackageReport[] = [];
127
131
  for (const item of required) {
132
+ const installation = externalPackageInstallRoot(root, item.name, item.version);
128
133
  options.onProgress?.({ ...item, phase: "checking" });
129
- if (await installedVersion(root, item.name) !== item.version) missing.push(item);
130
- }
131
- if (missing.length > 0) {
132
- await mkdir(root, { recursive: true });
133
- try {
134
- await readFile(join(root, "package.json"), "utf8");
135
- } catch (error) {
136
- if (!(error instanceof Error && "code" in error && error.code === "ENOENT")) throw error;
137
- await writeFile(join(root, "package.json"), `${JSON.stringify({
134
+ const missing = await installedVersion(installation, item.name) !== item.version;
135
+ const logPath = join(installation, "install.log");
136
+ if (missing) {
137
+ await mkdir(installation, { recursive: true });
138
+ await writeFile(join(installation, "package.json"), `${JSON.stringify({
138
139
  name: "hypit-machine-packages",
139
140
  private: true,
140
141
  description: "Upstream npm packages used on demand by Hypit",
141
- dependencies: {},
142
+ dependencies: { [item.name]: item.version },
142
143
  }, null, 2)}\n`, "utf8");
144
+ options.onProgress?.({ ...item, phase: "installing", logPath });
145
+ await runNpm(installation, [item.specifier], logPath);
143
146
  }
144
- for (const item of missing) options.onProgress?.({ ...item, phase: "installing" });
145
- await runNpm(root, missing.map((item) => item.specifier));
146
- }
147
- const installed = new Set(missing.map((item) => item.name));
148
- const reports: HostPackageReport[] = [];
149
- for (const item of required) {
150
- const version = await installedVersion(root, item.name);
147
+ const version = await installedVersion(installation, item.name);
151
148
  if (version !== item.version) {
152
- throw new Error(`npm did not install ${item.specifier} into ${root}`);
149
+ throw new Error(`npm did not install ${item.specifier} into ${installation}. Log: ${logPath}`);
153
150
  }
154
151
  options.onProgress?.({ ...item, phase: "ready" });
155
- reports.push({ ...item, root, action: installed.has(item.name) ? "installed" : "already-installed" });
152
+ reports.push({ ...item, root: installation, ...(missing ? { logPath } : {}), action: missing ? "installed" : "already-installed" });
156
153
  }
157
154
  return reports;
158
155
  }
@@ -40,3 +40,8 @@ WhisperX process. Credential adapters validate configuration before opening a st
40
40
  storage belongs to the Runtime implementation, while project Build Result repositories use the
41
41
  separate `@hypit/build-result-kit` boundary. Runtime Kit knows no Provider, filesystem, database or
42
42
  video package by name.
43
+
44
+ `ManagedProgram.installation.prepareBeforeStart` lets a Provider reconcile its installed environment
45
+ before a cold start, even when the installation probe already passes. The declared commands use the
46
+ Provider's ordinary package manager. A healthy running Program is reused before this preparation is
47
+ considered; Runtime does not inspect source files or infer implementation versions.
@@ -42,7 +42,9 @@ export type ManagedProgramCommand = {
42
42
  export type ManagedProgramInstallation = {
43
43
  /** Truthful inspection of the installed program; no installer-owned receipt. */
44
44
  probe(): Promise<ManagedProgramState>;
45
- /** Commands run only when the installation probe is not ready. */
45
+ /** Reconcile an installed environment before a cold start, using its package manager's cache. */
46
+ readonly prepareBeforeStart?: boolean;
47
+ /** Commands run when installation is missing, or before a cold start when requested above. */
46
48
  readonly commands: readonly ManagedProgramCommand[];
47
49
  };
48
50
 
@@ -70,7 +70,7 @@ quota; exact-model limits may narrow it further. Build identity is not a capacit
70
70
  no second queue.
71
71
  Claims may carry `units` (default 1): one render Need can occupy one request slot and four browser
72
72
  slots at once. The same admission rule applies to total Provider capacity, exact models, and local
73
- compute resources. SQLite retains the weighted reservation across Worker turns and restarts. This
73
+ compute resources. SQLite retains the weighted reservation across execution turns; an ended attempt releases its reservations. This
74
74
  coordinates Builds sharing this Runtime's Execution Store; it does not enforce a service's quotas
75
75
  across other machines. Short-action limits are described below.
76
76
 
@@ -95,8 +95,7 @@ becomes available; known Operations are polled from their own lightweight record
95
95
  serialized, while network actions and local work remain concurrent under their declared limits.
96
96
 
97
97
  HypiHub can be the explicitly selected gateway for users without their own service keys. A bound
98
- Provider's authentication, quota or transport error never changes that selection. Separate Kie and
99
- HypiHub accounts use separate pools even when they implement the same model.
98
+ Provider's authentication, quota or transport error never changes that selection. Separate accounts use separate pools even when they implement the same model.
100
99
 
101
100
  Without `hypit.results.json`, the official video Distribution selects the filesystem adapter at the
102
101
  project's `.hypit/results` directory, with no cloud account or service. Runtime Local opens that default
@@ -123,12 +122,20 @@ for a submission that never became active and therefore has no Result to save.
123
122
  Source imports select author packages. Runtime Profile entries select only code allowed to access files,
124
123
  credentials, processes or networks. Installing a package changes neither selection.
125
124
 
125
+ Endpoint scoping happens before activation when explicit instance IDs are supplied, or when every
126
+ requested capability has a binding. Otherwise discovery loads the Profile's Endpoint packages to
127
+ find eligible implementations. Thus unused service readiness is not required, but an uninstalled
128
+ declared package can still prevent unbound discovery. `scopedProfile` owns this distinction; package
129
+ names are not used to guess which capabilities they supply.
130
+
126
131
  The lifecycle commands have deliberately narrow meanings:
127
132
 
128
133
  - `hypit runtime init` writes and selects the Distribution's starter Profile; it performs no setup or
129
134
  network access and never overwrites an existing Profile.
130
135
  - `hypit runtime up` prepares selected local dependencies, starts declared local Programs and starts
131
- the Worker. `hypit runtime down` stops the Worker; `hypit programs down` stops the Programs.
136
+ the Worker. Repeat `--endpoint <instance>` to limit preparation to chosen services; omission covers
137
+ the whole Profile. `doctor` and Program operations accept the same scope. Build preflight receives
138
+ actual resolved Endpoint IDs and checks only their credentials and Programs. `hypit runtime down` stops the Worker; `hypit programs down` stops the Programs.
132
139
  Remote services have no lifecycle for Hypit to start or stop.
133
140
  - `hypit runtime logs` reads the Worker's output, including separately redirected standard errors
134
141
  on Windows. The files are `worker.log` and `worker.err.log` under the Runtime data directory's
@@ -136,3 +143,101 @@ The lifecycle commands have deliberately narrow meanings:
136
143
  event order. A failure before readiness also includes the recorded error in its startup message.
137
144
  - `hypit doctor` is the active, read-only check. Endpoint-owned diagnostics may authenticate and read a
138
145
  remote capability catalog; normal preflight never does.
146
+
147
+ ## Build execution evidence
148
+
149
+ The Worker records Endpoint calls independently of CLI follow. Local calls use the execution context;
150
+ remote Operations retain their existing receipts and contribute phase changes as they advance.
151
+ `fileExecutionLogs` appends `hypit.execution-log@1` records to `work/<build>/execution.jsonl` under the
152
+ Profile's `dataRoot`. Each record carries time, Command and Endpoint identity. Pure graph evaluation
153
+ and repeated progress counters do not become log entries. The latest counters remain active Runtime
154
+ state; Provider-authored diagnostics and phase changes are durable evidence.
155
+
156
+ Result finishing streams this log through the selected Repository before publishing the terminal
157
+ manifest or clearing the Build working directory. Complete, failed and cancelled Builds use the same
158
+ finishing path. A failed archive leaves Result attention and preserves the working directory; finishing
159
+ that Result performs no external execution. Log write failures also surface at the Result boundary,
160
+ without converting a successful Provider call into another generation attempt.
161
+
162
+ `hypit logs <build-id>` reads active evidence through Runtime control or finished evidence through the
163
+ project Result Repository. `runtime logs` remains the Worker's process log. Program installation and
164
+ service logs remain owned by their Program; they are shared service history, not copied into every Build.
165
+ The logger does not capture the process environment, credential values, request bodies or global console.
166
+
167
+ ## Build-scoped execution
168
+
169
+ The long-lived Worker supervises execution carriers. Each Build has its own module scope,
170
+ component/Provider registries and selected configuration. Editing project code or Profile selections
171
+ applies to the next Build without restarting the Worker; already loaded modules remain bound to their
172
+ original Build. Installed Distribution modules stay process-owned. The Package Loader owns scoped
173
+ JavaScript/TypeScript loading, including transitive ESM and CommonJS dependencies.
174
+
175
+ One carrier shares a SQLite connection and event loop across active Builds. The database returns
176
+ ready Build IDs; the dispatcher opens that Build's context once, hydrates local work in sequence, then
177
+ lets asynchronous actions proceed concurrently. Pending remote submission does not hold a whole-Build
178
+ admission slot. Accepted Operations retain receipts and wake times; their next poll can advance without
179
+ materializing the whole graph. Endpoint-declared task limits, action concurrency and rates still govern
180
+ actual work. A remote task waiting in an eight-slot pool does not block another Build's unrelated local
181
+ step. CPU-heavy rendering belongs to its execution backend and declared resources.
182
+
183
+ The active execution request owns its opaque local context: project package root, Distribution root,
184
+ selected Endpoint configurations and bindings, and relevant Credential Store declarations. Source
185
+ compilation and execution use the same project package root. Core does not see these choices. Different
186
+ Profiles selecting the same Runtime data directory share its coordinator and capacity accounting; the
187
+ coordinator's startup directory and recorded Profile path do not select later Builds' project code.
188
+
189
+ `startedAt` records assignment to an execution carrier. Losing that carrier ends its assigned attempts
190
+ and preserves completed Outputs and external receipts, without resubmitting work. Unstarted queue
191
+ entries may still start. Result-writing failures retain the attention and `result finish` path. A live
192
+ carrier never reclaims another carrier's turns. These are module/registry contexts in trusted code,
193
+ not OS or security isolation: process globals, native libraries and a fatal process failure are shared.
194
+ The carrier has one working directory and inherited environment. Package-relative file access uses
195
+ module URLs; spawned tools receive their own explicit working directory and environment as needed.
196
+
197
+ After its assigned Builds end, the carrier exits and releases Node's module cache. The coordinator and
198
+ Managed Programs stay available. With continuous submissions, the coordinator can retire a carrier
199
+ from accepting new Builds while its assigned work continues in place. New work uses a fresh carrier;
200
+ all carriers share the same SQLite resource accounting. A live Build is never unloaded or moved.
201
+
202
+ The coordinator reads process policy from its startup Profile:
203
+
204
+ ```json
205
+ "worker": { "executionMemoryMb": 1024 }
206
+ ```
207
+
208
+ The default is 1024 MiB of execution-process RSS. It is a soft retirement budget, not a memory ceiling
209
+ or a limit on active Builds. Carriers report RSS after opening a Build context and when a Build ends.
210
+ Once a carrier has completed work and its reported RSS reaches the budget, it stops accepting new
211
+ Builds. Its remaining Builds finish before it exits. Live work alone does not trigger rotation, and
212
+ a fresh carrier can accept work even when its startup footprint exceeds the budget. There is no
213
+ forced timeout or replay. Draining carriers can still use substantial memory while long jobs run;
214
+ this policy reclaims finished-work accumulation, not the memory required by unfinished work.
215
+ The Profile that starts the coordinator owns this process policy until that coordinator exits.
216
+
217
+ Loaded module bindings are scoped, not the filesystem. Later file reads observe ordinary files;
218
+ a first-time dynamic import reads the implementation then available and subsequently remains cached
219
+ in that Build's scope. No source snapshot, filesystem scan, content hash or Build recovery is involved.
220
+ `createLocalRuntime` remains available for embeddings that explicitly supply their implementations.
221
+ Its `workOnce` advances fresh work or work already owned by that instance; an explicit request to
222
+ take over another context's started Build fails before any Provider call. The coordinator supplies
223
+ the assignment when opening each production Build context. Client code calls `worker.up()` on the
224
+ controller returned by `await host.controller()`, and calls `build(...)` on the Runtime returned by
225
+ `await host.createRuntime()`. There is one production process-lifecycle path.
226
+
227
+ Managed Programs have independent lifetimes. A healthy WhisperX service keeps its model loaded;
228
+ `prepareBeforeStart` reconciles a cold installation through uv's source-aware synchronization.
229
+ `runtime down` stops the coordinator and asks its executors to stop; Programs are stopped separately.
230
+ Distribution changes and shell environment changes still concern the coordinator's bootstrap process.
231
+ Inspect active work before restarting it. Environment-backed credentials use that inherited process
232
+ environment; external writable Credential Stores resolve through their own implementation.
233
+
234
+ ### Concurrency checks
235
+
236
+ `pnpm test` exercises 24 Builds with an eight-task remote pool and with all 24 submissions pending
237
+ at once. Both cases verify local progress, per-Build module isolation, one submission per Build,
238
+ capacity release and every completed Result. They use the production execution process and SQLite.
239
+
240
+ `pnpm test:runtime-scale` runs the same checks with 1000 simultaneous remote submissions, on its own.
241
+ This is a load experiment rather than part of every package regression. It reports fixture preparation,
242
+ local progress, completion, executor RSS and cleanup separately; total test time also includes creating
243
+ and removing the temporary Result repositories. Neither suite uses a completion-time performance target.