@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.
- package/README.md +4 -2
- package/dist/public/caption.d.ts +206 -183
- package/dist/public/composition.d.ts +25 -3
- package/dist/public/endpoint-kit.d.ts +24 -2
- package/dist/public/generation.d.ts +5 -1
- package/dist/public/hyperframes.d.ts +19 -1
- package/dist/public/narrative.d.ts +17 -3
- package/dist/public/performance.d.ts +1590 -0
- package/dist/public/program-space.d.ts +179 -32
- package/dist/public/runtime-kit.d.ts +21 -8
- package/dist/public/sound.d.ts +822 -0
- package/dist/public/speech.d.ts +41 -0
- package/dist/public/studio-adapter.d.ts +77 -15
- package/dist/public/temporal-markup.d.ts +9 -44
- package/dist/public/temporal.d.ts +37 -28
- package/dist/public/{semantic-track.d.ts → timeline.d.ts} +62 -49
- package/examples/README.md +18 -10
- package/examples/minimal-author-package/packages/example-component/preview/preview.svml +19 -12
- package/examples/minimal-author-package/packages/example-component/src/component.ts +5 -5
- package/examples/minimal-author-package/packages/example-component/src/fragment.ts +3 -5
- package/examples/minimal-author-package/packages/example-component/src/manifest.ts +8 -10
- package/examples/minimal-author-package/packages/example-component/src/surface.ts +2 -2
- package/examples/provider-package/README.md +78 -0
- package/examples/provider-package/hypit.runtime.json +12 -0
- package/examples/provider-package/packages/provider-images/package.json +11 -0
- package/examples/provider-package/packages/provider-images/src/activation.ts +24 -0
- package/examples/provider-package/packages/provider-images/src/provider.ts +122 -0
- package/examples/provider-package/packages/provider-images/tsconfig.json +9 -0
- package/examples/semantic-composition/README.md +8 -1
- package/examples/semantic-composition/chat.svml +6 -5
- package/examples/semantic-composition/hypit.runtime.json +1 -1
- package/examples/semantic-composition/packages/chat-scene/README.md +3 -3
- package/examples/semantic-composition/packages/chat-scene/src/activation.ts +18 -21
- package/examples/semantic-composition/packages/chat-scene/src/render.ts +4 -4
- package/examples/semantic-composition/packages/performance-styles/README.md +42 -0
- package/examples/semantic-composition/packages/performance-styles/package.json +25 -0
- package/examples/semantic-composition/packages/performance-styles/src/activation.ts +57 -0
- package/examples/semantic-composition/packages/performance-styles/src/render.ts +54 -0
- package/examples/semantic-composition/packages/performance-styles/src/studio.ts +28 -0
- package/examples/semantic-composition/packages/performance-styles/tsconfig.json +18 -0
- package/examples/semantic-composition/packages/responsive-explainer/README.md +16 -9
- package/examples/semantic-composition/packages/responsive-explainer/src/activation.ts +12 -12
- package/examples/semantic-composition/packages/responsive-explainer/src/render.ts +5 -5
- package/examples/semantic-composition/packages/sound-styles/README.md +36 -0
- package/examples/semantic-composition/packages/sound-styles/package.json +25 -0
- package/examples/semantic-composition/packages/sound-styles/src/activation.ts +53 -0
- package/examples/semantic-composition/packages/sound-styles/src/render.ts +14 -0
- package/examples/semantic-composition/packages/sound-styles/tsconfig.json +18 -0
- package/package.json +35 -15
- package/packages/audio-track/README.md +20 -13
- package/packages/audio-track/package.json +1 -1
- package/packages/audio-track/src/component.ts +4 -4
- package/packages/audio-track/src/fragment.ts +6 -5
- package/packages/audio-track/src/index.ts +1 -1
- package/packages/audio-track/src/manifest.ts +17 -16
- package/packages/audio-track/src/program.ts +21 -25
- package/packages/audio-track/src/surface.ts +19 -18
- package/packages/audio-track-studio/README.md +23 -0
- package/packages/audio-track-studio/src/index.ts +28 -17
- package/packages/author-kit/README.md +1 -1
- package/packages/background-removal/README.md +4 -7
- package/packages/browser-capture/package.json +1 -1
- package/packages/build-result/README.md +11 -0
- package/packages/build-result/src/decode.ts +2 -0
- package/packages/build-result/src/execution-log.ts +17 -0
- package/packages/build-result/src/index.ts +1 -0
- package/packages/build-result/src/store.ts +14 -1
- package/packages/build-result/src/types.ts +3 -0
- package/packages/build-result-s3/src/repository.ts +4 -0
- package/packages/caption/README.md +61 -73
- package/packages/caption/package.json +3 -2
- package/packages/caption/src/activation.ts +2 -2
- package/packages/caption/src/component.ts +20 -5
- package/packages/caption/src/display.ts +3 -18
- package/packages/caption/src/fragment.ts +3 -7
- package/packages/caption/src/index.ts +6 -5
- package/packages/caption/src/manifest.ts +29 -46
- package/packages/caption/src/style.ts +24 -135
- package/packages/caption/src/surface.ts +12 -92
- package/packages/caption/src/temporalize.ts +18 -53
- package/packages/caption/src/types.ts +8 -35
- package/packages/caption/src/visibility.ts +23 -0
- package/packages/caption-fine/README.md +21 -9
- package/packages/caption-fine/package.json +4 -2
- package/packages/caption-fine/src/component.ts +3 -3
- package/packages/caption-fine/src/fragment.ts +7 -19
- package/packages/caption-fine/src/index.ts +2 -0
- package/packages/caption-fine/src/manifest.ts +26 -17
- package/packages/caption-fine/src/recipe.ts +7 -0
- package/packages/caption-fine/src/render.ts +14 -13
- package/packages/caption-fine/src/schedule.ts +39 -35
- package/packages/caption-fine/src/style.ts +10 -9
- package/packages/caption-fine/src/surface.ts +62 -35
- package/packages/caption-fine/src/types.ts +2 -0
- package/packages/caption-fine-studio/README.md +24 -2
- package/packages/caption-fine-studio/package.json +3 -1
- package/packages/caption-fine-studio/src/activation.ts +3 -3
- package/packages/caption-fine-studio/src/index.ts +54 -42
- package/packages/cli/README.md +57 -4
- package/packages/cli/package.json +1 -0
- package/packages/cli/src/arguments.ts +25 -6
- package/packages/cli/src/build-planning.ts +3 -2
- package/packages/cli/src/command.ts +6 -0
- package/packages/cli/src/commands/environment.ts +28 -18
- package/packages/cli/src/commands/execution.ts +81 -26
- package/packages/cli/src/commands/results.ts +7 -11
- package/packages/cli/src/index.ts +2 -2
- package/packages/cli/src/machine-view.ts +3 -2
- package/packages/cli/src/main.ts +34 -42
- package/packages/cli/src/observation.ts +7 -1
- package/packages/cli/src/output.ts +65 -23
- package/packages/cli/src/view.ts +66 -19
- package/packages/comment-sticker/README.md +3 -3
- package/packages/comment-sticker/package.json +1 -1
- package/packages/comment-sticker/src/component.ts +4 -4
- package/packages/comment-sticker/src/fragment.ts +5 -4
- package/packages/comment-sticker/src/manifest.ts +7 -6
- package/packages/comment-sticker/src/program.ts +9 -9
- package/packages/comment-sticker/src/surface.ts +6 -7
- package/packages/composition/README.md +21 -0
- package/packages/composition/src/audio-presentation.ts +44 -0
- package/packages/composition/src/index.ts +3 -0
- package/packages/composition/src/schema.ts +8 -3
- package/packages/composition/src/track.ts +15 -1
- package/packages/credential-store-env/README.md +1 -1
- package/packages/deck-track/README.md +3 -3
- package/packages/deck-track/package.json +1 -1
- package/packages/deck-track/src/component.ts +5 -5
- package/packages/deck-track/src/fragment.ts +6 -5
- package/packages/deck-track/src/lower.ts +12 -12
- package/packages/deck-track/src/manifest.ts +8 -7
- package/packages/deck-track/src/program.ts +13 -16
- package/packages/deck-track/src/surface.ts +9 -10
- package/packages/driver-node/src/driver.ts +41 -3
- package/packages/elevenlabs-speech/README.md +27 -0
- package/packages/{provider-xiaomi-mimo → elevenlabs-speech}/package.json +5 -8
- package/packages/elevenlabs-speech/src/activation.ts +26 -0
- package/packages/elevenlabs-speech/src/fragment.ts +11 -0
- package/packages/elevenlabs-speech/src/index.ts +111 -0
- package/packages/elevenlabs-speech/src/surface.ts +167 -0
- package/packages/endpoint-kit/README.md +24 -0
- package/packages/endpoint-kit/src/index.ts +7 -1
- package/packages/film/README.md +12 -7
- package/packages/film/package.json +1 -1
- package/packages/film/src/component.ts +4 -4
- package/packages/film/src/fragment.ts +6 -5
- package/packages/film/src/manifest.ts +11 -10
- package/packages/film/src/program.ts +5 -5
- package/packages/film/src/recipe.ts +2 -1
- package/packages/film/src/surface.ts +10 -7
- package/packages/film-studio/package.json +1 -1
- package/packages/film-studio/src/index.ts +2 -2
- package/packages/fishaudio-speech/README.md +33 -0
- package/packages/fishaudio-speech/package.json +21 -0
- package/packages/fishaudio-speech/src/activation.ts +32 -0
- package/packages/fishaudio-speech/src/fragment.ts +11 -0
- package/packages/fishaudio-speech/src/index.ts +156 -0
- package/packages/fishaudio-speech/src/surface.ts +192 -0
- package/packages/generation/README.md +11 -1
- package/packages/generation/src/mapping.ts +28 -30
- package/packages/gpt-image/README.md +1 -2
- package/packages/grok-imagine/README.md +1 -2
- package/packages/hyperframes/README.md +7 -3
- package/packages/hyperframes/src/browser-program.ts +11 -2
- package/packages/hyperframes/src/document.ts +15 -2
- package/packages/interview-emoji-reveal/README.md +4 -4
- package/packages/interview-emoji-reveal/package.json +1 -1
- package/packages/interview-emoji-reveal/src/component.ts +4 -4
- package/packages/interview-emoji-reveal/src/fragment.ts +6 -5
- package/packages/interview-emoji-reveal/src/manifest.ts +9 -8
- package/packages/interview-emoji-reveal/src/program.ts +14 -14
- package/packages/interview-emoji-reveal/src/surface.ts +8 -9
- package/packages/media-execution/README.md +7 -3
- package/packages/media-execution/src/audio-presentation.ts +23 -0
- package/packages/media-execution/src/execute.ts +2 -0
- package/packages/media-pipeline/README.md +7 -3
- package/packages/media-pipeline/src/audio-plan.ts +4 -1
- package/packages/media-pipeline/src/component.ts +16 -2
- package/packages/media-pipeline/src/manifest.ts +3 -1
- package/packages/media-pipeline/src/types.ts +2 -1
- package/packages/media-track/README.md +14 -47
- package/packages/media-track/package.json +1 -1
- package/packages/media-track/preview/preview.svml +5 -5
- package/packages/media-track/src/author.ts +12 -6
- package/packages/media-track/src/component.ts +10 -16
- package/packages/media-track/src/fragment.ts +8 -7
- package/packages/media-track/src/index.ts +3 -1
- package/packages/media-track/src/lower.ts +7 -7
- package/packages/media-track/src/manifest.ts +16 -38
- package/packages/media-track/src/program.ts +62 -67
- package/packages/media-track/src/sampling.ts +6 -6
- package/packages/media-track/src/sequence.ts +8 -8
- package/packages/media-track/src/surface.ts +25 -43
- package/packages/media-track-studio/README.md +9 -0
- package/packages/media-track-studio/src/index.ts +16 -11
- package/packages/mimo-speech/README.md +1 -1
- package/packages/minimax-h3/README.md +1 -1
- package/packages/nano-banana/README.md +1 -1
- package/packages/narrative/README.md +23 -1
- package/packages/narrative/src/identity.ts +11 -0
- package/packages/narrative/src/index.ts +3 -0
- package/packages/narrative/src/schema.ts +28 -27
- package/packages/narrative/src/selection.ts +52 -0
- package/packages/narrative/src/types.ts +2 -0
- package/packages/package-loader-node/README.md +30 -0
- package/packages/package-loader-node/package.json +5 -2
- package/packages/package-loader-node/src/distribution-resolution.ts +10 -3
- package/packages/package-loader-node/src/index.ts +1 -0
- package/packages/package-loader-node/src/loader.ts +12 -15
- package/packages/package-loader-node/src/location.ts +27 -1
- package/packages/package-loader-node/src/module-scope.ts +183 -0
- package/packages/package-loader-node/src/types.ts +4 -0
- package/packages/performance/README.md +83 -0
- package/packages/performance/package.json +30 -0
- package/packages/performance/src/activation.ts +11 -0
- package/packages/performance/src/component.ts +46 -0
- package/packages/performance/src/index.ts +6 -0
- package/packages/performance/src/manifest.ts +53 -0
- package/packages/{media-track/src/performance.ts → performance/src/media.ts} +9 -10
- package/packages/performance/src/program.ts +51 -0
- package/packages/performance/src/style.ts +35 -0
- package/packages/performance/src/surface.ts +99 -0
- package/packages/performance-studio/README.md +25 -0
- package/packages/performance-studio/package.json +21 -0
- package/packages/performance-studio/src/activation.ts +6 -0
- package/packages/performance-studio/src/index.ts +84 -0
- package/packages/program-space/README.md +9 -18
- package/packages/program-space/src/activation.ts +1 -5
- package/packages/program-space/src/index.ts +2 -11
- package/packages/program-space/src/surface.ts +1 -20
- package/packages/project-context-node/README.md +20 -0
- package/packages/project-context-node/package.json +10 -0
- package/packages/project-context-node/src/index.ts +3 -0
- package/packages/{cli → project-context-node}/src/runtime-selection.ts +7 -2
- package/packages/provider-hyperframes-local/README.md +43 -15
- package/packages/provider-hyperframes-local/src/activation.ts +4 -3
- package/packages/provider-hyperframes-local/src/capture-process.ts +26 -4
- package/packages/provider-hyperframes-local/src/capture.ts +96 -26
- package/packages/provider-hyperframes-local/src/concurrency.ts +86 -0
- package/packages/provider-hyperframes-local/src/opaque-capture.ts +92 -0
- package/packages/provider-hyperframes-local/src/options.ts +2 -0
- package/packages/provider-hyperframes-local/src/program.ts +6 -3
- package/packages/provider-hyperframes-local/src/progress.ts +53 -0
- package/packages/provider-hyperframes-local/src/provider.ts +18 -5
- package/packages/provider-hyperframes-local/src/render.ts +48 -7
- package/packages/provider-hypihub/README.md +48 -17
- package/packages/provider-hypihub/package.json +2 -0
- package/packages/provider-hypihub/src/mapping.ts +31 -7
- package/packages/provider-hypihub/src/oauth.ts +6 -0
- package/packages/provider-hypihub/src/provider.ts +25 -13
- package/packages/provider-hypihub/src/routes.ts +1 -2
- package/packages/provider-hypihub/src/upload.ts +2 -0
- package/packages/provider-media-local/README.md +3 -4
- package/packages/provider-whisperx-local/src/program.ts +1 -0
- package/packages/provider-whisperx-local/src/provider.ts +3 -0
- package/packages/ranking/README.md +8 -6
- package/packages/ranking/package.json +1 -1
- package/packages/ranking/src/component.ts +6 -6
- package/packages/ranking/src/fragment.ts +11 -7
- package/packages/ranking/src/manifest.ts +21 -14
- package/packages/ranking/src/render.ts +22 -26
- package/packages/ranking/src/schedule.ts +16 -19
- package/packages/ranking/src/surface.ts +12 -13
- package/packages/ranking-studio/README.md +18 -0
- package/packages/ranking-studio/src/index.ts +61 -9
- package/packages/render-hyperframes/README.md +7 -7
- package/packages/render-hyperframes/package.json +1 -1
- package/packages/render-hyperframes/src/component.ts +11 -1
- package/packages/render-hyperframes/src/fragment.ts +7 -4
- package/packages/render-hyperframes/src/manifest.ts +4 -4
- package/packages/render-hyperframes/src/surface.ts +6 -6
- package/packages/runtime/README.md +8 -1
- package/packages/runtime/src/execution.ts +15 -4
- package/packages/runtime/src/index.ts +2 -1
- package/packages/runtime/src/log.ts +51 -0
- package/packages/runtime/src/types.ts +5 -8
- package/packages/runtime-host-node/README.md +30 -0
- package/packages/runtime-host-node/package.json +1 -0
- package/packages/runtime-host-node/src/index.ts +24 -9
- package/packages/runtime-host-node/src/packages.ts +47 -50
- package/packages/runtime-kit/README.md +5 -0
- package/packages/runtime-kit/src/index.ts +3 -1
- package/packages/runtime-local/README.md +109 -4
- package/packages/runtime-local/src/config.ts +202 -56
- package/packages/runtime-local/src/control.ts +9 -1
- package/packages/runtime-local/src/executor.ts +66 -0
- package/packages/runtime-local/src/host.ts +37 -17
- package/packages/runtime-local/src/log.ts +48 -0
- package/packages/runtime-local/src/programs.ts +2 -1
- package/packages/runtime-local/src/result-writer.ts +2 -0
- package/packages/runtime-local/src/runtime.ts +8 -6
- package/packages/runtime-local/src/supervisor.ts +142 -0
- package/packages/runtime-local/src/types.ts +9 -2
- package/packages/runtime-local/src/worker-process.ts +7 -24
- package/packages/runtime-local/src/worker.ts +55 -83
- package/packages/screen-overlay/README.md +3 -3
- package/packages/screen-overlay/package.json +1 -1
- package/packages/screen-overlay/src/component.ts +3 -3
- package/packages/screen-overlay/src/fragment.ts +5 -4
- package/packages/screen-overlay/src/manifest.ts +7 -6
- package/packages/screen-overlay/src/program.ts +9 -9
- package/packages/screen-overlay/src/surface.ts +6 -7
- package/packages/script/README.md +30 -5
- package/packages/script/src/manifest.ts +4 -3
- package/packages/script/src/narrative.ts +1 -0
- package/packages/script/src/parser.ts +45 -6
- package/packages/script/src/surface.ts +4 -3
- package/packages/script/src/types.ts +1 -1
- package/packages/script-studio/package.json +9 -3
- package/packages/script-studio/src/index.ts +2 -0
- package/packages/script-studio/src/projection.ts +105 -0
- package/packages/seedance/README.md +30 -1
- package/packages/seedance/src/index.ts +18 -7
- package/packages/seedance/src/surface.ts +17 -4
- package/packages/seedance-kits/README.md +7 -1
- package/packages/seedream/README.md +1 -1
- package/packages/sound/README.md +81 -0
- package/packages/sound/package.json +25 -0
- package/packages/sound/src/activation.ts +11 -0
- package/packages/sound/src/component.ts +28 -0
- package/packages/sound/src/index.ts +5 -0
- package/packages/sound/src/manifest.ts +47 -0
- package/packages/sound/src/program.ts +84 -0
- package/packages/sound/src/style.ts +34 -0
- package/packages/sound/src/surface.ts +90 -0
- package/packages/sound-studio/README.md +22 -0
- package/packages/sound-studio/package.json +20 -0
- package/packages/sound-studio/src/activation.ts +6 -0
- package/packages/sound-studio/src/index.ts +74 -0
- package/packages/speech/README.md +2 -2
- package/packages/speech-alignment/src/local.ts +8 -0
- package/packages/speech-alignment/src/locate.ts +1 -1
- package/packages/store-sqlite/README.md +7 -0
- package/packages/store-sqlite/src/store.ts +84 -83
- package/packages/studio/INSPECTOR.md +15 -2
- package/packages/studio/LOCALIZATION.md +98 -0
- package/packages/studio/README.md +101 -14
- package/packages/studio/locales/en.json +197 -0
- package/packages/studio/locales/zh-CN.json +191 -0
- package/packages/studio/package.json +8 -7
- package/packages/studio/src/companion-assembly.ts +1 -0
- package/packages/studio/src/domain.ts +1 -1
- package/packages/studio/src/fallback-companions.ts +3 -3
- package/packages/studio/src/feedback-server.ts +51 -0
- package/packages/studio/src/feedback-store.ts +66 -0
- package/packages/studio/src/feedback.ts +60 -0
- package/packages/studio/src/localization-node.ts +46 -0
- package/packages/studio/src/localization.ts +85 -0
- package/packages/studio/src/parameter-values.ts +43 -1
- package/packages/studio/src/parameters.ts +114 -24
- package/packages/studio/src/preview/render.ts +5 -1
- package/packages/studio/src/preview/runtime-shim.ts +49 -3
- package/packages/studio/src/programme.ts +14 -30
- package/packages/studio/src/server.ts +10 -6
- package/packages/studio/src/shared.ts +4 -2
- package/packages/studio/src/snapshot.ts +21 -132
- package/packages/studio/src/studio-preflight.ts +3 -3
- package/packages/studio/src/studio-registry.ts +50 -6
- package/packages/studio/src/style.css +223 -50
- package/packages/studio/src/ui/artifact-name.ts +8 -6
- package/packages/studio/src/ui/artifact-preview.ts +5 -4
- package/packages/studio/src/ui/code.ts +17 -16
- package/packages/studio/src/ui/comments.ts +234 -0
- package/packages/studio/src/ui/dropdown.ts +68 -0
- package/packages/studio/src/ui/i18n.ts +109 -0
- package/packages/studio/src/ui/icons.ts +6 -0
- package/packages/studio/src/ui/library.ts +76 -65
- package/packages/studio/src/ui/main.ts +223 -211
- package/packages/studio/src/ui/overlay.ts +12 -8
- package/packages/studio/src/ui/scrub-preview.ts +110 -0
- package/packages/studio/src/ui/stage.ts +93 -29
- package/packages/studio/src/ui/timeline.ts +190 -118
- package/packages/studio/start.ts +41 -22
- package/packages/studio-adapter/README.md +130 -11
- package/packages/studio-adapter/src/index.ts +100 -13
- package/packages/temporal/README.md +6 -6
- package/packages/temporal/package.json +1 -1
- package/packages/temporal/src/component.ts +5 -6
- package/packages/temporal/src/index.ts +8 -6
- package/packages/temporal/src/location.ts +11 -11
- package/packages/temporal/src/projection.ts +19 -19
- package/packages/temporal/src/rational.ts +4 -4
- package/packages/temporal-markup/EDITING.md +2 -2
- package/packages/temporal-markup/README.md +27 -11
- package/packages/temporal-markup/package.json +1 -1
- package/packages/temporal-markup/src/index.ts +20 -25
- package/packages/temporal-markup/src/space.ts +10 -41
- package/packages/timeline/README.md +31 -0
- package/packages/{semantic-track → timeline}/package.json +1 -1
- package/packages/timeline/src/activation.ts +8 -0
- package/packages/timeline/src/component.ts +24 -0
- package/packages/timeline/src/identity.ts +60 -0
- package/packages/timeline/src/index.ts +6 -0
- package/packages/{semantic-track → timeline}/src/location.ts +20 -20
- package/packages/timeline/src/manifest.ts +39 -0
- package/packages/{semantic-track → timeline}/src/projection.ts +14 -14
- package/packages/timeline/src/types.ts +24 -0
- package/packages/timeline-author/README.md +68 -0
- package/packages/{speech-track → timeline-author}/package.json +6 -4
- package/packages/timeline-author/src/activation.ts +22 -0
- package/packages/{speech-track → timeline-author}/src/component.ts +15 -13
- package/packages/{speech-track → timeline-author}/src/fragment.ts +14 -23
- package/packages/timeline-author/src/index.ts +7 -0
- package/packages/timeline-author/src/manifest.ts +78 -0
- package/packages/timeline-author/src/program.ts +107 -0
- package/packages/timeline-author/src/surface.ts +46 -0
- package/packages/timeline-author/src/types.ts +6 -0
- package/packages/typography-track/README.md +4 -4
- package/packages/typography-track/package.json +1 -1
- package/packages/typography-track/src/component.ts +4 -4
- package/packages/typography-track/src/fragment.ts +4 -3
- package/packages/typography-track/src/manifest.ts +11 -9
- package/packages/typography-track/src/program.ts +15 -15
- package/packages/typography-track/src/surface.ts +17 -18
- package/packages/video-cli/README.md +4 -1
- package/packages/video-cli/package.json +2 -1
- package/packages/video-cli/src/creation.ts +14 -4
- package/packages/video-cli/src/index.ts +1 -1
- package/packages/video-cli/src/studio-distribution.ts +2 -1
- package/packages/volcengine-matting/README.md +3 -3
- package/packages/whisperx/README.md +1 -1
- package/services/whisperx/README.md +14 -0
- package/services/whisperx/pyproject.toml +2 -0
- package/services/whisperx/uv.lock +20 -20
- package/packages/provider-hyperframes-aws-lambda/README.md +0 -30
- package/packages/provider-hyperframes-aws-lambda/package.json +0 -30
- package/packages/provider-hyperframes-aws-lambda/src/activation.ts +0 -97
- package/packages/provider-hyperframes-aws-lambda/src/client.ts +0 -114
- package/packages/provider-hyperframes-aws-lambda/src/index.ts +0 -21
- package/packages/provider-hyperframes-aws-lambda/src/provider.ts +0 -522
- package/packages/provider-kie/README.md +0 -134
- package/packages/provider-kie/package.json +0 -43
- package/packages/provider-kie/src/activation.ts +0 -71
- package/packages/provider-kie/src/index.ts +0 -10
- package/packages/provider-kie/src/mapping.ts +0 -182
- package/packages/provider-kie/src/provider.ts +0 -657
- package/packages/provider-kie/src/routes.ts +0 -150
- package/packages/provider-xiaomi-mimo/README.md +0 -32
- package/packages/provider-xiaomi-mimo/src/activation.ts +0 -57
- package/packages/provider-xiaomi-mimo/src/index.ts +0 -5
- package/packages/provider-xiaomi-mimo/src/provider.ts +0 -214
- package/packages/runtime/src/environment.ts +0 -6
- package/packages/semantic-track/README.md +0 -21
- package/packages/semantic-track/src/activation.ts +0 -8
- package/packages/semantic-track/src/component.ts +0 -24
- package/packages/semantic-track/src/identity.ts +0 -58
- package/packages/semantic-track/src/index.ts +0 -6
- package/packages/semantic-track/src/manifest.ts +0 -38
- package/packages/semantic-track/src/types.ts +0 -26
- package/packages/speech-track/README.md +0 -51
- package/packages/speech-track/src/activation.ts +0 -19
- package/packages/speech-track/src/index.ts +0 -7
- package/packages/speech-track/src/manifest.ts +0 -73
- package/packages/speech-track/src/program.ts +0 -64
- package/packages/speech-track/src/surface.ts +0 -35
- package/packages/speech-track/src/types.ts +0 -6
- package/packages/speech-track-studio/README.md +0 -3
- package/packages/speech-track-studio/package.json +0 -14
- package/packages/speech-track-studio/src/activation.ts +0 -7
- package/packages/speech-track-studio/src/index.ts +0 -40
- /package/packages/{cli → project-context-node}/src/project-context.ts +0 -0
- /package/packages/{speech-track → timeline-author}/preview/Track.png +0 -0
|
@@ -11,9 +11,10 @@ export const videoStudioCompanionPackages = [
|
|
|
11
11
|
"@hypit/deck-track-studio",
|
|
12
12
|
"@hypit/film-studio",
|
|
13
13
|
"@hypit/media-track-studio",
|
|
14
|
+
"@hypit/performance-studio",
|
|
14
15
|
"@hypit/ranking-studio",
|
|
15
16
|
"@hypit/screen-overlay-studio",
|
|
16
17
|
"@hypit/script-studio",
|
|
17
|
-
"@hypit/
|
|
18
|
+
"@hypit/sound-studio",
|
|
18
19
|
"@hypit/typography-track-studio",
|
|
19
20
|
] as const;
|
|
@@ -30,20 +30,20 @@ formats. The service's flat-background MP4 option is a different output treatmen
|
|
|
30
30
|
This excerpt assumes the performance and Script exist. Normalize keeps the transparent picture
|
|
31
31
|
and prepares the selected embedded audio on the program clock. WhisperX and semantic alignment
|
|
32
32
|
associate that prepared performance with the Script. Use `opening-semantic.take` in
|
|
33
|
-
[
|
|
33
|
+
[Timeline assembly](../timeline-author/README.md); its screen position and stack order are independent
|
|
34
34
|
of its role as A-roll.
|
|
35
35
|
|
|
36
36
|
For B-roll, normalize `cutout.video` with `audio="none"` when its sound is unwanted, then use
|
|
37
37
|
`cutout-media.media` in [Media Track](../media-track/README.md). No SemanticTake is needed for
|
|
38
38
|
that overlay. Existing transparency can enter Normalize directly.
|
|
39
39
|
|
|
40
|
-
For example, this alternative uses the existing program's
|
|
40
|
+
For example, this alternative uses the existing program's Timeline and an authored Selection:
|
|
41
41
|
|
|
42
42
|
```svml
|
|
43
43
|
<import as="media-track" from="@hypit/media-track@1"/>
|
|
44
44
|
<pipeline:Normalize id="overlay-media" source={cutout.video} clock={clock}
|
|
45
45
|
video="primary-moving" audio="none" span-authority="video"/>
|
|
46
|
-
<media-track:Track id="overlay"
|
|
46
|
+
<media-track:Track id="overlay" timeline={speech.timeline} canvas={canvas}>
|
|
47
47
|
<media-track:Item media={overlay-media.media} during={story.selection.example}
|
|
48
48
|
frame={overlay-frame} appearance={look.media.overlay}/>
|
|
49
49
|
</media-track:Track>
|
|
@@ -33,7 +33,7 @@ so this branch requests no evidence audio and no WhisperX capability:
|
|
|
33
33
|
segment={story.segment.pause} media={pause-media.media}/>
|
|
34
34
|
```
|
|
35
35
|
|
|
36
|
-
There is no whole-program WhisperX pass.
|
|
36
|
+
There is no whole-program WhisperX pass. Timeline assembly only receives already-semantic Takes and later
|
|
37
37
|
translates their local frames when assembling the final ProgramSpace and complete semantic map.
|
|
38
38
|
|
|
39
39
|
`@hypit/provider-hypihub` is the default concrete adapter; it uploads the canonical evidence audio
|
|
@@ -71,6 +71,14 @@ Configuration is deployment state:
|
|
|
71
71
|
The Node Provider must configure the same model, device, compute, batch size, service version and
|
|
72
72
|
WhisperX version. A mismatch fails before transcription results are accepted.
|
|
73
73
|
|
|
74
|
+
## Package preparation
|
|
75
|
+
|
|
76
|
+
Local package preparation includes `src/**/*.py` in uv's package cache inputs. Updating service code
|
|
77
|
+
therefore rebuilds its small wheel instead of reusing one selected only by an unchanged
|
|
78
|
+
`pyproject.toml`. This leaves dependency and speech-model caches intact. See
|
|
79
|
+
[uv's local dependency caching](https://docs.astral.sh/uv/concepts/cache/#dynamic-metadata).
|
|
80
|
+
This governs package installation; an already running service continues using its loaded code.
|
|
81
|
+
|
|
74
82
|
## Queue and concurrency
|
|
75
83
|
|
|
76
84
|
The SVML Runtime Scheduler decides how many WhisperX Needs may enter this Provider lane. One service
|
|
@@ -80,3 +88,9 @@ second direct request receives `503 BUSY` instead of entering a hidden service q
|
|
|
80
88
|
|
|
81
89
|
Run multiple service processes on different devices/ports only when the Runtime registers and
|
|
82
90
|
locks them as distinct Provider instances.
|
|
91
|
+
|
|
92
|
+
The local Provider reconciles this packaged project through `uv sync` before a cold service start.
|
|
93
|
+
A passing version probe alone cannot establish that same-version checkout edits were installed;
|
|
94
|
+
the declared uv source cache keys decide whether the service wheel needs rebuilding. A healthy
|
|
95
|
+
running service remains untouched. To adopt edited service code, stop that selected helper when idle
|
|
96
|
+
and start it again through its Profile; restarting only the Build Worker does not reinstall Python.
|
|
@@ -867,6 +867,23 @@ wheels = [
|
|
|
867
867
|
{ url = "https://files.pythonhosted.org/packages/a8/af/48ac8483240de756d2438c380746e7130d1c6f75802ef22f3c6d49982787/huggingface_hub-0.36.2-py3-none-any.whl", hash = "sha256:48f0c8eac16145dfce371e9d2d7772854a4f591bcb56c9cf548accf531d54270", size = 566395, upload-time = "2026-02-06T09:24:11.133Z" },
|
|
868
868
|
]
|
|
869
869
|
|
|
870
|
+
[[package]]
|
|
871
|
+
name = "hypit-whisperx-service"
|
|
872
|
+
version = "0.1.0"
|
|
873
|
+
source = { editable = "." }
|
|
874
|
+
dependencies = [
|
|
875
|
+
{ name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" },
|
|
876
|
+
{ name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*'" },
|
|
877
|
+
{ name = "numpy", version = "2.5.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" },
|
|
878
|
+
{ name = "whisperx" },
|
|
879
|
+
]
|
|
880
|
+
|
|
881
|
+
[package.metadata]
|
|
882
|
+
requires-dist = [
|
|
883
|
+
{ name = "numpy", specifier = ">=2.1,<3" },
|
|
884
|
+
{ name = "whisperx", specifier = "==3.8.6" },
|
|
885
|
+
]
|
|
886
|
+
|
|
870
887
|
[[package]]
|
|
871
888
|
name = "idna"
|
|
872
889
|
version = "3.18"
|
|
@@ -1410,7 +1427,7 @@ wheels = [
|
|
|
1410
1427
|
|
|
1411
1428
|
[[package]]
|
|
1412
1429
|
name = "nltk"
|
|
1413
|
-
version = "3.10.
|
|
1430
|
+
version = "3.10.3"
|
|
1414
1431
|
source = { registry = "https://pypi.org/simple" }
|
|
1415
1432
|
dependencies = [
|
|
1416
1433
|
{ name = "click" },
|
|
@@ -1419,9 +1436,9 @@ dependencies = [
|
|
|
1419
1436
|
{ name = "regex" },
|
|
1420
1437
|
{ name = "tqdm" },
|
|
1421
1438
|
]
|
|
1422
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
1439
|
+
sdist = { url = "https://files.pythonhosted.org/packages/e0/e6/fe51d2bb1a3b446f59c5c8165999a9fee208bc346af90a7cbf7657bc0d75/nltk-3.10.3.tar.gz", hash = "sha256:bb9327a461c3811c2fa4900e03840401f2126adfb30c0072827c433bd2444ea4", size = 5137152, upload-time = "2026-08-12T23:46:37.258Z" }
|
|
1423
1440
|
wheels = [
|
|
1424
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1441
|
+
{ url = "https://files.pythonhosted.org/packages/b6/6d/ebd2af4640b12168fdf0cb74b6118df2f32a2f62ec7e0c06fbfd80706639/nltk-3.10.3-py3-none-any.whl", hash = "sha256:ff9598a8e20518ee0d557745890cc4435b9578489e2dcbc69c4f81fa060caf7c", size = 1798643, upload-time = "2026-08-12T23:44:13.478Z" },
|
|
1425
1442
|
]
|
|
1426
1443
|
|
|
1427
1444
|
[[package]]
|
|
@@ -2907,23 +2924,6 @@ wheels = [
|
|
|
2907
2924
|
{ url = "https://files.pythonhosted.org/packages/e2/22/dbf013a12ec759e54a34a119e9e217435b3f71b2dd5c61a7ade0a25dae87/sqlalchemy-2.0.51-py3-none-any.whl", hash = "sha256:bb024d8b621d0be75f4f44ecc7c950450026e76d66dc8f791bb5331d7fed59d5", size = 1944334, upload-time = "2026-06-15T16:09:22.418Z" },
|
|
2908
2925
|
]
|
|
2909
2926
|
|
|
2910
|
-
[[package]]
|
|
2911
|
-
name = "hypit-whisperx-service"
|
|
2912
|
-
version = "0.1.0"
|
|
2913
|
-
source = { editable = "." }
|
|
2914
|
-
dependencies = [
|
|
2915
|
-
{ name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" },
|
|
2916
|
-
{ name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*'" },
|
|
2917
|
-
{ name = "numpy", version = "2.5.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" },
|
|
2918
|
-
{ name = "whisperx" },
|
|
2919
|
-
]
|
|
2920
|
-
|
|
2921
|
-
[package.metadata]
|
|
2922
|
-
requires-dist = [
|
|
2923
|
-
{ name = "numpy", specifier = ">=2.1,<3" },
|
|
2924
|
-
{ name = "whisperx", specifier = "==3.8.6" },
|
|
2925
|
-
]
|
|
2926
|
-
|
|
2927
2927
|
[[package]]
|
|
2928
2928
|
name = "sympy"
|
|
2929
2929
|
version = "1.14.0"
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
# `@hypit/provider-hyperframes-aws-lambda`
|
|
2
|
-
|
|
3
|
-
Asynchronous AWS Step Functions/Lambda implementation of the exact
|
|
4
|
-
`@hypit/render-hyperframes#render-visual` capability.
|
|
5
|
-
|
|
6
|
-
The Endpoint stages the immutable `HyperframesDocument` with the shared
|
|
7
|
-
`stageHyperframesProject()` layout, uploads that operation-scoped site, starts one distributed
|
|
8
|
-
render and persists its execution ARN in the Operation checkpoint. Its Step Functions execution name is derived from the
|
|
9
|
-
Runtime Operation id, so recovery cannot accidentally submit the same attempt twice.
|
|
10
|
-
Cancellation uses that same identity to stop the remote Step Functions execution, including the
|
|
11
|
-
crash window before the first checkpoint was saved.
|
|
12
|
-
|
|
13
|
-
This Provider accepts whole-document requests at integer 24, 30 and 60 fps; it currently declines
|
|
14
|
-
requests containing a frame range. Its chunk settings partition a whole render across Lambda workers,
|
|
15
|
-
whereas the local Provider also accepts a selected interval. Unsupported Needs
|
|
16
|
-
are declined by `supports()` so another Endpoint may satisfy them; no frame rate or GPU intent is
|
|
17
|
-
silently changed. The Provider always requests strict SDR H.264, exact CFR assembly, software
|
|
18
|
-
browser rendering and plan protocol v2. It also declines Surface-bearing documents until the
|
|
19
|
-
remote route owns the same byte verifier as the local Endpoint. Chunking remains deployment
|
|
20
|
-
configuration.
|
|
21
|
-
|
|
22
|
-
On success the Endpoint requires HyperFrames' plan and completed-frame counts to equal the source
|
|
23
|
-
document, then streams the returned S3 object into the current Build's working byte area.
|
|
24
|
-
The Endpoint's Runtime Profile entry selects the AWS state machine and deployment settings. The Provider does not repeat
|
|
25
|
-
the request or selected endpoint as vendor metadata. Container and stream conformance stays in the explicit media
|
|
26
|
-
inspection/mux capabilities, so the orchestrating machine does not acquire a hidden FFmpeg
|
|
27
|
-
dependency.
|
|
28
|
-
|
|
29
|
-
The production client uses the AWS SDK default credential chain. No access key is accepted by the
|
|
30
|
-
package configuration or written into Build state.
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@hypit/provider-hyperframes-aws-lambda",
|
|
3
|
-
"version": "0.0.0-dev",
|
|
4
|
-
"license": "SEE LICENSE IN LICENSE",
|
|
5
|
-
"private": true,
|
|
6
|
-
"type": "module",
|
|
7
|
-
"exports": {
|
|
8
|
-
".": "./src/index.ts"
|
|
9
|
-
},
|
|
10
|
-
"hypit": {
|
|
11
|
-
"activation": "./src/activation.ts"
|
|
12
|
-
},
|
|
13
|
-
"dependencies": {
|
|
14
|
-
"@aws-sdk/client-s3": "3.1103.0",
|
|
15
|
-
"@aws-sdk/client-sfn": "3.1103.0",
|
|
16
|
-
"@hyperframes/aws-lambda": "0.7.101",
|
|
17
|
-
"@hypit/endpoint-kit": "workspace:*",
|
|
18
|
-
"@hypit/hyperframes": "workspace:*",
|
|
19
|
-
"@hypit/media": "workspace:*",
|
|
20
|
-
"@hypit/protocol": "workspace:*",
|
|
21
|
-
"@hypit/render-hyperframes": "workspace:*",
|
|
22
|
-
"@hypit/runtime": "workspace:*",
|
|
23
|
-
"@hypit/runtime-kit": "workspace:*"
|
|
24
|
-
},
|
|
25
|
-
"devDependencies": {
|
|
26
|
-
"@hypit/composition": "workspace:*",
|
|
27
|
-
"@hypit/driver-node": "workspace:*",
|
|
28
|
-
"@hypit/program-space": "workspace:*"
|
|
29
|
-
}
|
|
30
|
-
}
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import type { CanonicalValue } from "@hypit/protocol";
|
|
2
|
-
import {
|
|
3
|
-
createRuntimeEndpointAdapterFacet,
|
|
4
|
-
runtimeConfigExact,
|
|
5
|
-
runtimeConfigObject,
|
|
6
|
-
runtimeConfigPositiveInteger,
|
|
7
|
-
runtimeConfigString,
|
|
8
|
-
} from "@hypit/runtime-kit";
|
|
9
|
-
import type { RuntimeAdapterFactoryContext } from "@hypit/runtime-kit";
|
|
10
|
-
|
|
11
|
-
import { createAwsLambdaHyperframesProvider } from "./provider.js";
|
|
12
|
-
import type {
|
|
13
|
-
CreateAwsLambdaHyperframesProviderOptions,
|
|
14
|
-
HyperframesLambdaQuality,
|
|
15
|
-
} from "./provider.js";
|
|
16
|
-
|
|
17
|
-
const CONFIG_KEYS = [
|
|
18
|
-
"stateMachineArn", "bucketName", "quality", "chunkSize", "maxParallelChunks",
|
|
19
|
-
"targetChunkFrames", "defaultMemorySizeMb", "defaultConcurrency", "pollIntervalMs",
|
|
20
|
-
"maxOperationMs", "maxRenderedBytes",
|
|
21
|
-
] as const;
|
|
22
|
-
|
|
23
|
-
type RuntimeProviderOptions = Omit<
|
|
24
|
-
CreateAwsLambdaHyperframesProviderOptions,
|
|
25
|
-
"client" | "now"
|
|
26
|
-
>;
|
|
27
|
-
|
|
28
|
-
function optionalInteger(
|
|
29
|
-
config: Record<string, CanonicalValue>,
|
|
30
|
-
name: string,
|
|
31
|
-
): number | undefined {
|
|
32
|
-
return runtimeConfigPositiveInteger(config[name], `HyperFrames ${name}`);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
function providerOptions(context: RuntimeAdapterFactoryContext): RuntimeProviderOptions {
|
|
36
|
-
if (context.pool === undefined) throw new Error("AWS Lambda HyperFrames Provider Pool is required");
|
|
37
|
-
const config = runtimeConfigObject(context.config, "AWS Lambda HyperFrames");
|
|
38
|
-
runtimeConfigExact(config, CONFIG_KEYS, "AWS Lambda HyperFrames");
|
|
39
|
-
const stateMachineArn = runtimeConfigString(config.stateMachineArn, "HyperFrames stateMachineArn");
|
|
40
|
-
if (stateMachineArn === undefined) throw new Error("AWS Lambda HyperFrames stateMachineArn is required");
|
|
41
|
-
const machine = /^(arn:aws(?:-[a-z]+)*:states):([a-z0-9-]+):(\d{12}):stateMachine:([A-Za-z0-9_-]+)$/u
|
|
42
|
-
.exec(stateMachineArn);
|
|
43
|
-
if (machine === null) {
|
|
44
|
-
throw new Error(`HyperFrames stateMachineArn must be an unqualified AWS Step Functions state-machine ARN; got ${stateMachineArn}`);
|
|
45
|
-
}
|
|
46
|
-
const bucketName = runtimeConfigString(config.bucketName, "HyperFrames bucketName");
|
|
47
|
-
if (bucketName === undefined) throw new Error("AWS Lambda HyperFrames bucketName is required");
|
|
48
|
-
if (!/^[a-z0-9][a-z0-9.-]{1,61}[a-z0-9]$/u.test(bucketName)
|
|
49
|
-
|| bucketName.includes("..") || bucketName.includes(".-") || bucketName.includes("-.")
|
|
50
|
-
|| /^\d{1,3}(?:\.\d{1,3}){3}$/u.test(bucketName)) {
|
|
51
|
-
throw new Error("HyperFrames bucketName is invalid");
|
|
52
|
-
}
|
|
53
|
-
const quality = runtimeConfigString(config.quality, "HyperFrames quality");
|
|
54
|
-
if (quality !== undefined && quality !== "draft" && quality !== "standard" && quality !== "high") {
|
|
55
|
-
throw new Error("HyperFrames quality is invalid");
|
|
56
|
-
}
|
|
57
|
-
const chunkSize = optionalInteger(config, "chunkSize");
|
|
58
|
-
const maxParallelChunks = optionalInteger(config, "maxParallelChunks");
|
|
59
|
-
const targetChunkFrames = optionalInteger(config, "targetChunkFrames");
|
|
60
|
-
if (chunkSize !== undefined && targetChunkFrames !== undefined) {
|
|
61
|
-
throw new Error("HyperFrames chunkSize and targetChunkFrames are mutually exclusive");
|
|
62
|
-
}
|
|
63
|
-
const defaultMemorySizeMb = optionalInteger(config, "defaultMemorySizeMb");
|
|
64
|
-
const defaultConcurrency = optionalInteger(config, "defaultConcurrency");
|
|
65
|
-
const pollIntervalMs = optionalInteger(config, "pollIntervalMs");
|
|
66
|
-
const maxOperationMs = optionalInteger(config, "maxOperationMs");
|
|
67
|
-
const maxRenderedBytes = optionalInteger(config, "maxRenderedBytes");
|
|
68
|
-
return {
|
|
69
|
-
instance: context.instance,
|
|
70
|
-
pool: context.pool,
|
|
71
|
-
stateMachineArn,
|
|
72
|
-
bucketName,
|
|
73
|
-
...(quality === undefined ? {} : { quality: quality as HyperframesLambdaQuality }),
|
|
74
|
-
...(chunkSize === undefined ? {} : { chunkSize }),
|
|
75
|
-
...(maxParallelChunks === undefined ? {} : { maxParallelChunks }),
|
|
76
|
-
...(targetChunkFrames === undefined ? {} : { targetChunkFrames }),
|
|
77
|
-
...(defaultMemorySizeMb === undefined ? {} : { defaultMemorySizeMb }),
|
|
78
|
-
...(defaultConcurrency === undefined ? {} : { defaultConcurrency }),
|
|
79
|
-
...(pollIntervalMs === undefined ? {} : { pollIntervalMs }),
|
|
80
|
-
...(maxOperationMs === undefined ? {} : { maxOperationMs }),
|
|
81
|
-
...(maxRenderedBytes === undefined ? {} : { maxRenderedBytes }),
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
const awsLambdaHyperframesRuntimeAdapter = createRuntimeEndpointAdapterFacet({
|
|
86
|
-
use: "@hypit/provider-hyperframes-aws-lambda",
|
|
87
|
-
activate(context) {
|
|
88
|
-
return { endpoint: createAwsLambdaHyperframesProvider(providerOptions(context)) };
|
|
89
|
-
},
|
|
90
|
-
});
|
|
91
|
-
|
|
92
|
-
export const hypitPackage = {
|
|
93
|
-
format: "hypit.node-package@1" as const,
|
|
94
|
-
hostFacets: [awsLambdaHyperframesRuntimeAdapter],
|
|
95
|
-
};
|
|
96
|
-
|
|
97
|
-
export default hypitPackage;
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
import { GetObjectCommand, S3Client } from "@aws-sdk/client-s3";
|
|
2
|
-
import { SFNClient, StopExecutionCommand } from "@aws-sdk/client-sfn";
|
|
3
|
-
import {
|
|
4
|
-
deploySite,
|
|
5
|
-
getRenderProgress,
|
|
6
|
-
renderToLambda,
|
|
7
|
-
} from "@hyperframes/aws-lambda/sdk";
|
|
8
|
-
import type {
|
|
9
|
-
RenderHandle,
|
|
10
|
-
RenderProgress,
|
|
11
|
-
SerializableDistributedRenderConfig,
|
|
12
|
-
SiteHandle,
|
|
13
|
-
} from "@hyperframes/aws-lambda/sdk";
|
|
14
|
-
|
|
15
|
-
export type HyperframesLambdaSite = SiteHandle;
|
|
16
|
-
export type HyperframesLambdaRender = RenderHandle;
|
|
17
|
-
export type HyperframesLambdaProgress = RenderProgress;
|
|
18
|
-
export type HyperframesLambdaRenderConfig = SerializableDistributedRenderConfig;
|
|
19
|
-
|
|
20
|
-
export type HyperframesLambdaOutput = {
|
|
21
|
-
readonly chunks: AsyncIterable<Uint8Array>;
|
|
22
|
-
readonly contentLength?: number;
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
export interface HyperframesAwsLambdaClient {
|
|
26
|
-
deploySite(input: {
|
|
27
|
-
readonly projectDir: string;
|
|
28
|
-
readonly bucketName: string;
|
|
29
|
-
readonly region: string;
|
|
30
|
-
}): Promise<HyperframesLambdaSite>;
|
|
31
|
-
render(input: {
|
|
32
|
-
readonly siteHandle: HyperframesLambdaSite;
|
|
33
|
-
readonly config: HyperframesLambdaRenderConfig;
|
|
34
|
-
readonly bucketName: string;
|
|
35
|
-
readonly stateMachineArn: string;
|
|
36
|
-
readonly region: string;
|
|
37
|
-
readonly outputKey: string;
|
|
38
|
-
readonly executionName: string;
|
|
39
|
-
}): Promise<HyperframesLambdaRender>;
|
|
40
|
-
progress(input: {
|
|
41
|
-
readonly executionArn: string;
|
|
42
|
-
readonly defaultMemorySizeMb: number;
|
|
43
|
-
readonly region: string;
|
|
44
|
-
}): Promise<HyperframesLambdaProgress>;
|
|
45
|
-
stop(input: {
|
|
46
|
-
readonly executionArn: string;
|
|
47
|
-
readonly region: string;
|
|
48
|
-
readonly reason: string;
|
|
49
|
-
}): Promise<void>;
|
|
50
|
-
openOutput(input: {
|
|
51
|
-
readonly s3Uri: string;
|
|
52
|
-
readonly region: string;
|
|
53
|
-
}): Promise<HyperframesLambdaOutput>;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
function assert(condition: unknown, message: string): asserts condition {
|
|
57
|
-
if (!condition) throw new Error(message);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
export function parseS3Uri(uri: string): { readonly bucket: string; readonly key: string } {
|
|
61
|
-
let parsed: URL;
|
|
62
|
-
try {
|
|
63
|
-
parsed = new URL(uri);
|
|
64
|
-
} catch {
|
|
65
|
-
throw new Error(`HyperFrames output URI is invalid: ${uri}`);
|
|
66
|
-
}
|
|
67
|
-
assert(parsed.protocol === "s3:" && parsed.hostname.length > 0 && parsed.pathname.length > 1,
|
|
68
|
-
`HyperFrames output URI must be s3://bucket/key; got ${uri}`);
|
|
69
|
-
assert(parsed.search.length === 0 && parsed.hash.length === 0,
|
|
70
|
-
"HyperFrames output URI must not contain a query or fragment");
|
|
71
|
-
return { bucket: parsed.hostname, key: decodeURIComponent(parsed.pathname.slice(1)) };
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
async function* byteChunks(body: unknown): AsyncIterable<Uint8Array> {
|
|
75
|
-
assert(body !== null && typeof body === "object" && Symbol.asyncIterator in body,
|
|
76
|
-
"HyperFrames S3 output has no streaming body");
|
|
77
|
-
for await (const chunk of body as AsyncIterable<unknown>) {
|
|
78
|
-
if (typeof chunk === "string") yield Buffer.from(chunk);
|
|
79
|
-
else if (chunk instanceof Uint8Array) yield chunk;
|
|
80
|
-
else throw new Error("HyperFrames S3 output emitted a non-byte chunk");
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
/** Uses only the AWS SDK default credential chain. No credential bytes enter this package. */
|
|
85
|
-
export function createHyperframesAwsLambdaClient(region: string): HyperframesAwsLambdaClient {
|
|
86
|
-
const s3 = new S3Client({ region });
|
|
87
|
-
const sfn = new SFNClient({ region });
|
|
88
|
-
return {
|
|
89
|
-
deploySite: async (input) => await deploySite({ ...input, s3 }),
|
|
90
|
-
render: async (input) => await renderToLambda({
|
|
91
|
-
...input,
|
|
92
|
-
planProtocol: "v2",
|
|
93
|
-
s3,
|
|
94
|
-
sfn,
|
|
95
|
-
}),
|
|
96
|
-
progress: async (input) => await getRenderProgress({ ...input, sfn }),
|
|
97
|
-
async stop(input) {
|
|
98
|
-
await sfn.send(new StopExecutionCommand({
|
|
99
|
-
executionArn: input.executionArn,
|
|
100
|
-
error: "HypitBuildCancelled",
|
|
101
|
-
cause: input.reason,
|
|
102
|
-
}));
|
|
103
|
-
},
|
|
104
|
-
async openOutput(input) {
|
|
105
|
-
const target = parseS3Uri(input.s3Uri);
|
|
106
|
-
const output = await s3.send(new GetObjectCommand({ Bucket: target.bucket, Key: target.key }));
|
|
107
|
-
if (output.Body === undefined) throw new Error(`HyperFrames output ${input.s3Uri} has no body`);
|
|
108
|
-
return {
|
|
109
|
-
chunks: byteChunks(output.Body),
|
|
110
|
-
...(output.ContentLength === undefined ? {} : { contentLength: output.ContentLength }),
|
|
111
|
-
};
|
|
112
|
-
},
|
|
113
|
-
};
|
|
114
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
export {
|
|
2
|
-
createHyperframesAwsLambdaClient,
|
|
3
|
-
parseS3Uri,
|
|
4
|
-
} from "./client.js";
|
|
5
|
-
export type {
|
|
6
|
-
HyperframesAwsLambdaClient,
|
|
7
|
-
HyperframesLambdaOutput,
|
|
8
|
-
HyperframesLambdaProgress,
|
|
9
|
-
HyperframesLambdaRender,
|
|
10
|
-
HyperframesLambdaRenderConfig,
|
|
11
|
-
HyperframesLambdaSite,
|
|
12
|
-
} from "./client.js";
|
|
13
|
-
export {
|
|
14
|
-
awsLambdaHyperframesProviderModuleRef,
|
|
15
|
-
createAwsLambdaHyperframesProvider,
|
|
16
|
-
supportsAwsLambdaHyperframes,
|
|
17
|
-
} from "./provider.js";
|
|
18
|
-
export type {
|
|
19
|
-
CreateAwsLambdaHyperframesProviderOptions,
|
|
20
|
-
HyperframesLambdaQuality,
|
|
21
|
-
} from "./provider.js";
|