@hypit/hypit 0.1.4 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (462) hide show
  1. package/README.md +4 -2
  2. package/dist/public/caption.d.ts +206 -183
  3. package/dist/public/composition.d.ts +25 -3
  4. package/dist/public/endpoint-kit.d.ts +24 -2
  5. package/dist/public/generation.d.ts +5 -1
  6. package/dist/public/hyperframes.d.ts +19 -1
  7. package/dist/public/narrative.d.ts +17 -3
  8. package/dist/public/performance.d.ts +1590 -0
  9. package/dist/public/program-space.d.ts +179 -32
  10. package/dist/public/runtime-kit.d.ts +21 -8
  11. package/dist/public/sound.d.ts +822 -0
  12. package/dist/public/speech.d.ts +41 -0
  13. package/dist/public/studio-adapter.d.ts +77 -15
  14. package/dist/public/temporal-markup.d.ts +9 -44
  15. package/dist/public/temporal.d.ts +37 -28
  16. package/dist/public/{semantic-track.d.ts → timeline.d.ts} +62 -49
  17. package/examples/README.md +18 -10
  18. package/examples/minimal-author-package/packages/example-component/preview/preview.svml +19 -12
  19. package/examples/minimal-author-package/packages/example-component/src/component.ts +5 -5
  20. package/examples/minimal-author-package/packages/example-component/src/fragment.ts +3 -5
  21. package/examples/minimal-author-package/packages/example-component/src/manifest.ts +8 -10
  22. package/examples/minimal-author-package/packages/example-component/src/surface.ts +2 -2
  23. package/examples/provider-package/README.md +78 -0
  24. package/examples/provider-package/hypit.runtime.json +12 -0
  25. package/examples/provider-package/packages/provider-images/package.json +11 -0
  26. package/examples/provider-package/packages/provider-images/src/activation.ts +24 -0
  27. package/examples/provider-package/packages/provider-images/src/provider.ts +122 -0
  28. package/examples/provider-package/packages/provider-images/tsconfig.json +9 -0
  29. package/examples/semantic-composition/README.md +8 -1
  30. package/examples/semantic-composition/chat.svml +6 -5
  31. package/examples/semantic-composition/hypit.runtime.json +1 -1
  32. package/examples/semantic-composition/packages/chat-scene/README.md +3 -3
  33. package/examples/semantic-composition/packages/chat-scene/src/activation.ts +18 -21
  34. package/examples/semantic-composition/packages/chat-scene/src/render.ts +4 -4
  35. package/examples/semantic-composition/packages/performance-styles/README.md +42 -0
  36. package/examples/semantic-composition/packages/performance-styles/package.json +25 -0
  37. package/examples/semantic-composition/packages/performance-styles/src/activation.ts +57 -0
  38. package/examples/semantic-composition/packages/performance-styles/src/render.ts +54 -0
  39. package/examples/semantic-composition/packages/performance-styles/src/studio.ts +28 -0
  40. package/examples/semantic-composition/packages/performance-styles/tsconfig.json +18 -0
  41. package/examples/semantic-composition/packages/responsive-explainer/README.md +16 -9
  42. package/examples/semantic-composition/packages/responsive-explainer/src/activation.ts +12 -12
  43. package/examples/semantic-composition/packages/responsive-explainer/src/render.ts +5 -5
  44. package/examples/semantic-composition/packages/sound-styles/README.md +36 -0
  45. package/examples/semantic-composition/packages/sound-styles/package.json +25 -0
  46. package/examples/semantic-composition/packages/sound-styles/src/activation.ts +53 -0
  47. package/examples/semantic-composition/packages/sound-styles/src/render.ts +14 -0
  48. package/examples/semantic-composition/packages/sound-styles/tsconfig.json +18 -0
  49. package/package.json +35 -15
  50. package/packages/audio-track/README.md +20 -13
  51. package/packages/audio-track/package.json +1 -1
  52. package/packages/audio-track/src/component.ts +4 -4
  53. package/packages/audio-track/src/fragment.ts +6 -5
  54. package/packages/audio-track/src/index.ts +1 -1
  55. package/packages/audio-track/src/manifest.ts +17 -16
  56. package/packages/audio-track/src/program.ts +21 -25
  57. package/packages/audio-track/src/surface.ts +19 -18
  58. package/packages/audio-track-studio/README.md +23 -0
  59. package/packages/audio-track-studio/src/index.ts +28 -17
  60. package/packages/author-kit/README.md +1 -1
  61. package/packages/background-removal/README.md +4 -7
  62. package/packages/browser-capture/package.json +1 -1
  63. package/packages/build-result/README.md +11 -0
  64. package/packages/build-result/src/decode.ts +2 -0
  65. package/packages/build-result/src/execution-log.ts +17 -0
  66. package/packages/build-result/src/index.ts +1 -0
  67. package/packages/build-result/src/store.ts +14 -1
  68. package/packages/build-result/src/types.ts +3 -0
  69. package/packages/build-result-s3/src/repository.ts +4 -0
  70. package/packages/caption/README.md +61 -73
  71. package/packages/caption/package.json +3 -2
  72. package/packages/caption/src/activation.ts +2 -2
  73. package/packages/caption/src/component.ts +20 -5
  74. package/packages/caption/src/display.ts +3 -18
  75. package/packages/caption/src/fragment.ts +3 -7
  76. package/packages/caption/src/index.ts +6 -5
  77. package/packages/caption/src/manifest.ts +29 -46
  78. package/packages/caption/src/style.ts +24 -135
  79. package/packages/caption/src/surface.ts +12 -92
  80. package/packages/caption/src/temporalize.ts +18 -53
  81. package/packages/caption/src/types.ts +8 -35
  82. package/packages/caption/src/visibility.ts +23 -0
  83. package/packages/caption-fine/README.md +21 -9
  84. package/packages/caption-fine/package.json +4 -2
  85. package/packages/caption-fine/src/component.ts +3 -3
  86. package/packages/caption-fine/src/fragment.ts +7 -19
  87. package/packages/caption-fine/src/index.ts +2 -0
  88. package/packages/caption-fine/src/manifest.ts +26 -17
  89. package/packages/caption-fine/src/recipe.ts +7 -0
  90. package/packages/caption-fine/src/render.ts +14 -13
  91. package/packages/caption-fine/src/schedule.ts +39 -35
  92. package/packages/caption-fine/src/style.ts +10 -9
  93. package/packages/caption-fine/src/surface.ts +62 -35
  94. package/packages/caption-fine/src/types.ts +2 -0
  95. package/packages/caption-fine-studio/README.md +24 -2
  96. package/packages/caption-fine-studio/package.json +3 -1
  97. package/packages/caption-fine-studio/src/activation.ts +3 -3
  98. package/packages/caption-fine-studio/src/index.ts +54 -42
  99. package/packages/cli/README.md +57 -4
  100. package/packages/cli/package.json +1 -0
  101. package/packages/cli/src/arguments.ts +25 -6
  102. package/packages/cli/src/build-planning.ts +3 -2
  103. package/packages/cli/src/command.ts +6 -0
  104. package/packages/cli/src/commands/environment.ts +28 -18
  105. package/packages/cli/src/commands/execution.ts +81 -26
  106. package/packages/cli/src/commands/results.ts +7 -11
  107. package/packages/cli/src/index.ts +2 -2
  108. package/packages/cli/src/machine-view.ts +3 -2
  109. package/packages/cli/src/main.ts +34 -42
  110. package/packages/cli/src/observation.ts +7 -1
  111. package/packages/cli/src/output.ts +65 -23
  112. package/packages/cli/src/view.ts +66 -19
  113. package/packages/comment-sticker/README.md +3 -3
  114. package/packages/comment-sticker/package.json +1 -1
  115. package/packages/comment-sticker/src/component.ts +4 -4
  116. package/packages/comment-sticker/src/fragment.ts +5 -4
  117. package/packages/comment-sticker/src/manifest.ts +7 -6
  118. package/packages/comment-sticker/src/program.ts +9 -9
  119. package/packages/comment-sticker/src/surface.ts +6 -7
  120. package/packages/composition/README.md +21 -0
  121. package/packages/composition/src/audio-presentation.ts +44 -0
  122. package/packages/composition/src/index.ts +3 -0
  123. package/packages/composition/src/schema.ts +8 -3
  124. package/packages/composition/src/track.ts +15 -1
  125. package/packages/credential-store-env/README.md +1 -1
  126. package/packages/deck-track/README.md +3 -3
  127. package/packages/deck-track/package.json +1 -1
  128. package/packages/deck-track/src/component.ts +5 -5
  129. package/packages/deck-track/src/fragment.ts +6 -5
  130. package/packages/deck-track/src/lower.ts +12 -12
  131. package/packages/deck-track/src/manifest.ts +8 -7
  132. package/packages/deck-track/src/program.ts +13 -16
  133. package/packages/deck-track/src/surface.ts +9 -10
  134. package/packages/driver-node/src/driver.ts +41 -3
  135. package/packages/elevenlabs-speech/README.md +27 -0
  136. package/packages/{provider-xiaomi-mimo → elevenlabs-speech}/package.json +5 -8
  137. package/packages/elevenlabs-speech/src/activation.ts +26 -0
  138. package/packages/elevenlabs-speech/src/fragment.ts +11 -0
  139. package/packages/elevenlabs-speech/src/index.ts +111 -0
  140. package/packages/elevenlabs-speech/src/surface.ts +167 -0
  141. package/packages/endpoint-kit/README.md +24 -0
  142. package/packages/endpoint-kit/src/index.ts +7 -1
  143. package/packages/film/README.md +12 -7
  144. package/packages/film/package.json +1 -1
  145. package/packages/film/src/component.ts +4 -4
  146. package/packages/film/src/fragment.ts +6 -5
  147. package/packages/film/src/manifest.ts +11 -10
  148. package/packages/film/src/program.ts +5 -5
  149. package/packages/film/src/recipe.ts +2 -1
  150. package/packages/film/src/surface.ts +10 -7
  151. package/packages/film-studio/package.json +1 -1
  152. package/packages/film-studio/src/index.ts +2 -2
  153. package/packages/fishaudio-speech/README.md +33 -0
  154. package/packages/fishaudio-speech/package.json +21 -0
  155. package/packages/fishaudio-speech/src/activation.ts +32 -0
  156. package/packages/fishaudio-speech/src/fragment.ts +11 -0
  157. package/packages/fishaudio-speech/src/index.ts +156 -0
  158. package/packages/fishaudio-speech/src/surface.ts +192 -0
  159. package/packages/generation/README.md +11 -1
  160. package/packages/generation/src/mapping.ts +28 -30
  161. package/packages/gpt-image/README.md +1 -2
  162. package/packages/grok-imagine/README.md +1 -2
  163. package/packages/hyperframes/README.md +7 -3
  164. package/packages/hyperframes/src/browser-program.ts +11 -2
  165. package/packages/hyperframes/src/document.ts +15 -2
  166. package/packages/interview-emoji-reveal/README.md +4 -4
  167. package/packages/interview-emoji-reveal/package.json +1 -1
  168. package/packages/interview-emoji-reveal/src/component.ts +4 -4
  169. package/packages/interview-emoji-reveal/src/fragment.ts +6 -5
  170. package/packages/interview-emoji-reveal/src/manifest.ts +9 -8
  171. package/packages/interview-emoji-reveal/src/program.ts +14 -14
  172. package/packages/interview-emoji-reveal/src/surface.ts +8 -9
  173. package/packages/media-execution/README.md +7 -3
  174. package/packages/media-execution/src/audio-presentation.ts +23 -0
  175. package/packages/media-execution/src/execute.ts +2 -0
  176. package/packages/media-pipeline/README.md +7 -3
  177. package/packages/media-pipeline/src/audio-plan.ts +4 -1
  178. package/packages/media-pipeline/src/component.ts +16 -2
  179. package/packages/media-pipeline/src/manifest.ts +3 -1
  180. package/packages/media-pipeline/src/types.ts +2 -1
  181. package/packages/media-track/README.md +14 -47
  182. package/packages/media-track/package.json +1 -1
  183. package/packages/media-track/preview/preview.svml +5 -5
  184. package/packages/media-track/src/author.ts +12 -6
  185. package/packages/media-track/src/component.ts +10 -16
  186. package/packages/media-track/src/fragment.ts +8 -7
  187. package/packages/media-track/src/index.ts +3 -1
  188. package/packages/media-track/src/lower.ts +7 -7
  189. package/packages/media-track/src/manifest.ts +16 -38
  190. package/packages/media-track/src/program.ts +62 -67
  191. package/packages/media-track/src/sampling.ts +6 -6
  192. package/packages/media-track/src/sequence.ts +8 -8
  193. package/packages/media-track/src/surface.ts +25 -43
  194. package/packages/media-track-studio/README.md +9 -0
  195. package/packages/media-track-studio/src/index.ts +16 -11
  196. package/packages/mimo-speech/README.md +1 -1
  197. package/packages/minimax-h3/README.md +1 -1
  198. package/packages/nano-banana/README.md +1 -1
  199. package/packages/narrative/README.md +23 -1
  200. package/packages/narrative/src/identity.ts +11 -0
  201. package/packages/narrative/src/index.ts +3 -0
  202. package/packages/narrative/src/schema.ts +28 -27
  203. package/packages/narrative/src/selection.ts +52 -0
  204. package/packages/narrative/src/types.ts +2 -0
  205. package/packages/package-loader-node/README.md +30 -0
  206. package/packages/package-loader-node/package.json +5 -2
  207. package/packages/package-loader-node/src/distribution-resolution.ts +10 -3
  208. package/packages/package-loader-node/src/index.ts +1 -0
  209. package/packages/package-loader-node/src/loader.ts +12 -15
  210. package/packages/package-loader-node/src/location.ts +27 -1
  211. package/packages/package-loader-node/src/module-scope.ts +183 -0
  212. package/packages/package-loader-node/src/types.ts +4 -0
  213. package/packages/performance/README.md +83 -0
  214. package/packages/performance/package.json +30 -0
  215. package/packages/performance/src/activation.ts +11 -0
  216. package/packages/performance/src/component.ts +46 -0
  217. package/packages/performance/src/index.ts +6 -0
  218. package/packages/performance/src/manifest.ts +53 -0
  219. package/packages/{media-track/src/performance.ts → performance/src/media.ts} +9 -10
  220. package/packages/performance/src/program.ts +51 -0
  221. package/packages/performance/src/style.ts +35 -0
  222. package/packages/performance/src/surface.ts +99 -0
  223. package/packages/performance-studio/README.md +25 -0
  224. package/packages/performance-studio/package.json +21 -0
  225. package/packages/performance-studio/src/activation.ts +6 -0
  226. package/packages/performance-studio/src/index.ts +84 -0
  227. package/packages/program-space/README.md +9 -18
  228. package/packages/program-space/src/activation.ts +1 -5
  229. package/packages/program-space/src/index.ts +2 -11
  230. package/packages/program-space/src/surface.ts +1 -20
  231. package/packages/project-context-node/README.md +20 -0
  232. package/packages/project-context-node/package.json +10 -0
  233. package/packages/project-context-node/src/index.ts +3 -0
  234. package/packages/{cli → project-context-node}/src/runtime-selection.ts +7 -2
  235. package/packages/provider-hyperframes-local/README.md +43 -15
  236. package/packages/provider-hyperframes-local/src/activation.ts +4 -3
  237. package/packages/provider-hyperframes-local/src/capture-process.ts +26 -4
  238. package/packages/provider-hyperframes-local/src/capture.ts +96 -26
  239. package/packages/provider-hyperframes-local/src/concurrency.ts +86 -0
  240. package/packages/provider-hyperframes-local/src/opaque-capture.ts +92 -0
  241. package/packages/provider-hyperframes-local/src/options.ts +2 -0
  242. package/packages/provider-hyperframes-local/src/program.ts +6 -3
  243. package/packages/provider-hyperframes-local/src/progress.ts +53 -0
  244. package/packages/provider-hyperframes-local/src/provider.ts +18 -5
  245. package/packages/provider-hyperframes-local/src/render.ts +48 -7
  246. package/packages/provider-hypihub/README.md +48 -17
  247. package/packages/provider-hypihub/package.json +2 -0
  248. package/packages/provider-hypihub/src/mapping.ts +31 -7
  249. package/packages/provider-hypihub/src/oauth.ts +6 -0
  250. package/packages/provider-hypihub/src/provider.ts +25 -13
  251. package/packages/provider-hypihub/src/routes.ts +1 -2
  252. package/packages/provider-hypihub/src/upload.ts +2 -0
  253. package/packages/provider-media-local/README.md +3 -4
  254. package/packages/provider-whisperx-local/src/program.ts +1 -0
  255. package/packages/provider-whisperx-local/src/provider.ts +3 -0
  256. package/packages/ranking/README.md +8 -6
  257. package/packages/ranking/package.json +1 -1
  258. package/packages/ranking/src/component.ts +6 -6
  259. package/packages/ranking/src/fragment.ts +11 -7
  260. package/packages/ranking/src/manifest.ts +21 -14
  261. package/packages/ranking/src/render.ts +22 -26
  262. package/packages/ranking/src/schedule.ts +16 -19
  263. package/packages/ranking/src/surface.ts +12 -13
  264. package/packages/ranking-studio/README.md +18 -0
  265. package/packages/ranking-studio/src/index.ts +61 -9
  266. package/packages/render-hyperframes/README.md +7 -7
  267. package/packages/render-hyperframes/package.json +1 -1
  268. package/packages/render-hyperframes/src/component.ts +11 -1
  269. package/packages/render-hyperframes/src/fragment.ts +7 -4
  270. package/packages/render-hyperframes/src/manifest.ts +4 -4
  271. package/packages/render-hyperframes/src/surface.ts +6 -6
  272. package/packages/runtime/README.md +8 -1
  273. package/packages/runtime/src/execution.ts +15 -4
  274. package/packages/runtime/src/index.ts +2 -1
  275. package/packages/runtime/src/log.ts +51 -0
  276. package/packages/runtime/src/types.ts +5 -8
  277. package/packages/runtime-host-node/README.md +30 -0
  278. package/packages/runtime-host-node/package.json +1 -0
  279. package/packages/runtime-host-node/src/index.ts +24 -9
  280. package/packages/runtime-host-node/src/packages.ts +47 -50
  281. package/packages/runtime-kit/README.md +5 -0
  282. package/packages/runtime-kit/src/index.ts +3 -1
  283. package/packages/runtime-local/README.md +109 -4
  284. package/packages/runtime-local/src/config.ts +202 -56
  285. package/packages/runtime-local/src/control.ts +9 -1
  286. package/packages/runtime-local/src/executor.ts +66 -0
  287. package/packages/runtime-local/src/host.ts +37 -17
  288. package/packages/runtime-local/src/log.ts +48 -0
  289. package/packages/runtime-local/src/programs.ts +2 -1
  290. package/packages/runtime-local/src/result-writer.ts +2 -0
  291. package/packages/runtime-local/src/runtime.ts +8 -6
  292. package/packages/runtime-local/src/supervisor.ts +142 -0
  293. package/packages/runtime-local/src/types.ts +9 -2
  294. package/packages/runtime-local/src/worker-process.ts +7 -24
  295. package/packages/runtime-local/src/worker.ts +55 -83
  296. package/packages/screen-overlay/README.md +3 -3
  297. package/packages/screen-overlay/package.json +1 -1
  298. package/packages/screen-overlay/src/component.ts +3 -3
  299. package/packages/screen-overlay/src/fragment.ts +5 -4
  300. package/packages/screen-overlay/src/manifest.ts +7 -6
  301. package/packages/screen-overlay/src/program.ts +9 -9
  302. package/packages/screen-overlay/src/surface.ts +6 -7
  303. package/packages/script/README.md +30 -5
  304. package/packages/script/src/manifest.ts +4 -3
  305. package/packages/script/src/narrative.ts +1 -0
  306. package/packages/script/src/parser.ts +45 -6
  307. package/packages/script/src/surface.ts +4 -3
  308. package/packages/script/src/types.ts +1 -1
  309. package/packages/script-studio/package.json +9 -3
  310. package/packages/script-studio/src/index.ts +2 -0
  311. package/packages/script-studio/src/projection.ts +105 -0
  312. package/packages/seedance/README.md +30 -1
  313. package/packages/seedance/src/index.ts +18 -7
  314. package/packages/seedance/src/surface.ts +17 -4
  315. package/packages/seedance-kits/README.md +7 -1
  316. package/packages/seedream/README.md +1 -1
  317. package/packages/sound/README.md +81 -0
  318. package/packages/sound/package.json +25 -0
  319. package/packages/sound/src/activation.ts +11 -0
  320. package/packages/sound/src/component.ts +28 -0
  321. package/packages/sound/src/index.ts +5 -0
  322. package/packages/sound/src/manifest.ts +47 -0
  323. package/packages/sound/src/program.ts +84 -0
  324. package/packages/sound/src/style.ts +34 -0
  325. package/packages/sound/src/surface.ts +90 -0
  326. package/packages/sound-studio/README.md +22 -0
  327. package/packages/sound-studio/package.json +20 -0
  328. package/packages/sound-studio/src/activation.ts +6 -0
  329. package/packages/sound-studio/src/index.ts +74 -0
  330. package/packages/speech/README.md +2 -2
  331. package/packages/speech-alignment/src/local.ts +8 -0
  332. package/packages/speech-alignment/src/locate.ts +1 -1
  333. package/packages/store-sqlite/README.md +7 -0
  334. package/packages/store-sqlite/src/store.ts +84 -83
  335. package/packages/studio/INSPECTOR.md +15 -2
  336. package/packages/studio/LOCALIZATION.md +98 -0
  337. package/packages/studio/README.md +101 -14
  338. package/packages/studio/locales/en.json +197 -0
  339. package/packages/studio/locales/zh-CN.json +191 -0
  340. package/packages/studio/package.json +8 -7
  341. package/packages/studio/src/companion-assembly.ts +1 -0
  342. package/packages/studio/src/domain.ts +1 -1
  343. package/packages/studio/src/fallback-companions.ts +3 -3
  344. package/packages/studio/src/feedback-server.ts +51 -0
  345. package/packages/studio/src/feedback-store.ts +66 -0
  346. package/packages/studio/src/feedback.ts +60 -0
  347. package/packages/studio/src/localization-node.ts +46 -0
  348. package/packages/studio/src/localization.ts +85 -0
  349. package/packages/studio/src/parameter-values.ts +43 -1
  350. package/packages/studio/src/parameters.ts +114 -24
  351. package/packages/studio/src/preview/render.ts +5 -1
  352. package/packages/studio/src/preview/runtime-shim.ts +49 -3
  353. package/packages/studio/src/programme.ts +14 -30
  354. package/packages/studio/src/server.ts +10 -6
  355. package/packages/studio/src/shared.ts +4 -2
  356. package/packages/studio/src/snapshot.ts +21 -132
  357. package/packages/studio/src/studio-preflight.ts +3 -3
  358. package/packages/studio/src/studio-registry.ts +50 -6
  359. package/packages/studio/src/style.css +223 -50
  360. package/packages/studio/src/ui/artifact-name.ts +8 -6
  361. package/packages/studio/src/ui/artifact-preview.ts +5 -4
  362. package/packages/studio/src/ui/code.ts +17 -16
  363. package/packages/studio/src/ui/comments.ts +234 -0
  364. package/packages/studio/src/ui/dropdown.ts +68 -0
  365. package/packages/studio/src/ui/i18n.ts +109 -0
  366. package/packages/studio/src/ui/icons.ts +6 -0
  367. package/packages/studio/src/ui/library.ts +76 -65
  368. package/packages/studio/src/ui/main.ts +223 -211
  369. package/packages/studio/src/ui/overlay.ts +12 -8
  370. package/packages/studio/src/ui/scrub-preview.ts +110 -0
  371. package/packages/studio/src/ui/stage.ts +93 -29
  372. package/packages/studio/src/ui/timeline.ts +190 -118
  373. package/packages/studio/start.ts +41 -22
  374. package/packages/studio-adapter/README.md +130 -11
  375. package/packages/studio-adapter/src/index.ts +100 -13
  376. package/packages/temporal/README.md +6 -6
  377. package/packages/temporal/package.json +1 -1
  378. package/packages/temporal/src/component.ts +5 -6
  379. package/packages/temporal/src/index.ts +8 -6
  380. package/packages/temporal/src/location.ts +11 -11
  381. package/packages/temporal/src/projection.ts +19 -19
  382. package/packages/temporal/src/rational.ts +4 -4
  383. package/packages/temporal-markup/EDITING.md +2 -2
  384. package/packages/temporal-markup/README.md +27 -11
  385. package/packages/temporal-markup/package.json +1 -1
  386. package/packages/temporal-markup/src/index.ts +20 -25
  387. package/packages/temporal-markup/src/space.ts +10 -41
  388. package/packages/timeline/README.md +31 -0
  389. package/packages/{semantic-track → timeline}/package.json +1 -1
  390. package/packages/timeline/src/activation.ts +8 -0
  391. package/packages/timeline/src/component.ts +24 -0
  392. package/packages/timeline/src/identity.ts +60 -0
  393. package/packages/timeline/src/index.ts +6 -0
  394. package/packages/{semantic-track → timeline}/src/location.ts +20 -20
  395. package/packages/timeline/src/manifest.ts +39 -0
  396. package/packages/{semantic-track → timeline}/src/projection.ts +14 -14
  397. package/packages/timeline/src/types.ts +24 -0
  398. package/packages/timeline-author/README.md +68 -0
  399. package/packages/{speech-track → timeline-author}/package.json +6 -4
  400. package/packages/timeline-author/src/activation.ts +22 -0
  401. package/packages/{speech-track → timeline-author}/src/component.ts +15 -13
  402. package/packages/{speech-track → timeline-author}/src/fragment.ts +14 -23
  403. package/packages/timeline-author/src/index.ts +7 -0
  404. package/packages/timeline-author/src/manifest.ts +78 -0
  405. package/packages/timeline-author/src/program.ts +107 -0
  406. package/packages/timeline-author/src/surface.ts +46 -0
  407. package/packages/timeline-author/src/types.ts +6 -0
  408. package/packages/typography-track/README.md +4 -4
  409. package/packages/typography-track/package.json +1 -1
  410. package/packages/typography-track/src/component.ts +4 -4
  411. package/packages/typography-track/src/fragment.ts +4 -3
  412. package/packages/typography-track/src/manifest.ts +11 -9
  413. package/packages/typography-track/src/program.ts +15 -15
  414. package/packages/typography-track/src/surface.ts +17 -18
  415. package/packages/video-cli/README.md +4 -1
  416. package/packages/video-cli/package.json +2 -1
  417. package/packages/video-cli/src/creation.ts +14 -4
  418. package/packages/video-cli/src/index.ts +1 -1
  419. package/packages/video-cli/src/studio-distribution.ts +2 -1
  420. package/packages/volcengine-matting/README.md +3 -3
  421. package/packages/whisperx/README.md +1 -1
  422. package/services/whisperx/README.md +14 -0
  423. package/services/whisperx/pyproject.toml +2 -0
  424. package/services/whisperx/uv.lock +20 -20
  425. package/packages/provider-hyperframes-aws-lambda/README.md +0 -30
  426. package/packages/provider-hyperframes-aws-lambda/package.json +0 -30
  427. package/packages/provider-hyperframes-aws-lambda/src/activation.ts +0 -97
  428. package/packages/provider-hyperframes-aws-lambda/src/client.ts +0 -114
  429. package/packages/provider-hyperframes-aws-lambda/src/index.ts +0 -21
  430. package/packages/provider-hyperframes-aws-lambda/src/provider.ts +0 -522
  431. package/packages/provider-kie/README.md +0 -134
  432. package/packages/provider-kie/package.json +0 -43
  433. package/packages/provider-kie/src/activation.ts +0 -71
  434. package/packages/provider-kie/src/index.ts +0 -10
  435. package/packages/provider-kie/src/mapping.ts +0 -182
  436. package/packages/provider-kie/src/provider.ts +0 -657
  437. package/packages/provider-kie/src/routes.ts +0 -150
  438. package/packages/provider-xiaomi-mimo/README.md +0 -32
  439. package/packages/provider-xiaomi-mimo/src/activation.ts +0 -57
  440. package/packages/provider-xiaomi-mimo/src/index.ts +0 -5
  441. package/packages/provider-xiaomi-mimo/src/provider.ts +0 -214
  442. package/packages/runtime/src/environment.ts +0 -6
  443. package/packages/semantic-track/README.md +0 -21
  444. package/packages/semantic-track/src/activation.ts +0 -8
  445. package/packages/semantic-track/src/component.ts +0 -24
  446. package/packages/semantic-track/src/identity.ts +0 -58
  447. package/packages/semantic-track/src/index.ts +0 -6
  448. package/packages/semantic-track/src/manifest.ts +0 -38
  449. package/packages/semantic-track/src/types.ts +0 -26
  450. package/packages/speech-track/README.md +0 -51
  451. package/packages/speech-track/src/activation.ts +0 -19
  452. package/packages/speech-track/src/index.ts +0 -7
  453. package/packages/speech-track/src/manifest.ts +0 -73
  454. package/packages/speech-track/src/program.ts +0 -64
  455. package/packages/speech-track/src/surface.ts +0 -35
  456. package/packages/speech-track/src/types.ts +0 -6
  457. package/packages/speech-track-studio/README.md +0 -3
  458. package/packages/speech-track-studio/package.json +0 -14
  459. package/packages/speech-track-studio/src/activation.ts +0 -7
  460. package/packages/speech-track-studio/src/index.ts +0 -40
  461. /package/packages/{cli → project-context-node}/src/project-context.ts +0 -0
  462. /package/packages/{speech-track → timeline-author}/preview/Track.png +0 -0
@@ -1,12 +1,14 @@
1
+ import { readExecutionLog } from "@hypit/runtime";
1
2
  import type { BuildResultManifest, BuildResultRepository } from "@hypit/build-result";
2
3
  import type { NodeRuntimeHost } from "@hypit/runtime-host-node";
3
4
 
4
5
  import type { CliCommand, ExecutionCommand } from "../command.js";
5
- import { activityObservationKey, buildProgressLines, observeBuildView } from "../observation.js";
6
+ import { activityObservationKey, buildProgressLines, buildProgressView, observeBuildView } from "../observation.js";
6
7
  import type { CliIo } from "../output.js";
7
8
  import type { CliRuntimeController } from "../runtime-port.js";
8
9
  import { formatOperationProgress } from "../runtime-view.js";
9
10
  import { buildStatusView } from "../view.js";
11
+ import type { CliBuildStatusView } from "../view.js";
10
12
  import type { OperationalWriter } from "./types.js";
11
13
 
12
14
  type OpenProjectResults = () => Promise<{
@@ -14,8 +16,21 @@ type OpenProjectResults = () => Promise<{
14
16
  close(): void | Promise<void>;
15
17
  }>;
16
18
 
19
+ function statusDetailLines(build: CliBuildStatusView | null): string[] {
20
+ return [
21
+ ...(build?.failure === undefined ? [] : [`Reason ${build.failure}`]),
22
+ ...(build?.commands ?? []).map((command) => `${command.endpoint}: ${formatOperationProgress(command.progress)}`),
23
+ ...(build?.operations ?? []).map((operation) => {
24
+ const label = `${operation.endpoint}${operation.receipt === undefined ? "" : ` · task ${operation.receipt.id}`}`;
25
+ const detail = operation.failure !== undefined ? `${operation.failure.code} — ${operation.failure.message}`
26
+ : operation.progress === undefined ? operation.state : formatOperationProgress(operation.progress);
27
+ return `${label}: ${detail}${operation.count === undefined ? "" : ` ×${operation.count}`}`;
28
+ }),
29
+ ];
30
+ }
31
+
17
32
  export function isExecutionCommand(args: CliCommand): args is ExecutionCommand {
18
- return args.command === "status" || args.command === "cancel" || args.command === "activity"
33
+ return args.command === "logs" || args.command === "status" || args.command === "cancel" || args.command === "activity"
19
34
  || (args.command === "result" && (args.action === "finish" || args.action === "discard"));
20
35
  }
21
36
 
@@ -23,6 +38,7 @@ export function isExecutionCommand(args: CliCommand): args is ExecutionCommand {
23
38
  export async function runExecutionCommand(input: {
24
39
  readonly args: ExecutionCommand;
25
40
  readonly runtimeProfile: string | undefined;
41
+ readonly resolveProjectRuntime?: () => Promise<string | undefined>;
26
42
  readonly io: CliIo;
27
43
  readonly runtimeHost: (profile: string) => Promise<NodeRuntimeHost>;
28
44
  readonly runtimeController: (profile: string) => Promise<CliRuntimeController>;
@@ -30,6 +46,53 @@ export async function runExecutionCommand(input: {
30
46
  readonly write: OperationalWriter;
31
47
  }): Promise<void> {
32
48
  const { args, runtimeProfile, io, runtimeHost, runtimeController, openProjectResults, write } = input;
49
+ if (args.command === "logs") {
50
+ const opened = await openProjectResults();
51
+ let source: "runtime" | "result" | "unavailable" = "unavailable";
52
+ let view: import("@hypit/runtime").ExecutionLogView | undefined;
53
+ let finished = false;
54
+ try {
55
+ const result = await opened.repository.read(args.build);
56
+ finished = result?.outcome !== undefined;
57
+ if (result?.executionLog !== undefined) {
58
+ const chunks = await opened.repository.openFile(args.build, result.executionLog);
59
+ if (chunks === undefined) throw new Error(`Build ${args.build} execution log file is unavailable`);
60
+ view = await readExecutionLog(chunks, args.lines);
61
+ source = "result";
62
+ }
63
+ } finally { await opened.close(); }
64
+ const activeProfile = !finished && view === undefined
65
+ ? runtimeProfile ?? await input.resolveProjectRuntime?.() : undefined;
66
+ if (activeProfile !== undefined) {
67
+ const control = await (await runtimeHost(activeProfile)).openControl({ readOnly: true });
68
+ try { view = await control.logs?.(args.build, args.lines); }
69
+ finally { await control.close(); }
70
+ if (view !== undefined) source = "runtime";
71
+ // Result finishing can move the log between the first read and the active read.
72
+ if (view === undefined) {
73
+ const completed = await openProjectResults();
74
+ try {
75
+ const result = await completed.repository.read(args.build);
76
+ if (result?.executionLog !== undefined) {
77
+ const chunks = await completed.repository.openFile(args.build, result.executionLog);
78
+ if (chunks !== undefined) { view = await readExecutionLog(chunks, args.lines); source = "result"; }
79
+ }
80
+ } finally { await completed.close(); }
81
+ }
82
+ }
83
+ const records = view?.records ?? [];
84
+ const omitted = (view?.total ?? 0) - records.length;
85
+ write({ format: "hypit.cli-logs@1", build: args.build, source, records, omittedRecords: omitted },
86
+ view === undefined ? "No execution log recorded" : "Build execution log", "info",
87
+ [["Build", args.build], ["Source", source]], [
88
+ ...(omitted > 0 ? [`Showing last ${records.length} records; ${omitted} earlier records omitted. Use --lines to read more.`] : []),
89
+ ...records.map((record) => `${new Date(record.time).toISOString()} ${record.endpoint} ${record.command} ${
90
+ record.kind === "phase" ? record.phase : record.kind === "diagnostic" || record.kind === "failed"
91
+ ? `${record.kind}: ${record.message}` : record.kind}`),
92
+ ]);
93
+ return;
94
+ }
95
+
33
96
  if (args.command === "status" && runtimeProfile === undefined) {
34
97
  const openedResults = await openProjectResults();
35
98
  let result;
@@ -42,7 +105,7 @@ export async function runExecutionCommand(input: {
42
105
  throw new Error(`Build ${args.build} has no finished Result; select its Runtime to observe active execution`);
43
106
  }
44
107
  const finished = result?.outcome !== undefined;
45
- const build = result === undefined ? null : buildStatusView({ id: result.id, result });
108
+ const build = result === undefined ? null : buildStatusView({ id: result.id, result, verbose: args.presentation.verbose });
46
109
  const outcome = result?.outcome;
47
110
  write({ format: "hypit.cli-status@1", build }, result === undefined
48
111
  ? "Build Result not found"
@@ -56,11 +119,12 @@ export async function runExecutionCommand(input: {
56
119
  ...(build?.title === undefined ? [] : [["Title", build.title] as const]),
57
120
  ...(outcome === undefined ? [] : [["Outcome", outcome] as const]),
58
121
  ...(!finished && result !== undefined ? [["Result", "open"] as const] : []),
59
- ...(build?.result.outputCount === undefined ? [] : [["Outputs", String(build.result.outputCount)] as const]),
60
- ], !finished && result !== undefined
61
- ? ["Select the Runtime to inspect active work."]
62
- : []);
63
- if (result === undefined || !finished) io.setExitCode?.(1);
122
+ ...(build?.targets?.length ? [["Targets", build.targets.join(", ")] as const] : []),
123
+ ], [
124
+ ...statusDetailLines(build),
125
+ ...(!finished && result !== undefined ? ["Select the Runtime to inspect active work."] : []),
126
+ ]);
127
+ if (result === undefined || !finished || outcome === "failed") io.setExitCode?.(1);
64
128
  return;
65
129
  }
66
130
 
@@ -98,11 +162,12 @@ export async function runExecutionCommand(input: {
98
162
  return {
99
163
  id: item.id,
100
164
  work: status.work,
101
- ...(item.outcome === undefined ? {} : { outcome: item.outcome }),
165
+ phases: buildProgressView(item).phases,
102
166
  ...(status.attention === undefined ? {} : { attention: status.attention }),
103
167
  };
104
168
  });
105
- const currentView = activityObservationKey(worker.state, activity.builds);
169
+ const currentView = JSON.stringify([activity.builds.length,
170
+ activityObservationKey(worker.state, activity.builds.slice(0, args.limit))]);
106
171
  if (args.watch && currentView === previous) return;
107
172
  previous = currentView;
108
173
  const value = {
@@ -111,7 +176,7 @@ export async function runExecutionCommand(input: {
111
176
  worker: worker.state,
112
177
  builds,
113
178
  ...(activity.builds.length <= args.limit ? {} : { omittedBuilds: activity.builds.length - args.limit }),
114
- capacity: activity.capacity,
179
+ ...(args.presentation.verbose ? { capacity: activity.capacity } : {}),
115
180
  };
116
181
  const buildLines = activity.builds.slice(0, args.limit).map((item) => {
117
182
  const requestProgress = item.requests === undefined || item.requests.total === 0
@@ -119,20 +184,16 @@ export async function runExecutionCommand(input: {
119
184
  : ` · ${item.requests.completed}/${item.requests.total} steps`;
120
185
  return `${item.id}: ${buildStatusView({ id: item.id, runtime: item }).work.state}`
121
186
  + requestProgress
187
+ + Object.entries(buildProgressView(item).phases).map(([phase, count]) => ` · ${count} ${phase}`).join("")
122
188
  + `${item.stop?.cause === "execution-failed" ? " · stopping after failure" : item.cancellationRequested ? " · cancelling" : ""}`
123
189
  + `${item.issue === undefined ? "" : ` · ${item.issue.message}`}`;
124
190
  });
125
- const activeOperations = activity.builds.flatMap((item) => item.operations)
126
- .filter((item) => item.status === "pending");
127
191
  const operationLines = args.presentation.verbose
128
- ? activity.builds.flatMap((build) => build.operations.filter((item) => item.status === "pending")
129
- .map((item) => `${build.id} · ${item.endpoint}: ${item.progress === undefined
130
- ? item.status
131
- : formatOperationProgress(item.progress)}`)).slice(0, args.limit)
192
+ ? activity.builds.slice(0, args.limit).flatMap((build) => buildProgressView(build).details
193
+ .map((detail) => `${build.id} · ${detail}`))
132
194
  : [];
133
195
  write(value, "Runtime activity", activity.builds.length === 0 ? "success" : "info", [
134
196
  ["Active Builds", String(activity.builds.length)],
135
- ["Active Operations", String(activeOperations.length)],
136
197
  ["Worker", worker.state],
137
198
  ], [
138
199
  ...buildLines,
@@ -187,7 +248,6 @@ export async function runExecutionCommand(input: {
187
248
  ...(result === undefined ? {} : { result }),
188
249
  ...(resultReadError === undefined ? {} : { resultReadError }),
189
250
  verbose: args.presentation.verbose,
190
- operationLimit: args.limit,
191
251
  });
192
252
  const attention = build?.attention;
193
253
  const humanTitle = !found
@@ -226,14 +286,9 @@ export async function runExecutionCommand(input: {
226
286
  ["Result", "saving"] as const,
227
287
  ] : resultOutcome !== undefined ? [
228
288
  ["Outcome", resultOutcome] as const,
229
- ...(build?.result.outputCount === undefined
230
- ? [] : [["Outputs", String(build.result.outputCount)] as const]),
231
289
  ] : [["State", build?.work.state ?? "unknown"] as const]),
232
- ], (build?.operations ?? []).map((operation) => operation.failure !== undefined
233
- ? `${operation.endpoint}${operation.receipt === undefined ? "" : ` · task ${operation.receipt.id}`}: ${operation.failure.code} — ${operation.failure.message}`
234
- : operation.progress === undefined
235
- ? `${operation.endpoint}${operation.receipt === undefined ? "" : ` · task ${operation.receipt.id}`}: ${operation.state}`
236
- : `${operation.endpoint}${operation.receipt === undefined ? "" : ` · task ${operation.receipt.id}`}: ${formatOperationProgress(operation.progress)}`)
290
+ ...(build?.targets?.length ? [["Targets", build.targets.join(", ")] as const] : []),
291
+ ], statusDetailLines(build)
237
292
  .concat(attention === undefined ? [] : [
238
293
  `Attention ${attention.message}`,
239
294
  ...(attention.action === undefined ? [] : [`Action ${attention.action}`]),
@@ -100,13 +100,8 @@ export async function runProjectResultCommand(input: {
100
100
  projectRoot,
101
101
  ...(args.outputName === undefined ? {} : { output: args.outputName }),
102
102
  limit: args.limit,
103
+ verbose: args.presentation.verbose,
103
104
  });
104
- const focusedOutputs = args.outputName === undefined
105
- ? build.outputs.filter((item) => item.target || item.highlighted)
106
- : build.outputs;
107
- const visibleOutputs = args.presentation.verbose ? build.outputs : focusedOutputs;
108
- const outputCount = build.outputs.length + (build.omittedOutputs ?? 0);
109
- const hiddenOutputCount = args.outputName === undefined ? outputCount - focusedOutputs.length : 0;
110
105
  write({ format: "hypit.cli-inspect@1", build }, "Build Result",
111
106
  manifest.outcome === "failed" ? "error"
112
107
  : manifest.outcome === "cancelled" ? "warning"
@@ -117,23 +112,24 @@ export async function runProjectResultCommand(input: {
117
112
  ["Outcome", build.outcome],
118
113
  ...(args.outputName === undefined ? [
119
114
  ["Targets", String(build.targetCount)] as const,
120
- ["Outputs", String(outputCount)] as const,
115
+ ["Available Outputs", String(build.outputCount)] as const,
121
116
  ] : []),
122
117
  ], [
123
118
  ...(build.failure === undefined ? [] : [`Reason ${build.failure}`]),
119
+ ...(build.executionLog === undefined ? [] : [`Execution log hypit logs ${build.id}`]),
124
120
  ...(build.operations ?? []).map((operation) =>
125
121
  `${operation.endpoint}: ${operation.status}${operation.receipt === undefined ? "" : ` · task ${operation.receipt.id}`}`
126
122
  + (operation.failure === undefined ? "" : ` · ${operation.failure.code}: ${operation.failure.message}`)),
127
123
  ...(build.omittedOperations === undefined ? [] : [`${build.omittedOperations} more execution receipts · use --limit <count>`]),
128
124
  ...(build.note === undefined ? [] : [`Note ${build.note}`]),
129
- ...visibleOutputs.map((item) => `${item.highlighted ? "★" : item.target ? "Target" : "Output"} ${item.name}`
125
+ ...build.outputs.map((item) => `${item.highlighted ? "★" : item.target ? "Target" : "Output"} ${item.name}`
130
126
  + (!args.presentation.verbose ? "" : ` · ${item.type} · ${item.kind}`
131
127
  + `${item.mediaType === undefined ? "" : ` · ${item.mediaType}`}`
132
128
  + `${item.size === undefined ? "" : ` · ${item.size} bytes`}`)),
133
- ...(!args.presentation.verbose && hiddenOutputCount > 0 ? [
134
- `${hiddenOutputCount} other Output${hiddenOutputCount === 1 ? "" : "s"} · use --verbose or --output <name>`,
129
+ ...(args.outputName === undefined && (build.otherOutputCount ?? 0) > 0 ? [
130
+ `${build.otherOutputCount} other Outputs · use --verbose or --output <name>`,
135
131
  ] : []),
136
- ...(args.presentation.verbose && build.omittedOutputs !== undefined ? [
132
+ ...(build.omittedOutputs !== undefined ? [
137
133
  `${build.omittedOutputs} more Outputs · use --limit <count> or --output <name>`,
138
134
  ] : []),
139
135
  ]);
@@ -4,8 +4,8 @@ export { loadDiscoveredSourcePackages } from "./source-packages.js";
4
4
  export { collectRunFrontends, loadRunFile, resolveBuildResultValue } from "./run-file.js";
5
5
  export type { LoadedRunFile } from "./run-file.js";
6
6
  export { hypitHostStateRoot, hypitProjectStateRoot } from "./paths.js";
7
- export { resolvePackageRoot, resolveProjectRoot } from "./project-context.js";
8
- export { findRuntimeProfile } from "./runtime-selection.js";
7
+ export { resolvePackageRoot, resolveProjectRoot } from "@hypit/project-context-node";
8
+ export { findRuntimeProfile } from "@hypit/project-context-node";
9
9
  export { renderCliError, writeCliHelp, writeCliOutput } from "./output.js";
10
10
  export type {
11
11
  CliColorMode,
@@ -13,11 +13,12 @@ type ProgramStateView = {
13
13
  type AttentionView = { readonly message: string; readonly action?: string };
14
14
 
15
15
  export type OperationalMachineView =
16
+ | { readonly format: "hypit.cli-logs@1"; readonly build: string; readonly source: "runtime" | "result" | "unavailable"; readonly records: readonly import("@hypit/runtime").ExecutionLogRecord[]; readonly omittedRecords: number }
16
17
  | { readonly format: "hypit.cli-runtime-init@1"; readonly profile: string; readonly project: string; readonly selected: true }
17
18
  | { readonly format: "hypit.cli-runtime-selection@1"; readonly selected: boolean; readonly removed?: boolean; readonly profile?: string; readonly project?: string }
18
19
  | { readonly format: "hypit.cli-paths@1"; readonly project: string; readonly projectState: string; readonly profileSource: "argument" | "project" | "none"; readonly selectionFile: string; readonly profile?: string; readonly runtimeData?: string; readonly hostState: string; readonly machinePackages: string; readonly distribution?: string }
19
20
  | { readonly format: "hypit.cli-package@1"; readonly action: "install" | "status"; readonly package: string; readonly ready: boolean }
20
- | { readonly format: "hypit.cli-programs@1"; readonly action: "up" | "down" | "status"; readonly ready: boolean; readonly programs: readonly ProgramStateView[]; readonly omittedPrograms?: number }
21
+ | { readonly format: "hypit.cli-programs@1"; readonly action: "up" | "down" | "status"; readonly ready: boolean; readonly programCount: number; readonly readyCount: number; readonly programs: readonly ProgramStateView[]; readonly omittedPrograms?: number }
21
22
  | { readonly format: "hypit.cli-runtime-up@1"; readonly ready: boolean; readonly worker: string; readonly preparedPackages: number; readonly programs: { readonly total: number; readonly ready: number; readonly items: readonly ProgramStateView[] } }
22
23
  | { readonly format: "hypit.cli-runtime-logs@1"; readonly lines: readonly string[]; readonly totalLines: number; readonly omittedLines: number; readonly path?: string }
23
24
  | { readonly format: "hypit.cli-runtime-down@1"; readonly worker: string }
@@ -30,7 +31,7 @@ export type OperationalMachineView =
30
31
  | { readonly format: "hypit.cli-result-edit@1"; readonly build: string; readonly title: string | null; readonly note: string | null; readonly highlightedOutputCount: number; readonly highlightedOutputs: readonly string[]; readonly omittedHighlightedOutputs?: number }
31
32
  | { readonly format: "hypit.cli-get@1"; readonly build: string; readonly output: string; readonly type: string; readonly kind: "scalar" | "resource" | "composite"; readonly path: string }
32
33
  | { readonly format: "hypit.cli-status@1"; readonly build: CliBuildStatusView | null }
33
- | { readonly format: "hypit.cli-activity@1"; readonly at: number; readonly worker: string; readonly builds: readonly { readonly id: string; readonly work: CliBuildStatusView["work"]; readonly outcome?: string; readonly attention?: AttentionView }[]; readonly omittedBuilds?: number; readonly capacity: readonly import("@hypit/runtime").CapacityReservation[] }
34
+ | { readonly format: "hypit.cli-activity@1"; readonly at: number; readonly worker: string; readonly builds: readonly { readonly id: string; readonly work: CliBuildStatusView["work"]; readonly phases: Readonly<Record<string, number>>; readonly attention?: AttentionView }[]; readonly omittedBuilds?: number; readonly capacity?: readonly import("@hypit/runtime").CapacityReservation[] }
34
35
  | { readonly format: "hypit.cli-result-discard@1"; readonly build: string; readonly discarded: boolean }
35
36
  | { readonly format: "hypit.cli-result-finish@1"; readonly build: string; readonly found?: false; readonly outcome?: string; readonly attention?: AttentionView }
36
37
  | { readonly format: "hypit.cli-cancel@1"; readonly requested: boolean; readonly build: CliBuildStatusView | null }
@@ -13,7 +13,7 @@ import type {
13
13
  CliRuntime,
14
14
  CliRuntimeController,
15
15
  } from "./runtime-port.js";
16
- import { createPricingOutput, writeCliHelp, writeCliOutput } from "./output.js";
16
+ import { createPlanOutput, createPricingOutput, writeCliHelp, writeCliOutput } from "./output.js";
17
17
  import type { CliIo, CliMachineView } from "./output.js";
18
18
  import { parseCommand } from "./arguments.js";
19
19
  import type { CliCommand, RuntimeOption } from "./command.js";
@@ -23,13 +23,13 @@ import { isProjectResultCommand, runProjectResultCommand } from "./commands/resu
23
23
  import { isEnvironmentCommand, runEnvironmentCommand } from "./commands/environment.js";
24
24
  import { isExecutionCommand, runExecutionCommand } from "./commands/execution.js";
25
25
  import { inlineValuePreview } from "./runtime-view.js";
26
- import { resolvePackageRoot, resolveProjectRoot } from "./project-context.js";
26
+ import { resolvePackageRoot, resolveProjectRoot } from "@hypit/project-context-node";
27
27
  import { loadDiscoveredSourcePackages } from "./source-packages.js";
28
28
  import {
29
29
  clearRuntimeProfile,
30
30
  findRuntimeProfile,
31
31
  selectRuntimeProfile,
32
- } from "./runtime-selection.js";
32
+ } from "@hypit/project-context-node";
33
33
  import {
34
34
  buildStatusView,
35
35
  cliTypeName,
@@ -40,8 +40,8 @@ function createPublicBuildId(now = Date.now()): string {
40
40
  return orderedBuildId(now, randomBytes(5).toString("hex").toUpperCase());
41
41
  }
42
42
 
43
- async function loadRuntime(host: NodeRuntimeHost): Promise<CliRuntime> {
44
- return await host.createRuntime();
43
+ async function loadRuntime(host: NodeRuntimeHost, endpoints: readonly string[]): Promise<CliRuntime> {
44
+ return await host.createRuntime({ endpoints });
45
45
  }
46
46
 
47
47
  function commandWorkspaceRoot(command: CliCommand): string | undefined {
@@ -116,7 +116,8 @@ export async function runCli(
116
116
  await (await runtimeHost(
117
117
  args.profile,
118
118
  args.packageRoot ?? await packageRootForProject(),
119
- )).runWorker(args.readyFile, args.workerOwner);
119
+ )).runWorker(args.readyFile, args.workerOwner,
120
+ args.executionRoot === undefined ? undefined : { dataRoot: args.executionRoot });
120
121
  return;
121
122
  }
122
123
  if (args.command === "runtime" && args.action === "init") {
@@ -180,7 +181,7 @@ export async function runCli(
180
181
  let runtimeSelectionFile: string | undefined;
181
182
  const runtimeWasExplicit = runtimeProfile !== undefined;
182
183
  let runtimeNeedsHint = runtimeWasExplicit;
183
- if (acceptsRuntimeContext(args) && runtimeProfile === undefined) {
184
+ if (acceptsRuntimeContext(args) && runtimeProfile === undefined && args.command !== "logs") {
184
185
  const selected = await findRuntimeProfile(await commandProjectRoot());
185
186
  if (selected !== undefined) {
186
187
  runtimeProfile = selected.profile;
@@ -231,6 +232,7 @@ export async function runCli(
231
232
  runtimeHost,
232
233
  runtimeController,
233
234
  openProjectResults: projectResults,
235
+ resolveProjectRuntime: async () => (await findRuntimeProfile(await commandProjectRoot()))?.profile,
234
236
  write: writeOperational,
235
237
  });
236
238
  return;
@@ -289,17 +291,18 @@ export async function runCli(
289
291
  author: projectPath(loaded.authorSource, effectiveWorkspaceRoot),
290
292
  frontend: sourceHeader.using,
291
293
  targetCount: loaded.document.targets.length,
292
- targets: loaded.document.targets.slice(0, args.limit).map((item) => item.output),
294
+ targets: loaded.document.targets.map((item) => item.output),
293
295
  candidates: loaded.document.candidates.length,
294
296
  satisfactions: loaded.document.satisfactions.length,
295
- unresolvedHistoricalOutputs: loaded.unresolvedHistoricalOutputs.slice(0, args.limit).map((item) => ({
297
+ historicalOutputCount: loaded.unresolvedHistoricalOutputs.length,
298
+ ...(args.presentation.verbose ? { unresolvedHistoricalOutputs: loaded.unresolvedHistoricalOutputs.slice(0, args.limit).map((item) => ({
296
299
  candidate: item.id,
297
300
  build: item.build,
298
301
  output: item.output,
299
302
  })),
300
303
  ...(loaded.unresolvedHistoricalOutputs.length <= args.limit ? {} : {
301
304
  omittedHistoricalOutputs: loaded.unresolvedHistoricalOutputs.length - args.limit,
302
- }),
305
+ }) } : {}),
303
306
  } as const;
304
307
  writeCliOutput(io, args.presentation, {
305
308
  kind: "check-run",
@@ -324,9 +327,10 @@ export async function runCli(
324
327
  assets: result.attachments.length,
325
328
  modules: modules.length,
326
329
  outputCount: outputs.length,
327
- outputs: outputs.slice(0, args.limit).map((item) => ({ name: item.name, type: cliTypeName(item.type) })),
328
- ...(outputs.length <= args.limit ? {} : { omittedOutputs: outputs.length - args.limit }),
329
- ...(args.presentation.verbose ? { details: {
330
+ ...(args.presentation.verbose ? {
331
+ outputs: outputs.slice(0, args.limit).map((item) => ({ name: item.name, type: cliTypeName(item.type) })),
332
+ ...(outputs.length <= args.limit ? {} : { omittedOutputs: outputs.length - args.limit }),
333
+ details: {
330
334
  modules: modules.slice(0, args.limit),
331
335
  values: values.slice(0, args.limit).map((item) => ({ name: item.name, type: cliTypeName(item.type) })),
332
336
  } } : {}),
@@ -402,7 +406,7 @@ export async function runCli(
402
406
  const evaluated = await evaluatePlanNeeds(result.definition, packageContributions);
403
407
  const providers = await describePlanProviders(host, evaluated.state, evaluated);
404
408
  assertPlannedRequests(evaluated.state, evaluated, providers);
405
- const preflight = await preflightPlan(host, evaluated.state);
409
+ const preflight = await preflightPlan(host, evaluated.state, providers);
406
410
  // Build is an execution boundary, not a provisioning command. The cheap
407
411
  // preflight must already be clean; `runtime up` is the explicit place for
408
412
  // installing or starting declared programs.
@@ -415,7 +419,8 @@ export async function runCli(
415
419
  const detail = error instanceof Error ? error.message : String(error);
416
420
  throw new Error(`Runtime Worker could not start; no Build was queued: ${detail}`);
417
421
  }
418
- runtime = await loadRuntime(await runtimeHost(runtimeProfile));
422
+ runtime = await loadRuntime(await runtimeHost(runtimeProfile, sourcePackageRoot),
423
+ [...new Set(providers.flatMap((item) => item.status === "resolved" && item.endpoint !== undefined ? [item.endpoint] : []))]);
419
424
  let built = await runtime.build(request);
420
425
  const requestCount = result.definition.plan.steps.reduce(
421
426
  (total, step) => total + Object.keys(step.needs).length,
@@ -488,7 +493,6 @@ export async function runCli(
488
493
  ...(activeView === undefined ? {} : { runtime: activeView }),
489
494
  ...(finishedResult === undefined ? {} : { result: finishedResult }),
490
495
  verbose: args.presentation.verbose,
491
- operationLimit: args.limit,
492
496
  });
493
497
  const machine = {
494
498
  format: "hypit.cli-build@1" as const,
@@ -590,8 +594,8 @@ export async function runCli(
590
594
  });
591
595
  return;
592
596
  }
593
- const preflight = planHost === undefined ? undefined : await preflightPlan(planHost, evaluated.state);
594
597
  const providers = planHost === undefined ? undefined : await describePlanProviders(planHost, evaluated.state, evaluated);
598
+ const preflight = planHost === undefined ? undefined : await preflightPlan(planHost, evaluated.state, providers ?? []);
595
599
  const needs = describePlanNeeds(evaluated.state, evaluated, providers ?? []);
596
600
  const outputNames = Object.fromEntries(result.compilation.author.exports.flatMap((item) =>
597
601
  item.ref.kind === "logical-output" ? [[item.ref.id, item.name]] : []));
@@ -600,8 +604,10 @@ export async function runCli(
600
604
  const candidate = loaded.run.satisfactionNames[selection.output];
601
605
  return output === undefined || candidate === undefined ? [] : [{ output, candidate }];
602
606
  });
603
- const allUnreached = unreachedGenerations(result.compilation.author.graph, result.state, outputNames)
604
- .map((item) => ({ output: item.name, operation: item.producer }));
607
+ const allUnreached = args.presentation.verbose
608
+ ? unreachedGenerations(result.compilation.author.graph, result.state, outputNames)
609
+ .map((item) => ({ output: item.name, operation: item.producer }))
610
+ : [];
605
611
  const targets = loaded.run.document.targets.map((item) => item.output);
606
612
  const unsupportedRequestCount = providers?.filter((item) => item.status === "unsupported").length ?? 0;
607
613
  const unresolvedRequestCount = providers?.filter((item) => item.status === "unresolved" || item.status === "ambiguous").length ?? 0;
@@ -610,45 +616,31 @@ export async function runCli(
610
616
  const requestIssueCount = needs.filter((item) => item.issue !== undefined).length;
611
617
  writeCliOutput(io, args.presentation, {
612
618
  kind: "plan",
613
- machine: {
619
+ machine: createPlanOutput({
614
620
  format: "hypit.cli-plan@1",
615
621
  ok: (preflight?.ok ?? true) && unresolvedRequestCount === 0
616
622
  && unsupportedRequestCount === 0 && requestIssueCount === 0,
617
623
  run: projectPath(loaded.path, effectiveWorkspaceRoot),
618
624
  targetCount: targets.length,
619
- targets: targets.slice(0, args.limit),
625
+ targets,
620
626
  steps: result.definition.plan.steps.length,
621
627
  requestCount: needs.length,
622
628
  requestIssueCount,
623
629
  ...(providerRequestCount === undefined ? {} : { providerRequestCount }),
624
630
  ...(providers === undefined ? {} : { localRequestCount, unresolvedRequestCount, unsupportedRequestCount }),
625
631
  choiceCount: allChoices.length,
626
- choices: allChoices.slice(0, args.limit),
627
- ...(allChoices.length <= args.limit ? {} : { omittedChoices: allChoices.length - args.limit }),
628
- ...(allUnreached.length === 0 ? {} : { unreached: allUnreached.slice(0, args.limit) }),
629
- ...(allUnreached.length <= args.limit ? {} : { omittedUnreached: allUnreached.length - args.limit }),
630
- ...(providers === undefined ? {} : {
631
- providers: providers.slice(0, Math.max(args.limit, 50)),
632
- ...(providers.length <= Math.max(args.limit, 50)
633
- ? {}
634
- : { omittedProviders: providers.length - Math.max(args.limit, 50) }),
635
- }),
636
- needs: needs.slice(0, Math.max(args.limit, 50)),
637
- ...(needs.length <= Math.max(args.limit, 50) ? {} : { omittedNeeds: needs.length - Math.max(args.limit, 50) }),
632
+ choices: allChoices,
633
+ unreached: allUnreached,
634
+ ...(providers === undefined ? {} : { providers }),
635
+ needs,
638
636
  ...(preflight === undefined ? {} : { preflight: {
639
637
  ok: preflight.ok,
640
638
  capabilityCount: preflight.capabilities.length,
641
- capabilities: preflight.capabilities.slice(0, args.limit),
642
- ...(preflight.capabilities.length <= args.limit
643
- ? {}
644
- : { omittedCapabilities: preflight.capabilities.length - args.limit }),
639
+ capabilities: preflight.capabilities,
645
640
  diagnosticCount: preflight.diagnostics.length,
646
- diagnostics: preflight.diagnostics.slice(0, args.limit),
647
- ...(preflight.diagnostics.length <= args.limit
648
- ? {}
649
- : { omittedDiagnostics: preflight.diagnostics.length - args.limit }),
641
+ diagnostics: preflight.diagnostics,
650
642
  } }),
651
- },
643
+ }, { verbose: args.presentation.verbose, limit: args.limit }),
652
644
  });
653
645
  if ((preflight !== undefined && !preflight.ok) || unresolvedRequestCount > 0
654
646
  || unsupportedRequestCount > 0 || requestIssueCount > 0) io.setExitCode?.(1);
@@ -5,7 +5,8 @@ import { formatOperationProgress } from "./runtime-view.js";
5
5
 
6
6
  const FIRST_HEARTBEAT_MS = 30_000;
7
7
  const LATER_HEARTBEAT_MS = 60_000;
8
- const MIN_PROGRESS_INTERVAL_MS = 1_000;
8
+ // Coalesce live counters into readable terminal updates; persistence can advance more often.
9
+ const MIN_PROGRESS_INTERVAL_MS = 5_000;
9
10
 
10
11
  export type BuildProgressView = {
11
12
  readonly build: string;
@@ -22,6 +23,10 @@ function progressPhases(view: CliBuildView): Readonly<Record<string, number>> {
22
23
  const phase = operation.progress?.phase ?? "in progress";
23
24
  phases.set(phase, (phases.get(phase) ?? 0) + 1);
24
25
  }
26
+ for (const command of view.commands ?? []) {
27
+ const label = formatOperationProgress(command.progress);
28
+ phases.set(label, (phases.get(label) ?? 0) + 1);
29
+ }
25
30
  return Object.fromEntries([...phases].sort(([left], [right]) => left.localeCompare(right)));
26
31
  }
27
32
 
@@ -41,6 +46,7 @@ export function buildProgressView(view: CliBuildView, now = Date.now()): BuildPr
41
46
  phases: progressPhases(view),
42
47
  elapsedMs: Math.max(0, now - view.createdAt),
43
48
  details: [
49
+ ...(view.commands ?? []).map((item) => `${item.endpoint}: ${formatOperationProgress(item.progress)}`),
44
50
  ...(view.stop === undefined ? [] : [view.stop.cause === "execution-failed"
45
51
  ? `Build stopping after failure${view.stop.reason === undefined ? "" : `: ${view.stop.reason}`}`
46
52
  : `Build cancelling${view.stop.reason === undefined ? "" : `: ${view.stop.reason}`}`]),