@hypit/hypit 0.0.1 → 0.1.1
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/LICENSE +26 -0
- package/README.md +142 -0
- package/bin/hypit.mjs +46 -0
- package/dist/public/artifact.d.ts +75 -0
- package/dist/public/author-kit.d.ts +559 -0
- package/dist/public/browser-capture.d.ts +56 -0
- package/dist/public/caption.d.ts +751 -0
- package/dist/public/composition.d.ts +672 -0
- package/dist/public/endpoint-kit.d.ts +366 -0
- package/dist/public/generation.d.ts +591 -0
- package/dist/public/hyperframes.d.ts +774 -0
- package/dist/public/media.d.ts +708 -0
- package/dist/public/model-kit.d.ts +523 -0
- package/dist/public/narrative.d.ts +315 -0
- package/dist/public/program-space.d.ts +193 -0
- package/dist/public/runtime-kit.d.ts +427 -0
- package/dist/public/semantic-track.d.ts +418 -0
- package/dist/public/spatial.d.ts +1193 -0
- package/dist/public/speech.d.ts +391 -0
- package/dist/public/studio-adapter.d.ts +686 -0
- package/dist/public/svs.d.ts +311 -0
- package/dist/public/temporal-markup.d.ts +343 -0
- package/dist/public/temporal.d.ts +497 -0
- package/dist/public/text.d.ts +817 -0
- package/dist/public/visual-ir.d.ts +98 -0
- package/docs/public/hypit-logo-dark.svg +36 -0
- package/docs/public/hypit-logo-light.svg +38 -0
- package/examples/README.md +24 -0
- package/examples/minimal-author-package/README.md +18 -0
- package/examples/minimal-author-package/packages/example-component/README.md +44 -0
- package/examples/minimal-author-package/packages/example-component/package.json +27 -0
- package/examples/minimal-author-package/packages/example-component/preview/Box.png +0 -0
- package/examples/minimal-author-package/packages/example-component/preview/build.svrun +6 -0
- package/examples/minimal-author-package/packages/example-component/preview/preview.svml +47 -0
- package/examples/minimal-author-package/packages/example-component/preview/recipes.svs +8 -0
- package/examples/minimal-author-package/packages/example-component/src/activation.ts +10 -0
- package/examples/minimal-author-package/packages/example-component/src/component.ts +44 -0
- package/examples/minimal-author-package/packages/example-component/src/fragment.ts +32 -0
- package/examples/minimal-author-package/packages/example-component/src/index.ts +6 -0
- package/examples/minimal-author-package/packages/example-component/src/manifest.ts +82 -0
- package/examples/minimal-author-package/packages/example-component/src/style.ts +13 -0
- package/examples/minimal-author-package/packages/example-component/src/surface.ts +41 -0
- package/examples/minimal-author-package/packages/example-component/src/temporal.ts +6 -0
- package/examples/minimal-author-package/packages/example-component/tsconfig.json +18 -0
- package/examples/semantic-composition/README.md +35 -0
- package/examples/semantic-composition/chat.svml +25 -0
- package/examples/semantic-composition/chat.svrun +6 -0
- package/examples/semantic-composition/chat.svs +4 -0
- package/examples/semantic-composition/hypit.runtime.json +8 -0
- package/examples/semantic-composition/packages/chat-scene/README.md +29 -0
- package/examples/semantic-composition/packages/chat-scene/package.json +11 -0
- package/examples/semantic-composition/packages/chat-scene/src/activation.ts +112 -0
- package/examples/semantic-composition/packages/chat-scene/src/render.ts +64 -0
- package/examples/semantic-composition/packages/chat-scene/tsconfig.json +18 -0
- package/examples/semantic-composition/packages/responsive-explainer/README.md +45 -0
- package/examples/semantic-composition/packages/responsive-explainer/package.json +11 -0
- package/examples/semantic-composition/packages/responsive-explainer/src/activation.ts +90 -0
- package/examples/semantic-composition/packages/responsive-explainer/src/render.ts +68 -0
- package/examples/semantic-composition/packages/responsive-explainer/tsconfig.json +18 -0
- package/package.json +263 -5
- package/packages/artifact/README.md +10 -0
- package/packages/artifact/package.json +16 -0
- package/packages/artifact/src/activation.ts +8 -0
- package/packages/artifact/src/index.ts +24 -0
- package/packages/audio-track/README.md +43 -0
- package/packages/audio-track/package.json +36 -0
- package/packages/audio-track/src/activation.ts +20 -0
- package/packages/audio-track/src/component.ts +40 -0
- package/packages/audio-track/src/fragment.ts +63 -0
- package/packages/audio-track/src/index.ts +7 -0
- package/packages/audio-track/src/manifest.ts +151 -0
- package/packages/audio-track/src/program.ts +254 -0
- package/packages/audio-track/src/surface.ts +187 -0
- package/packages/audio-track/src/types.ts +62 -0
- package/packages/audio-track-studio/README.md +3 -0
- package/packages/audio-track-studio/package.json +14 -0
- package/packages/audio-track-studio/src/activation.ts +7 -0
- package/packages/audio-track-studio/src/index.ts +72 -0
- package/packages/author-kit/README.md +31 -0
- package/packages/author-kit/package.json +16 -0
- package/packages/author-kit/src/index.ts +59 -0
- package/packages/background-removal/README.md +29 -0
- package/packages/background-removal/package.json +16 -0
- package/packages/background-removal/src/activation.ts +18 -0
- package/packages/background-removal/src/component.ts +32 -0
- package/packages/background-removal/src/fragment.ts +18 -0
- package/packages/background-removal/src/index.ts +6 -0
- package/packages/background-removal/src/manifest.ts +45 -0
- package/packages/background-removal/src/program.ts +19 -0
- package/packages/background-removal/src/surface.ts +27 -0
- package/packages/background-removal/src/types.ts +5 -0
- package/packages/browser-capture/README.md +82 -0
- package/packages/browser-capture/package.json +15 -0
- package/packages/browser-capture/src/browser.ts +19 -0
- package/packages/browser-capture/src/index.ts +198 -0
- package/packages/build-result/package.json +13 -0
- package/packages/build-result/src/decode.ts +286 -0
- package/packages/build-result/src/index.ts +25 -0
- package/packages/build-result/src/store.ts +505 -0
- package/packages/build-result/src/types.ts +354 -0
- package/packages/build-result/src/writer.ts +184 -0
- package/packages/build-result-fs/README.md +29 -0
- package/packages/build-result-fs/package.json +17 -0
- package/packages/build-result-fs/src/activation.ts +62 -0
- package/packages/build-result-fs/src/index.ts +1 -0
- package/packages/build-result-kit/README.md +10 -0
- package/packages/build-result-kit/package.json +15 -0
- package/packages/build-result-kit/src/index.ts +144 -0
- package/packages/build-result-s3/README.md +49 -0
- package/packages/build-result-s3/package.json +19 -0
- package/packages/build-result-s3/src/activation.ts +71 -0
- package/packages/build-result-s3/src/client.ts +254 -0
- package/packages/build-result-s3/src/index.ts +4 -0
- package/packages/build-result-s3/src/repository.ts +361 -0
- package/packages/caption/README.md +77 -0
- package/packages/caption/package.json +28 -0
- package/packages/caption/src/activation.ts +17 -0
- package/packages/caption/src/component.ts +38 -0
- package/packages/caption/src/display.ts +111 -0
- package/packages/caption/src/error.ts +9 -0
- package/packages/caption/src/fragment.ts +26 -0
- package/packages/caption/src/index.ts +33 -0
- package/packages/caption/src/manifest.ts +97 -0
- package/packages/caption/src/style.ts +170 -0
- package/packages/caption/src/surface.ts +96 -0
- package/packages/caption/src/temporalize.ts +124 -0
- package/packages/caption/src/types.ts +71 -0
- package/packages/caption-fine/README.md +108 -0
- package/packages/caption-fine/package.json +30 -0
- package/packages/caption-fine/preview/Track.png +0 -0
- package/packages/caption-fine/src/activation.ts +32 -0
- package/packages/caption-fine/src/component.ts +58 -0
- package/packages/caption-fine/src/fragment.ts +112 -0
- package/packages/caption-fine/src/index.ts +19 -0
- package/packages/caption-fine/src/manifest.ts +383 -0
- package/packages/caption-fine/src/recipe.ts +120 -0
- package/packages/caption-fine/src/render.ts +1133 -0
- package/packages/caption-fine/src/schedule.ts +126 -0
- package/packages/caption-fine/src/spacing.ts +69 -0
- package/packages/caption-fine/src/style.ts +370 -0
- package/packages/caption-fine/src/surface.ts +152 -0
- package/packages/caption-fine/src/types.ts +191 -0
- package/packages/caption-fine-studio/README.md +3 -0
- package/packages/caption-fine-studio/package.json +15 -0
- package/packages/caption-fine-studio/src/activation.ts +7 -0
- package/packages/caption-fine-studio/src/index.ts +163 -0
- package/packages/cli/README.md +51 -0
- package/packages/cli/package.json +33 -0
- package/packages/cli/src/arguments.ts +605 -0
- package/packages/cli/src/build-planning.ts +460 -0
- package/packages/cli/src/command.ts +202 -0
- package/packages/cli/src/commands/environment.ts +391 -0
- package/packages/cli/src/commands/execution.ts +321 -0
- package/packages/cli/src/commands/results.ts +187 -0
- package/packages/cli/src/commands/types.ts +9 -0
- package/packages/cli/src/distribution.ts +74 -0
- package/packages/cli/src/index.ts +30 -0
- package/packages/cli/src/machine-view.ts +28 -0
- package/packages/cli/src/main.ts +654 -0
- package/packages/cli/src/oauth.ts +228 -0
- package/packages/cli/src/observation.ts +203 -0
- package/packages/cli/src/output.ts +1007 -0
- package/packages/cli/src/paths.ts +7 -0
- package/packages/cli/src/project-context.ts +38 -0
- package/packages/cli/src/reachability.ts +91 -0
- package/packages/cli/src/result-export.ts +148 -0
- package/packages/cli/src/result-query.ts +46 -0
- package/packages/cli/src/run-file.ts +186 -0
- package/packages/cli/src/runtime-port.ts +13 -0
- package/packages/cli/src/runtime-selection.ts +94 -0
- package/packages/cli/src/runtime-view.ts +15 -0
- package/packages/cli/src/source-discovery.ts +150 -0
- package/packages/cli/src/source-packages.ts +91 -0
- package/packages/cli/src/view.ts +228 -0
- package/packages/comment-sticker/README.md +41 -0
- package/packages/comment-sticker/package.json +29 -0
- package/packages/comment-sticker/preview/Track.png +0 -0
- package/packages/comment-sticker/src/activation.ts +32 -0
- package/packages/comment-sticker/src/author.ts +148 -0
- package/packages/comment-sticker/src/component.ts +97 -0
- package/packages/comment-sticker/src/fragment.ts +124 -0
- package/packages/comment-sticker/src/index.ts +8 -0
- package/packages/comment-sticker/src/manifest.ts +373 -0
- package/packages/comment-sticker/src/program.ts +610 -0
- package/packages/comment-sticker/src/surface.ts +172 -0
- package/packages/comment-sticker/src/types.ts +109 -0
- package/packages/comment-sticker-studio/README.md +3 -0
- package/packages/comment-sticker-studio/package.json +14 -0
- package/packages/comment-sticker-studio/src/activation.ts +7 -0
- package/packages/comment-sticker-studio/src/index.ts +132 -0
- package/packages/compiler-markup-node/README.md +12 -0
- package/packages/compiler-markup-node/package.json +22 -0
- package/packages/compiler-markup-node/src/index.ts +59 -0
- package/packages/compiler-node/README.md +60 -0
- package/packages/compiler-node/package.json +25 -0
- package/packages/compiler-node/src/compiler.ts +207 -0
- package/packages/compiler-node/src/error.ts +11 -0
- package/packages/compiler-node/src/graph-query.ts +51 -0
- package/packages/compiler-node/src/index.ts +27 -0
- package/packages/compiler-node/src/modules.ts +107 -0
- package/packages/compiler-node/src/run.ts +355 -0
- package/packages/component-kit/README.md +97 -0
- package/packages/component-kit/package.json +13 -0
- package/packages/component-kit/src/index.ts +155 -0
- package/packages/composition/README.md +53 -0
- package/packages/composition/package.json +29 -0
- package/packages/composition/src/activation.ts +3 -0
- package/packages/composition/src/component.ts +10 -0
- package/packages/composition/src/index.ts +18 -0
- package/packages/composition/src/manifest.ts +13 -0
- package/packages/composition/src/schema.ts +194 -0
- package/packages/composition/src/track.ts +1403 -0
- package/packages/core/README.md +22 -0
- package/packages/core/package.json +13 -0
- package/packages/core/src/error.ts +12 -0
- package/packages/core/src/graph.ts +341 -0
- package/packages/core/src/index.ts +32 -0
- package/packages/core/src/link.ts +240 -0
- package/packages/core/src/machine.ts +60 -0
- package/packages/core/src/plan.ts +504 -0
- package/packages/core/src/reducer.ts +428 -0
- package/packages/core/src/reference.ts +25 -0
- package/packages/core/src/slice.ts +108 -0
- package/packages/credential-store-env/README.md +11 -0
- package/packages/credential-store-env/package.json +17 -0
- package/packages/credential-store-env/src/activation.ts +25 -0
- package/packages/credential-store-env/src/index.ts +23 -0
- package/packages/credential-store-os/README.md +13 -0
- package/packages/credential-store-os/package.json +22 -0
- package/packages/credential-store-os/runtime/windows-credential.ps1 +59 -0
- package/packages/credential-store-os/src/activation.ts +32 -0
- package/packages/credential-store-os/src/index.ts +2 -0
- package/packages/credential-store-os/src/store.ts +196 -0
- package/packages/deck-track/README.md +52 -0
- package/packages/deck-track/package.json +35 -0
- package/packages/deck-track/preview/DepthStack.png +0 -0
- package/packages/deck-track/src/activation.ts +32 -0
- package/packages/deck-track/src/author.ts +217 -0
- package/packages/deck-track/src/component.ts +86 -0
- package/packages/deck-track/src/fragment.ts +148 -0
- package/packages/deck-track/src/index.ts +16 -0
- package/packages/deck-track/src/lower.ts +370 -0
- package/packages/deck-track/src/manifest.ts +438 -0
- package/packages/deck-track/src/program.ts +367 -0
- package/packages/deck-track/src/surface.ts +286 -0
- package/packages/deck-track/src/types.ts +119 -0
- package/packages/deck-track-studio/README.md +3 -0
- package/packages/deck-track-studio/package.json +14 -0
- package/packages/deck-track-studio/src/activation.ts +7 -0
- package/packages/deck-track-studio/src/index.ts +134 -0
- package/packages/driver-node/README.md +23 -0
- package/packages/driver-node/package.json +18 -0
- package/packages/driver-node/src/driver.ts +616 -0
- package/packages/driver-node/src/index.ts +10 -0
- package/packages/driver-node/src/planning.ts +67 -0
- package/packages/driver-node/src/registry.ts +234 -0
- package/packages/driver-node/src/resources.ts +36 -0
- package/packages/driver-node/src/types.ts +69 -0
- package/packages/elaborator/README.md +74 -0
- package/packages/elaborator/package.json +16 -0
- package/packages/elaborator/src/author.ts +308 -0
- package/packages/elaborator/src/fragment.ts +505 -0
- package/packages/elaborator/src/frontend-facet.ts +30 -0
- package/packages/elaborator/src/index.ts +78 -0
- package/packages/elaborator/src/source.ts +608 -0
- package/packages/endpoint-kit/README.md +111 -0
- package/packages/endpoint-kit/package.json +14 -0
- package/packages/endpoint-kit/src/index.ts +488 -0
- package/packages/estimate/README.md +32 -0
- package/packages/estimate/package.json +20 -0
- package/packages/estimate/src/activation.ts +11 -0
- package/packages/estimate/src/index.ts +16 -0
- package/packages/estimate/src/manifest.ts +34 -0
- package/packages/estimate/src/policy.ts +70 -0
- package/packages/estimate/src/program.ts +196 -0
- package/packages/estimate/src/types.ts +15 -0
- package/packages/film/README.md +49 -0
- package/packages/film/package.json +34 -0
- package/packages/film/src/activation.ts +16 -0
- package/packages/film/src/component.ts +61 -0
- package/packages/film/src/fragment.ts +83 -0
- package/packages/film/src/index.ts +11 -0
- package/packages/film/src/manifest.ts +152 -0
- package/packages/film/src/program.ts +110 -0
- package/packages/film/src/recipe.ts +24 -0
- package/packages/film/src/surface.ts +146 -0
- package/packages/film/src/types.ts +26 -0
- package/packages/film-studio/package.json +16 -0
- package/packages/film-studio/src/activation.ts +8 -0
- package/packages/film-studio/src/index.ts +17 -0
- package/packages/fonts-open/README.md +77 -0
- package/packages/fonts-open/package.json +130 -0
- package/packages/fonts-open/src/activation.ts +30 -0
- package/packages/fonts-open/src/catalog.ts +317 -0
- package/packages/fonts-open/src/index.ts +13 -0
- package/packages/fonts-open/src/manifest.ts +83 -0
- package/packages/fonts-open/src/surface.ts +239 -0
- package/packages/generation/README.md +19 -0
- package/packages/generation/package.json +23 -0
- package/packages/generation/src/activation.ts +9 -0
- package/packages/generation/src/component.ts +77 -0
- package/packages/generation/src/identity.ts +80 -0
- package/packages/generation/src/index.ts +79 -0
- package/packages/generation/src/manifest.ts +65 -0
- package/packages/generation/src/mapping.ts +231 -0
- package/packages/generation/src/ports.ts +222 -0
- package/packages/generation/src/request.ts +427 -0
- package/packages/generation/src/schema.ts +62 -0
- package/packages/generation/src/types.ts +17 -0
- package/packages/gpt-image/README.md +54 -0
- package/packages/gpt-image/package.json +34 -0
- package/packages/gpt-image/src/activation.ts +39 -0
- package/packages/gpt-image/src/fragment.ts +101 -0
- package/packages/gpt-image/src/index.ts +203 -0
- package/packages/gpt-image/src/surface.ts +194 -0
- package/packages/gpt-image-kits/README.md +44 -0
- package/packages/gpt-image-kits/kits/phone-ugc-v1.svs +34 -0
- package/packages/gpt-image-kits/package.json +15 -0
- package/packages/grok-imagine/README.md +21 -0
- package/packages/grok-imagine/package.json +21 -0
- package/packages/grok-imagine/src/activation.ts +29 -0
- package/packages/grok-imagine/src/index.ts +174 -0
- package/packages/grok-imagine/src/surface.ts +149 -0
- package/packages/host/README.md +5 -0
- package/packages/host/package.json +10 -0
- package/packages/host/src/facet.ts +6 -0
- package/packages/host/src/frontend.ts +56 -0
- package/packages/host/src/index.ts +9 -0
- package/packages/hyperframes/README.md +69 -0
- package/packages/hyperframes/package.json +36 -0
- package/packages/hyperframes/src/activation.ts +8 -0
- package/packages/hyperframes/src/browser-program.ts +79 -0
- package/packages/hyperframes/src/component.ts +32 -0
- package/packages/hyperframes/src/document.ts +827 -0
- package/packages/hyperframes/src/fragment.ts +32 -0
- package/packages/hyperframes/src/index.ts +13 -0
- package/packages/hyperframes/src/manifest.ts +67 -0
- package/packages/hyperframes/src/project.ts +118 -0
- package/packages/hyperframes/src/text.ts +1179 -0
- package/packages/hyperframes/src/types.ts +38 -0
- package/packages/image-compose/README.md +25 -0
- package/packages/image-compose/package.json +18 -0
- package/packages/image-compose/src/activation.ts +21 -0
- package/packages/image-compose/src/component.ts +100 -0
- package/packages/image-compose/src/fragment.ts +54 -0
- package/packages/image-compose/src/index.ts +10 -0
- package/packages/image-compose/src/manifest.ts +119 -0
- package/packages/image-compose/src/program.ts +75 -0
- package/packages/image-compose/src/surface.ts +83 -0
- package/packages/image-compose/src/types.ts +22 -0
- package/packages/image-transform/README.md +29 -0
- package/packages/image-transform/package.json +21 -0
- package/packages/image-transform/src/activation.ts +33 -0
- package/packages/image-transform/src/component.ts +67 -0
- package/packages/image-transform/src/fragment.ts +25 -0
- package/packages/image-transform/src/index.ts +13 -0
- package/packages/image-transform/src/manifest.ts +209 -0
- package/packages/image-transform/src/program.ts +23 -0
- package/packages/image-transform/src/surface.ts +216 -0
- package/packages/image-transform/src/types.ts +20 -0
- package/packages/interview-emoji-reveal/README.md +39 -0
- package/packages/interview-emoji-reveal/package.json +23 -0
- package/packages/interview-emoji-reveal/preview/Track.png +0 -0
- package/packages/interview-emoji-reveal/src/activation.ts +14 -0
- package/packages/interview-emoji-reveal/src/component.ts +45 -0
- package/packages/interview-emoji-reveal/src/fragment.ts +62 -0
- package/packages/interview-emoji-reveal/src/index.ts +16 -0
- package/packages/interview-emoji-reveal/src/manifest.ts +174 -0
- package/packages/interview-emoji-reveal/src/program.ts +242 -0
- package/packages/interview-emoji-reveal/src/style.ts +47 -0
- package/packages/interview-emoji-reveal/src/surface.ts +110 -0
- package/packages/interview-emoji-reveal/src/types.ts +52 -0
- package/packages/markup/README.md +81 -0
- package/packages/markup/package.json +16 -0
- package/packages/markup/src/element.ts +39 -0
- package/packages/markup/src/error.ts +20 -0
- package/packages/markup/src/frontend.ts +518 -0
- package/packages/markup/src/host-facet.ts +115 -0
- package/packages/markup/src/index.ts +25 -0
- package/packages/markup/src/registry.ts +83 -0
- package/packages/markup/src/syntax.ts +271 -0
- package/packages/markup/src/types.ts +246 -0
- package/packages/media/README.md +37 -0
- package/packages/media/package.json +19 -0
- package/packages/media/src/activation.ts +38 -0
- package/packages/media/src/component.ts +16 -0
- package/packages/media/src/frame-range.ts +33 -0
- package/packages/media/src/identity.ts +227 -0
- package/packages/media/src/index.ts +15 -0
- package/packages/media/src/manifest.ts +122 -0
- package/packages/media/src/render.ts +140 -0
- package/packages/media/src/schema.ts +69 -0
- package/packages/media/src/surface.ts +150 -0
- package/packages/media/src/types.ts +121 -0
- package/packages/media-execution/README.md +28 -0
- package/packages/media-execution/package.json +17 -0
- package/packages/media-execution/src/execute.ts +1322 -0
- package/packages/media-execution/src/index.ts +16 -0
- package/packages/media-execution/src/probe.ts +315 -0
- package/packages/media-execution/src/surface.ts +286 -0
- package/packages/media-execution/src/toolchain.ts +81 -0
- package/packages/media-execution/src/webp.ts +200 -0
- package/packages/media-pipeline/README.md +113 -0
- package/packages/media-pipeline/package.json +27 -0
- package/packages/media-pipeline/src/activation.ts +47 -0
- package/packages/media-pipeline/src/audio-plan.ts +113 -0
- package/packages/media-pipeline/src/component.ts +373 -0
- package/packages/media-pipeline/src/fragment.ts +167 -0
- package/packages/media-pipeline/src/index.ts +46 -0
- package/packages/media-pipeline/src/manifest.ts +653 -0
- package/packages/media-pipeline/src/operations.ts +248 -0
- package/packages/media-pipeline/src/selection.ts +110 -0
- package/packages/media-pipeline/src/surface.ts +389 -0
- package/packages/media-pipeline/src/types.ts +175 -0
- package/packages/media-track/README.md +197 -0
- package/packages/media-track/package.json +29 -0
- package/packages/media-track/preview/Track.png +0 -0
- package/packages/media-track/preview/build.svrun +5 -0
- package/packages/media-track/preview/flush.png +0 -0
- package/packages/media-track/preview/preview.svml +47 -0
- package/packages/media-track/preview/recipes.svs +23 -0
- package/packages/media-track/preview/rounded.png +0 -0
- package/packages/media-track/src/activation.ts +20 -0
- package/packages/media-track/src/author.ts +317 -0
- package/packages/media-track/src/component.ts +162 -0
- package/packages/media-track/src/fragment.ts +57 -0
- package/packages/media-track/src/index.ts +65 -0
- package/packages/media-track/src/layers.ts +308 -0
- package/packages/media-track/src/lower.ts +335 -0
- package/packages/media-track/src/manifest.ts +624 -0
- package/packages/media-track/src/motion.ts +387 -0
- package/packages/media-track/src/performance.ts +37 -0
- package/packages/media-track/src/presentation.ts +35 -0
- package/packages/media-track/src/program.ts +565 -0
- package/packages/media-track/src/sampling.ts +118 -0
- package/packages/media-track/src/sequence.ts +403 -0
- package/packages/media-track/src/sounds.ts +71 -0
- package/packages/media-track/src/surface.ts +668 -0
- package/packages/media-track/src/types.ts +311 -0
- package/packages/media-track-studio/README.md +3 -0
- package/packages/media-track-studio/package.json +15 -0
- package/packages/media-track-studio/src/activation.ts +7 -0
- package/packages/media-track-studio/src/index.ts +235 -0
- package/packages/mimo-speech/README.md +33 -0
- package/packages/mimo-speech/package.json +21 -0
- package/packages/mimo-speech/src/activation.ts +32 -0
- package/packages/mimo-speech/src/fragment.ts +11 -0
- package/packages/mimo-speech/src/index.ts +160 -0
- package/packages/mimo-speech/src/surface.ts +193 -0
- package/packages/minimax-h3/README.md +21 -0
- package/packages/minimax-h3/package.json +21 -0
- package/packages/minimax-h3/src/activation.ts +14 -0
- package/packages/minimax-h3/src/index.ts +188 -0
- package/packages/minimax-h3/src/surface.ts +87 -0
- package/packages/model-kit/README.md +52 -0
- package/packages/model-kit/package.json +19 -0
- package/packages/model-kit/src/index.ts +728 -0
- package/packages/nano-banana/README.md +23 -0
- package/packages/nano-banana/package.json +21 -0
- package/packages/nano-banana/src/activation.ts +14 -0
- package/packages/nano-banana/src/index.ts +172 -0
- package/packages/nano-banana/src/surface.ts +120 -0
- package/packages/narrative/README.md +7 -0
- package/packages/narrative/package.json +17 -0
- package/packages/narrative/src/activation.ts +7 -0
- package/packages/narrative/src/component.ts +33 -0
- package/packages/narrative/src/identity.ts +131 -0
- package/packages/narrative/src/index.ts +11 -0
- package/packages/narrative/src/manifest.ts +30 -0
- package/packages/narrative/src/schema.ts +89 -0
- package/packages/narrative/src/types.ts +141 -0
- package/packages/package-loader-node/README.md +23 -0
- package/packages/package-loader-node/package.json +15 -0
- package/packages/package-loader-node/src/contribution.ts +97 -0
- package/packages/package-loader-node/src/distribution-resolution.ts +146 -0
- package/packages/package-loader-node/src/index.ts +27 -0
- package/packages/package-loader-node/src/loader.ts +301 -0
- package/packages/package-loader-node/src/location.ts +279 -0
- package/packages/package-loader-node/src/types.ts +60 -0
- package/packages/program-space/README.md +20 -0
- package/packages/program-space/package.json +17 -0
- package/packages/program-space/src/activation.ts +19 -0
- package/packages/program-space/src/index.ts +107 -0
- package/packages/program-space/src/surface.ts +55 -0
- package/packages/protocol/README.md +11 -0
- package/packages/protocol/package.json +10 -0
- package/packages/protocol/src/build-id.ts +52 -0
- package/packages/protocol/src/build.ts +265 -0
- package/packages/protocol/src/canonical.ts +37 -0
- package/packages/protocol/src/error.ts +11 -0
- package/packages/protocol/src/identity.ts +59 -0
- package/packages/protocol/src/index.ts +9 -0
- package/packages/protocol/src/module.ts +67 -0
- package/packages/protocol/src/value.ts +88 -0
- package/packages/provider-hyperframes-aws-lambda/README.md +30 -0
- package/packages/provider-hyperframes-aws-lambda/package.json +30 -0
- package/packages/provider-hyperframes-aws-lambda/src/activation.ts +97 -0
- package/packages/provider-hyperframes-aws-lambda/src/client.ts +114 -0
- package/packages/provider-hyperframes-aws-lambda/src/index.ts +21 -0
- package/packages/provider-hyperframes-aws-lambda/src/provider.ts +522 -0
- package/packages/provider-hyperframes-local/README.md +129 -0
- package/packages/provider-hyperframes-local/package.json +34 -0
- package/packages/provider-hyperframes-local/src/activation.ts +107 -0
- package/packages/provider-hyperframes-local/src/capture-process.ts +110 -0
- package/packages/provider-hyperframes-local/src/capture-worker.ts +17 -0
- package/packages/provider-hyperframes-local/src/capture.ts +184 -0
- package/packages/provider-hyperframes-local/src/index.ts +10 -0
- package/packages/provider-hyperframes-local/src/options.ts +19 -0
- package/packages/provider-hyperframes-local/src/output.ts +73 -0
- package/packages/provider-hyperframes-local/src/process.ts +83 -0
- package/packages/provider-hyperframes-local/src/program.ts +58 -0
- package/packages/provider-hyperframes-local/src/provider.ts +62 -0
- package/packages/provider-hyperframes-local/src/render.ts +114 -0
- package/packages/provider-hyperframes-local/src/sampling.ts +89 -0
- package/packages/provider-hypihub/README.md +143 -0
- package/packages/provider-hypihub/package.json +26 -0
- package/packages/provider-hypihub/src/activation.ts +91 -0
- package/packages/provider-hypihub/src/index.ts +2 -0
- package/packages/provider-hypihub/src/mapping.ts +145 -0
- package/packages/provider-hypihub/src/oauth.ts +113 -0
- package/packages/provider-hypihub/src/provider.ts +566 -0
- package/packages/provider-hypihub/src/routes.ts +134 -0
- package/packages/provider-hypihub/src/upload.ts +402 -0
- package/packages/provider-image-opencv-local/README.md +16 -0
- package/packages/provider-image-opencv-local/package.json +27 -0
- package/packages/provider-image-opencv-local/runtime/raster_execute.py +299 -0
- package/packages/provider-image-opencv-local/src/activation.ts +61 -0
- package/packages/provider-image-opencv-local/src/deployment.ts +68 -0
- package/packages/provider-image-opencv-local/src/index.ts +2 -0
- package/packages/provider-image-opencv-local/src/program.ts +60 -0
- package/packages/provider-image-opencv-local/src/provider.ts +155 -0
- package/packages/provider-kie/README.md +134 -0
- package/packages/provider-kie/package.json +43 -0
- package/packages/provider-kie/src/activation.ts +71 -0
- package/packages/provider-kie/src/index.ts +10 -0
- package/packages/provider-kie/src/mapping.ts +182 -0
- package/packages/provider-kie/src/provider.ts +657 -0
- package/packages/provider-kie/src/routes.ts +150 -0
- package/packages/provider-media-local/README.md +58 -0
- package/packages/provider-media-local/package.json +28 -0
- package/packages/provider-media-local/src/activation.ts +65 -0
- package/packages/provider-media-local/src/index.ts +2 -0
- package/packages/provider-media-local/src/program.ts +19 -0
- package/packages/provider-media-local/src/provider.ts +150 -0
- package/packages/provider-whisperx-local/README.md +44 -0
- package/packages/provider-whisperx-local/package.json +27 -0
- package/packages/provider-whisperx-local/src/activation.ts +93 -0
- package/packages/provider-whisperx-local/src/index.ts +5 -0
- package/packages/provider-whisperx-local/src/program.ts +157 -0
- package/packages/provider-whisperx-local/src/provider.ts +191 -0
- package/packages/provider-xiaomi-mimo/README.md +32 -0
- package/packages/provider-xiaomi-mimo/package.json +24 -0
- package/packages/provider-xiaomi-mimo/src/activation.ts +57 -0
- package/packages/provider-xiaomi-mimo/src/index.ts +5 -0
- package/packages/provider-xiaomi-mimo/src/provider.ts +214 -0
- package/packages/ranking/README.md +67 -0
- package/packages/ranking/package.json +33 -0
- package/packages/ranking/preview/Column.svg +29 -0
- package/packages/ranking/preview/TierBoard.png +0 -0
- package/packages/ranking/preview/TierBoard.svg +36 -0
- package/packages/ranking/preview/TopThree.png +0 -0
- package/packages/ranking/src/activation.ts +38 -0
- package/packages/ranking/src/component.ts +271 -0
- package/packages/ranking/src/fragment.ts +206 -0
- package/packages/ranking/src/index.ts +26 -0
- package/packages/ranking/src/manifest.ts +807 -0
- package/packages/ranking/src/render.ts +698 -0
- package/packages/ranking/src/schedule.ts +895 -0
- package/packages/ranking/src/style.ts +272 -0
- package/packages/ranking/src/surface.ts +322 -0
- package/packages/ranking/src/tier.ts +176 -0
- package/packages/ranking/src/types.ts +277 -0
- package/packages/ranking-studio/README.md +3 -0
- package/packages/ranking-studio/package.json +14 -0
- package/packages/ranking-studio/src/activation.ts +7 -0
- package/packages/ranking-studio/src/index.ts +255 -0
- package/packages/raster/README.md +7 -0
- package/packages/raster/package.json +14 -0
- package/packages/raster/src/activation.ts +7 -0
- package/packages/raster/src/index.ts +7 -0
- package/packages/raster/src/manifest.ts +14 -0
- package/packages/raster/src/program.ts +128 -0
- package/packages/raster/src/schema.ts +53 -0
- package/packages/raster/src/types.ts +61 -0
- package/packages/render-hyperframes/README.md +58 -0
- package/packages/render-hyperframes/package.json +33 -0
- package/packages/render-hyperframes/src/activation.ts +18 -0
- package/packages/render-hyperframes/src/component.ts +37 -0
- package/packages/render-hyperframes/src/fragment.ts +73 -0
- package/packages/render-hyperframes/src/index.ts +6 -0
- package/packages/render-hyperframes/src/manifest.ts +100 -0
- package/packages/render-hyperframes/src/product.ts +29 -0
- package/packages/render-hyperframes/src/surface.ts +65 -0
- package/packages/resource-store-fs/README.md +13 -0
- package/packages/resource-store-fs/package.json +14 -0
- package/packages/resource-store-fs/src/index.ts +2 -0
- package/packages/resource-store-fs/src/store.ts +154 -0
- package/packages/resource-store-s3/README.md +15 -0
- package/packages/resource-store-s3/package.json +15 -0
- package/packages/resource-store-s3/src/client.ts +138 -0
- package/packages/resource-store-s3/src/index.ts +10 -0
- package/packages/resource-store-s3/src/store.ts +258 -0
- package/packages/run/README.md +23 -0
- package/packages/run/package.json +16 -0
- package/packages/run/src/candidate.ts +33 -0
- package/packages/run/src/facet.ts +59 -0
- package/packages/run/src/frontend-facet.ts +23 -0
- package/packages/run/src/frontend.ts +62 -0
- package/packages/run/src/graph.ts +65 -0
- package/packages/run/src/index.ts +33 -0
- package/packages/run/src/registry.ts +24 -0
- package/packages/run/src/resolve.ts +213 -0
- package/packages/run/src/types.ts +147 -0
- package/packages/run-markup/README.md +60 -0
- package/packages/run-markup/package.json +22 -0
- package/packages/run-markup/src/activation.ts +10 -0
- package/packages/run-markup/src/frontend.ts +16 -0
- package/packages/run-markup/src/index.ts +5 -0
- package/packages/run-markup/src/syntax.ts +304 -0
- package/packages/runtime/README.md +39 -0
- package/packages/runtime/package.json +15 -0
- package/packages/runtime/src/capacity.ts +51 -0
- package/packages/runtime/src/catalog.ts +30 -0
- package/packages/runtime/src/credentials.ts +124 -0
- package/packages/runtime/src/environment.ts +6 -0
- package/packages/runtime/src/execution.ts +125 -0
- package/packages/runtime/src/index.ts +24 -0
- package/packages/runtime/src/operations.ts +99 -0
- package/packages/runtime/src/scheduler.ts +281 -0
- package/packages/runtime/src/submission.ts +24 -0
- package/packages/runtime/src/types.ts +157 -0
- package/packages/runtime-host-node/README.md +25 -0
- package/packages/runtime-host-node/package.json +19 -0
- package/packages/runtime-host-node/src/index.ts +421 -0
- package/packages/runtime-host-node/src/packages.ts +158 -0
- package/packages/runtime-kit/README.md +42 -0
- package/packages/runtime-kit/package.json +16 -0
- package/packages/runtime-kit/src/index.ts +307 -0
- package/packages/runtime-kit/src/request-deadline.ts +17 -0
- package/packages/runtime-local/README.md +119 -0
- package/packages/runtime-local/package.json +33 -0
- package/packages/runtime-local/src/actions.ts +20 -0
- package/packages/runtime-local/src/config.ts +1229 -0
- package/packages/runtime-local/src/control.ts +120 -0
- package/packages/runtime-local/src/credentials.ts +61 -0
- package/packages/runtime-local/src/host.ts +174 -0
- package/packages/runtime-local/src/index.ts +36 -0
- package/packages/runtime-local/src/process-control.ts +59 -0
- package/packages/runtime-local/src/process-logs.ts +33 -0
- package/packages/runtime-local/src/programs.ts +441 -0
- package/packages/runtime-local/src/result-writer.ts +246 -0
- package/packages/runtime-local/src/runtime.ts +342 -0
- package/packages/runtime-local/src/types.ts +100 -0
- package/packages/runtime-local/src/worker-process.ts +343 -0
- package/packages/runtime-local/src/worker.ts +449 -0
- package/packages/screen-overlay/README.md +17 -0
- package/packages/screen-overlay/package.json +31 -0
- package/packages/screen-overlay/preview/Track.png +0 -0
- package/packages/screen-overlay/src/activation.ts +15 -0
- package/packages/screen-overlay/src/component.ts +20 -0
- package/packages/screen-overlay/src/fragment.ts +40 -0
- package/packages/screen-overlay/src/index.ts +7 -0
- package/packages/screen-overlay/src/manifest.ts +305 -0
- package/packages/screen-overlay/src/program.ts +321 -0
- package/packages/screen-overlay/src/surface.ts +90 -0
- package/packages/screen-overlay/src/types.ts +69 -0
- package/packages/screen-overlay-studio/README.md +3 -0
- package/packages/screen-overlay-studio/package.json +14 -0
- package/packages/screen-overlay-studio/src/activation.ts +7 -0
- package/packages/screen-overlay-studio/src/index.ts +80 -0
- package/packages/script/README.md +137 -0
- package/packages/script/package.json +22 -0
- package/packages/script/src/activation.ts +20 -0
- package/packages/script/src/edit.ts +174 -0
- package/packages/script/src/error.ts +13 -0
- package/packages/script/src/format.ts +83 -0
- package/packages/script/src/index.ts +20 -0
- package/packages/script/src/lexical.ts +133 -0
- package/packages/script/src/manifest.ts +95 -0
- package/packages/script/src/narrative.ts +232 -0
- package/packages/script/src/parser.ts +850 -0
- package/packages/script/src/surface.ts +132 -0
- package/packages/script/src/types.ts +125 -0
- package/packages/script-studio/package.json +13 -0
- package/packages/script-studio/src/activation.ts +8 -0
- package/packages/script-studio/src/index.ts +61 -0
- package/packages/seedance/README.md +19 -0
- package/packages/seedance/package.json +22 -0
- package/packages/seedance/src/activation.ts +38 -0
- package/packages/seedance/src/fragment.ts +46 -0
- package/packages/seedance/src/index.ts +329 -0
- package/packages/seedance/src/surface.ts +355 -0
- package/packages/seedance-kits/README.md +153 -0
- package/packages/seedance-kits/kits/broll-v1.svs +52 -0
- package/packages/seedance-kits/kits/call-v1.svs +55 -0
- package/packages/seedance-kits/kits/camera-reference-v1.svs +9 -0
- package/packages/seedance-kits/kits/motion-reference-v1.svs +9 -0
- package/packages/seedance-kits/kits/podcast-v1.svs +55 -0
- package/packages/seedance-kits/kits/speaker-v1.svs +136 -0
- package/packages/seedance-kits/kits/street-interview-v1.svs +49 -0
- package/packages/seedance-kits/package.json +24 -0
- package/packages/seedream/README.md +21 -0
- package/packages/seedream/package.json +21 -0
- package/packages/seedream/src/activation.ts +12 -0
- package/packages/seedream/src/index.ts +162 -0
- package/packages/seedream/src/surface.ts +84 -0
- package/packages/semantic-take-adjust/package.json +21 -0
- package/packages/semantic-take-adjust/src/activation.ts +22 -0
- package/packages/semantic-take-adjust/src/component.ts +31 -0
- package/packages/semantic-take-adjust/src/fragment.ts +24 -0
- package/packages/semantic-take-adjust/src/index.ts +12 -0
- package/packages/semantic-take-adjust/src/manifest.ts +57 -0
- package/packages/semantic-take-adjust/src/program.ts +49 -0
- package/packages/semantic-take-adjust/src/surface.ts +96 -0
- package/packages/semantic-take-adjust/src/types.ts +9 -0
- package/packages/semantic-track/README.md +21 -0
- package/packages/semantic-track/package.json +22 -0
- package/packages/semantic-track/src/activation.ts +8 -0
- package/packages/semantic-track/src/component.ts +24 -0
- package/packages/semantic-track/src/identity.ts +58 -0
- package/packages/semantic-track/src/index.ts +6 -0
- package/packages/semantic-track/src/location.ts +81 -0
- package/packages/semantic-track/src/manifest.ts +38 -0
- package/packages/semantic-track/src/projection.ts +71 -0
- package/packages/semantic-track/src/types.ts +26 -0
- package/packages/source/README.md +13 -0
- package/packages/source/package.json +13 -0
- package/packages/source/src/header.ts +80 -0
- package/packages/source/src/index.ts +17 -0
- package/packages/source/src/unit.ts +38 -0
- package/packages/spatial/README.md +77 -0
- package/packages/spatial/package.json +24 -0
- package/packages/spatial/src/activation.ts +43 -0
- package/packages/spatial/src/author.ts +59 -0
- package/packages/spatial/src/component.ts +45 -0
- package/packages/spatial/src/fragment.ts +36 -0
- package/packages/spatial/src/geometry.ts +238 -0
- package/packages/spatial/src/index.ts +37 -0
- package/packages/spatial/src/manifest.ts +341 -0
- package/packages/spatial/src/region-timeline.ts +69 -0
- package/packages/spatial/src/schema.ts +47 -0
- package/packages/spatial/src/surface.ts +319 -0
- package/packages/spatial/src/types.ts +101 -0
- package/packages/speech/README.md +16 -0
- package/packages/speech/package.json +19 -0
- package/packages/speech/src/activation.ts +7 -0
- package/packages/speech/src/component.ts +43 -0
- package/packages/speech/src/identity.ts +73 -0
- package/packages/speech/src/index.ts +6 -0
- package/packages/speech/src/manifest.ts +30 -0
- package/packages/speech/src/materialize.ts +103 -0
- package/packages/speech/src/schema.ts +42 -0
- package/packages/speech/src/types.ts +54 -0
- package/packages/speech-alignment/README.md +29 -0
- package/packages/speech-alignment/package.json +25 -0
- package/packages/speech-alignment/src/activation.ts +8 -0
- package/packages/speech-alignment/src/align.ts +235 -0
- package/packages/speech-alignment/src/component.ts +37 -0
- package/packages/speech-alignment/src/error.ts +9 -0
- package/packages/speech-alignment/src/index.ts +7 -0
- package/packages/speech-alignment/src/local.ts +64 -0
- package/packages/speech-alignment/src/locate.ts +473 -0
- package/packages/speech-alignment/src/manifest.ts +37 -0
- package/packages/speech-alignment/src/normalize.ts +79 -0
- package/packages/speech-alignment/src/types.ts +30 -0
- package/packages/speech-evidence/README.md +3 -0
- package/packages/speech-evidence/package.json +16 -0
- package/packages/speech-evidence/src/activation.ts +3 -0
- package/packages/speech-evidence/src/index.ts +102 -0
- package/packages/speech-track/README.md +51 -0
- package/packages/speech-track/package.json +28 -0
- package/packages/speech-track/preview/Track.png +0 -0
- package/packages/speech-track/src/activation.ts +19 -0
- package/packages/speech-track/src/component.ts +45 -0
- package/packages/speech-track/src/fragment.ts +74 -0
- package/packages/speech-track/src/index.ts +7 -0
- package/packages/speech-track/src/manifest.ts +73 -0
- package/packages/speech-track/src/program.ts +64 -0
- package/packages/speech-track/src/surface.ts +35 -0
- package/packages/speech-track/src/types.ts +6 -0
- package/packages/speech-track-studio/README.md +3 -0
- package/packages/speech-track-studio/package.json +14 -0
- package/packages/speech-track-studio/src/activation.ts +7 -0
- package/packages/speech-track-studio/src/index.ts +40 -0
- package/packages/store-sqlite/README.md +14 -0
- package/packages/store-sqlite/package.json +18 -0
- package/packages/store-sqlite/src/index.ts +2 -0
- package/packages/store-sqlite/src/store.ts +1101 -0
- package/packages/studio/README.md +125 -0
- package/packages/studio/index.html +10 -0
- package/packages/studio/package.json +50 -0
- package/packages/studio/src/build-library.ts +281 -0
- package/packages/studio/src/companion-assembly.ts +39 -0
- package/packages/studio/src/compile.ts +166 -0
- package/packages/studio/src/domain.ts +139 -0
- package/packages/studio/src/execute.ts +57 -0
- package/packages/studio/src/fallback-companions.ts +98 -0
- package/packages/studio/src/observe.ts +202 -0
- package/packages/studio/src/parameter-values.ts +81 -0
- package/packages/studio/src/parameters.ts +550 -0
- package/packages/studio/src/preview/render.ts +51 -0
- package/packages/studio/src/preview/runtime-shim.ts +184 -0
- package/packages/studio/src/programme.ts +276 -0
- package/packages/studio/src/run.ts +85 -0
- package/packages/studio/src/server.ts +725 -0
- package/packages/studio/src/session.ts +111 -0
- package/packages/studio/src/shared.ts +315 -0
- package/packages/studio/src/snapshot.ts +454 -0
- package/packages/studio/src/source-transaction.ts +57 -0
- package/packages/studio/src/storyboard.ts +133 -0
- package/packages/studio/src/studio-preflight.ts +198 -0
- package/packages/studio/src/studio-registry.ts +406 -0
- package/packages/studio/src/studio-trace.ts +136 -0
- package/packages/studio/src/style.css +1525 -0
- package/packages/studio/src/surface-preview.ts +35 -0
- package/packages/studio/src/temporal-graph.ts +227 -0
- package/packages/studio/src/ui/code.ts +450 -0
- package/packages/studio/src/ui/icons.ts +51 -0
- package/packages/studio/src/ui/library.ts +378 -0
- package/packages/studio/src/ui/main.ts +1001 -0
- package/packages/studio/src/ui/markers.ts +152 -0
- package/packages/studio/src/ui/material-preview.ts +176 -0
- package/packages/studio/src/ui/overlay.ts +144 -0
- package/packages/studio/src/ui/resize.ts +74 -0
- package/packages/studio/src/ui/selection.ts +178 -0
- package/packages/studio/src/ui/stage.ts +231 -0
- package/packages/studio/src/ui/syntax.ts +195 -0
- package/packages/studio/src/ui/timeline.ts +1041 -0
- package/packages/studio/src/ui/writeback.ts +10 -0
- package/packages/studio/src/ui/zoom.ts +129 -0
- package/packages/studio/start.ts +143 -0
- package/packages/studio-adapter/README.md +186 -0
- package/packages/studio-adapter/package.json +14 -0
- package/packages/studio-adapter/src/index.ts +850 -0
- package/packages/svs/README.md +37 -0
- package/packages/svs/package.json +21 -0
- package/packages/svs/src/activation.ts +11 -0
- package/packages/svs/src/format.ts +16 -0
- package/packages/svs/src/frontend.ts +33 -0
- package/packages/svs/src/index.ts +5 -0
- package/packages/svs/src/manifest.ts +17 -0
- package/packages/svs/src/parser.ts +279 -0
- package/packages/svs/src/types.ts +26 -0
- package/packages/temporal/README.md +31 -0
- package/packages/temporal/package.json +20 -0
- package/packages/temporal/src/activation.ts +9 -0
- package/packages/temporal/src/component.ts +68 -0
- package/packages/temporal/src/index.ts +110 -0
- package/packages/temporal/src/location.ts +67 -0
- package/packages/temporal/src/projection.ts +280 -0
- package/packages/temporal/src/rational.ts +80 -0
- package/packages/temporal/src/sample.ts +43 -0
- package/packages/temporal/src/schedule.ts +52 -0
- package/packages/temporal/src/types.ts +124 -0
- package/packages/temporal-markup/README.md +75 -0
- package/packages/temporal-markup/package.json +18 -0
- package/packages/temporal-markup/src/index.ts +537 -0
- package/packages/temporal-markup/src/space.ts +59 -0
- package/packages/text/README.md +59 -0
- package/packages/text/package.json +21 -0
- package/packages/text/src/activation.ts +33 -0
- package/packages/text/src/component.ts +72 -0
- package/packages/text/src/fragment.ts +57 -0
- package/packages/text/src/frontend.ts +39 -0
- package/packages/text/src/index.ts +27 -0
- package/packages/text/src/manifest.ts +170 -0
- package/packages/text/src/program.ts +418 -0
- package/packages/text/src/surface.ts +212 -0
- package/packages/text/src/svs.ts +189 -0
- package/packages/text/src/types.ts +82 -0
- package/packages/transport-aws-lambda/README.md +20 -0
- package/packages/transport-aws-lambda/package.json +14 -0
- package/packages/transport-aws-lambda/src/index.ts +131 -0
- package/packages/typography-track/README.md +50 -0
- package/packages/typography-track/package.json +34 -0
- package/packages/typography-track/preview/Mask.png +0 -0
- package/packages/typography-track/preview/Track.png +0 -0
- package/packages/typography-track/src/activation.ts +36 -0
- package/packages/typography-track/src/component.ts +93 -0
- package/packages/typography-track/src/fragment.ts +30 -0
- package/packages/typography-track/src/index.ts +11 -0
- package/packages/typography-track/src/manifest.ts +556 -0
- package/packages/typography-track/src/program.ts +622 -0
- package/packages/typography-track/src/surface.ts +842 -0
- package/packages/typography-track/src/types.ts +109 -0
- package/packages/typography-track-studio/README.md +3 -0
- package/packages/typography-track-studio/package.json +14 -0
- package/packages/typography-track-studio/src/activation.ts +7 -0
- package/packages/typography-track-studio/src/index.ts +116 -0
- package/packages/validation/README.md +11 -0
- package/packages/validation/package.json +15 -0
- package/packages/validation/src/index.ts +100 -0
- package/packages/video-cli/README.md +181 -0
- package/packages/video-cli/package.json +37 -0
- package/packages/video-cli/src/capture.ts +174 -0
- package/packages/video-cli/src/cli.ts +109 -0
- package/packages/video-cli/src/compiler.ts +32 -0
- package/packages/video-cli/src/creation.ts +449 -0
- package/packages/video-cli/src/distribution.ts +88 -0
- package/packages/video-cli/src/index.ts +50 -0
- package/packages/video-cli/src/media.ts +701 -0
- package/packages/video-cli/src/package-selection.ts +34 -0
- package/packages/video-cli/src/process.ts +71 -0
- package/packages/video-cli/src/studio-distribution.ts +19 -0
- package/packages/video-cli/src/transcript.ts +71 -0
- package/packages/video-cli/src/vocabulary.ts +386 -0
- package/packages/visual-ir/README.md +36 -0
- package/packages/visual-ir/package.json +16 -0
- package/packages/visual-ir/src/activation.ts +3 -0
- package/packages/visual-ir/src/index.ts +7 -0
- package/packages/visual-ir/src/style.ts +222 -0
- package/packages/volcengine-matting/README.md +89 -0
- package/packages/volcengine-matting/package.json +16 -0
- package/packages/volcengine-matting/src/activation.ts +13 -0
- package/packages/volcengine-matting/src/index.ts +45 -0
- package/packages/volcengine-matting/src/surface.ts +48 -0
- package/packages/whisperx/README.md +34 -0
- package/packages/whisperx/package.json +28 -0
- package/packages/whisperx/src/activation.ts +18 -0
- package/packages/whisperx/src/component.ts +64 -0
- package/packages/whisperx/src/evidence.ts +69 -0
- package/packages/whisperx/src/fragment.ts +76 -0
- package/packages/whisperx/src/index.ts +14 -0
- package/packages/whisperx/src/manifest.ts +92 -0
- package/packages/whisperx/src/surface.ts +90 -0
- package/packages/whisperx/src/transcript.ts +97 -0
- package/packages/whisperx/src/types.ts +9 -0
- package/packages/workspace/README.md +4 -0
- package/packages/workspace/package.json +14 -0
- package/packages/workspace/src/index.ts +38 -0
- package/packages/workspace-fs-node/README.md +13 -0
- package/packages/workspace-fs-node/package.json +15 -0
- package/packages/workspace-fs-node/src/index.ts +6 -0
- package/packages/workspace-fs-node/src/workspace.ts +226 -0
- package/packages/yt-dlp/README.md +31 -0
- package/packages/yt-dlp/package.json +10 -0
- package/packages/yt-dlp/src/download.ts +104 -0
- package/packages/yt-dlp/src/index.ts +1 -0
- package/services/image-opencv/README.md +33 -0
- package/services/image-opencv/package.json +14 -0
- package/services/image-opencv/pyproject.toml +13 -0
- package/services/image-opencv/uv.lock +56 -0
- package/services/whisperx/README.md +82 -0
- package/services/whisperx/package.json +15 -0
- package/services/whisperx/pyproject.toml +26 -0
- package/services/whisperx/src/hypit_whisperx_service/__init__.py +6 -0
- package/services/whisperx/src/hypit_whisperx_service/__main__.py +29 -0
- package/services/whisperx/src/hypit_whisperx_service/application.py +88 -0
- package/services/whisperx/src/hypit_whisperx_service/audio.py +66 -0
- package/services/whisperx/src/hypit_whisperx_service/check.py +35 -0
- package/services/whisperx/src/hypit_whisperx_service/config.py +81 -0
- package/services/whisperx/src/hypit_whisperx_service/engine.py +173 -0
- package/services/whisperx/src/hypit_whisperx_service/prepare.py +19 -0
- package/services/whisperx/src/hypit_whisperx_service/resources.py +41 -0
- package/services/whisperx/src/hypit_whisperx_service/server.py +101 -0
- package/services/whisperx/uv.lock +3381 -0
- package/services/yt-dlp/README.md +19 -0
- package/services/yt-dlp/package.json +14 -0
- package/services/yt-dlp/pyproject.toml +13 -0
- package/services/yt-dlp/uv.lock +23 -0
- package/index.js +0 -1
|
@@ -0,0 +1,441 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import { mkdir, open, readFile, rename, rm, stat, writeFile } from "node:fs/promises";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { setTimeout as sleep } from "node:timers/promises";
|
|
5
|
+
|
|
6
|
+
import type { CapabilityRef } from "@hypit/protocol";
|
|
7
|
+
import type { ManagedProgram, ManagedProgramCommand, ManagedProgramState } from "@hypit/runtime-kit";
|
|
8
|
+
|
|
9
|
+
import { declaredManagedPrograms } from "./config.js";
|
|
10
|
+
import type { LoadRuntimeConfigOptions } from "./config.js";
|
|
11
|
+
import { processAlive, stopProcessTree } from "./process-control.js";
|
|
12
|
+
import { processErrorLogPath } from "./process-logs.js";
|
|
13
|
+
|
|
14
|
+
export type ManagedProgramAction =
|
|
15
|
+
| "already-running"
|
|
16
|
+
| "installed"
|
|
17
|
+
| "started"
|
|
18
|
+
| "stopped"
|
|
19
|
+
| "not-ours"
|
|
20
|
+
| "nothing-to-stop"
|
|
21
|
+
| "unchanged";
|
|
22
|
+
|
|
23
|
+
export type ManagedProgramReport = {
|
|
24
|
+
readonly id: string;
|
|
25
|
+
/** The configured Endpoint that declared this external program. */
|
|
26
|
+
readonly endpoint: string;
|
|
27
|
+
/** What this call did. Absent when it was only asked to look. */
|
|
28
|
+
readonly action?: ManagedProgramAction;
|
|
29
|
+
readonly state: ManagedProgramState;
|
|
30
|
+
/** Why the action fell short. Never a copy of what `state` already says. */
|
|
31
|
+
readonly detail?: string;
|
|
32
|
+
readonly logPath?: string;
|
|
33
|
+
readonly pid?: number;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
export type ManagedProgramProgress = {
|
|
37
|
+
readonly id: string;
|
|
38
|
+
readonly phase: "checking" | "installing" | "starting" | "waiting" | "ready";
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
export type ManagedProgramOptions = LoadRuntimeConfigOptions & {
|
|
42
|
+
/** How long to wait for a started program to answer its probe. Default 300000. */
|
|
43
|
+
readonly maxWaitMs?: number;
|
|
44
|
+
/** Human-facing progress only; never changes program selection or lifecycle. */
|
|
45
|
+
readonly onProgress?: (event: ManagedProgramProgress) => void;
|
|
46
|
+
/** When present, operate only programs backing at least one demanded capability. */
|
|
47
|
+
readonly capabilities?: readonly CapabilityRef[];
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
function independentPrograms(programs: readonly { instance: string; program: ManagedProgram }[]) {
|
|
51
|
+
const owners = new Map<string, string>();
|
|
52
|
+
for (const item of programs) {
|
|
53
|
+
const found = owners.get(item.program.id);
|
|
54
|
+
if (found !== undefined) {
|
|
55
|
+
throw new Error(
|
|
56
|
+
`Endpoints ${found} and ${item.instance} declare the same Managed Program ${item.program.id}; `
|
|
57
|
+
+ "each Endpoint must declare its own lifecycle identity",
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
owners.set(item.program.id, item.instance);
|
|
61
|
+
}
|
|
62
|
+
return programs;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function directory(root: string, program: ManagedProgram): string {
|
|
66
|
+
return program.stateRoot ?? join(root, "programs", program.id);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
const LOG_ROTATE_BYTES = 10 * 1024 * 1024;
|
|
70
|
+
|
|
71
|
+
function nodeError(error: unknown, code: string): boolean {
|
|
72
|
+
return error instanceof Error && "code" in error && error.code === code;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
async function rotateLog(path: string): Promise<void> {
|
|
76
|
+
let size = 0;
|
|
77
|
+
try {
|
|
78
|
+
size = (await stat(path)).size;
|
|
79
|
+
} catch (error) {
|
|
80
|
+
if (!nodeError(error, "ENOENT")) throw error;
|
|
81
|
+
}
|
|
82
|
+
if (size <= LOG_ROTATE_BYTES) return;
|
|
83
|
+
const previous = `${path}.previous`;
|
|
84
|
+
await rm(previous, { force: true });
|
|
85
|
+
await rename(path, previous);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
async function readPid(root: string, program: ManagedProgram): Promise<number | undefined> {
|
|
89
|
+
try {
|
|
90
|
+
const text = await readFile(join(directory(root, program), "process.pid"), "utf8");
|
|
91
|
+
const pid = Number.parseInt(text.trim(), 10);
|
|
92
|
+
if (!Number.isSafeInteger(pid) || pid < 1) throw new Error(`External program ${program.id} pid file is invalid`);
|
|
93
|
+
return pid;
|
|
94
|
+
} catch (error) {
|
|
95
|
+
if (nodeError(error, "ENOENT")) return undefined;
|
|
96
|
+
throw error;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
function run(root: string, command: ManagedProgramCommand): Promise<{ ok: boolean; detail: string }> {
|
|
101
|
+
return new Promise((resolve) => {
|
|
102
|
+
const child = spawn(command.command, [...command.args], {
|
|
103
|
+
cwd: command.cwd ?? root,
|
|
104
|
+
env: { ...process.env, ...command.env },
|
|
105
|
+
shell: false,
|
|
106
|
+
windowsHide: true,
|
|
107
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
108
|
+
});
|
|
109
|
+
let output = "";
|
|
110
|
+
child.stdout.on("data", (chunk: Buffer) => { output += chunk.toString(); });
|
|
111
|
+
child.stderr.on("data", (chunk: Buffer) => { output += chunk.toString(); });
|
|
112
|
+
child.on("error", (error) => resolve({ ok: false, detail: error.message }));
|
|
113
|
+
child.on("close", (code) => resolve({
|
|
114
|
+
ok: code === 0,
|
|
115
|
+
detail: code === 0 ? "" : (output.trim().split("\n").at(-1) ?? `exited ${code}`),
|
|
116
|
+
}));
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Poll until the program answers as itself. `down` is expected while it loads
|
|
122
|
+
* weights; `mismatch` is not, and stops the wait — a program that is answering
|
|
123
|
+
* with another identity will not become the right one by waiting.
|
|
124
|
+
*/
|
|
125
|
+
/** POSIX: its own session, and stdio already pointed at the log. */
|
|
126
|
+
async function startDetached(start: ManagedProgramCommand, root: string, logFd: number): Promise<number | undefined> {
|
|
127
|
+
const child = spawn(start.command, [...start.args], {
|
|
128
|
+
cwd: start.cwd ?? root,
|
|
129
|
+
env: { ...process.env, ...start.env },
|
|
130
|
+
shell: false,
|
|
131
|
+
detached: true,
|
|
132
|
+
windowsHide: true,
|
|
133
|
+
stdio: ["ignore", logFd, logFd],
|
|
134
|
+
});
|
|
135
|
+
child.unref();
|
|
136
|
+
return child.pid;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/** A PowerShell single-quoted literal, which escapes by doubling the quote and nothing else. */
|
|
140
|
+
function powershellLiteral(value: string): string {
|
|
141
|
+
return `'${value.replaceAll("'", "''")}'`;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* One command line, quoted the way the C runtime parses it back into `argv`.
|
|
146
|
+
*
|
|
147
|
+
* `Start-Process -ArgumentList` given an array joins its elements with a space and quotes none of
|
|
148
|
+
* them, so an argument holding a space arrives as several: `node -e '<script>' <path>` reaches node
|
|
149
|
+
* as `-e` followed by the first word of the script, and node exits on the syntax error. Given one
|
|
150
|
+
* string it passes that string through as the command line, which is what this builds.
|
|
151
|
+
*/
|
|
152
|
+
function windowsCommandLine(args: readonly string[]): string {
|
|
153
|
+
return args.map((value) => {
|
|
154
|
+
if (value !== "" && !/[\s"]/u.test(value)) return value;
|
|
155
|
+
// A quote is escaped by the backslashes before it, so those double; a trailing run doubles too,
|
|
156
|
+
// because the closing quote would otherwise escape itself against them.
|
|
157
|
+
const escaped = value.replace(/(\\*)"/gu, '$1$1\\"').replace(/(\\*)$/u, "$1$1");
|
|
158
|
+
return `"${escaped}"`;
|
|
159
|
+
}).join(" ");
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* Windows: a console of its own, hidden, so the launching console's destruction does not take it.
|
|
164
|
+
*
|
|
165
|
+
* The script travels as one `-EncodedCommand` blob, so no quoting of ours crosses a shell boundary.
|
|
166
|
+
* Feeding it on stdin instead looks equivalent and is not: `-Command -` parses what it reads a
|
|
167
|
+
* statement at a time, so an argument holding a newline — `node -e` with a real script in it — ends
|
|
168
|
+
* the statement early and PowerShell exits having run nothing, with no process id and nothing on
|
|
169
|
+
* stderr to say why. Base64 has no line structure to trip over.
|
|
170
|
+
*
|
|
171
|
+
* `Start-Process` refuses to send both streams to one file, so the error stream gets its own beside
|
|
172
|
+
* the log; `-PassThru` reports the new process, which is the pid everything after this waits on and
|
|
173
|
+
* stores.
|
|
174
|
+
*/
|
|
175
|
+
export async function startWithOwnConsole(
|
|
176
|
+
start: ManagedProgramCommand,
|
|
177
|
+
root: string,
|
|
178
|
+
logPath: string,
|
|
179
|
+
): Promise<{ readonly pid?: number; readonly detail?: string }> {
|
|
180
|
+
const errorPath = processErrorLogPath(logPath);
|
|
181
|
+
const environment = Object.entries(start.env ?? {})
|
|
182
|
+
.map(([name, value]) => `$env:${name} = ${powershellLiteral(String(value))}`).join("\n");
|
|
183
|
+
const argumentList = start.args.length === 0
|
|
184
|
+
? ""
|
|
185
|
+
: ` -ArgumentList ${powershellLiteral(windowsCommandLine(start.args))}`;
|
|
186
|
+
const script = [
|
|
187
|
+
"$ErrorActionPreference = 'Stop'",
|
|
188
|
+
environment,
|
|
189
|
+
`$p = Start-Process -FilePath ${powershellLiteral(start.command)}${argumentList}`
|
|
190
|
+
+ ` -WorkingDirectory ${powershellLiteral(start.cwd ?? root)}`
|
|
191
|
+
+ ` -RedirectStandardOutput ${powershellLiteral(logPath)}`
|
|
192
|
+
+ ` -RedirectStandardError ${powershellLiteral(errorPath)}`
|
|
193
|
+
+ " -WindowStyle Hidden -PassThru",
|
|
194
|
+
"[Console]::Out.Write($p.Id)",
|
|
195
|
+
].filter((line) => line.length > 0).join("\n");
|
|
196
|
+
|
|
197
|
+
const shell = await new Promise<{ readonly out: string; readonly err: string }>((settle) => {
|
|
198
|
+
const encoded = Buffer.from(script, "utf16le").toString("base64");
|
|
199
|
+
const child = spawn("powershell.exe", ["-NoProfile", "-NonInteractive", "-EncodedCommand", encoded], {
|
|
200
|
+
windowsHide: true,
|
|
201
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
202
|
+
});
|
|
203
|
+
let out = "";
|
|
204
|
+
let err = "";
|
|
205
|
+
const done = (): void => {
|
|
206
|
+
settle({ out: out.trim(), err: err.trim() });
|
|
207
|
+
child.stdout.destroy();
|
|
208
|
+
child.stderr.destroy();
|
|
209
|
+
};
|
|
210
|
+
child.stdout.on("data", (chunk: Buffer) => { out += chunk.toString("utf8"); });
|
|
211
|
+
child.stderr.on("data", (chunk: Buffer) => { err += chunk.toString("utf8"); });
|
|
212
|
+
child.on("error", (cause: Error) => { err = cause.message; done(); });
|
|
213
|
+
// `close` waits for the streams as well as the exit, and the process this shell launches can be
|
|
214
|
+
// holding an inherited copy of them: it outlives the shell by design, so those pipes stay open
|
|
215
|
+
// and `close` never arrives. The shell writes the id before it exits, so `exit` plus a moment
|
|
216
|
+
// for the pipe to drain is what settles this, and `close` still settles it first when it comes.
|
|
217
|
+
child.on("exit", () => { setTimeout(done, 250).unref(); });
|
|
218
|
+
child.on("close", done);
|
|
219
|
+
});
|
|
220
|
+
const pid = Number(shell.out);
|
|
221
|
+
if (Number.isSafeInteger(pid) && pid > 0) return { pid };
|
|
222
|
+
// `Start-Process` writes its refusal to the error stream and prints no id. Carrying it out is what
|
|
223
|
+
// separates a launch that was refused from one whose process died immediately after starting.
|
|
224
|
+
return { detail: shell.err === "" ? "Start-Process reported no process id" : shell.err.replaceAll(/\s+/gu, " ") };
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
async function waitForReady(program: ManagedProgram, pid: number, maxWaitMs: number): Promise<ManagedProgramState> {
|
|
228
|
+
const deadline = Date.now() + maxWaitMs;
|
|
229
|
+
let state = await program.probe();
|
|
230
|
+
while (state.state === "down" && processAlive(pid) && Date.now() < deadline) {
|
|
231
|
+
await sleep(1000);
|
|
232
|
+
state = await program.probe();
|
|
233
|
+
}
|
|
234
|
+
return state;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
async function bringUp(
|
|
238
|
+
root: string,
|
|
239
|
+
program: ManagedProgram,
|
|
240
|
+
endpoint: string,
|
|
241
|
+
maxWaitMs: number,
|
|
242
|
+
onProgress?: (event: ManagedProgramProgress) => void,
|
|
243
|
+
): Promise<ManagedProgramReport> {
|
|
244
|
+
const base = { id: program.id, endpoint };
|
|
245
|
+
onProgress?.({ id: program.id, phase: "checking" });
|
|
246
|
+
const initial = await program.probe();
|
|
247
|
+
if (initial.state === "ready") {
|
|
248
|
+
onProgress?.({ id: program.id, phase: "ready" });
|
|
249
|
+
return { ...base, action: "already-running", state: initial };
|
|
250
|
+
}
|
|
251
|
+
if (initial.state === "mismatch") {
|
|
252
|
+
// Never start a second copy beside a program that is already answering.
|
|
253
|
+
return { ...base, action: "unchanged", state: initial };
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
let installed = false;
|
|
257
|
+
if (program.installation !== undefined) {
|
|
258
|
+
const installation = await program.installation.probe();
|
|
259
|
+
if (installation.state !== "ready") {
|
|
260
|
+
onProgress?.({ id: program.id, phase: "installing" });
|
|
261
|
+
await mkdir(directory(root, program), { recursive: true });
|
|
262
|
+
for (const command of program.installation.commands) {
|
|
263
|
+
const result = await run(root, command);
|
|
264
|
+
if (!result.ok) {
|
|
265
|
+
return { ...base, action: "unchanged", state: initial, detail: `${command.command} failed: ${result.detail}` };
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
const after = await program.installation.probe();
|
|
269
|
+
if (after.state !== "ready") {
|
|
270
|
+
return { ...base, action: "unchanged", state: initial, detail: `installation is ${after.state}: ${after.detail}` };
|
|
271
|
+
}
|
|
272
|
+
installed = true;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
if (program.start === undefined) {
|
|
276
|
+
// Nothing to keep running: installation was the whole job.
|
|
277
|
+
const state = await program.probe();
|
|
278
|
+
if (state.state === "ready") onProgress?.({ id: program.id, phase: "ready" });
|
|
279
|
+
return { ...base, action: state.state === "ready" && installed ? "installed" : "unchanged", state };
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
onProgress?.({ id: program.id, phase: "starting" });
|
|
283
|
+
await mkdir(directory(root, program), { recursive: true });
|
|
284
|
+
const logPath = join(directory(root, program), "program.log");
|
|
285
|
+
await rotateLog(logPath);
|
|
286
|
+
const log = await open(logPath, "a");
|
|
287
|
+
try {
|
|
288
|
+
// Outliving this process is the point, and what grants it differs by platform.
|
|
289
|
+
//
|
|
290
|
+
// POSIX wants its own session, which `detached` gives.
|
|
291
|
+
//
|
|
292
|
+
// Windows ties a process's lifetime to the console it is attached to. A child spawned from here
|
|
293
|
+
// inherits this one, so when the launching `node` exits its console is destroyed and every
|
|
294
|
+
// process on it is sent CTRL_CLOSE_EVENT and terminated. `unref` does not change that — it
|
|
295
|
+
// removes an event-loop reference and nothing else — so the service reported ready, answered one
|
|
296
|
+
// health probe, and was gone by the next command, with no error anywhere to read.
|
|
297
|
+
//
|
|
298
|
+
// What it needs is a console of its own, hidden. `detached` on Windows means DETACHED_PROCESS,
|
|
299
|
+
// which is no console at all, and then the first console grandchild — `uv` re-execing Python,
|
|
300
|
+
// Python opening workers — allocates a fresh visible one. `Start-Process -WindowStyle Hidden`
|
|
301
|
+
// creates a new console and hides it, which is the combination neither spawn option reaches.
|
|
302
|
+
const started = process.platform === "win32"
|
|
303
|
+
? await startWithOwnConsole(program.start, root, logPath)
|
|
304
|
+
: { pid: await startDetached(program.start, root, log.fd) };
|
|
305
|
+
if (started.pid === undefined) {
|
|
306
|
+
const refusal = "detail" in started && started.detail !== undefined ? `: ${started.detail}` : "";
|
|
307
|
+
return {
|
|
308
|
+
...base,
|
|
309
|
+
action: "unchanged",
|
|
310
|
+
state: initial,
|
|
311
|
+
detail: `${program.start.command} did not start${refusal}`,
|
|
312
|
+
logPath,
|
|
313
|
+
};
|
|
314
|
+
}
|
|
315
|
+
const child = { pid: started.pid };
|
|
316
|
+
onProgress?.({ id: program.id, phase: "waiting" });
|
|
317
|
+
const state = await waitForReady(program, child.pid, maxWaitMs);
|
|
318
|
+
if (state.state === "ready") onProgress?.({ id: program.id, phase: "ready" });
|
|
319
|
+
const alive = processAlive(child.pid);
|
|
320
|
+
if (alive) await writeFile(join(directory(root, program), "process.pid"), `${child.pid}\n`);
|
|
321
|
+
return {
|
|
322
|
+
...base,
|
|
323
|
+
action: state.state === "ready" ? (alive ? "started" : "already-running") : "unchanged",
|
|
324
|
+
state,
|
|
325
|
+
...(alive ? { pid: child.pid } : {}),
|
|
326
|
+
logPath,
|
|
327
|
+
...(state.state === "ready" ? {} : {
|
|
328
|
+
detail: alive ? `see ${logPath}` : `process exited; see ${logPath}`,
|
|
329
|
+
}),
|
|
330
|
+
};
|
|
331
|
+
} finally {
|
|
332
|
+
await log?.close();
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
/** Install when needed and start every external program the Runtime Profile implies. */
|
|
337
|
+
export async function bringManagedProgramsUp(
|
|
338
|
+
path: string,
|
|
339
|
+
options: ManagedProgramOptions = {},
|
|
340
|
+
): Promise<{ readonly dataRoot: string; readonly programs: readonly ManagedProgramReport[] }> {
|
|
341
|
+
const { dataRoot, programs } = await declaredManagedPrograms(path, options);
|
|
342
|
+
// A fresh Runtime has no data directory yet. External commands may use it as
|
|
343
|
+
// their working directory, so create it before the first install/start.
|
|
344
|
+
await mkdir(dataRoot, { recursive: true });
|
|
345
|
+
const reports = await Promise.all(independentPrograms(programs).map(async ({ instance, program }) =>
|
|
346
|
+
await bringUp(dataRoot, program, instance, options.maxWaitMs ?? 300_000, options.onProgress)));
|
|
347
|
+
return { dataRoot, programs: reports };
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
/** Stop programs whose machine-level process records say Hypit started them. */
|
|
351
|
+
export async function takeManagedProgramsDown(
|
|
352
|
+
path: string,
|
|
353
|
+
options: ManagedProgramOptions = {},
|
|
354
|
+
): Promise<{ readonly dataRoot: string; readonly programs: readonly ManagedProgramReport[] }> {
|
|
355
|
+
const { dataRoot, programs } = await declaredManagedPrograms(path, options);
|
|
356
|
+
const reports = await Promise.all(independentPrograms(programs).map(async ({ instance, program }): Promise<ManagedProgramReport> => {
|
|
357
|
+
const base = { id: program.id, endpoint: instance };
|
|
358
|
+
const pid = await readPid(dataRoot, program);
|
|
359
|
+
if (pid === undefined || !processAlive(pid)) {
|
|
360
|
+
if (pid !== undefined) await rm(join(directory(dataRoot, program), "process.pid"), { force: true });
|
|
361
|
+
const state = await program.probe();
|
|
362
|
+
return state.state === "down"
|
|
363
|
+
? { ...base, action: "nothing-to-stop", state }
|
|
364
|
+
// Someone else's process, or one started by hand. Killing it is not this
|
|
365
|
+
// command's business; saying so is.
|
|
366
|
+
: { ...base, action: "not-ours", state, detail: `${program.id} is running without a Hypit process record` };
|
|
367
|
+
}
|
|
368
|
+
const term = await stopProcessTree(pid);
|
|
369
|
+
if (term === "denied") {
|
|
370
|
+
return {
|
|
371
|
+
...base,
|
|
372
|
+
action: "unchanged",
|
|
373
|
+
state: await program.probe(),
|
|
374
|
+
pid,
|
|
375
|
+
detail: `process ${pid} is running but this environment cannot stop it`,
|
|
376
|
+
};
|
|
377
|
+
}
|
|
378
|
+
if (term === "gone") {
|
|
379
|
+
await rm(join(directory(dataRoot, program), "process.pid"), { force: true });
|
|
380
|
+
const state = await program.probe();
|
|
381
|
+
return state.state === "down"
|
|
382
|
+
? { ...base, action: "nothing-to-stop", state }
|
|
383
|
+
: { ...base, action: "not-ours", state, detail: `${program.id} is now served by another process` };
|
|
384
|
+
}
|
|
385
|
+
const deadline = Date.now() + 15_000;
|
|
386
|
+
while (processAlive(pid) && Date.now() < deadline) await sleep(200);
|
|
387
|
+
if (processAlive(pid)) {
|
|
388
|
+
if (await stopProcessTree(pid, true) === "denied") {
|
|
389
|
+
return {
|
|
390
|
+
...base,
|
|
391
|
+
action: "unchanged",
|
|
392
|
+
state: await program.probe(),
|
|
393
|
+
pid,
|
|
394
|
+
detail: `process ${pid} ignored graceful termination and cannot be force-stopped`,
|
|
395
|
+
};
|
|
396
|
+
}
|
|
397
|
+
const forceDeadline = Date.now() + 2_000;
|
|
398
|
+
while (processAlive(pid) && Date.now() < forceDeadline) await sleep(50);
|
|
399
|
+
if (processAlive(pid)) {
|
|
400
|
+
return {
|
|
401
|
+
...base,
|
|
402
|
+
action: "unchanged",
|
|
403
|
+
state: await program.probe(),
|
|
404
|
+
pid,
|
|
405
|
+
detail: `process ${pid} remained alive after forced termination`,
|
|
406
|
+
};
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
await rm(join(directory(dataRoot, program), "process.pid"), { force: true });
|
|
410
|
+
return { ...base, action: "stopped", state: await program.probe(), pid };
|
|
411
|
+
}));
|
|
412
|
+
return { dataRoot, programs: reports };
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
/** Probe every external program without changing anything. */
|
|
416
|
+
export async function reportManagedPrograms(
|
|
417
|
+
path: string,
|
|
418
|
+
options: ManagedProgramOptions = {},
|
|
419
|
+
): Promise<{ readonly dataRoot: string; readonly programs: readonly ManagedProgramReport[] }> {
|
|
420
|
+
const { dataRoot, programs } = await declaredManagedPrograms(path, options);
|
|
421
|
+
const reports = await Promise.all(independentPrograms(programs).map(async ({ instance, program }): Promise<ManagedProgramReport> => {
|
|
422
|
+
const state = await program.probe();
|
|
423
|
+
const pid = await readPid(dataRoot, program);
|
|
424
|
+
const logPath = join(directory(dataRoot, program), "program.log");
|
|
425
|
+
let hasLog = false;
|
|
426
|
+
try {
|
|
427
|
+
await stat(logPath);
|
|
428
|
+
hasLog = true;
|
|
429
|
+
} catch (error) {
|
|
430
|
+
if (!nodeError(error, "ENOENT")) throw error;
|
|
431
|
+
}
|
|
432
|
+
return {
|
|
433
|
+
id: program.id,
|
|
434
|
+
endpoint: instance,
|
|
435
|
+
state,
|
|
436
|
+
...(pid !== undefined && processAlive(pid) ? { pid } : {}),
|
|
437
|
+
...(hasLog ? { logPath } : {}),
|
|
438
|
+
};
|
|
439
|
+
}));
|
|
440
|
+
return { dataRoot, programs: reports };
|
|
441
|
+
}
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { BuildMachine } from "@hypit/core";
|
|
3
|
+
import { isStreamingResourceStore } from "@hypit/runtime";
|
|
4
|
+
import type {
|
|
5
|
+
BuildExecutionSnapshot,
|
|
6
|
+
BuildSnapshot,
|
|
7
|
+
OperationSnapshot,
|
|
8
|
+
} from "@hypit/runtime";
|
|
9
|
+
import type { CommandResult } from "@hypit/protocol";
|
|
10
|
+
import type { BuildResultWriter } from "@hypit/build-result";
|
|
11
|
+
|
|
12
|
+
import type {
|
|
13
|
+
CreateLocalResultWriterOptions,
|
|
14
|
+
LocalResultWriter,
|
|
15
|
+
} from "./types.js";
|
|
16
|
+
|
|
17
|
+
function assert(condition: unknown, message: string): asserts condition {
|
|
18
|
+
if (!condition) throw new Error(message);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
function operationEvent(operation: OperationSnapshot): CommandResult | undefined {
|
|
22
|
+
if (operation.status === "pending") return undefined;
|
|
23
|
+
if (operation.status === "completed") {
|
|
24
|
+
assert(operation.completion !== undefined, `Operation ${operation.id} has no completion`);
|
|
25
|
+
return {
|
|
26
|
+
kind: "need-fulfilled",
|
|
27
|
+
command: operation.command,
|
|
28
|
+
value: operation.completion.value,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
if (operation.status === "failed") {
|
|
32
|
+
assert(operation.failure !== undefined, `Operation ${operation.id} has no failure`);
|
|
33
|
+
return {
|
|
34
|
+
kind: "command-failed",
|
|
35
|
+
command: operation.command,
|
|
36
|
+
code: operation.failure.code,
|
|
37
|
+
message: operation.failure.message,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
kind: "command-failed",
|
|
42
|
+
command: operation.command,
|
|
43
|
+
code: "CANCELLED",
|
|
44
|
+
message: `Operation ${operation.id} was cancelled by the Runtime capacity controller`,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Result writing only consumes already accepted execution facts and transient bytes. It cannot load
|
|
50
|
+
* Producers or Endpoints and it never changes the frozen execution decision.
|
|
51
|
+
*/
|
|
52
|
+
export function createLocalResultWriter(
|
|
53
|
+
options: CreateLocalResultWriterOptions,
|
|
54
|
+
): LocalResultWriter {
|
|
55
|
+
const owner = randomUUID();
|
|
56
|
+
const openWriter = async (execution: BuildExecutionSnapshot): Promise<{
|
|
57
|
+
readonly writer: BuildResultWriter;
|
|
58
|
+
readonly manifest: import("@hypit/build-result").BuildResultManifest;
|
|
59
|
+
close(): Promise<void>;
|
|
60
|
+
}> => {
|
|
61
|
+
const opened = await options.openBuildResultRepository(execution.result);
|
|
62
|
+
try {
|
|
63
|
+
const [writer, manifest] = await Promise.all([
|
|
64
|
+
opened.repository.openWriter(execution.build),
|
|
65
|
+
opened.repository.read(execution.build),
|
|
66
|
+
]);
|
|
67
|
+
assert(writer !== undefined && manifest !== undefined, `Build ${execution.build} has no Result draft`);
|
|
68
|
+
return {
|
|
69
|
+
writer,
|
|
70
|
+
manifest,
|
|
71
|
+
close: async () => await opened.close?.(),
|
|
72
|
+
};
|
|
73
|
+
} catch (error) {
|
|
74
|
+
await opened.close?.();
|
|
75
|
+
throw error;
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
const acceptStoredResults = async (build: string): Promise<BuildSnapshot> => {
|
|
80
|
+
const snapshot = await options.buildStore.read(build);
|
|
81
|
+
assert(snapshot !== undefined, `Build ${build} has no durable execution state`);
|
|
82
|
+
const machine = new BuildMachine(snapshot.definition, snapshot.facts);
|
|
83
|
+
const accept = async (event: CommandResult): Promise<void> => {
|
|
84
|
+
if (!machine.view().outstanding.some((command) => command.id === event.command)) return;
|
|
85
|
+
const fact = machine.evaluate(event);
|
|
86
|
+
if (fact === undefined) return;
|
|
87
|
+
await options.buildStore.append(build, fact);
|
|
88
|
+
machine.commit();
|
|
89
|
+
};
|
|
90
|
+
const events = [
|
|
91
|
+
...(await options.commandExecutionStore.list(build)).flatMap((receipt) =>
|
|
92
|
+
receipt.status === "completed" && receipt.event !== undefined ? [receipt.event] : []),
|
|
93
|
+
...(await options.operationStore.list({ build })).flatMap((operation) => operationEvent(operation) ?? []),
|
|
94
|
+
];
|
|
95
|
+
// Preserve already validated sibling outputs before a failure closes Core's outstanding work.
|
|
96
|
+
for (const event of events.filter((event) => event.kind !== "command-failed")) await accept(event);
|
|
97
|
+
for (const event of events.filter((event) => event.kind === "command-failed")) await accept(event);
|
|
98
|
+
const accepted = await options.buildStore.read(build);
|
|
99
|
+
assert(accepted !== undefined, `Build ${build} disappeared while accepting stored results`);
|
|
100
|
+
return accepted;
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
const syncResult = async (
|
|
104
|
+
execution: BuildExecutionSnapshot,
|
|
105
|
+
state: import("@hypit/protocol").BuildState,
|
|
106
|
+
): Promise<void> => {
|
|
107
|
+
const result = await openWriter(execution);
|
|
108
|
+
try {
|
|
109
|
+
if (result.manifest.outcome !== undefined) return;
|
|
110
|
+
const resources = options.resourceStoreForBuild?.(execution.build) ?? options.resourceStore;
|
|
111
|
+
await result.writer.sync({
|
|
112
|
+
state,
|
|
113
|
+
resources: {
|
|
114
|
+
open: async (artifact) => {
|
|
115
|
+
if (isStreamingResourceStore(resources)) return await resources.open(artifact.resource);
|
|
116
|
+
const bytes = await resources.get(artifact.resource);
|
|
117
|
+
return bytes === undefined ? undefined : (async function* () { yield bytes; })();
|
|
118
|
+
},
|
|
119
|
+
},
|
|
120
|
+
});
|
|
121
|
+
} finally {
|
|
122
|
+
await result.close();
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
const finishResult = async (execution: BuildExecutionSnapshot): Promise<void> => {
|
|
127
|
+
assert(execution.decision !== undefined, `Execution ${execution.build} has no decision`);
|
|
128
|
+
const opened = await openWriter(execution);
|
|
129
|
+
let closed = false;
|
|
130
|
+
try {
|
|
131
|
+
if (opened.manifest.outcome === undefined) {
|
|
132
|
+
await opened.close();
|
|
133
|
+
closed = true;
|
|
134
|
+
const snapshot = await acceptStoredResults(execution.build);
|
|
135
|
+
await syncResult(execution, snapshot.state);
|
|
136
|
+
const reopened = await openWriter(execution);
|
|
137
|
+
try {
|
|
138
|
+
const operations = (await options.operationStore.list({ build: execution.build })).map((operation) => {
|
|
139
|
+
return {
|
|
140
|
+
...(operation.request === undefined ? {} : { need: { id: operation.request.need.id, capability: operation.request.need.capability } }),
|
|
141
|
+
...(operation.createdAt === undefined ? {} : { createdAt: operation.createdAt }),
|
|
142
|
+
...(operation.acknowledgedAt === undefined ? {} : { acknowledgedAt: operation.acknowledgedAt }),
|
|
143
|
+
...(operation.endedAt === undefined ? {} : { endedAt: operation.endedAt }),
|
|
144
|
+
...(operation.progress === undefined ? {} : { progress: operation.progress }),
|
|
145
|
+
...(operation.cancellation === undefined ? {} : { cancellation: operation.cancellation }),
|
|
146
|
+
operation: operation.id, command: operation.command, endpoint: operation.endpoint, status: operation.status,
|
|
147
|
+
...(operation.pool === undefined ? {} : { pool: operation.pool }),
|
|
148
|
+
...(operation.credentials === undefined ? {} : { credentials: operation.credentials }),
|
|
149
|
+
...(operation.receipt === undefined ? {} : { receipt: operation.receipt }),
|
|
150
|
+
...(operation.failure === undefined ? {} : { failure: operation.failure }),
|
|
151
|
+
};
|
|
152
|
+
});
|
|
153
|
+
await reopened.writer.finish({
|
|
154
|
+
operations,
|
|
155
|
+
outcome: execution.decision.outcome,
|
|
156
|
+
...(execution.decision.reason === undefined ? {} : { failure: execution.decision.reason }),
|
|
157
|
+
});
|
|
158
|
+
} finally {
|
|
159
|
+
await reopened.close();
|
|
160
|
+
}
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
await opened.writer.finish({
|
|
164
|
+
outcome: execution.decision.outcome,
|
|
165
|
+
...(execution.decision.reason === undefined ? {} : { failure: execution.decision.reason }),
|
|
166
|
+
});
|
|
167
|
+
} finally {
|
|
168
|
+
if (!closed) await opened.close();
|
|
169
|
+
}
|
|
170
|
+
};
|
|
171
|
+
|
|
172
|
+
const writeResultAndCleanup = async (execution: BuildExecutionSnapshot) => {
|
|
173
|
+
assert(execution.decision !== undefined, `Execution ${execution.build} has no decision`);
|
|
174
|
+
assert(execution.resultWrite?.owner === owner,
|
|
175
|
+
`Execution ${execution.build} Result writer is not owned by this process`);
|
|
176
|
+
let step: "result" | "cleanup" = "result";
|
|
177
|
+
try {
|
|
178
|
+
await finishResult(execution);
|
|
179
|
+
step = "cleanup";
|
|
180
|
+
await Promise.resolve(options.clearBuildResources?.(execution.build));
|
|
181
|
+
return await options.removeActiveBuild(execution.build);
|
|
182
|
+
} catch (error) {
|
|
183
|
+
const reason = error instanceof Error ? error.message : String(error);
|
|
184
|
+
try {
|
|
185
|
+
await options.executionStore.setAttention(execution.build, { step, error: reason });
|
|
186
|
+
} catch (attentionError) {
|
|
187
|
+
await options.executionStore.releaseResultWrite(execution.build, owner).catch(() => undefined);
|
|
188
|
+
throw attentionError;
|
|
189
|
+
}
|
|
190
|
+
return await options.executionStore.releaseResultWrite(execution.build, owner);
|
|
191
|
+
}
|
|
192
|
+
};
|
|
193
|
+
|
|
194
|
+
const claimResultWrite = async (build: string): Promise<BuildExecutionSnapshot> => {
|
|
195
|
+
const claimed = await options.executionStore.claimResultWrite(build, owner);
|
|
196
|
+
if (claimed !== undefined) return claimed;
|
|
197
|
+
const current = await options.executionStore.read(build);
|
|
198
|
+
assert(current !== undefined, `Execution ${build} does not exist`);
|
|
199
|
+
assert(current.decision !== undefined, `Execution ${build} has no decision`);
|
|
200
|
+
assert(current.resultWrite === undefined,
|
|
201
|
+
`Execution ${build} Result write is already owned by another process`);
|
|
202
|
+
throw new Error(`Execution ${build} could not be claimed for Result writing`);
|
|
203
|
+
};
|
|
204
|
+
|
|
205
|
+
const completeResult = async (initial: BuildExecutionSnapshot) =>
|
|
206
|
+
await writeResultAndCleanup(await claimResultWrite(initial.build));
|
|
207
|
+
|
|
208
|
+
const discardSubmission = async (build: string): Promise<boolean> => {
|
|
209
|
+
const submission = await options.submissionStore.read(build);
|
|
210
|
+
if (submission === undefined) return false;
|
|
211
|
+
const opened = await options.openBuildResultRepository(submission.result);
|
|
212
|
+
try {
|
|
213
|
+
await opened.repository.removeIncomplete(build);
|
|
214
|
+
} finally {
|
|
215
|
+
await opened.close?.();
|
|
216
|
+
}
|
|
217
|
+
await Promise.resolve(options.clearBuildResources?.(build));
|
|
218
|
+
await options.submissionStore.discard(build);
|
|
219
|
+
return true;
|
|
220
|
+
};
|
|
221
|
+
|
|
222
|
+
return {
|
|
223
|
+
sync: syncResult,
|
|
224
|
+
async finishResult(build) {
|
|
225
|
+
const execution = await options.executionStore.read(build);
|
|
226
|
+
if (execution === undefined) return undefined;
|
|
227
|
+
assert(execution.decision !== undefined,
|
|
228
|
+
`Build ${build} is still executing; its Result cannot be finished yet`);
|
|
229
|
+
const finished = await writeResultAndCleanup(await claimResultWrite(build));
|
|
230
|
+
return "createdAt" in finished
|
|
231
|
+
? {
|
|
232
|
+
id: build,
|
|
233
|
+
outcome: finished.decision!.outcome,
|
|
234
|
+
...(finished.attention === undefined ? {} : {
|
|
235
|
+
issue: { scope: finished.attention.step, message: finished.attention.error },
|
|
236
|
+
}),
|
|
237
|
+
}
|
|
238
|
+
: { id: build, outcome: finished.outcome };
|
|
239
|
+
},
|
|
240
|
+
discardSubmission,
|
|
241
|
+
completeResult,
|
|
242
|
+
close() {
|
|
243
|
+
return options.close?.();
|
|
244
|
+
},
|
|
245
|
+
};
|
|
246
|
+
}
|