@hypit/hypit 0.1.3 → 0.1.5
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 +5 -3
- 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 +107 -16
- 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 +6 -0
- package/examples/semantic-composition/chat.svml +6 -5
- 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 +33 -19
- 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 +69 -0
- package/packages/build-result/package.json +2 -1
- package/packages/build-result/src/decode.ts +12 -8
- package/packages/build-result/src/execution-log.ts +17 -0
- package/packages/build-result/src/file-reference.ts +42 -0
- package/packages/build-result/src/index.ts +4 -0
- package/packages/build-result/src/replace-file-windows.ts +58 -0
- package/packages/build-result/src/replace-file.ts +11 -0
- package/packages/build-result/src/store.ts +58 -14
- package/packages/build-result/src/types.ts +41 -8
- package/packages/build-result/src/writer.ts +12 -1
- package/packages/build-result-fs/README.md +23 -1
- package/packages/build-result-s3/README.md +5 -0
- package/packages/build-result-s3/src/repository.ts +23 -5
- 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 +31 -11
- 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 +27 -18
- package/packages/caption-fine/src/recipe.ts +7 -0
- package/packages/caption-fine/src/render.ts +62 -49
- 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 +10 -3
- package/packages/caption-fine-studio/src/activation.ts +3 -3
- package/packages/caption-fine-studio/src/index.ts +61 -40
- package/packages/cli/README.md +81 -3
- package/packages/cli/package.json +1 -0
- package/packages/cli/src/arguments.ts +39 -15
- package/packages/cli/src/build-planning.ts +9 -3
- package/packages/cli/src/command.ts +7 -1
- package/packages/cli/src/commands/environment.ts +66 -27
- 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 +15 -5
- package/packages/cli/src/main.ts +38 -42
- package/packages/cli/src/observation.ts +7 -1
- package/packages/cli/src/output.ts +92 -34
- package/packages/cli/src/result-export.ts +22 -13
- package/packages/cli/src/run-file.ts +19 -8
- package/packages/cli/src/view.ts +64 -18
- 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/comment-sticker-studio/src/index.ts +2 -1
- package/packages/compiler-node/src/compiler.ts +1 -0
- 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/estimate/README.md +56 -3
- package/packages/estimate/src/program.ts +7 -8
- 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 +6 -6
- 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/fonts-open/README.md +5 -0
- package/packages/fonts-open/package.json +5 -1
- package/packages/fonts-open/src/studio.ts +21 -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 +23 -13
- 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/README.md +57 -0
- 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 +33 -35
- package/packages/ranking/src/schedule.ts +16 -19
- package/packages/ranking/src/surface.ts +12 -13
- package/packages/ranking-studio/README.md +29 -0
- package/packages/ranking-studio/package.json +8 -3
- package/packages/ranking-studio/src/index.ts +71 -12
- 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/catalog.ts +2 -0
- 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 +25 -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 +111 -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 +41 -25
- package/packages/runtime-local/src/result-writer.ts +2 -0
- package/packages/runtime-local/src/runtime.ts +10 -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 +37 -2
- package/packages/script/src/edit.ts +123 -73
- package/packages/script/src/lexical.ts +40 -6
- package/packages/script/src/manifest.ts +2 -2
- package/packages/script/src/narrative.ts +1 -0
- package/packages/script/src/parser.ts +36 -8
- package/packages/script/src/surface.ts +4 -3
- package/packages/script/src/types.ts +5 -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 +10 -2
- package/packages/seedance-kits/kits/speaker-v1.svs +5 -5
- 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/align.ts +45 -21
- 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 +117 -0
- package/packages/studio/README.md +149 -14
- package/packages/studio/package.json +8 -7
- package/packages/studio/src/build-library.ts +99 -84
- 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/library-media.ts +19 -0
- package/packages/studio/src/parameter-values.ts +83 -1
- package/packages/studio/src/parameters.ts +132 -43
- 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 +66 -34
- package/packages/studio/src/shared.ts +24 -8
- package/packages/studio/src/snapshot.ts +21 -132
- package/packages/studio/src/studio-preflight.ts +3 -3
- package/packages/studio/src/studio-registry.ts +72 -6
- package/packages/studio/src/style.css +342 -190
- package/packages/studio/src/temporal-edit.ts +131 -0
- package/packages/studio/src/ui/artifact-name.ts +80 -0
- package/packages/studio/src/ui/artifact-preview.ts +99 -0
- package/packages/studio/src/ui/comments.ts +233 -0
- package/packages/studio/src/ui/icons.ts +10 -1
- package/packages/studio/src/ui/library.ts +373 -192
- package/packages/studio/src/ui/main.ts +291 -110
- package/packages/studio/src/ui/material-preview.ts +1 -1
- package/packages/studio/src/ui/overlay.ts +31 -26
- package/packages/studio/src/ui/scrub-preview.ts +108 -0
- package/packages/studio/src/ui/sidebar-panel.ts +31 -0
- package/packages/studio/src/ui/stage.ts +188 -9
- package/packages/studio/src/ui/timeline.ts +187 -281
- package/packages/studio/start.ts +19 -5
- package/packages/studio-adapter/README.md +151 -11
- package/packages/studio-adapter/src/index.ts +126 -14
- 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 +183 -0
- package/packages/temporal-markup/README.md +31 -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/typography-track-studio/package.json +8 -3
- package/packages/typography-track-studio/src/index.ts +5 -1
- package/packages/video-cli/README.md +16 -4
- package/packages/video-cli/package.json +2 -1
- package/packages/video-cli/src/creation.ts +25 -9
- 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 +8 -1
- package/packages/workspace/src/index.ts +2 -0
- package/packages/workspace-fs-node/README.md +4 -1
- package/packages/workspace-fs-node/src/workspace.ts +3 -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
package/packages/studio/start.ts
CHANGED
|
@@ -11,9 +11,12 @@ Open a Run in the browser to inspect its composition, Sources and Results.
|
|
|
11
11
|
hypit studio --run <build.svrun> [--runtime <hypit.runtime.json>]
|
|
12
12
|
[--port <number>] [--workspace <directory>] [--package-root <directory>]
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
Relative command-line paths start at the current directory; --workspace selects
|
|
15
|
+
the project, without rebasing those paths. Otherwise the nearest package.json
|
|
16
|
+
above the current directory defines the project (or the current directory if none).
|
|
17
|
+
Without --runtime, Studio uses that project's .hypit/runtime selection.
|
|
18
|
+
The server prints its project, Run, Runtime selection and browser URL.
|
|
19
|
+
Press Ctrl+C to stop it.
|
|
17
20
|
`);
|
|
18
21
|
}
|
|
19
22
|
|
|
@@ -47,7 +50,7 @@ export async function runStudio(argv: readonly string[], io: Pick<CliIo, "write"
|
|
|
47
50
|
const runArgument = values.get("run");
|
|
48
51
|
if (runArgument === undefined || runArgument.trim().length === 0) invalidArguments("Missing --run");
|
|
49
52
|
const { createServer } = await import("vite");
|
|
50
|
-
const { findRuntimeProfile, resolveProjectRoot } = await import("@hypit/
|
|
53
|
+
const { findRuntimeProfile, resolveProjectRoot } = await import("@hypit/project-context-node");
|
|
51
54
|
const { resolveDistributionPackageImport } = await import("@hypit/package-loader-node");
|
|
52
55
|
const { videoCliDistribution, videoStudioCompanionPackages } = await import("@hypit/video-cli");
|
|
53
56
|
const { openStudioBuildLibrary } = await import("./src/build-library.js");
|
|
@@ -55,6 +58,7 @@ export async function runStudio(argv: readonly string[], io: Pick<CliIo, "write"
|
|
|
55
58
|
const { loadStudioDomain } = await import("./src/domain.js");
|
|
56
59
|
const { loadStudioRun } = await import("./src/run.js");
|
|
57
60
|
const { studioPlugin } = await import("./src/server.js");
|
|
61
|
+
const { studioFeedbackPlugin } = await import("./src/feedback-server.js");
|
|
58
62
|
const { inspectStudioRun } = await import("./src/studio-preflight.js");
|
|
59
63
|
const runPath = resolve(invokedFrom, runArgument);
|
|
60
64
|
const packageRootArgument = values.get("package-root");
|
|
@@ -76,6 +80,15 @@ export async function runStudio(argv: readonly string[], io: Pick<CliIo, "write"
|
|
|
76
80
|
const runtimePath = runtimeArgument === undefined
|
|
77
81
|
? selectedRuntime?.profile
|
|
78
82
|
: resolve(invokedFrom, runtimeArgument);
|
|
83
|
+
console.info([
|
|
84
|
+
` Project ${workspaceRoot}`,
|
|
85
|
+
` Run ${runPath}`,
|
|
86
|
+
` Runtime Profile ${runtimePath ?? "not selected"}`,
|
|
87
|
+
` Runtime selection ${runtimeArgument !== undefined
|
|
88
|
+
? "command argument (this session only)" : selectedRuntime?.selectionFile ?? "none"}`,
|
|
89
|
+
...(packageRoot === workspaceRoot ? [] : [` Package root ${packageRoot}`]),
|
|
90
|
+
"",
|
|
91
|
+
].join("\n"));
|
|
79
92
|
const port = Number(values.get("port") ?? "5179");
|
|
80
93
|
if (!Number.isSafeInteger(port) || port <= 0) invalidArguments("--port must be a positive integer");
|
|
81
94
|
|
|
@@ -124,7 +137,7 @@ export async function runStudio(argv: readonly string[], io: Pick<CliIo, "write"
|
|
|
124
137
|
// available for Source and material previews.
|
|
125
138
|
fs: { allow: [workspaceRoot, packageRoot, distributionPackageRoot, here] },
|
|
126
139
|
},
|
|
127
|
-
plugins: [distributionImports, studioPlugin({
|
|
140
|
+
plugins: [distributionImports, studioFeedbackPlugin(workspaceRoot, runPath), studioPlugin({
|
|
128
141
|
source,
|
|
129
142
|
runPath,
|
|
130
143
|
workspaceRoot,
|
|
@@ -140,4 +153,5 @@ export async function runStudio(argv: readonly string[], io: Pick<CliIo, "write"
|
|
|
140
153
|
});
|
|
141
154
|
await server.listen();
|
|
142
155
|
server.printUrls();
|
|
156
|
+
for (const url of server.resolvedUrls?.local ?? []) io.write(` Comments ${url}#comments\n`);
|
|
143
157
|
}
|
|
@@ -48,6 +48,22 @@ nominal output Type and authored input names of the component. A Companion does
|
|
|
48
48
|
author attribute. Omitting `project` uses generic terminal entities; `poster` adds the declared
|
|
49
49
|
Surface preview when one exists, without changing the component's rendered video.
|
|
50
50
|
|
|
51
|
+
Each lane occupies one timeline row. Entities overlap in ascending `stackOrder`,
|
|
52
|
+
with later projected entities above earlier ones when orders tie. Studio keeps
|
|
53
|
+
overlapping entities mounted and raises the selected entity within its lane;
|
|
54
|
+
selection does not change the rendered composition or write stacking back to Source.
|
|
55
|
+
Expose `presentId` or `renderIds` for visual entities so picture selection can
|
|
56
|
+
address the same entity shown in the timeline. Attached lanes represent distinct
|
|
57
|
+
Companion projections, not extra rows allocated to avoid temporal overlap.
|
|
58
|
+
|
|
59
|
+
An entity's timeline interval describes the operation being edited; its rendered
|
|
60
|
+
parts may remain visible afterward. Associate every relevant phase through
|
|
61
|
+
`renderIds` (for example, an entrance and the settled object). Studio picks the
|
|
62
|
+
currently visible part in rendered stacking order and selects the same entity,
|
|
63
|
+
without extending its editable interval. Give the parent the board or background
|
|
64
|
+
parts and its children their own parts when they should be independently selectable.
|
|
65
|
+
The component decides this granularity. A composite can remain one selectable entity.
|
|
66
|
+
|
|
51
67
|
Merge the facet into the package's existing activation. In this example `authorContribution`
|
|
52
68
|
exports its existing modules, deterministic component and Markup facets:
|
|
53
69
|
|
|
@@ -90,7 +106,8 @@ ordered layers, `startFrame`, `endFrameExclusive` and `stackOrder`. Useful optio
|
|
|
90
106
|
|
|
91
107
|
| Field/helper | Purpose |
|
|
92
108
|
| --- | --- |
|
|
93
|
-
| `
|
|
109
|
+
| `selectionGroup` | Link disjoint displayed intervals of one author entity; selection highlights them together without changing their independent timing |
|
|
110
|
+
| `presentation` | Name the entity's role and choose `standard`, `group`, `point` or `compact` chrome (a single-line primary label) |
|
|
94
111
|
| `textLayer(text)` | Put explicit domain text in the timeline body |
|
|
95
112
|
| `previewLayer(artifactPreview(kind, resource), layout)` | Show a declared image/video/audio Resource with a finite layout; Studio resolves transport |
|
|
96
113
|
| `renderIds` | Relate an entity to its actual rendered elements |
|
|
@@ -98,6 +115,7 @@ ordered layers, `startFrame`, `endFrameExclusive` and `stackOrder`. Useful optio
|
|
|
98
115
|
| `temporal` | Carry the executed Instant/Window lineage and its edit authority |
|
|
99
116
|
| `lane` and Companion `attachments` | Put child entities on a declared additional lane, with its own bindings and Inspector |
|
|
100
117
|
| `childEntities` / `authoredChildFor` | Resolve children from public identity and exact Spec Types rather than source order guesses |
|
|
118
|
+
| `authoredItemTitle` | Prefer an explicit author id, then a source reference from the attributes chosen by the Companion; presentation leaves editing identity unchanged |
|
|
101
119
|
|
|
102
120
|
Use the program's frame space and half-open intervals. Persistent visibility and its activation are
|
|
103
121
|
different facts: a board item can remain visible until the board ends while its reveal occupies only
|
|
@@ -136,12 +154,11 @@ physical package identity, so executable package code cannot impersonate an
|
|
|
136
154
|
official Companion. The Source closure selects project packages; Studio does not
|
|
137
155
|
scan `node_modules` for plugins or use Runtime Profiles to select Companions.
|
|
138
156
|
|
|
139
|
-
The same host facet can contribute Film and
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
it does not import either domain package.
|
|
157
|
+
The same host facet can contribute Film, Script and parameter Companions. A Film Companion
|
|
158
|
+
identifies its Timeline and terminal Tracks. The Timeline supplies the program range; semantic
|
|
159
|
+
rows are populated when it carries Script anchors. A Script Companion owns source observation,
|
|
160
|
+
projection of its values into Studio's segment/word/marker rows, and marker adjustment. Studio
|
|
161
|
+
consumes that projection without reading the Script package's Narrative representation.
|
|
145
162
|
|
|
146
163
|
For a domain item whose Spec is consumed beside a Window or Instant, call
|
|
147
164
|
`temporalLineageFor(context, item.id, "window")` using the actual projection input name. Attach the
|
|
@@ -156,8 +173,8 @@ Inspector editing deliberately has two declarations:
|
|
|
156
173
|
|
|
157
174
|
- `bindings` names exact author endpoints, including explicit reference paths
|
|
158
175
|
into authored elements or SVS Recipes. A binding is not visible by itself;
|
|
159
|
-
- `inspector` selects
|
|
160
|
-
`
|
|
176
|
+
- `inspector` selects bindings and gives them a `where`, `when` or
|
|
177
|
+
`how` domain, an optional package-owned page, a section and one of Studio's
|
|
161
178
|
finite controls (`text`, `number`, `boolean`, `select`, `color`, `list` or
|
|
162
179
|
`record`). A domain Recipe may declare a shared canonical-value schema; the
|
|
163
180
|
companion chooses its presentation while Studio derives and validates the
|
|
@@ -165,8 +182,16 @@ Inspector editing deliberately has two declarations:
|
|
|
165
182
|
|
|
166
183
|
This keeps source traversal, timeline inverses and editor presentation from
|
|
167
184
|
silently becoming one policy. Studio resolves the declarations against the
|
|
168
|
-
current Source closure
|
|
169
|
-
|
|
185
|
+
current Source closure. Visible read-only bindings render as text alongside editable fields.
|
|
186
|
+
A projected entity can also supply `inspector` values with an `id`, `label`, `domain`, `section`
|
|
187
|
+
and `value`, such as its resolved interval. These facts need no Source endpoint.
|
|
188
|
+
Only resolved fields with an `edit` endpoint accept `parameter.adjust`. Studio renders all DOM
|
|
189
|
+
and CSS itself; grouping does not grant edit authority.
|
|
190
|
+
|
|
191
|
+
Fields can declare `number` display scaling, supported suffixes, limits and step; `unit` alone is
|
|
192
|
+
only a label. Select options can carry separate scalar values, labels, descriptions and color/font
|
|
193
|
+
preview hints. Text may be multiline; colors may offer package-chosen swatches. See
|
|
194
|
+
[Inspector presentation and conversion](../studio/INSPECTOR.md) for examples and ownership.
|
|
170
195
|
|
|
171
196
|
Structured controls keep a local draft and commit one complete canonical value.
|
|
172
197
|
Their codec is the author language (`@hypit/svs` for Recipe values), not a
|
|
@@ -184,3 +209,118 @@ is selected, its field reaches the correct Source or Recipe, and changing it rec
|
|
|
184
209
|
For semantic handles, verify the exact marker and its other consumers too. Read-only derived timing
|
|
185
210
|
is preferable to an invented inverse. The Companion explains the component; its Producers remain
|
|
186
211
|
responsible for identical video behavior in Studio, seeking and encoded rendering.
|
|
212
|
+
|
|
213
|
+
Compact chrome uses `display.title` as its complete single-line content: a Cue can put its subtitle
|
|
214
|
+
text there and a Use can put its Style name there. It has no separate thumbnail/body region or
|
|
215
|
+
inline duration. Time remains in the tooltip and Companion-selected Inspector facts. Tone and lane
|
|
216
|
+
height are independent declarations; compact does not recognize Caption or Use names.
|
|
217
|
+
|
|
218
|
+
Choose lane tones explicitly. The `blue-muted`, `green-muted`, `magenta-muted`
|
|
219
|
+
and `orange-muted` palette entries provide quieter rows within the same color
|
|
220
|
+
family. For example, content and its presentation Uses can share a hue while
|
|
221
|
+
the Uses take the muted tone. Studio does not derive tone from attachment depth
|
|
222
|
+
or the entity name.
|
|
223
|
+
|
|
224
|
+
### Internal bands and child Tracks
|
|
225
|
+
|
|
226
|
+
A Track can place independently timed entities in internal `bands`. These strips share its label
|
|
227
|
+
and meet without gaps. Use them for aspects of the same content, such as a bottom strip of
|
|
228
|
+
presentation rules. Keep `attachments` for independently represented child objects with their own
|
|
229
|
+
labels, such as a ranking board's reveals. These declarations affect Studio presentation only.
|
|
230
|
+
|
|
231
|
+
```ts
|
|
232
|
+
{
|
|
233
|
+
lane: { heightPx: 60 },
|
|
234
|
+
bands: [{
|
|
235
|
+
id: "rules",
|
|
236
|
+
placement: "after",
|
|
237
|
+
heightPx: 15,
|
|
238
|
+
display: "label",
|
|
239
|
+
bindings: [{ name: "style" }],
|
|
240
|
+
inspector: [{
|
|
241
|
+
binding: "style", label: "Style", domain: "how", control: "text",
|
|
242
|
+
section: { id: "presentation", label: "Presentation" },
|
|
243
|
+
}],
|
|
244
|
+
}],
|
|
245
|
+
}
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
The projection puts `band: "rules"` on the corresponding entity drafts. Other entities remain in
|
|
249
|
+
the main content area. A band can be `before` or `after` that area; declarations retain their order
|
|
250
|
+
within each placement. `display: "label"` fills the strip with entity titles, while `"content"`
|
|
251
|
+
retains the entity's normal chrome and body. An optional `tone` selects another palette entry;
|
|
252
|
+
omission inherits the Track tone. Heights are independent, so a label band can match the 15px
|
|
253
|
+
standard item header.
|
|
254
|
+
|
|
255
|
+
An entity selects either an internal `band` or a child `lane`. Bands retain their own intervals,
|
|
256
|
+
overlap ordering, selection, Inspector declarations and temporal writeback. A rule spanning three
|
|
257
|
+
content blocks stays one entity; Studio does not split it at content boundaries. Band entities stay
|
|
258
|
+
in the Track's `clips` collection, so ordinary selection and editing use the same identities.
|
|
259
|
+
|
|
260
|
+
### Parameters owned by referenced objects
|
|
261
|
+
|
|
262
|
+
A consumer opts a reference into its owner's parameter Companion:
|
|
263
|
+
|
|
264
|
+
```ts
|
|
265
|
+
bindings: [{ name: "style", companion: true }]
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
The package that authors the referenced object contributes through
|
|
269
|
+
`createStudioCompanionHostFacet({ parameters: [...] })`:
|
|
270
|
+
|
|
271
|
+
```ts
|
|
272
|
+
{
|
|
273
|
+
id: "slide",
|
|
274
|
+
match: { module: myModule, surface: "slide" },
|
|
275
|
+
bindings: [{ name: "distance", writable: true, fallback: 0.25 }],
|
|
276
|
+
inspector: [{
|
|
277
|
+
binding: "distance", label: "Travel", domain: "where",
|
|
278
|
+
section: { id: "path", label: "Path" }, control: "number",
|
|
279
|
+
unit: "%", number: { scale: 100 },
|
|
280
|
+
}],
|
|
281
|
+
}
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
Studio resolves the actual reference and matches its Module/Surface. It prefixes this object's
|
|
285
|
+
bindings and fields under the consumer reference; the example becomes `style.distance`.
|
|
286
|
+
Nested `referenced` and `recipe` bindings use the same composition. The Use retains its own
|
|
287
|
+
Window and time gestures. Several Uses referencing one Style edit the same source object.
|
|
288
|
+
A project Style can therefore publish controls without replacing the Performance, Sound or
|
|
289
|
+
Caption Track Companion. No parameter Companion means the reference remains visible with only
|
|
290
|
+
its consumer-declared fields.
|
|
291
|
+
|
|
292
|
+
A source or Recipe binding may declare a typed `fallback`, or a function of the authored
|
|
293
|
+
properties for a dependent default. For example, Sound's end gain follows its start gain until
|
|
294
|
+
authored explicitly. The field displays the fallback; the first edit inserts the attribute/property
|
|
295
|
+
in its owning SVML/SVS file. Source recompilation remains the owner of current values.
|
|
296
|
+
Only expose omitted defaults whose insertion preserves valid author semantics; geometry inputs
|
|
297
|
+
whose legality depends on a different Frame form can remain tied to the authored form.
|
|
298
|
+
|
|
299
|
+
Fields without `page` remain visible alongside the selected named page within Where, When or How.
|
|
300
|
+
Read-only and editable fields can share a section. Each package chooses a small useful field set.
|
|
301
|
+
|
|
302
|
+
### Edit related attributes together
|
|
303
|
+
|
|
304
|
+
A source binding can expose several scalar attributes as one `record` field:
|
|
305
|
+
|
|
306
|
+
```ts
|
|
307
|
+
{ name: "layout", writable: true, attributes: ["mode", "columns"],
|
|
308
|
+
fallback: { mode: "flow" },
|
|
309
|
+
schema: { kind: "oneOf", variants: [
|
|
310
|
+
{ kind: "object", fields: { mode: { schema: { kind: "literal", value: "flow" } } } },
|
|
311
|
+
{ kind: "object", fields: {
|
|
312
|
+
mode: { schema: { kind: "literal", value: "grid" } },
|
|
313
|
+
columns: { schema: { kind: "number", integer: true, minimum: 1 } },
|
|
314
|
+
} },
|
|
315
|
+
] } }
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
The synthetic binding name is editor vocabulary; it creates no `layout` Source attribute.
|
|
319
|
+
The field's `control: "record"` saves a complete, valid value when editing ends. Object alternatives with a shared, distinct
|
|
320
|
+
literal field provide a mode selector; selecting one prepares that alternative's fields.
|
|
321
|
+
Incomplete values stay in the editor with a completion hint until the required fields are filled.
|
|
322
|
+
Only the declared attributes are replaced together. Omitted members are removed, while unrelated
|
|
323
|
+
attributes, references and child content survive. Existing references within the group remain
|
|
324
|
+
read-only. Domain validation still owns valid author values; existing transactions reject an
|
|
325
|
+
invalid edit without leaving invalid Source behind. Source grouping is available on direct and
|
|
326
|
+
referenced element bindings and stays data-only across the editor boundary.
|
|
@@ -21,18 +21,21 @@ export type StudioIcon =
|
|
|
21
21
|
/** Studio-owned visual palette. Domain families never become CSS selectors. */
|
|
22
22
|
export type StudioTimelineTone =
|
|
23
23
|
| "blue"
|
|
24
|
+
| "blue-muted"
|
|
24
25
|
| "green"
|
|
26
|
+
| "green-muted"
|
|
25
27
|
| "teal"
|
|
26
28
|
| "violet"
|
|
27
29
|
| "magenta"
|
|
30
|
+
| "magenta-muted"
|
|
28
31
|
| "orange"
|
|
29
32
|
| "orange-muted"
|
|
30
33
|
| "neutral";
|
|
31
34
|
|
|
32
35
|
export type StudioTimelinePresentation = {
|
|
33
36
|
readonly entity: string;
|
|
34
|
-
/** Studio-owned shell.
|
|
35
|
-
readonly chrome: "standard" | "group" | "point";
|
|
37
|
+
/** Studio-owned shell. Compact presents the primary label in one line, with time in details. */
|
|
38
|
+
readonly chrome: "standard" | "group" | "point" | "compact";
|
|
36
39
|
};
|
|
37
40
|
|
|
38
41
|
export type StudioTemporalSource = {
|
|
@@ -122,6 +125,30 @@ export const studioParameterControls = [
|
|
|
122
125
|
export type StudioParameterControl = typeof studioParameterControls[number];
|
|
123
126
|
export type StudioParameterLanguage = "svml" | "svs" | "svrun";
|
|
124
127
|
|
|
128
|
+
/** Data-only choices. Packages supply meaning; Studio owns all option rendering. */
|
|
129
|
+
export type StudioParameterOption = string | {
|
|
130
|
+
readonly value: string | number | boolean;
|
|
131
|
+
readonly label: string;
|
|
132
|
+
readonly description?: string;
|
|
133
|
+
readonly preview?: { readonly kind: "color"; readonly color: string }
|
|
134
|
+
| { readonly kind: "font"; readonly family: string; readonly sample?: string };
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
/** Displayed number = authored number × scale. Suffixes are retained, never converted. */
|
|
138
|
+
export type StudioNumberPresentation = {
|
|
139
|
+
readonly scale?: number;
|
|
140
|
+
readonly suffixes?: readonly string[];
|
|
141
|
+
readonly minimum?: number;
|
|
142
|
+
readonly maximum?: number;
|
|
143
|
+
readonly step?: number;
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
/** Attribute ranges are relative to the owning element's source preimage. */
|
|
147
|
+
export type StudioAttributeGroupEdit = {
|
|
148
|
+
readonly insertionOffset: number;
|
|
149
|
+
readonly ranges: Readonly<Record<string, Range | null>>;
|
|
150
|
+
};
|
|
151
|
+
|
|
125
152
|
/** A real author endpoint. Its existence never implies Inspector visibility. */
|
|
126
153
|
export type StudioSourceBinding = {
|
|
127
154
|
readonly id: string;
|
|
@@ -144,10 +171,11 @@ export type StudioSourceBinding = {
|
|
|
144
171
|
readonly prefix?: string;
|
|
145
172
|
readonly suffix?: string;
|
|
146
173
|
};
|
|
174
|
+
readonly attributes?: StudioAttributeGroupEdit;
|
|
147
175
|
readonly disabledReason?: string;
|
|
148
176
|
};
|
|
149
177
|
|
|
150
|
-
export type StudioInspectorDomain = "where" | "
|
|
178
|
+
export type StudioInspectorDomain = "where" | "when" | "how";
|
|
151
179
|
|
|
152
180
|
export type StudioInspectorPageDeclaration = {
|
|
153
181
|
readonly id: string;
|
|
@@ -159,7 +187,7 @@ export type StudioInspectorSectionDeclaration = {
|
|
|
159
187
|
readonly label: string;
|
|
160
188
|
};
|
|
161
189
|
|
|
162
|
-
/** One visible
|
|
190
|
+
/** One visible field selected from a Companion's source bindings. */
|
|
163
191
|
export type StudioInspectorFieldDeclaration = {
|
|
164
192
|
readonly binding: string;
|
|
165
193
|
readonly label: string;
|
|
@@ -170,18 +198,33 @@ export type StudioInspectorFieldDeclaration = {
|
|
|
170
198
|
readonly summary?: string;
|
|
171
199
|
/** Omit when the binding's public schema selects the finite Studio control. */
|
|
172
200
|
readonly control?: StudioParameterControl;
|
|
173
|
-
readonly options?: readonly
|
|
201
|
+
readonly options?: readonly StudioParameterOption[];
|
|
174
202
|
readonly unit?: string;
|
|
203
|
+
readonly number?: StudioNumberPresentation;
|
|
204
|
+
readonly multiline?: boolean;
|
|
205
|
+
/** Optional suggested colors, independent of the accepted color value. */
|
|
206
|
+
readonly swatches?: readonly string[];
|
|
207
|
+
};
|
|
208
|
+
|
|
209
|
+
/** A selected entity's package-owned fact, with no author write endpoint. */
|
|
210
|
+
export type StudioInspectorValue = Pick<StudioInspectorFieldDeclaration,
|
|
211
|
+
"label" | "domain" | "page" | "section" | "summary" | "unit"> & {
|
|
212
|
+
readonly id: string;
|
|
213
|
+
readonly value: CanonicalValue;
|
|
175
214
|
};
|
|
176
215
|
|
|
177
|
-
/**
|
|
178
|
-
export type StudioInspectorField = Omit<StudioInspectorFieldDeclaration, "control"> & {
|
|
216
|
+
/** Display and edit authority are independent of the Where / When / How grouping. */
|
|
217
|
+
export type StudioInspectorField = Omit<StudioInspectorFieldDeclaration, "binding" | "control"> & {
|
|
218
|
+
readonly binding?: string;
|
|
179
219
|
readonly id: string;
|
|
180
220
|
readonly control: StudioParameterControl;
|
|
181
221
|
readonly value: CanonicalValue;
|
|
182
222
|
readonly schema?: ValueSchema;
|
|
183
|
-
readonly
|
|
184
|
-
|
|
223
|
+
readonly edit?: {
|
|
224
|
+
readonly language: StudioParameterLanguage;
|
|
225
|
+
readonly source: StudioSourceBinding["source"];
|
|
226
|
+
readonly attributes?: StudioAttributeGroupEdit;
|
|
227
|
+
};
|
|
185
228
|
};
|
|
186
229
|
|
|
187
230
|
/** Companion-owned source allowlist. It contains no editor presentation. */
|
|
@@ -189,6 +232,12 @@ export type StudioSourceBindingDeclaration = {
|
|
|
189
232
|
readonly name: string;
|
|
190
233
|
readonly writable?: boolean;
|
|
191
234
|
readonly schema?: ValueSchema;
|
|
235
|
+
/** Typed value used when this editable attribute is omitted. */
|
|
236
|
+
readonly fallback?: CanonicalValue | ((authored: Readonly<Record<string, CanonicalValue>>) => CanonicalValue | undefined);
|
|
237
|
+
/** Compose the referenced object's package-owned parameter Companion. */
|
|
238
|
+
readonly companion?: boolean;
|
|
239
|
+
/** Edit these scalar attributes together as one schema-described record. */
|
|
240
|
+
readonly attributes?: readonly string[];
|
|
192
241
|
/** Optional declaration for the authored element named by a reference. */
|
|
193
242
|
readonly referenced?: readonly StudioSourceBindingDeclaration[];
|
|
194
243
|
/**
|
|
@@ -212,7 +261,7 @@ export type StudioRecipeBindingDeclaration = {
|
|
|
212
261
|
/** Domain-owned public Recipe value structure, never editor presentation. */
|
|
213
262
|
readonly schema?: ValueSchema;
|
|
214
263
|
/** Typed public fallback; Studio writes the property only after the author changes it. */
|
|
215
|
-
readonly fallback?: CanonicalValue;
|
|
264
|
+
readonly fallback?: CanonicalValue | ((authored: Readonly<Record<string, CanonicalValue>>) => CanonicalValue | undefined);
|
|
216
265
|
};
|
|
217
266
|
|
|
218
267
|
export type StudioTimelineGesture =
|
|
@@ -301,13 +350,14 @@ export type StudioDisplayLayer =
|
|
|
301
350
|
};
|
|
302
351
|
|
|
303
352
|
export type StudioEntityDisplay = {
|
|
304
|
-
/**
|
|
353
|
+
/** Primary label: a header in standard chrome, the complete single-line content in compact chrome. */
|
|
305
354
|
readonly title: string;
|
|
306
355
|
/** Ordered back-to-front body layers. */
|
|
307
356
|
readonly layers: readonly StudioDisplayLayer[];
|
|
308
357
|
};
|
|
309
358
|
|
|
310
359
|
export type StudioLaneDescription = {
|
|
360
|
+
/** Height of this single timeline lane; overlapping entities share it. */
|
|
311
361
|
readonly heightPx: number;
|
|
312
362
|
readonly groupId?: string;
|
|
313
363
|
readonly attachedTo?: string;
|
|
@@ -463,7 +513,7 @@ export type StudioResolvedTrack = {
|
|
|
463
513
|
};
|
|
464
514
|
|
|
465
515
|
export type StudioViewRole =
|
|
466
|
-
| "
|
|
516
|
+
| "timeline"
|
|
467
517
|
| "supporting-value"
|
|
468
518
|
| "track";
|
|
469
519
|
|
|
@@ -482,17 +532,25 @@ export type StudioEntityDraft = {
|
|
|
482
532
|
readonly display: StudioEntityDisplay;
|
|
483
533
|
readonly startFrame: number;
|
|
484
534
|
readonly endFrameExclusive: number;
|
|
535
|
+
/** Back-to-front timeline order. Ties preserve projection order. Selection raises only the timeline item. */
|
|
485
536
|
readonly stackOrder: number;
|
|
486
537
|
readonly elementRange?: Range;
|
|
487
538
|
readonly markerId?: string;
|
|
488
539
|
readonly presentId?: string;
|
|
540
|
+
/** Rendered parts belonging to this entity, including phases beyond its editable timeline interval. */
|
|
489
541
|
readonly renderIds?: readonly string[];
|
|
490
542
|
/** Resolved author references that differ per derived entity, such as one Cue's actual Style. */
|
|
491
543
|
readonly parameterReferences?: Readonly<Record<string, string>>;
|
|
544
|
+
/** Disjoint displayed intervals belonging to one selectable author entity. */
|
|
545
|
+
readonly selectionGroup?: string;
|
|
546
|
+
/** Deliberately selected facts, presented beside bound Inspector fields. */
|
|
547
|
+
readonly inspector?: readonly StudioInspectorValue[];
|
|
492
548
|
readonly presentation?: StudioTimelinePresentation;
|
|
493
549
|
readonly temporal?: StudioTemporalLineage;
|
|
494
|
-
/**
|
|
550
|
+
/** Independent child Track partition; omitted means this Track. */
|
|
495
551
|
readonly lane?: string;
|
|
552
|
+
/** Internal band of this Track; mutually exclusive with lane. */
|
|
553
|
+
readonly band?: string;
|
|
496
554
|
};
|
|
497
555
|
|
|
498
556
|
export type StudioTrackCompanionContext = {
|
|
@@ -525,6 +583,8 @@ export type StudioTrackCompanion = {
|
|
|
525
583
|
/** Opts root timeline entities into the component's package-owned Surface preview. */
|
|
526
584
|
readonly poster?: { readonly source: "surface-preview" };
|
|
527
585
|
readonly attachments?: readonly StudioLaneAttachment[];
|
|
586
|
+
/** Internal bands share this Track’s label and contain independently timed entities. */
|
|
587
|
+
readonly bands?: readonly StudioTrackBand[];
|
|
528
588
|
/** Same-Surface output values required to project this Track for Studio. */
|
|
529
589
|
readonly requiredValues?: readonly string[];
|
|
530
590
|
readonly lane?: StudioLaneDescription;
|
|
@@ -535,11 +595,20 @@ export type StudioTrackCompanion = {
|
|
|
535
595
|
readonly project?: (context: StudioTrackCompanionContext) => readonly StudioEntityDraft[];
|
|
536
596
|
};
|
|
537
597
|
|
|
598
|
+
/** Parameters owned by an authored object, independently of its consumers. */
|
|
599
|
+
export type StudioParameterCompanion = {
|
|
600
|
+
readonly id: string;
|
|
601
|
+
readonly match: { readonly module: ModuleRef; readonly surface: string };
|
|
602
|
+
readonly bindings: readonly StudioSourceBindingDeclaration[];
|
|
603
|
+
readonly inspector: readonly StudioInspectorFieldDeclaration[];
|
|
604
|
+
};
|
|
605
|
+
|
|
538
606
|
export type StudioCompanionContribution = {
|
|
539
607
|
readonly format: "hypit.studio-companions@1";
|
|
540
608
|
readonly tracks: readonly StudioTrackCompanion[];
|
|
541
609
|
readonly films?: readonly StudioFilmCompanion[];
|
|
542
610
|
readonly scripts?: readonly StudioScriptCompanion[];
|
|
611
|
+
readonly parameters?: readonly StudioParameterCompanion[];
|
|
543
612
|
};
|
|
544
613
|
|
|
545
614
|
/** Declarative Film boundary. Studio follows only the references named here. */
|
|
@@ -580,6 +649,13 @@ export type StudioScriptAdjustment =
|
|
|
580
649
|
| { readonly kind: "selection"; readonly id: string; readonly startAnchorId: string; readonly endAnchorId: string }
|
|
581
650
|
| { readonly kind: "moment"; readonly id: string; readonly anchorId: string };
|
|
582
651
|
|
|
652
|
+
export type StudioScriptProjection = Pick<StudioSemanticTimeline, "anchors" | "segments" | "tokens" | "selections" | "moments">;
|
|
653
|
+
export type StudioScriptProjectionInput = {
|
|
654
|
+
readonly source: StudioScriptSourceMap;
|
|
655
|
+
readonly values: readonly StudioObservedValue[];
|
|
656
|
+
readonly anchors: ReadonlyMap<string, number>;
|
|
657
|
+
};
|
|
658
|
+
|
|
583
659
|
/** Script grammar companion. It owns source observation and semantic inverse edits. */
|
|
584
660
|
export type StudioScriptCompanion = {
|
|
585
661
|
readonly id: string;
|
|
@@ -594,6 +670,7 @@ export type StudioScriptCompanion = {
|
|
|
594
670
|
readonly nextOffset?: number;
|
|
595
671
|
readonly attributes: Readonly<Record<string, unknown>>;
|
|
596
672
|
}) => Omit<StudioScriptSourceMap, "companion"> | undefined;
|
|
673
|
+
readonly project?: (input: StudioScriptProjectionInput) => StudioScriptProjection;
|
|
597
674
|
readonly adjust: (input: {
|
|
598
675
|
readonly sourceName: string;
|
|
599
676
|
readonly source: string;
|
|
@@ -617,6 +694,7 @@ export function createStudioCompanionHostFacet(input: {
|
|
|
617
694
|
readonly tracks?: readonly StudioTrackCompanion[];
|
|
618
695
|
readonly films?: readonly StudioFilmCompanion[];
|
|
619
696
|
readonly scripts?: readonly StudioScriptCompanion[];
|
|
697
|
+
readonly parameters?: readonly StudioParameterCompanion[];
|
|
620
698
|
}): StudioCompanionHostFacet {
|
|
621
699
|
return {
|
|
622
700
|
abi: studioCompanionHostAbi,
|
|
@@ -625,6 +703,7 @@ export function createStudioCompanionHostFacet(input: {
|
|
|
625
703
|
tracks: input.tracks ?? [],
|
|
626
704
|
...(input.films === undefined ? {} : { films: input.films }),
|
|
627
705
|
...(input.scripts === undefined ? {} : { scripts: input.scripts }),
|
|
706
|
+
...(input.parameters === undefined ? {} : { parameters: input.parameters }),
|
|
628
707
|
},
|
|
629
708
|
};
|
|
630
709
|
}
|
|
@@ -633,6 +712,7 @@ export type StudioPackageContribution = {
|
|
|
633
712
|
readonly tracks: readonly StudioTrackCompanion[];
|
|
634
713
|
readonly films: readonly StudioFilmCompanion[];
|
|
635
714
|
readonly scripts: readonly StudioScriptCompanion[];
|
|
715
|
+
readonly parameters: readonly StudioParameterCompanion[];
|
|
636
716
|
};
|
|
637
717
|
|
|
638
718
|
function qualify(owner: string, local: string, subject: string): string {
|
|
@@ -650,6 +730,7 @@ export function studioContributionFromPackage(
|
|
|
650
730
|
const tracks: StudioTrackCompanion[] = [];
|
|
651
731
|
const films: StudioFilmCompanion[] = [];
|
|
652
732
|
const scripts: StudioScriptCompanion[] = [];
|
|
733
|
+
const parameters: StudioParameterCompanion[] = [];
|
|
653
734
|
for (const facet of facets) {
|
|
654
735
|
if (facet.abi !== studioCompanionHostAbi) continue;
|
|
655
736
|
const contribution = facet.implementation as Partial<StudioCompanionContribution>;
|
|
@@ -664,12 +745,15 @@ export function studioContributionFromPackage(
|
|
|
664
745
|
...film,
|
|
665
746
|
id: qualify(owner, film.id, "Studio Film companion"),
|
|
666
747
|
})));
|
|
748
|
+
parameters.push(...(contribution.parameters ?? []).map((parameter) => ({
|
|
749
|
+
...parameter, id: qualify(owner, parameter.id, "Studio Parameter companion"),
|
|
750
|
+
})));
|
|
667
751
|
scripts.push(...(contribution.scripts ?? []).map((script) => ({
|
|
668
752
|
...script,
|
|
669
753
|
id: qualify(owner, script.id, "Studio Script companion"),
|
|
670
754
|
})));
|
|
671
755
|
}
|
|
672
|
-
return { tracks, films, scripts };
|
|
756
|
+
return { tracks, films, scripts, parameters };
|
|
673
757
|
}
|
|
674
758
|
|
|
675
759
|
/**
|
|
@@ -683,6 +767,18 @@ export function studioTrackCompanionsFromPackage(
|
|
|
683
767
|
return studioContributionFromPackage(owner, facets).tracks;
|
|
684
768
|
}
|
|
685
769
|
|
|
770
|
+
/** A contiguous internal strip, not a child Track. Declaration order is visual order. */
|
|
771
|
+
export type StudioTrackBand = {
|
|
772
|
+
readonly id: string;
|
|
773
|
+
readonly placement: "before" | "after";
|
|
774
|
+
readonly heightPx: number;
|
|
775
|
+
/** Label bands use the whole strip for each entity's title; content bands retain its chrome. */
|
|
776
|
+
readonly display: "label" | "content";
|
|
777
|
+
readonly tone?: StudioTimelineTone;
|
|
778
|
+
readonly bindings?: readonly StudioSourceBindingDeclaration[];
|
|
779
|
+
readonly inspector?: readonly StudioInspectorFieldDeclaration[];
|
|
780
|
+
};
|
|
781
|
+
|
|
686
782
|
export type StudioLaneAttachment = {
|
|
687
783
|
readonly id: string;
|
|
688
784
|
readonly family: StudioTrackFamily;
|
|
@@ -811,6 +907,22 @@ export function temporalSemanticSource(lineage: StudioTemporalLineage | undefine
|
|
|
811
907
|
: undefined;
|
|
812
908
|
}
|
|
813
909
|
|
|
910
|
+
/** A package chooses which source references can name an otherwise unnamed Item. */
|
|
911
|
+
export function authoredItemTitle(
|
|
912
|
+
context: StudioTrackCompanionContext,
|
|
913
|
+
authoredId: string,
|
|
914
|
+
sourceTypes: readonly TypeRef[],
|
|
915
|
+
sourceAttributes: readonly string[],
|
|
916
|
+
): string {
|
|
917
|
+
const child = authoredChildFor(context, authoredId, sourceTypes);
|
|
918
|
+
if (child?.attributes.id) return child.attributes.id;
|
|
919
|
+
for (const attribute of sourceAttributes) {
|
|
920
|
+
const reference = child?.referenceAttributes[attribute];
|
|
921
|
+
if (reference) return reference;
|
|
922
|
+
}
|
|
923
|
+
return authoredId;
|
|
924
|
+
}
|
|
925
|
+
|
|
814
926
|
export function childEntities(
|
|
815
927
|
context: StudioTrackCompanionContext,
|
|
816
928
|
items: readonly {
|
|
@@ -12,20 +12,20 @@ or editor metadata. A graph-qualified projection `id` and its author-facing `sub
|
|
|
12
12
|
on purpose.
|
|
13
13
|
|
|
14
14
|
Author syntax does not live here. `@hypit/temporal-markup` lowers SVML timing forms into ordinary
|
|
15
|
-
Instant projection and Window composition operations. The graph supplies
|
|
16
|
-
domain components receive
|
|
15
|
+
Instant projection and Window composition operations. The graph supplies one Timeline;
|
|
16
|
+
domain components receive that Timeline plus the resulting Instant or Window and never locate a
|
|
17
17
|
Selection, Segment or Moment themselves.
|
|
18
18
|
|
|
19
19
|
Every official consumer verifies the projection at its public boundary: `subjectId` must name the
|
|
20
|
-
domain object being built, both endpoints must retain one
|
|
21
|
-
must equal the explicitly supplied
|
|
20
|
+
domain object being built, both endpoints must retain one time-range identity, and that identity
|
|
21
|
+
must equal the explicitly supplied Timeline. Timeline is therefore an ordinary graph input
|
|
22
22
|
to the consumer, not ambient renderer state.
|
|
23
23
|
|
|
24
24
|
Temporal rejects Instants outside ProgramSpace and Windows that are reversed or empty. It does not
|
|
25
25
|
clip or repair author time. The package also provides sibling-window validation and triggered-stage
|
|
26
26
|
scheduling, but no renderer, Provider, media policy or Studio behavior.
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
All projection Producers receive Timeline. Program-bound projection uses its complete range;
|
|
29
|
+
semantic-bound projection locates its Script anchors. Both produce the same Instant type; program-bound
|
|
30
30
|
sources have no Narrative identity. A Window can combine a semantic endpoint with a program endpoint
|
|
31
31
|
on the same time axis. `absolute` expressions may include a duration offset, as used by `at`/`for`.
|