@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,134 @@
|
|
|
1
|
+
import {
|
|
2
|
+
compileWireRequest,
|
|
3
|
+
generationTypes,
|
|
4
|
+
sealGeneratedAudioSet,
|
|
5
|
+
sealGeneratedImageSet,
|
|
6
|
+
sealGeneratedVideoSet,
|
|
7
|
+
} from "@hypit/generation";
|
|
8
|
+
import type { GenerationArtifactUrlResolver, GenerationRequest, GenerationWireMapping } from "@hypit/generation";
|
|
9
|
+
import { canonicalize } from "@hypit/protocol";
|
|
10
|
+
import type { BlobRef, CapabilityRef, CanonicalValue, StoredValue, TypeRef } from "@hypit/protocol";
|
|
11
|
+
import type { EndpointRequest, EndpointSupport } from "@hypit/endpoint-kit";
|
|
12
|
+
import { hypiHubMappings } from "./mapping.js";
|
|
13
|
+
|
|
14
|
+
export type HypiHubRoute = (typeof hypiHubMappings)[number] & {
|
|
15
|
+
readonly key: string;
|
|
16
|
+
readonly returns: TypeRef;
|
|
17
|
+
readonly media: "image" | "video" | "audio";
|
|
18
|
+
readonly supports?: (request: EndpointRequest) => EndpointSupport;
|
|
19
|
+
readonly compile: (constraints: CanonicalValue, resolve: GenerationArtifactUrlResolver) => Promise<{ readonly model: string; readonly input: CanonicalValue }>;
|
|
20
|
+
readonly packageResult: (artifacts: readonly BlobRef[]) => StoredValue;
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
function scalar(request: GenerationRequest, port: string): string | number | boolean | undefined {
|
|
24
|
+
const value = request.ports[port]?.[0];
|
|
25
|
+
return typeof value === "string" || typeof value === "number" || typeof value === "boolean" ? value : undefined;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/** Current HypiHub GPT Image combinations, independently declared at this Endpoint boundary. */
|
|
29
|
+
function hypiHubGenerationRejection(mapping: GenerationWireMapping, request: GenerationRequest): string | undefined {
|
|
30
|
+
if (mapping.capability.module.name !== "@hypit/gpt-image" || mapping.capability.name !== "gpt-image-2") {
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
const ratio = scalar(request, "aspectRatio");
|
|
34
|
+
const resolution = scalar(request, "resolution");
|
|
35
|
+
const background = scalar(request, "background");
|
|
36
|
+
const unsupportedRatios = resolution === "2K"
|
|
37
|
+
? ["5:4", "4:5", "3:1", "1:3", "9:21"]
|
|
38
|
+
: resolution === "4K" ? ["3:1", "1:3", "9:21"] : [];
|
|
39
|
+
if (unsupportedRatios.includes(String(ratio))) {
|
|
40
|
+
return `HypiHub GPT Image 2 does not accept ${String(ratio)} at ${String(resolution)}`;
|
|
41
|
+
}
|
|
42
|
+
if (background !== undefined && resolution !== "1K") {
|
|
43
|
+
return `HypiHub GPT Image 2 accepts the background option only at 1K; omit it at ${String(resolution)}`;
|
|
44
|
+
}
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export const hypiHubRoutes: readonly HypiHubRoute[] = hypiHubMappings.map((mapping) => {
|
|
49
|
+
const hasRequestLimits = mapping.capability.module.name === "@hypit/gpt-image"
|
|
50
|
+
&& mapping.capability.name === "gpt-image-2";
|
|
51
|
+
return {
|
|
52
|
+
...mapping,
|
|
53
|
+
key: capabilityKey(mapping.capability),
|
|
54
|
+
returns: mapping.result === "image" ? generationTypes.imageSet
|
|
55
|
+
: mapping.result === "video" ? generationTypes.videoSet : generationTypes.audioSet,
|
|
56
|
+
media: mapping.result,
|
|
57
|
+
...(hasRequestLimits ? {
|
|
58
|
+
supports: (request: EndpointRequest) => {
|
|
59
|
+
const reason = hypiHubGenerationRejection(mapping, request.constraints as unknown as GenerationRequest);
|
|
60
|
+
return reason === undefined ? { status: "supported" } : { status: "unsupported", reason };
|
|
61
|
+
},
|
|
62
|
+
} : {}),
|
|
63
|
+
compile: async (constraints, resolve) => {
|
|
64
|
+
const request = constraints as unknown as GenerationRequest;
|
|
65
|
+
const rejection = hypiHubGenerationRejection(mapping, request);
|
|
66
|
+
if (rejection !== undefined) throw new Error(rejection);
|
|
67
|
+
return normalizeHypiHubRequest(mapping, await compileWireRequest(mapping, request, resolve));
|
|
68
|
+
},
|
|
69
|
+
packageResult: (artifacts) => ({
|
|
70
|
+
kind: "inline",
|
|
71
|
+
value: canonicalize(mapping.result === "image"
|
|
72
|
+
? sealGeneratedImageSet({ images: artifacts })
|
|
73
|
+
: mapping.result === "video"
|
|
74
|
+
? sealGeneratedVideoSet({ videos: artifacts })
|
|
75
|
+
: sealGeneratedAudioSet({ audios: artifacts })),
|
|
76
|
+
}),
|
|
77
|
+
};
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
/** Convert the provider-neutral generation wire shape to HypiHub's public API shape. */
|
|
81
|
+
function normalizeHypiHubRequest(
|
|
82
|
+
mapping: GenerationWireMapping,
|
|
83
|
+
request: { readonly model: string; readonly input: CanonicalValue },
|
|
84
|
+
): { readonly model: string; readonly input: CanonicalValue } {
|
|
85
|
+
const input = { ...(request.input as Record<string, unknown>) };
|
|
86
|
+
if (mapping.result === "image") {
|
|
87
|
+
return { model: request.model, input: canonicalize(input) };
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// Audio mappings already use HypiHub's public /audio/speech vocabulary.
|
|
91
|
+
if (mapping.result === "audio") {
|
|
92
|
+
return { model: request.model, input: canonicalize(input) };
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
if (typeof input.resolution === "string") input.resolution = input.resolution.toLowerCase();
|
|
96
|
+
|
|
97
|
+
const imageRefs = input.reference_image_urls;
|
|
98
|
+
const genericImageRefs = input.reference_images;
|
|
99
|
+
const videoRefs = input.reference_videos;
|
|
100
|
+
const firstFrame = input.first_frame;
|
|
101
|
+
const lastFrame = input.last_frame;
|
|
102
|
+
const audioRefs = input.reference_audios;
|
|
103
|
+
// References are public HypiHub media inputs, not vendor passthrough. They
|
|
104
|
+
// must remain top-level so Async V2 stages the uploaded capability URLs
|
|
105
|
+
// before choosing an upstream adaptor.
|
|
106
|
+
delete input.reference_image_urls;
|
|
107
|
+
delete input.reference_images;
|
|
108
|
+
delete input.reference_videos;
|
|
109
|
+
delete input.reference_audios;
|
|
110
|
+
delete input.first_frame;
|
|
111
|
+
delete input.last_frame;
|
|
112
|
+
if (typeof firstFrame === "string" && firstFrame.length > 0) input.first_frame = firstFrame;
|
|
113
|
+
if (typeof lastFrame === "string" && lastFrame.length > 0) input.last_frame = lastFrame;
|
|
114
|
+
if (Array.isArray(imageRefs) && imageRefs.length > 0) input.reference_image_urls = imageRefs;
|
|
115
|
+
if (Array.isArray(genericImageRefs) && genericImageRefs.length > 0) {
|
|
116
|
+
const urls = genericImageRefs.map((item) => item !== null && typeof item === "object"
|
|
117
|
+
? (item as Record<string, unknown>).url : item).filter((item): item is string => typeof item === "string" && item.length > 0);
|
|
118
|
+
if (urls.length > 0) input.reference_image_urls = urls;
|
|
119
|
+
}
|
|
120
|
+
if (Array.isArray(videoRefs) && videoRefs.length === 1) input.ref_video_url = videoRefs[0];
|
|
121
|
+
else if (Array.isArray(videoRefs) && videoRefs.length > 1) input.reference_videos = videoRefs;
|
|
122
|
+
if (Array.isArray(audioRefs) && audioRefs.length > 0) input.reference_audios = audioRefs;
|
|
123
|
+
return { model: request.model, input: canonicalize(input) };
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
function capabilityKey(capability: { module: { name: string; version: string }; name: string }): string {
|
|
127
|
+
return `${capability.module.name}@${capability.module.version}#${capability.name}`;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
const byCapability = new Map(hypiHubRoutes.map((route) => [capabilityKey(route.capability), route]));
|
|
131
|
+
|
|
132
|
+
export function hypiHubRouteForCapability(capability: CapabilityRef): HypiHubRoute | undefined {
|
|
133
|
+
return byCapability.get(capabilityKey(capability));
|
|
134
|
+
}
|
|
@@ -0,0 +1,402 @@
|
|
|
1
|
+
import { requestDeadline } from "@hypit/runtime-kit";
|
|
2
|
+
import { createHash } from "node:crypto";
|
|
3
|
+
|
|
4
|
+
import type { HypiHubAuth } from "./oauth.js";
|
|
5
|
+
|
|
6
|
+
type UploadAuth = HypiHubAuth | string;
|
|
7
|
+
|
|
8
|
+
async function uploadToken(auth: UploadAuth): Promise<string> {
|
|
9
|
+
return typeof auth === "string" ? auth : await auth.token();
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
function uploadCanRefresh(auth: UploadAuth): boolean {
|
|
13
|
+
return typeof auth !== "string" && auth.canRefresh();
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function assert(condition: unknown, message: string): asserts condition {
|
|
17
|
+
if (!condition) throw new Error(message);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function object(value: unknown, subject: string): Record<string, unknown> {
|
|
21
|
+
assert(value !== null && typeof value === "object" && !Array.isArray(value), `${subject} must be an object`);
|
|
22
|
+
return value as Record<string, unknown>;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function requiredString(value: unknown, subject: string): string {
|
|
26
|
+
assert(typeof value === "string" && value.length > 0, `${subject} is missing`);
|
|
27
|
+
return value;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function requiredInteger(value: unknown, subject: string): number {
|
|
31
|
+
assert(typeof value === "number" && Number.isSafeInteger(value) && value > 0, `${subject} is invalid`);
|
|
32
|
+
return value;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function extension(mediaType: string): string {
|
|
36
|
+
const known: Readonly<Record<string, string>> = {
|
|
37
|
+
"image/jpeg": "jpg", "image/png": "png", "image/webp": "webp",
|
|
38
|
+
"video/mp4": "mp4", "video/quicktime": "mov", "video/webm": "webm",
|
|
39
|
+
"audio/mpeg": "mp3", "audio/wav": "wav", "audio/x-wav": "wav", "audio/mp4": "m4a",
|
|
40
|
+
};
|
|
41
|
+
return known[mediaType.toLowerCase()] ?? "bin";
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function apiBaseUrl(value: string): string {
|
|
45
|
+
const trimmed = value.trim().replace(/\/+$/u, "");
|
|
46
|
+
assert(trimmed.length > 0, "HypiHub upload base URL is empty");
|
|
47
|
+
return `${trimmed.replace(/\/(?:v1beta|v1)$/iu, "")}/v1`;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
class HypiHubHTTPError extends Error {
|
|
51
|
+
constructor(readonly status: number, message: string, readonly retryAfterMs?: number, readonly code?: string) {
|
|
52
|
+
super(message);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export type HypiHubUploaderOptions = {
|
|
57
|
+
readonly baseUrl: string;
|
|
58
|
+
readonly requestTimeoutMs: number;
|
|
59
|
+
/** Whole files per origin/credential in this process. Defaults to 8; any positive safe integer. */
|
|
60
|
+
readonly uploadConcurrency?: number;
|
|
61
|
+
readonly uploadPartTimeoutMs?: number;
|
|
62
|
+
readonly uploadPartAttempts?: number;
|
|
63
|
+
readonly fetch: typeof globalThis.fetch;
|
|
64
|
+
/** Optional diagnostic sink. Defaults to stderr; messages never include credentials or signed URLs. */
|
|
65
|
+
readonly logger?: (message: string) => void;
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
export type HypiHubUploadInput = {
|
|
69
|
+
readonly bytes: Uint8Array;
|
|
70
|
+
readonly mediaType: string;
|
|
71
|
+
readonly filename?: string;
|
|
72
|
+
readonly purpose?: string;
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
type PartDeclaration = {
|
|
76
|
+
readonly part_number: number;
|
|
77
|
+
readonly bytes: number;
|
|
78
|
+
readonly checksum_sha256: string;
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
type CompletedPart = {
|
|
82
|
+
readonly part_number: number;
|
|
83
|
+
readonly etag: string;
|
|
84
|
+
readonly checksum_sha256: string;
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
function assertHTTPS(value: string, subject: string): void {
|
|
88
|
+
let protocol = "";
|
|
89
|
+
try { protocol = new URL(value).protocol; }
|
|
90
|
+
catch { throw new Error(`${subject} is invalid`); }
|
|
91
|
+
assert(protocol === "https:", `${subject} must use HTTPS`);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// A provider can upload references from several operations/uploader instances.
|
|
95
|
+
// Bound whole file sessions, independently of each file's S3 part concurrency.
|
|
96
|
+
type UploadGate = { active: number; limits: Map<number, number>; waiting: (() => void)[] };
|
|
97
|
+
const uploadGates = new Map<string, UploadGate>();
|
|
98
|
+
function drainUploadGate(gate: UploadGate): void {
|
|
99
|
+
const limit = Math.min(...gate.limits.keys());
|
|
100
|
+
while (gate.active < limit && gate.waiting.length > 0) {
|
|
101
|
+
gate.active += 1;
|
|
102
|
+
gate.waiting.shift()!();
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
async function acquireUploadSlot(origin: string, auth: UploadAuth, limit: number): Promise<() => void> {
|
|
106
|
+
const key = `${origin}:${createHash("sha256").update(await uploadToken(auth)).digest("hex")}`;
|
|
107
|
+
let gate = uploadGates.get(key);
|
|
108
|
+
if (gate === undefined) { gate = { active: 0, limits: new Map(), waiting: [] }; uploadGates.set(key, gate); }
|
|
109
|
+
// Instances sharing a credential share capacity. The strictest outstanding
|
|
110
|
+
// caller wins; a lower limit drains existing work without cancelling it.
|
|
111
|
+
gate.limits.set(limit, (gate.limits.get(limit) ?? 0) + 1);
|
|
112
|
+
await new Promise<void>((resolve) => { gate.waiting.push(resolve); drainUploadGate(gate); });
|
|
113
|
+
return () => {
|
|
114
|
+
gate.active -= 1;
|
|
115
|
+
const remaining = (gate.limits.get(limit) ?? 1) - 1;
|
|
116
|
+
if (remaining === 0) gate.limits.delete(limit); else gate.limits.set(limit, remaining);
|
|
117
|
+
drainUploadGate(gate);
|
|
118
|
+
if (gate.active === 0 && gate.waiting.length === 0) uploadGates.delete(key);
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/** Uploads media through HypiHub's session-negotiated private regional S3 multipart flow. */
|
|
123
|
+
export class HypiHubUploader {
|
|
124
|
+
readonly baseUrl: string;
|
|
125
|
+
readonly requestTimeout: number;
|
|
126
|
+
readonly uploadConcurrency: number;
|
|
127
|
+
readonly uploadPartTimeout: number;
|
|
128
|
+
readonly uploadPartAttempts: number;
|
|
129
|
+
readonly fetcher: typeof globalThis.fetch;
|
|
130
|
+
readonly logger: (message: string) => void;
|
|
131
|
+
|
|
132
|
+
constructor(options: HypiHubUploaderOptions) {
|
|
133
|
+
this.baseUrl = apiBaseUrl(options.baseUrl);
|
|
134
|
+
this.requestTimeout = requiredInteger(options.requestTimeoutMs, "HypiHub upload request timeout");
|
|
135
|
+
this.uploadConcurrency = requiredInteger(options.uploadConcurrency ?? 8, "HypiHub uploadConcurrency");
|
|
136
|
+
this.uploadPartTimeout = requiredInteger(options.uploadPartTimeoutMs ?? 5 * 60_000,
|
|
137
|
+
"HypiHub upload part timeout");
|
|
138
|
+
this.uploadPartAttempts = requiredInteger(options.uploadPartAttempts ?? 3,
|
|
139
|
+
"HypiHub upload part attempts");
|
|
140
|
+
assert(this.uploadPartAttempts <= 8, "HypiHub upload part attempts must be within 1..8");
|
|
141
|
+
this.fetcher = options.fetch;
|
|
142
|
+
this.logger = options.logger ?? ((message) => console.error(`[hypihub-upload] ${message}`));
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
private log(message: string): void { this.logger(message); }
|
|
146
|
+
|
|
147
|
+
private elapsed(startedAt: number): string { return `${Date.now() - startedAt}ms`; }
|
|
148
|
+
|
|
149
|
+
private safeReason(error: unknown): string {
|
|
150
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
151
|
+
return message.replace(/https?:\/\/\S+/giu, "[redacted-url]").slice(0, 300);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
private async json(path: string, auth: UploadAuth, init: RequestInit = {}): Promise<Record<string, unknown>> {
|
|
155
|
+
const existingSession = /^\/files\/uploads\/[^/]+(?:\/(?:parts|complete))?$/u.test(path);
|
|
156
|
+
const deadline = Date.now() + (existingSession ? Math.min(this.requestTimeout, 120_000) : this.requestTimeout);
|
|
157
|
+
for (let attempt = 0; ; attempt += 1) {
|
|
158
|
+
try {
|
|
159
|
+
return await this.jsonOnce(path, auth, init, Math.max(1, deadline - Date.now()));
|
|
160
|
+
} catch (error) {
|
|
161
|
+
const http = error instanceof HypiHubHTTPError ? error : undefined;
|
|
162
|
+
// Existing-session operations are idempotent. A new session may only
|
|
163
|
+
// be retried after an explicit 429 rejection, never an unknown result.
|
|
164
|
+
const retryable = http !== undefined
|
|
165
|
+
? ([408, 429, 500, 502, 503, 504].includes(http.status)
|
|
166
|
+
|| (http.status === 409 && http.code === "upload_incomplete"))
|
|
167
|
+
: existingSession;
|
|
168
|
+
const rejectedCreate = path === "/files/uploads" && http?.status === 429;
|
|
169
|
+
if (attempt >= 3 || !retryable || (!existingSession && !rejectedCreate)
|
|
170
|
+
|| http?.code === "upload_daily_limit" || http?.code === "upload_storage_limit") throw error;
|
|
171
|
+
const delay = http?.retryAfterMs ?? 500 * 2 ** attempt;
|
|
172
|
+
// Respect a server's retry time; do not shorten it to fit our budget.
|
|
173
|
+
if (Date.now() + delay >= deadline) throw error;
|
|
174
|
+
this.log(`upload control retry method=${init.method ?? "GET"} path=${path} attempt=${attempt + 2} delay_ms=${delay}`);
|
|
175
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
private async jsonOnce(path: string, auth: UploadAuth, init: RequestInit, timeoutMs: number, retryAuth = true): Promise<Record<string, unknown>> {
|
|
181
|
+
const request = requestDeadline(timeoutMs);
|
|
182
|
+
const deadline = Date.now() + timeoutMs;
|
|
183
|
+
try {
|
|
184
|
+
const response = await request.wait(this.fetcher(`${this.baseUrl}${path}`, {
|
|
185
|
+
...init,
|
|
186
|
+
signal: request.signal,
|
|
187
|
+
headers: { authorization: `Bearer ${await uploadToken(auth)}`, ...(init.headers ?? {}) },
|
|
188
|
+
}));
|
|
189
|
+
const text = await request.wait(response.text());
|
|
190
|
+
if (response.status === 401 && retryAuth && uploadCanRefresh(auth)) {
|
|
191
|
+
await (auth as HypiHubAuth).refresh();
|
|
192
|
+
return await this.jsonOnce(path, auth, init, Math.max(1, deadline - Date.now()), false);
|
|
193
|
+
}
|
|
194
|
+
let body: unknown = {};
|
|
195
|
+
try { body = text.length === 0 ? {} : JSON.parse(text); }
|
|
196
|
+
catch {
|
|
197
|
+
if (response.ok) throw new Error(`HypiHub returned invalid JSON (${response.status})`);
|
|
198
|
+
}
|
|
199
|
+
if (!response.ok) {
|
|
200
|
+
const errorBody = body !== null && typeof body === "object" && "error" in body ? body.error : undefined;
|
|
201
|
+
const code = errorBody !== null && typeof errorBody === "object" && "code" in errorBody
|
|
202
|
+
&& typeof errorBody.code === "string" ? errorBody.code : undefined;
|
|
203
|
+
const retryAfter = response.headers.get("retry-after");
|
|
204
|
+
const parsedRetry = retryAfter === null ? NaN : /^\d+$/u.test(retryAfter.trim())
|
|
205
|
+
? Number(retryAfter) * 1000 : Date.parse(retryAfter) - Date.now();
|
|
206
|
+
throw new HypiHubHTTPError(response.status, `HypiHub returned HTTP ${response.status}: ${this.safeReason(text)}`,
|
|
207
|
+
Number.isFinite(parsedRetry) ? Math.max(0, parsedRetry) : undefined, code);
|
|
208
|
+
}
|
|
209
|
+
return object(body, "HypiHub response");
|
|
210
|
+
} finally {
|
|
211
|
+
request.finish();
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
private async signParts(uploadId: string, declarations: readonly PartDeclaration[], auth: UploadAuth): Promise<Map<number, Record<string, unknown>>> {
|
|
216
|
+
const startedAt = Date.now();
|
|
217
|
+
this.log(`part signing started upload=${uploadId} parts=${declarations.length}`);
|
|
218
|
+
const response = await this.json(`/files/uploads/${encodeURIComponent(uploadId)}/parts`, auth, {
|
|
219
|
+
method: "POST",
|
|
220
|
+
headers: { "content-type": "application/json" },
|
|
221
|
+
body: JSON.stringify({ parts: declarations }),
|
|
222
|
+
});
|
|
223
|
+
assert(Array.isArray(response.parts), "HypiHub part signing response has no parts");
|
|
224
|
+
const signed = new Map<number, Record<string, unknown>>();
|
|
225
|
+
for (const raw of response.parts) {
|
|
226
|
+
const item = object(raw, "HypiHub signed upload part");
|
|
227
|
+
const partNumber = requiredInteger(item.part_number, "HypiHub signed upload part number");
|
|
228
|
+
assertHTTPS(requiredString(item.url, "HypiHub signed upload URL"), "HypiHub signed upload URL");
|
|
229
|
+
object(item.headers, "HypiHub signed upload headers");
|
|
230
|
+
signed.set(partNumber, item);
|
|
231
|
+
}
|
|
232
|
+
assert(signed.size === declarations.length, "HypiHub signed an incomplete part set");
|
|
233
|
+
this.log(`part signing completed upload=${uploadId} parts=${declarations.length} elapsed=${this.elapsed(startedAt)}`);
|
|
234
|
+
return signed;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
private signedHeaders(value: unknown, declaration: PartDeclaration): Record<string, string> {
|
|
238
|
+
const raw = object(value, "HypiHub signed upload headers");
|
|
239
|
+
const headers = new Map<string, string>();
|
|
240
|
+
for (const [name, headerValue] of Object.entries(raw)) {
|
|
241
|
+
assert(typeof headerValue === "string", `HypiHub signed upload header ${name} is invalid`);
|
|
242
|
+
headers.set(name.toLowerCase(), headerValue);
|
|
243
|
+
}
|
|
244
|
+
const contentLength = requiredString(headers.get("content-length"), "HypiHub signed Content-Length");
|
|
245
|
+
const checksum = requiredString(headers.get("x-amz-checksum-sha256"), "HypiHub signed checksum");
|
|
246
|
+
assert(contentLength === String(declaration.bytes), "HypiHub signed a different part size");
|
|
247
|
+
assert(checksum === declaration.checksum_sha256, "HypiHub signed a different part checksum");
|
|
248
|
+
return { "content-length": contentLength, "x-amz-checksum-sha256": checksum };
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
private async putPart(uploadId: string, declaration: PartDeclaration, initial: Record<string, unknown>, body: Uint8Array, auth: UploadAuth): Promise<CompletedPart> {
|
|
252
|
+
let capability = initial;
|
|
253
|
+
for (let attempt = 0; attempt < this.uploadPartAttempts; attempt += 1) {
|
|
254
|
+
if (attempt > 0) {
|
|
255
|
+
const refreshed = await this.signParts(uploadId, [declaration], auth);
|
|
256
|
+
capability = refreshed.get(declaration.part_number) ?? {};
|
|
257
|
+
}
|
|
258
|
+
const request = requestDeadline(this.uploadPartTimeout);
|
|
259
|
+
const startedAt = Date.now();
|
|
260
|
+
this.log(`part upload started upload=${uploadId} part=${declaration.part_number} bytes=${declaration.bytes} attempt=${attempt + 1}`);
|
|
261
|
+
try {
|
|
262
|
+
const url = requiredString(capability.url, "HypiHub signed upload URL");
|
|
263
|
+
assertHTTPS(url, "HypiHub signed upload URL");
|
|
264
|
+
const payload = new ArrayBuffer(body.byteLength);
|
|
265
|
+
new Uint8Array(payload).set(body);
|
|
266
|
+
const response = await request.wait(this.fetcher(url, {
|
|
267
|
+
method: "PUT",
|
|
268
|
+
headers: this.signedHeaders(capability.headers, declaration),
|
|
269
|
+
body: payload,
|
|
270
|
+
signal: request.signal,
|
|
271
|
+
}));
|
|
272
|
+
if (!response.ok) throw new Error(`S3 rejected upload part ${declaration.part_number} with HTTP ${response.status}`);
|
|
273
|
+
const etag = response.headers.get("etag");
|
|
274
|
+
assert(etag !== null && etag.length > 0, `S3 upload part ${declaration.part_number} returned no ETag`);
|
|
275
|
+
const verified = response.headers.get("x-amz-checksum-sha256");
|
|
276
|
+
assert(verified === null || verified === declaration.checksum_sha256,
|
|
277
|
+
`S3 upload part ${declaration.part_number} returned a different checksum`);
|
|
278
|
+
this.log(`part upload completed upload=${uploadId} part=${declaration.part_number} bytes=${declaration.bytes} attempt=${attempt + 1} elapsed=${this.elapsed(startedAt)}`);
|
|
279
|
+
return {
|
|
280
|
+
part_number: declaration.part_number,
|
|
281
|
+
etag,
|
|
282
|
+
checksum_sha256: declaration.checksum_sha256,
|
|
283
|
+
};
|
|
284
|
+
} catch (error) {
|
|
285
|
+
this.log(`part upload failed upload=${uploadId} part=${declaration.part_number} attempt=${attempt + 1} elapsed=${this.elapsed(startedAt)} reason=${this.safeReason(error)}`);
|
|
286
|
+
if (attempt + 1 < this.uploadPartAttempts) {
|
|
287
|
+
this.log(`part upload retry scheduled upload=${uploadId} part=${declaration.part_number} next_attempt=${attempt + 2}`);
|
|
288
|
+
await new Promise((resolve) => setTimeout(resolve, 500 * (attempt + 1)));
|
|
289
|
+
}
|
|
290
|
+
} finally {
|
|
291
|
+
request.finish();
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
// A presigned URL is a temporary credential, so never include the fetcher's URL-bearing error.
|
|
295
|
+
throw new Error(`S3 upload part ${declaration.part_number} failed after ${this.uploadPartAttempts} attempts`);
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
private async uploadDirect(bytes: Uint8Array, auth: UploadAuth, policy: Record<string, unknown>): Promise<string> {
|
|
299
|
+
const uploadId = requiredString(policy.upload_id, "HypiHub upload id");
|
|
300
|
+
try {
|
|
301
|
+
const partSize = requiredInteger(policy.part_size, "HypiHub upload part size");
|
|
302
|
+
const partCount = requiredInteger(policy.part_count, "HypiHub upload part count");
|
|
303
|
+
const requestedConcurrency = requiredInteger(policy.concurrency, "HypiHub upload concurrency");
|
|
304
|
+
assert(requestedConcurrency <= 8, "HypiHub upload concurrency exceeds 8");
|
|
305
|
+
assert(partCount <= 10_000, "HypiHub upload part count exceeds 10000");
|
|
306
|
+
assert(partCount === Math.ceil(bytes.byteLength / partSize), "HypiHub upload part count differs from the file size");
|
|
307
|
+
const declarations = Array.from({ length: partCount }, (_, index) => {
|
|
308
|
+
const start = index * partSize;
|
|
309
|
+
const part = bytes.subarray(start, Math.min(start + partSize, bytes.byteLength));
|
|
310
|
+
return {
|
|
311
|
+
part_number: index + 1,
|
|
312
|
+
bytes: part.byteLength,
|
|
313
|
+
checksum_sha256: createHash("sha256").update(part).digest("base64"),
|
|
314
|
+
};
|
|
315
|
+
});
|
|
316
|
+
this.log(`multipart upload negotiated upload=${uploadId} bytes=${bytes.byteLength} part_size=${partSize} parts=${partCount} concurrency=${requestedConcurrency}`);
|
|
317
|
+
const signed = await this.signParts(uploadId, declarations, auth);
|
|
318
|
+
const completed = new Array<CompletedPart>(partCount);
|
|
319
|
+
let cursor = 0;
|
|
320
|
+
let workerFailed = false;
|
|
321
|
+
const worker = async (): Promise<void> => {
|
|
322
|
+
while (!workerFailed && cursor < partCount) {
|
|
323
|
+
const index = cursor;
|
|
324
|
+
cursor += 1;
|
|
325
|
+
const declaration = declarations[index];
|
|
326
|
+
assert(declaration !== undefined, "HypiHub upload part declaration is missing");
|
|
327
|
+
const start = index * partSize;
|
|
328
|
+
const body = bytes.subarray(start, Math.min(start + partSize, bytes.byteLength));
|
|
329
|
+
const capability = signed.get(declaration.part_number);
|
|
330
|
+
assert(capability !== undefined, `HypiHub upload part ${declaration.part_number} was not signed`);
|
|
331
|
+
try { completed[index] = await this.putPart(uploadId, declaration, capability, body, auth); }
|
|
332
|
+
catch (error) { workerFailed = true; throw error; }
|
|
333
|
+
}
|
|
334
|
+
};
|
|
335
|
+
// Let in-flight part requests settle before cancellation; otherwise a
|
|
336
|
+
// surviving worker can keep uploading into a session we just aborted.
|
|
337
|
+
const results = await Promise.allSettled(Array.from({ length: Math.min(requestedConcurrency, partCount) }, worker));
|
|
338
|
+
const failed = results.find((result) => result.status === "rejected");
|
|
339
|
+
if (failed?.status === "rejected") throw failed.reason;
|
|
340
|
+
const completeStartedAt = Date.now();
|
|
341
|
+
this.log(`multipart complete started upload=${uploadId} parts=${partCount}`);
|
|
342
|
+
const response = await this.json(`/files/uploads/${encodeURIComponent(uploadId)}/complete`, auth, {
|
|
343
|
+
method: "POST",
|
|
344
|
+
headers: { "content-type": "application/json" },
|
|
345
|
+
body: JSON.stringify({ parts: completed }),
|
|
346
|
+
});
|
|
347
|
+
const url = requiredString(response.url, "HypiHub direct upload URL");
|
|
348
|
+
assert(/^https:\/\//iu.test(url), "HypiHub direct upload returned no HTTPS URL");
|
|
349
|
+
this.log(`multipart complete finished upload=${uploadId} parts=${partCount} elapsed=${this.elapsed(completeStartedAt)}`);
|
|
350
|
+
return url;
|
|
351
|
+
} catch (error) {
|
|
352
|
+
this.log(`multipart upload failed upload=${uploadId} reason=${this.safeReason(error)}`);
|
|
353
|
+
try { await this.json(`/files/uploads/${encodeURIComponent(uploadId)}`, auth, { method: "DELETE" }); }
|
|
354
|
+
catch (cancelError) {
|
|
355
|
+
if (!(cancelError instanceof HypiHubHTTPError && (cancelError.status === 404
|
|
356
|
+
|| (cancelError.status === 409 && cancelError.code === "upload_completed")))) {
|
|
357
|
+
this.log(`upload cancellation still pending upload=${uploadId} reason=${this.safeReason(cancelError)}`);
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
throw new Error(this.safeReason(error));
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
async upload(input: HypiHubUploadInput, auth: UploadAuth): Promise<string> {
|
|
365
|
+
const release = await acquireUploadSlot(this.baseUrl, auth, this.uploadConcurrency);
|
|
366
|
+
try { return await this.uploadWithSlot(input, auth); }
|
|
367
|
+
finally { release(); }
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
private async uploadWithSlot(input: HypiHubUploadInput, auth: UploadAuth): Promise<string> {
|
|
371
|
+
assert(input.bytes.byteLength > 0, "HypiHub reference Resource is empty");
|
|
372
|
+
const startedAt = Date.now();
|
|
373
|
+
// Required wire checksum, not a Resource identity or a reuse key.
|
|
374
|
+
const digest = createHash("sha256").update(input.bytes).digest("hex");
|
|
375
|
+
this.log(`upload started bytes=${input.bytes.byteLength} mime=${input.mediaType}`);
|
|
376
|
+
let policy: Record<string, unknown>;
|
|
377
|
+
const policyStartedAt = Date.now();
|
|
378
|
+
this.log(`upload session request started bytes=${input.bytes.byteLength} mime=${input.mediaType}`);
|
|
379
|
+
try {
|
|
380
|
+
policy = await this.json("/files/uploads", auth, {
|
|
381
|
+
method: "POST",
|
|
382
|
+
headers: { "content-type": "application/json" },
|
|
383
|
+
body: JSON.stringify({
|
|
384
|
+
filename: input.filename ?? `reference.${extension(input.mediaType)}`,
|
|
385
|
+
bytes: input.bytes.byteLength,
|
|
386
|
+
mime_type: input.mediaType,
|
|
387
|
+
purpose: input.purpose ?? "reference",
|
|
388
|
+
sha256: digest,
|
|
389
|
+
head_base64: Buffer.from(input.bytes.subarray(0, 512)).toString("base64"),
|
|
390
|
+
}),
|
|
391
|
+
});
|
|
392
|
+
this.log(`upload session request finished elapsed=${this.elapsed(policyStartedAt)}`);
|
|
393
|
+
} catch (error) {
|
|
394
|
+
this.log(`upload session request failed elapsed=${this.elapsed(policyStartedAt)} reason=${this.safeReason(error)}`);
|
|
395
|
+
throw error;
|
|
396
|
+
}
|
|
397
|
+
assert(policy.upload_mode === "s3_multipart", "HypiHub returned an unknown upload mode");
|
|
398
|
+
const result = await this.uploadDirect(input.bytes, auth, policy);
|
|
399
|
+
this.log(`upload finished bytes=${input.bytes.byteLength} mime=${input.mediaType} elapsed=${this.elapsed(startedAt)}`);
|
|
400
|
+
return result;
|
|
401
|
+
}
|
|
402
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# `@hypit/provider-image-opencv-local`
|
|
2
|
+
|
|
3
|
+
Local OpenCV/NumPy realization of the single `@hypit/raster` capability.
|
|
4
|
+
|
|
5
|
+
Image Transform and Image Compose lower their different author meanings to one closed RasterRequest.
|
|
6
|
+
One Handler stages its declared Resource inputs, and one Python interpreter shares decoding, fit,
|
|
7
|
+
interpolation, alpha and encoding primitives across both variants. It runs in a bounded child process
|
|
8
|
+
and returns one new image Resource. Temporary paths, OpenCV details and diagnostics stay inside the
|
|
9
|
+
Endpoint and never enter the image Product.
|
|
10
|
+
|
|
11
|
+
The Distribution ships the frozen deployment source from `services/image-opencv`. With the Runtime
|
|
12
|
+
Adapter's declared configuration, `programs up` installs it only when the machine Program Home has no
|
|
13
|
+
healthy environment; the Endpoint, program probe and doctor all resolve the shared `.venv`
|
|
14
|
+
interpreter. An explicit `pythonExecutable` selects an operator-managed compatible environment and
|
|
15
|
+
suppresses the managed installation. The Endpoint call and
|
|
16
|
+
inner image work share the configured capacity resources; no separate scheduler is hidden in this package.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@hypit/provider-image-opencv-local",
|
|
3
|
+
"version": "0.0.0-dev",
|
|
4
|
+
"license": "SEE LICENSE IN LICENSE",
|
|
5
|
+
"private": true,
|
|
6
|
+
"type": "module",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": "./src/index.ts"
|
|
9
|
+
},
|
|
10
|
+
"hypit": {
|
|
11
|
+
"activation": "./src/activation.ts"
|
|
12
|
+
},
|
|
13
|
+
"dependencies": {
|
|
14
|
+
"@hypit/artifact": "workspace:*",
|
|
15
|
+
"@hypit/endpoint-kit": "workspace:*",
|
|
16
|
+
"@hypit/protocol": "workspace:*",
|
|
17
|
+
"@hypit/raster": "workspace:*",
|
|
18
|
+
"@hypit/image-opencv-runtime": "workspace:*",
|
|
19
|
+
"@hypit/package-loader-node": "workspace:*",
|
|
20
|
+
"@hypit/runtime-kit": "workspace:*",
|
|
21
|
+
"@hypit/runtime-host-node": "workspace:*"
|
|
22
|
+
},
|
|
23
|
+
"devDependencies": {
|
|
24
|
+
"@hypit/driver-node": "workspace:*",
|
|
25
|
+
"@hypit/image-transform": "workspace:*"
|
|
26
|
+
}
|
|
27
|
+
}
|