@hypit/hypit 0.1.4 → 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 +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 +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 +32 -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 +14 -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 +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/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 +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/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 +92 -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 +15 -2
- package/packages/script/src/manifest.ts +2 -2
- package/packages/script/src/narrative.ts +1 -0
- 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/README.md +88 -14
- 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/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 +209 -48
- package/packages/studio/src/ui/comments.ts +233 -0
- package/packages/studio/src/ui/icons.ts +5 -0
- package/packages/studio/src/ui/main.ts +145 -86
- package/packages/studio/src/ui/overlay.ts +12 -8
- package/packages/studio/src/ui/scrub-preview.ts +108 -0
- package/packages/studio/src/ui/stage.ts +67 -4
- package/packages/studio/src/ui/timeline.ts +177 -108
- package/packages/studio/start.ts +4 -2
- 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
|
@@ -106,7 +106,8 @@ ordered layers, `startFrame`, `endFrameExclusive` and `stackOrder`. Useful optio
|
|
|
106
106
|
|
|
107
107
|
| Field/helper | Purpose |
|
|
108
108
|
| --- | --- |
|
|
109
|
-
| `
|
|
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) |
|
|
110
111
|
| `textLayer(text)` | Put explicit domain text in the timeline body |
|
|
111
112
|
| `previewLayer(artifactPreview(kind, resource), layout)` | Show a declared image/video/audio Resource with a finite layout; Studio resolves transport |
|
|
112
113
|
| `renderIds` | Relate an entity to its actual rendered elements |
|
|
@@ -114,6 +115,7 @@ ordered layers, `startFrame`, `endFrameExclusive` and `stackOrder`. Useful optio
|
|
|
114
115
|
| `temporal` | Carry the executed Instant/Window lineage and its edit authority |
|
|
115
116
|
| `lane` and Companion `attachments` | Put child entities on a declared additional lane, with its own bindings and Inspector |
|
|
116
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 |
|
|
117
119
|
|
|
118
120
|
Use the program's frame space and half-open intervals. Persistent visibility and its activation are
|
|
119
121
|
different facts: a board item can remain visible until the board ends while its reveal occupies only
|
|
@@ -152,12 +154,11 @@ physical package identity, so executable package code cannot impersonate an
|
|
|
152
154
|
official Companion. The Source closure selects project packages; Studio does not
|
|
153
155
|
scan `node_modules` for plugins or use Runtime Profiles to select Companions.
|
|
154
156
|
|
|
155
|
-
The same host facet can contribute Film and
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
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.
|
|
161
162
|
|
|
162
163
|
For a domain item whose Spec is consumed beside a Window or Instant, call
|
|
163
164
|
`temporalLineageFor(context, item.id, "window")` using the actual projection input name. Attach the
|
|
@@ -172,8 +173,8 @@ Inspector editing deliberately has two declarations:
|
|
|
172
173
|
|
|
173
174
|
- `bindings` names exact author endpoints, including explicit reference paths
|
|
174
175
|
into authored elements or SVS Recipes. A binding is not visible by itself;
|
|
175
|
-
- `inspector` selects
|
|
176
|
-
`
|
|
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
|
|
177
178
|
finite controls (`text`, `number`, `boolean`, `select`, `color`, `list` or
|
|
178
179
|
`record`). A domain Recipe may declare a shared canonical-value schema; the
|
|
179
180
|
companion chooses its presentation while Studio derives and validates the
|
|
@@ -181,8 +182,11 @@ Inspector editing deliberately has two declarations:
|
|
|
181
182
|
|
|
182
183
|
This keeps source traversal, timeline inverses and editor presentation from
|
|
183
184
|
silently becoming one policy. Studio resolves the declarations against the
|
|
184
|
-
current Source closure
|
|
185
|
-
|
|
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.
|
|
186
190
|
|
|
187
191
|
Fields can declare `number` display scaling, supported suffixes, limits and step; `unit` alone is
|
|
188
192
|
only a label. Select options can carry separate scalar values, labels, descriptions and color/font
|
|
@@ -205,3 +209,118 @@ is selected, its field reaches the correct Source or Recipe, and changing it rec
|
|
|
205
209
|
For semantic handles, verify the exact marker and its other consumers too. Read-only derived timing
|
|
206
210
|
is preferable to an invented inverse. The Companion explains the component; its Producers remain
|
|
207
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 = {
|
|
@@ -140,6 +143,12 @@ export type StudioNumberPresentation = {
|
|
|
140
143
|
readonly step?: number;
|
|
141
144
|
};
|
|
142
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
|
+
|
|
143
152
|
/** A real author endpoint. Its existence never implies Inspector visibility. */
|
|
144
153
|
export type StudioSourceBinding = {
|
|
145
154
|
readonly id: string;
|
|
@@ -162,10 +171,11 @@ export type StudioSourceBinding = {
|
|
|
162
171
|
readonly prefix?: string;
|
|
163
172
|
readonly suffix?: string;
|
|
164
173
|
};
|
|
174
|
+
readonly attributes?: StudioAttributeGroupEdit;
|
|
165
175
|
readonly disabledReason?: string;
|
|
166
176
|
};
|
|
167
177
|
|
|
168
|
-
export type StudioInspectorDomain = "where" | "
|
|
178
|
+
export type StudioInspectorDomain = "where" | "when" | "how";
|
|
169
179
|
|
|
170
180
|
export type StudioInspectorPageDeclaration = {
|
|
171
181
|
readonly id: string;
|
|
@@ -177,7 +187,7 @@ export type StudioInspectorSectionDeclaration = {
|
|
|
177
187
|
readonly label: string;
|
|
178
188
|
};
|
|
179
189
|
|
|
180
|
-
/** One visible
|
|
190
|
+
/** One visible field selected from a Companion's source bindings. */
|
|
181
191
|
export type StudioInspectorFieldDeclaration = {
|
|
182
192
|
readonly binding: string;
|
|
183
193
|
readonly label: string;
|
|
@@ -196,14 +206,25 @@ export type StudioInspectorFieldDeclaration = {
|
|
|
196
206
|
readonly swatches?: readonly string[];
|
|
197
207
|
};
|
|
198
208
|
|
|
199
|
-
/**
|
|
200
|
-
export type
|
|
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;
|
|
214
|
+
};
|
|
215
|
+
|
|
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;
|
|
201
219
|
readonly id: string;
|
|
202
220
|
readonly control: StudioParameterControl;
|
|
203
221
|
readonly value: CanonicalValue;
|
|
204
222
|
readonly schema?: ValueSchema;
|
|
205
|
-
readonly
|
|
206
|
-
|
|
223
|
+
readonly edit?: {
|
|
224
|
+
readonly language: StudioParameterLanguage;
|
|
225
|
+
readonly source: StudioSourceBinding["source"];
|
|
226
|
+
readonly attributes?: StudioAttributeGroupEdit;
|
|
227
|
+
};
|
|
207
228
|
};
|
|
208
229
|
|
|
209
230
|
/** Companion-owned source allowlist. It contains no editor presentation. */
|
|
@@ -211,6 +232,12 @@ export type StudioSourceBindingDeclaration = {
|
|
|
211
232
|
readonly name: string;
|
|
212
233
|
readonly writable?: boolean;
|
|
213
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[];
|
|
214
241
|
/** Optional declaration for the authored element named by a reference. */
|
|
215
242
|
readonly referenced?: readonly StudioSourceBindingDeclaration[];
|
|
216
243
|
/**
|
|
@@ -234,7 +261,7 @@ export type StudioRecipeBindingDeclaration = {
|
|
|
234
261
|
/** Domain-owned public Recipe value structure, never editor presentation. */
|
|
235
262
|
readonly schema?: ValueSchema;
|
|
236
263
|
/** Typed public fallback; Studio writes the property only after the author changes it. */
|
|
237
|
-
readonly fallback?: CanonicalValue;
|
|
264
|
+
readonly fallback?: CanonicalValue | ((authored: Readonly<Record<string, CanonicalValue>>) => CanonicalValue | undefined);
|
|
238
265
|
};
|
|
239
266
|
|
|
240
267
|
export type StudioTimelineGesture =
|
|
@@ -323,7 +350,7 @@ export type StudioDisplayLayer =
|
|
|
323
350
|
};
|
|
324
351
|
|
|
325
352
|
export type StudioEntityDisplay = {
|
|
326
|
-
/**
|
|
353
|
+
/** Primary label: a header in standard chrome, the complete single-line content in compact chrome. */
|
|
327
354
|
readonly title: string;
|
|
328
355
|
/** Ordered back-to-front body layers. */
|
|
329
356
|
readonly layers: readonly StudioDisplayLayer[];
|
|
@@ -486,7 +513,7 @@ export type StudioResolvedTrack = {
|
|
|
486
513
|
};
|
|
487
514
|
|
|
488
515
|
export type StudioViewRole =
|
|
489
|
-
| "
|
|
516
|
+
| "timeline"
|
|
490
517
|
| "supporting-value"
|
|
491
518
|
| "track";
|
|
492
519
|
|
|
@@ -514,10 +541,16 @@ export type StudioEntityDraft = {
|
|
|
514
541
|
readonly renderIds?: readonly string[];
|
|
515
542
|
/** Resolved author references that differ per derived entity, such as one Cue's actual Style. */
|
|
516
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[];
|
|
517
548
|
readonly presentation?: StudioTimelinePresentation;
|
|
518
549
|
readonly temporal?: StudioTemporalLineage;
|
|
519
|
-
/**
|
|
550
|
+
/** Independent child Track partition; omitted means this Track. */
|
|
520
551
|
readonly lane?: string;
|
|
552
|
+
/** Internal band of this Track; mutually exclusive with lane. */
|
|
553
|
+
readonly band?: string;
|
|
521
554
|
};
|
|
522
555
|
|
|
523
556
|
export type StudioTrackCompanionContext = {
|
|
@@ -550,6 +583,8 @@ export type StudioTrackCompanion = {
|
|
|
550
583
|
/** Opts root timeline entities into the component's package-owned Surface preview. */
|
|
551
584
|
readonly poster?: { readonly source: "surface-preview" };
|
|
552
585
|
readonly attachments?: readonly StudioLaneAttachment[];
|
|
586
|
+
/** Internal bands share this Track’s label and contain independently timed entities. */
|
|
587
|
+
readonly bands?: readonly StudioTrackBand[];
|
|
553
588
|
/** Same-Surface output values required to project this Track for Studio. */
|
|
554
589
|
readonly requiredValues?: readonly string[];
|
|
555
590
|
readonly lane?: StudioLaneDescription;
|
|
@@ -560,11 +595,20 @@ export type StudioTrackCompanion = {
|
|
|
560
595
|
readonly project?: (context: StudioTrackCompanionContext) => readonly StudioEntityDraft[];
|
|
561
596
|
};
|
|
562
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
|
+
|
|
563
606
|
export type StudioCompanionContribution = {
|
|
564
607
|
readonly format: "hypit.studio-companions@1";
|
|
565
608
|
readonly tracks: readonly StudioTrackCompanion[];
|
|
566
609
|
readonly films?: readonly StudioFilmCompanion[];
|
|
567
610
|
readonly scripts?: readonly StudioScriptCompanion[];
|
|
611
|
+
readonly parameters?: readonly StudioParameterCompanion[];
|
|
568
612
|
};
|
|
569
613
|
|
|
570
614
|
/** Declarative Film boundary. Studio follows only the references named here. */
|
|
@@ -605,6 +649,13 @@ export type StudioScriptAdjustment =
|
|
|
605
649
|
| { readonly kind: "selection"; readonly id: string; readonly startAnchorId: string; readonly endAnchorId: string }
|
|
606
650
|
| { readonly kind: "moment"; readonly id: string; readonly anchorId: string };
|
|
607
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
|
+
|
|
608
659
|
/** Script grammar companion. It owns source observation and semantic inverse edits. */
|
|
609
660
|
export type StudioScriptCompanion = {
|
|
610
661
|
readonly id: string;
|
|
@@ -619,6 +670,7 @@ export type StudioScriptCompanion = {
|
|
|
619
670
|
readonly nextOffset?: number;
|
|
620
671
|
readonly attributes: Readonly<Record<string, unknown>>;
|
|
621
672
|
}) => Omit<StudioScriptSourceMap, "companion"> | undefined;
|
|
673
|
+
readonly project?: (input: StudioScriptProjectionInput) => StudioScriptProjection;
|
|
622
674
|
readonly adjust: (input: {
|
|
623
675
|
readonly sourceName: string;
|
|
624
676
|
readonly source: string;
|
|
@@ -642,6 +694,7 @@ export function createStudioCompanionHostFacet(input: {
|
|
|
642
694
|
readonly tracks?: readonly StudioTrackCompanion[];
|
|
643
695
|
readonly films?: readonly StudioFilmCompanion[];
|
|
644
696
|
readonly scripts?: readonly StudioScriptCompanion[];
|
|
697
|
+
readonly parameters?: readonly StudioParameterCompanion[];
|
|
645
698
|
}): StudioCompanionHostFacet {
|
|
646
699
|
return {
|
|
647
700
|
abi: studioCompanionHostAbi,
|
|
@@ -650,6 +703,7 @@ export function createStudioCompanionHostFacet(input: {
|
|
|
650
703
|
tracks: input.tracks ?? [],
|
|
651
704
|
...(input.films === undefined ? {} : { films: input.films }),
|
|
652
705
|
...(input.scripts === undefined ? {} : { scripts: input.scripts }),
|
|
706
|
+
...(input.parameters === undefined ? {} : { parameters: input.parameters }),
|
|
653
707
|
},
|
|
654
708
|
};
|
|
655
709
|
}
|
|
@@ -658,6 +712,7 @@ export type StudioPackageContribution = {
|
|
|
658
712
|
readonly tracks: readonly StudioTrackCompanion[];
|
|
659
713
|
readonly films: readonly StudioFilmCompanion[];
|
|
660
714
|
readonly scripts: readonly StudioScriptCompanion[];
|
|
715
|
+
readonly parameters: readonly StudioParameterCompanion[];
|
|
661
716
|
};
|
|
662
717
|
|
|
663
718
|
function qualify(owner: string, local: string, subject: string): string {
|
|
@@ -675,6 +730,7 @@ export function studioContributionFromPackage(
|
|
|
675
730
|
const tracks: StudioTrackCompanion[] = [];
|
|
676
731
|
const films: StudioFilmCompanion[] = [];
|
|
677
732
|
const scripts: StudioScriptCompanion[] = [];
|
|
733
|
+
const parameters: StudioParameterCompanion[] = [];
|
|
678
734
|
for (const facet of facets) {
|
|
679
735
|
if (facet.abi !== studioCompanionHostAbi) continue;
|
|
680
736
|
const contribution = facet.implementation as Partial<StudioCompanionContribution>;
|
|
@@ -689,12 +745,15 @@ export function studioContributionFromPackage(
|
|
|
689
745
|
...film,
|
|
690
746
|
id: qualify(owner, film.id, "Studio Film companion"),
|
|
691
747
|
})));
|
|
748
|
+
parameters.push(...(contribution.parameters ?? []).map((parameter) => ({
|
|
749
|
+
...parameter, id: qualify(owner, parameter.id, "Studio Parameter companion"),
|
|
750
|
+
})));
|
|
692
751
|
scripts.push(...(contribution.scripts ?? []).map((script) => ({
|
|
693
752
|
...script,
|
|
694
753
|
id: qualify(owner, script.id, "Studio Script companion"),
|
|
695
754
|
})));
|
|
696
755
|
}
|
|
697
|
-
return { tracks, films, scripts };
|
|
756
|
+
return { tracks, films, scripts, parameters };
|
|
698
757
|
}
|
|
699
758
|
|
|
700
759
|
/**
|
|
@@ -708,6 +767,18 @@ export function studioTrackCompanionsFromPackage(
|
|
|
708
767
|
return studioContributionFromPackage(owner, facets).tracks;
|
|
709
768
|
}
|
|
710
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
|
+
|
|
711
782
|
export type StudioLaneAttachment = {
|
|
712
783
|
readonly id: string;
|
|
713
784
|
readonly family: StudioTrackFamily;
|
|
@@ -836,6 +907,22 @@ export function temporalSemanticSource(lineage: StudioTemporalLineage | undefine
|
|
|
836
907
|
: undefined;
|
|
837
908
|
}
|
|
838
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
|
+
|
|
839
926
|
export function childEntities(
|
|
840
927
|
context: StudioTrackCompanionContext,
|
|
841
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`.
|
|
@@ -2,8 +2,7 @@ import type { ComponentPackage, ProducerHandlerContext } from "@hypit/component-
|
|
|
2
2
|
import { canonicalize } from "@hypit/protocol";
|
|
3
3
|
import type { StoredValue } from "@hypit/protocol";
|
|
4
4
|
import type { NarrativeExcerpt, NarrativeMomentRef, NarrativeSelectionRef } from "@hypit/narrative";
|
|
5
|
-
import type {
|
|
6
|
-
import type { SemanticTrack } from "@hypit/semantic-track";
|
|
5
|
+
import type { Timeline } from "@hypit/timeline";
|
|
7
6
|
|
|
8
7
|
import {
|
|
9
8
|
composeTemporalWindow,
|
|
@@ -31,14 +30,14 @@ export const temporalComponent = {
|
|
|
31
30
|
{ producer: temporalProducers.projectProgramInstant, handler: ({ inputs }) => ({ outputs: { instant: output(projectProgramInstant({
|
|
32
31
|
itemId: instantSpec(inputs).id,
|
|
33
32
|
subjectId: instantSpec(inputs).subjectId,
|
|
34
|
-
|
|
33
|
+
timeline: inline<Timeline>(inputs.timeline?.value, "Timeline"),
|
|
35
34
|
projection: instantSpec(inputs).projection,
|
|
36
35
|
authority: instantSpec(inputs).authority,
|
|
37
36
|
})) }, needs: {} }) },
|
|
38
37
|
{ producer: temporalProducers.projectSelectionInstant, handler: ({ inputs }) => ({ outputs: { instant: output(projectSelectionInstant({
|
|
39
38
|
itemId: instantSpec(inputs).id,
|
|
40
39
|
subjectId: instantSpec(inputs).subjectId,
|
|
41
|
-
|
|
40
|
+
timeline: inline<Timeline>(inputs.timeline?.value, "Timeline"),
|
|
42
41
|
selection: inline<NarrativeSelectionRef>(inputs.selection?.value, "NarrativeSelection"),
|
|
43
42
|
projection: instantSpec(inputs).projection,
|
|
44
43
|
authority: instantSpec(inputs).authority,
|
|
@@ -46,7 +45,7 @@ export const temporalComponent = {
|
|
|
46
45
|
{ producer: temporalProducers.projectSegmentInstant, handler: ({ inputs }) => ({ outputs: { instant: output(projectSegmentInstant({
|
|
47
46
|
itemId: instantSpec(inputs).id,
|
|
48
47
|
subjectId: instantSpec(inputs).subjectId,
|
|
49
|
-
|
|
48
|
+
timeline: inline<Timeline>(inputs.timeline?.value, "Timeline"),
|
|
50
49
|
segment: inline<NarrativeExcerpt>(inputs.segment?.value, "NarrativeExcerpt"),
|
|
51
50
|
projection: instantSpec(inputs).projection,
|
|
52
51
|
authority: instantSpec(inputs).authority,
|
|
@@ -54,7 +53,7 @@ export const temporalComponent = {
|
|
|
54
53
|
{ producer: temporalProducers.projectMomentInstant, handler: ({ inputs }) => ({ outputs: { instant: output(projectMomentInstant({
|
|
55
54
|
itemId: instantSpec(inputs).id,
|
|
56
55
|
subjectId: instantSpec(inputs).subjectId,
|
|
57
|
-
|
|
56
|
+
timeline: inline<Timeline>(inputs.timeline?.value, "Timeline"),
|
|
58
57
|
moment: inline<NarrativeMomentRef>(inputs.moment?.value, "NarrativeMoment"),
|
|
59
58
|
projection: instantSpec(inputs).projection,
|
|
60
59
|
authority: instantSpec(inputs).authority,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ModuleManifest, ProducerRef, TypeRef, ValueSchema } from "@hypit/protocol";
|
|
2
2
|
import { narrativeDependency, narrativeTypes } from "@hypit/narrative";
|
|
3
|
-
import {
|
|
3
|
+
import { timelineDependency, timelineTypes } from "@hypit/timeline";
|
|
4
4
|
import { programSpaceDependency, programSpaceTypes } from "@hypit/program-space";
|
|
5
5
|
|
|
6
6
|
const string = { kind: "string", minLength: 1 } as const;
|
|
@@ -65,7 +65,7 @@ export const temporalManifest: ModuleManifest = {
|
|
|
65
65
|
format: "hypit.module@1",
|
|
66
66
|
name: temporalModuleRef.name,
|
|
67
67
|
version: temporalModuleRef.version,
|
|
68
|
-
dependencies: [narrativeDependency, programSpaceDependency,
|
|
68
|
+
dependencies: [narrativeDependency, programSpaceDependency, timelineDependency],
|
|
69
69
|
types: [
|
|
70
70
|
{ name: temporalTypes.instantSpec.name },
|
|
71
71
|
{ name: temporalTypes.instant.name },
|
|
@@ -75,16 +75,16 @@ export const temporalManifest: ModuleManifest = {
|
|
|
75
75
|
capabilities: [],
|
|
76
76
|
producers: [
|
|
77
77
|
{ name: temporalProducers.projectProgramInstant.name,
|
|
78
|
-
inputs: [{ name: "
|
|
78
|
+
inputs: [{ name: "timeline", type: timelineTypes.track }, { name: "spec", type: temporalTypes.instantSpec }],
|
|
79
79
|
outputs: [{ name: "instant", type: temporalTypes.instant }], needs: [] },
|
|
80
80
|
{ name: temporalProducers.projectSelectionInstant.name,
|
|
81
|
-
inputs: [{ name: "
|
|
81
|
+
inputs: [{ name: "timeline", type: timelineTypes.track }, { name: "selection", type: narrativeTypes.selection }, { name: "spec", type: temporalTypes.instantSpec }],
|
|
82
82
|
outputs: [{ name: "instant", type: temporalTypes.instant }], needs: [] },
|
|
83
83
|
{ name: temporalProducers.projectSegmentInstant.name,
|
|
84
|
-
inputs: [{ name: "
|
|
84
|
+
inputs: [{ name: "timeline", type: timelineTypes.track }, { name: "segment", type: narrativeTypes.excerpt }, { name: "spec", type: temporalTypes.instantSpec }],
|
|
85
85
|
outputs: [{ name: "instant", type: temporalTypes.instant }], needs: [] },
|
|
86
86
|
{ name: temporalProducers.projectMomentInstant.name,
|
|
87
|
-
inputs: [{ name: "
|
|
87
|
+
inputs: [{ name: "timeline", type: timelineTypes.track }, { name: "moment", type: narrativeTypes.moment }, { name: "spec", type: temporalTypes.instantSpec }],
|
|
88
88
|
outputs: [{ name: "instant", type: temporalTypes.instant }], needs: [] },
|
|
89
89
|
{ name: temporalProducers.composeWindow.name,
|
|
90
90
|
inputs: [{ name: "spec", type: temporalTypes.windowSpec }, { name: "start", type: temporalTypes.instant }, { name: "end", type: temporalTypes.instant }],
|
|
@@ -108,3 +108,5 @@ export const temporalWindowSchema: ValueSchema = object({
|
|
|
108
108
|
end: { schema: temporalInstantSchema },
|
|
109
109
|
span: { schema: frameSpanSchema },
|
|
110
110
|
});
|
|
111
|
+
|
|
112
|
+
export { durationInFrames } from "./rational.js";
|
|
@@ -2,11 +2,11 @@ import type { NarrativeExcerpt, NarrativeMomentRef, NarrativeSelectionRef } from
|
|
|
2
2
|
import { programSpaceFrameCount } from "@hypit/program-space";
|
|
3
3
|
import {
|
|
4
4
|
momentFrame,
|
|
5
|
-
|
|
5
|
+
projectTimelineSpace,
|
|
6
6
|
segmentFrameSpan,
|
|
7
7
|
selectionFrameSpan,
|
|
8
|
-
} from "@hypit/
|
|
9
|
-
import type {
|
|
8
|
+
} from "@hypit/timeline";
|
|
9
|
+
import type { Timeline } from "@hypit/timeline";
|
|
10
10
|
|
|
11
11
|
import type {
|
|
12
12
|
LocatedMoment,
|
|
@@ -22,10 +22,10 @@ function assertLocatedFrame(frame: number, totalFrames: number, label: string):
|
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
export function locateSelection(
|
|
25
|
-
semantic:
|
|
25
|
+
semantic: Timeline,
|
|
26
26
|
selection: NarrativeSelectionRef,
|
|
27
27
|
): LocatedSelection {
|
|
28
|
-
const space =
|
|
28
|
+
const space = projectTimelineSpace(semantic);
|
|
29
29
|
const totalFrames = programSpaceFrameCount(space);
|
|
30
30
|
const span = selectionFrameSpan(semantic, selection);
|
|
31
31
|
assertLocatedFrame(span.startFrame, totalFrames, `NarrativeSelection ${selection.id} start`);
|
|
@@ -34,26 +34,26 @@ export function locateSelection(
|
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
export function locateMoment(
|
|
37
|
-
semantic:
|
|
37
|
+
semantic: Timeline,
|
|
38
38
|
moment: NarrativeMomentRef,
|
|
39
39
|
): LocatedMoment {
|
|
40
|
-
const space =
|
|
40
|
+
const space = projectTimelineSpace(semantic);
|
|
41
41
|
const totalFrames = programSpaceFrameCount(space);
|
|
42
42
|
const frame = momentFrame(semantic, moment);
|
|
43
43
|
assertLocatedFrame(frame, totalFrames, `NarrativeMoment ${moment.id} cue`);
|
|
44
44
|
return { id: moment.id, cue: { frame } };
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
export function locateProgram(semantic:
|
|
48
|
-
const space =
|
|
47
|
+
export function locateProgram(semantic: Timeline): LocatedProgram {
|
|
48
|
+
const space = projectTimelineSpace(semantic);
|
|
49
49
|
return { id: "program", start: { frame: 0 }, end: { frame: programSpaceFrameCount(space) } };
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
export function locateSegment(
|
|
53
|
-
semantic:
|
|
53
|
+
semantic: Timeline,
|
|
54
54
|
segment: NarrativeExcerpt,
|
|
55
55
|
): LocatedSegment {
|
|
56
|
-
const space =
|
|
56
|
+
const space = projectTimelineSpace(semantic);
|
|
57
57
|
const totalFrames = programSpaceFrameCount(space);
|
|
58
58
|
const span = segmentFrameSpan(semantic, segment);
|
|
59
59
|
assertLocatedFrame(span.startFrame, totalFrames, `Narrative Segment ${segment.id} start`);
|