@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,1007 @@
|
|
|
1
|
+
import { relative, resolve } from "node:path";
|
|
2
|
+
|
|
3
|
+
import type { CanonicalValue } from "@hypit/protocol";
|
|
4
|
+
|
|
5
|
+
import type { OperationalMachineView } from "./machine-view.js";
|
|
6
|
+
|
|
7
|
+
export type CliTerminal = {
|
|
8
|
+
readonly isTTY: boolean;
|
|
9
|
+
readonly color: boolean;
|
|
10
|
+
readonly unicode: boolean;
|
|
11
|
+
readonly columns: number;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export type CliIo = {
|
|
15
|
+
readonly write: (text: string) => void;
|
|
16
|
+
/** Human progress that may use stderr while `write` remains a stable machine-output channel. */
|
|
17
|
+
readonly writeProgress?: (text: string) => void;
|
|
18
|
+
/** Concrete command shells expose process status without coupling the engine to Node globals. */
|
|
19
|
+
readonly setExitCode?: (code: number) => void;
|
|
20
|
+
/** Interactive secret input supplied by the concrete CLI shell; never echoed or logged. */
|
|
21
|
+
readonly readSecret?: (prompt: string) => Promise<string>;
|
|
22
|
+
readonly terminal?: CliTerminal;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export type CliColorMode = "auto" | "always" | "never";
|
|
26
|
+
|
|
27
|
+
export type CliOutputOptions = {
|
|
28
|
+
readonly json: boolean;
|
|
29
|
+
readonly jsonl?: boolean;
|
|
30
|
+
readonly color: CliColorMode;
|
|
31
|
+
readonly verbose: boolean;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export type CliDiagnostic = {
|
|
35
|
+
readonly severity: "error" | "warning" | "info";
|
|
36
|
+
readonly code: string;
|
|
37
|
+
readonly message: string;
|
|
38
|
+
readonly subject?: string;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
export type DoctorOutput = {
|
|
42
|
+
readonly format: "hypit.cli-doctor@1";
|
|
43
|
+
readonly ok: boolean;
|
|
44
|
+
readonly project: string;
|
|
45
|
+
readonly profile?: string;
|
|
46
|
+
readonly diagnosticCount: number;
|
|
47
|
+
readonly diagnostics: readonly CliDiagnostic[];
|
|
48
|
+
readonly omittedDiagnostics?: number;
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
export type AuthorCheckOutput = {
|
|
52
|
+
readonly format: "hypit.cli-check@1";
|
|
53
|
+
readonly sourceKind: "author";
|
|
54
|
+
readonly ok: true;
|
|
55
|
+
readonly source: string;
|
|
56
|
+
readonly frontend: string;
|
|
57
|
+
readonly units: number;
|
|
58
|
+
readonly assets: number;
|
|
59
|
+
readonly modules: number;
|
|
60
|
+
readonly outputCount: number;
|
|
61
|
+
readonly outputs: readonly {
|
|
62
|
+
readonly name: string;
|
|
63
|
+
readonly type: string;
|
|
64
|
+
}[];
|
|
65
|
+
readonly omittedOutputs?: number;
|
|
66
|
+
readonly details?: {
|
|
67
|
+
readonly modules: readonly string[];
|
|
68
|
+
readonly values: readonly { readonly name: string; readonly type: string }[];
|
|
69
|
+
};
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
export type RunCheckOutput = {
|
|
73
|
+
readonly format: "hypit.cli-check@1";
|
|
74
|
+
readonly sourceKind: "run";
|
|
75
|
+
readonly ok: true;
|
|
76
|
+
readonly run: string;
|
|
77
|
+
readonly author: string;
|
|
78
|
+
readonly frontend: string;
|
|
79
|
+
readonly targetCount: number;
|
|
80
|
+
readonly targets: readonly string[];
|
|
81
|
+
readonly candidates: number;
|
|
82
|
+
readonly satisfactions: number;
|
|
83
|
+
readonly steps?: number;
|
|
84
|
+
readonly unresolvedHistoricalOutputs?: readonly {
|
|
85
|
+
readonly candidate: string;
|
|
86
|
+
readonly build: string;
|
|
87
|
+
readonly output: string;
|
|
88
|
+
}[];
|
|
89
|
+
readonly omittedHistoricalOutputs?: number;
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
export type PlanPreflight = {
|
|
93
|
+
readonly ok: boolean;
|
|
94
|
+
readonly capabilityCount: number;
|
|
95
|
+
readonly capabilities: readonly string[];
|
|
96
|
+
readonly omittedCapabilities?: number;
|
|
97
|
+
readonly diagnosticCount: number;
|
|
98
|
+
readonly diagnostics: readonly CliDiagnostic[];
|
|
99
|
+
readonly omittedDiagnostics?: number;
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
export type PlanProvider = {
|
|
103
|
+
readonly request: string;
|
|
104
|
+
readonly capability: string;
|
|
105
|
+
readonly status: "resolved" | "unresolved" | "unsupported" | "ambiguous";
|
|
106
|
+
readonly endpoint?: string;
|
|
107
|
+
readonly use?: string;
|
|
108
|
+
readonly pricing?: { readonly kind: "page"; readonly url: string } | { readonly kind: "local" };
|
|
109
|
+
readonly endpoints?: readonly string[];
|
|
110
|
+
readonly rejections?: readonly { readonly endpoint: string; readonly message: string }[];
|
|
111
|
+
readonly binding?: string;
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
export type PlanOutput = {
|
|
115
|
+
readonly format: "hypit.cli-plan@1";
|
|
116
|
+
readonly ok: boolean;
|
|
117
|
+
readonly run: string;
|
|
118
|
+
readonly targetCount: number;
|
|
119
|
+
readonly targets: readonly string[];
|
|
120
|
+
readonly steps: number;
|
|
121
|
+
readonly requestCount: number;
|
|
122
|
+
readonly requestIssueCount: number;
|
|
123
|
+
/** Present when a Runtime Profile was selected. */
|
|
124
|
+
readonly providerRequestCount?: number;
|
|
125
|
+
readonly localRequestCount?: number;
|
|
126
|
+
readonly unresolvedRequestCount?: number;
|
|
127
|
+
readonly unsupportedRequestCount?: number;
|
|
128
|
+
readonly choiceCount: number;
|
|
129
|
+
readonly choices: readonly { readonly output: string; readonly candidate: string }[];
|
|
130
|
+
readonly omittedChoices?: number;
|
|
131
|
+
readonly unreached?: readonly { readonly output: string; readonly operation: string }[];
|
|
132
|
+
readonly omittedUnreached?: number;
|
|
133
|
+
/** Present only when a Runtime Profile was selected; the Endpoint and price page behind each capability. */
|
|
134
|
+
readonly providers?: readonly PlanProvider[];
|
|
135
|
+
readonly omittedProviders?: number;
|
|
136
|
+
/** Every external request the Build will make, in step order, with its parameters when known. */
|
|
137
|
+
readonly needs?: readonly PlanNeed[];
|
|
138
|
+
readonly omittedNeeds?: number;
|
|
139
|
+
readonly preflight?: PlanPreflight;
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
export type PricingEntry = PlanProvider & {
|
|
143
|
+
readonly pricingDocuments?: readonly PricingDocument[];
|
|
144
|
+
readonly pricingError?: string;
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
export type PricingDocument = {
|
|
148
|
+
readonly source: string;
|
|
149
|
+
readonly data: CanonicalValue;
|
|
150
|
+
readonly summary?: string;
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
export type PricingOutput = {
|
|
154
|
+
readonly format: "hypit.cli-pricing@1";
|
|
155
|
+
readonly run: string;
|
|
156
|
+
readonly requestCount: number;
|
|
157
|
+
readonly noChargeRequestCount: number;
|
|
158
|
+
readonly groups: readonly (Omit<PricingEntry, "request"> & {
|
|
159
|
+
readonly requests: readonly PlanNeed[];
|
|
160
|
+
})[];
|
|
161
|
+
};
|
|
162
|
+
|
|
163
|
+
export type PlanNeed = {
|
|
164
|
+
readonly request: string;
|
|
165
|
+
readonly step: string;
|
|
166
|
+
readonly port: string;
|
|
167
|
+
readonly capability: string;
|
|
168
|
+
readonly endpoint?: string;
|
|
169
|
+
readonly summary?: {
|
|
170
|
+
readonly fields: Readonly<Record<string, string | number | boolean>>;
|
|
171
|
+
readonly references: Readonly<Record<string, number>>;
|
|
172
|
+
};
|
|
173
|
+
readonly pending: readonly {
|
|
174
|
+
readonly input: string;
|
|
175
|
+
readonly record: string;
|
|
176
|
+
readonly sourceStep?: string;
|
|
177
|
+
readonly kind?: "image" | "video" | "audio" | "other";
|
|
178
|
+
}[];
|
|
179
|
+
readonly issue?: string;
|
|
180
|
+
};
|
|
181
|
+
|
|
182
|
+
export type CliMachineView = OperationalMachineView;
|
|
183
|
+
|
|
184
|
+
export type CliPresentation =
|
|
185
|
+
| {
|
|
186
|
+
readonly kind: "doctor";
|
|
187
|
+
readonly machine: DoctorOutput;
|
|
188
|
+
}
|
|
189
|
+
| {
|
|
190
|
+
readonly kind: "check-author";
|
|
191
|
+
readonly machine: AuthorCheckOutput;
|
|
192
|
+
}
|
|
193
|
+
| {
|
|
194
|
+
readonly kind: "check-run";
|
|
195
|
+
readonly machine: RunCheckOutput;
|
|
196
|
+
}
|
|
197
|
+
| {
|
|
198
|
+
readonly kind: "plan";
|
|
199
|
+
readonly machine: PlanOutput;
|
|
200
|
+
}
|
|
201
|
+
| {
|
|
202
|
+
readonly kind: "pricing";
|
|
203
|
+
readonly machine: PricingOutput;
|
|
204
|
+
/** Optional human display limit, applied after grouping; JSON always contains every group. */
|
|
205
|
+
readonly limit?: number;
|
|
206
|
+
}
|
|
207
|
+
| {
|
|
208
|
+
readonly kind: "operational";
|
|
209
|
+
readonly machine: CliMachineView;
|
|
210
|
+
readonly title: string;
|
|
211
|
+
readonly status?: "success" | "warning" | "error" | "info";
|
|
212
|
+
readonly facts?: readonly (readonly [string, string])[];
|
|
213
|
+
readonly lines?: readonly string[];
|
|
214
|
+
};
|
|
215
|
+
|
|
216
|
+
type Palette = {
|
|
217
|
+
readonly accent: (value: string) => string;
|
|
218
|
+
readonly success: (value: string) => string;
|
|
219
|
+
readonly warning: (value: string) => string;
|
|
220
|
+
readonly error: (value: string) => string;
|
|
221
|
+
readonly dim: (value: string) => string;
|
|
222
|
+
readonly strong: (value: string) => string;
|
|
223
|
+
};
|
|
224
|
+
|
|
225
|
+
const ansi = (open: number, close: number) => (enabled: boolean) => (value: string): string =>
|
|
226
|
+
enabled ? `\u001b[${open}m${value}\u001b[${close}m` : value;
|
|
227
|
+
|
|
228
|
+
function palette(enabled: boolean): Palette {
|
|
229
|
+
return {
|
|
230
|
+
accent: ansi(36, 39)(enabled),
|
|
231
|
+
success: ansi(32, 39)(enabled),
|
|
232
|
+
warning: ansi(33, 39)(enabled),
|
|
233
|
+
error: ansi(31, 39)(enabled),
|
|
234
|
+
dim: ansi(2, 22)(enabled),
|
|
235
|
+
strong: ansi(1, 22)(enabled),
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
function colorEnabled(io: CliIo, mode: CliColorMode): boolean {
|
|
240
|
+
if (mode === "never") return false;
|
|
241
|
+
if (mode === "always") return true;
|
|
242
|
+
return io.terminal?.isTTY === true && io.terminal.color;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
function glyph(io: CliIo, unicode: string, ascii: string): string {
|
|
246
|
+
return io.terminal?.unicode === false ? ascii : unicode;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
function shortPath(path: string): string {
|
|
250
|
+
const absolute = resolve(path);
|
|
251
|
+
const local = relative(process.cwd(), absolute);
|
|
252
|
+
return local.length > 0 && !local.startsWith("..") ? local : absolute;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
function facts(rows: readonly (readonly [string, string])[], colors: Palette): string[] {
|
|
256
|
+
const width = Math.max(...rows.map(([name]) => name.length), 0);
|
|
257
|
+
return rows.map(([name, value]) => ` ${colors.dim(name.padEnd(width))} ${value}`);
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
function heading(status: "success" | "warning" | "error" | "info", text: string, io: CliIo, colors: Palette): string {
|
|
261
|
+
const mark = status === "success"
|
|
262
|
+
? colors.success(glyph(io, "✓", "+"))
|
|
263
|
+
: status === "warning"
|
|
264
|
+
? colors.warning("!")
|
|
265
|
+
: status === "error"
|
|
266
|
+
? colors.error(glyph(io, "×", "x"))
|
|
267
|
+
: colors.accent(glyph(io, "•", "i"));
|
|
268
|
+
return `${mark} ${colors.strong(text)}`;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
function renderDoctor(view: Extract<CliPresentation, { kind: "doctor" }>, io: CliIo, colors: Palette): string {
|
|
272
|
+
const lines = [colors.accent(colors.strong("Hypit Doctor")), ""];
|
|
273
|
+
lines.push(...facts([
|
|
274
|
+
["Project", shortPath(view.machine.project)],
|
|
275
|
+
...(view.machine.profile === undefined ? [] : [["Profile", shortPath(view.machine.profile)] as const]),
|
|
276
|
+
], colors));
|
|
277
|
+
lines.push("");
|
|
278
|
+
if (view.machine.diagnostics.length === 0) {
|
|
279
|
+
lines.push(heading("success", "No problems found", io, colors));
|
|
280
|
+
} else {
|
|
281
|
+
for (const item of view.machine.diagnostics) {
|
|
282
|
+
const status = item.severity === "error" ? "error" : item.severity === "warning" ? "warning" : "info";
|
|
283
|
+
lines.push(heading(status, item.code, io, colors));
|
|
284
|
+
lines.push(` ${item.message}`);
|
|
285
|
+
if (item.subject !== undefined) lines.push(` ${colors.dim("Subject")} ${item.subject}`);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
if ((view.machine.omittedDiagnostics ?? 0) > 0) {
|
|
289
|
+
lines.push(` ${colors.dim(`${view.machine.omittedDiagnostics} more diagnostics · use --limit <count>`)}`);
|
|
290
|
+
}
|
|
291
|
+
lines.push("");
|
|
292
|
+
const summary = `${view.machine.diagnosticCount} diagnostic${view.machine.diagnosticCount === 1 ? "" : "s"}`;
|
|
293
|
+
lines.push(view.machine.ok ? colors.success(summary) : colors.error(summary));
|
|
294
|
+
return `${lines.join("\n")}\n`;
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
function renderAuthorCheck(
|
|
298
|
+
view: Extract<CliPresentation, { kind: "check-author" }>,
|
|
299
|
+
io: CliIo,
|
|
300
|
+
colors: Palette,
|
|
301
|
+
verbose: boolean,
|
|
302
|
+
): string {
|
|
303
|
+
const lines = [heading("success", "Source is valid", io, colors), ""];
|
|
304
|
+
const readable = view.machine.outputs;
|
|
305
|
+
lines.push(...facts([
|
|
306
|
+
["Source", shortPath(view.machine.source)],
|
|
307
|
+
["Outputs", String(view.machine.outputCount)],
|
|
308
|
+
...(verbose ? [
|
|
309
|
+
["Frontend", view.machine.frontend] as const,
|
|
310
|
+
["Modules", String(view.machine.modules)] as const,
|
|
311
|
+
["Units", String(view.machine.units)] as const,
|
|
312
|
+
["Assets", String(view.machine.assets)] as const,
|
|
313
|
+
...(view.machine.details === undefined
|
|
314
|
+
? [] : [["Values", String(view.machine.details.values.length)] as const]),
|
|
315
|
+
] : []),
|
|
316
|
+
], colors));
|
|
317
|
+
if (verbose && readable.length > 0) {
|
|
318
|
+
lines.push("", colors.strong("Outputs"));
|
|
319
|
+
const ordered = [...readable].sort((left, right) => left.name.localeCompare(right.name));
|
|
320
|
+
const width = Math.max(...ordered.map((item) => item.name.length));
|
|
321
|
+
for (const item of ordered) {
|
|
322
|
+
lines.push(` ${colors.accent(item.name.padEnd(width))} ${item.type}`);
|
|
323
|
+
}
|
|
324
|
+
if ((view.machine.omittedOutputs ?? 0) > 0) {
|
|
325
|
+
lines.push(` ${colors.dim(`${view.machine.omittedOutputs} more · use --limit <count>`)}`);
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
if (verbose && view.machine.details !== undefined && view.machine.details.values.length > 0) {
|
|
329
|
+
lines.push("", colors.strong("Values"));
|
|
330
|
+
for (const item of view.machine.details.values) {
|
|
331
|
+
lines.push(` ${colors.accent(item.name)} ${item.type}`);
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
return `${lines.join("\n")}\n`;
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
function renderRunCheck(
|
|
338
|
+
view: Extract<CliPresentation, { kind: "check-run" }>,
|
|
339
|
+
io: CliIo,
|
|
340
|
+
colors: Palette,
|
|
341
|
+
verbose: boolean,
|
|
342
|
+
): string {
|
|
343
|
+
const lines = [heading("success", "Run source is valid", io, colors), ""];
|
|
344
|
+
const reuse = (view.machine.unresolvedHistoricalOutputs?.length ?? 0)
|
|
345
|
+
+ (view.machine.omittedHistoricalOutputs ?? 0);
|
|
346
|
+
const targetSummary = view.machine.targets.length === 0
|
|
347
|
+
? String(view.machine.targetCount)
|
|
348
|
+
: view.machine.targets.join(", ")
|
|
349
|
+
+ (view.machine.targets.length < view.machine.targetCount
|
|
350
|
+
? ` (+${view.machine.targetCount - view.machine.targets.length})`
|
|
351
|
+
: "");
|
|
352
|
+
lines.push(...facts([
|
|
353
|
+
["Run", shortPath(view.machine.run)],
|
|
354
|
+
["Targets", targetSummary],
|
|
355
|
+
...(reuse === 0 ? [] : [["Reuse", `${reuse} historical Output${reuse === 1 ? "" : "s"}`] as const]),
|
|
356
|
+
...(verbose ? [
|
|
357
|
+
["Author", shortPath(view.machine.author)] as const,
|
|
358
|
+
["Frontend", view.machine.frontend] as const,
|
|
359
|
+
["Candidates", String(view.machine.candidates)] as const,
|
|
360
|
+
["Satisfactions", String(view.machine.satisfactions)] as const,
|
|
361
|
+
...(view.machine.steps === undefined ? [] : [["Steps", String(view.machine.steps)] as const]),
|
|
362
|
+
] : []),
|
|
363
|
+
], colors));
|
|
364
|
+
const unresolved = view.machine.unresolvedHistoricalOutputs ?? [];
|
|
365
|
+
if (verbose && unresolved.length > 0) {
|
|
366
|
+
lines.push("", colors.strong("Historical reuse"));
|
|
367
|
+
for (const item of unresolved) lines.push(` ${item.candidate} ← ${item.build}/${item.output}`);
|
|
368
|
+
if ((view.machine.omittedHistoricalOutputs ?? 0) > 0) {
|
|
369
|
+
lines.push(` ${colors.dim(`${view.machine.omittedHistoricalOutputs} more · use --limit <count>`)}`);
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
return `${lines.join("\n")}\n`;
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
/** `@hypit/seedance@1#seedance-2-mini` → `@hypit/seedance#seedance-2-mini`; the module version is verbose detail. */
|
|
376
|
+
function capabilityLabel(name: string): string {
|
|
377
|
+
return name.replace(/@[^@#]+#/u, "#");
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
/** The author-facing part of a step id: the component and operation, without the Source path. */
|
|
381
|
+
function stepLabel(step: string): string {
|
|
382
|
+
let decoded = step;
|
|
383
|
+
try { decoded = decodeURIComponent(step); } catch { /* keep the raw id */ }
|
|
384
|
+
const marker = "::component::";
|
|
385
|
+
const at = decoded.lastIndexOf(marker);
|
|
386
|
+
return at === -1 ? decoded : decoded.slice(at + marker.length);
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
const MEASURE = /^(\d+) (words|chars)$/u;
|
|
390
|
+
|
|
391
|
+
/** Text lengths are ranged across a group rather than splitting otherwise identical requests. */
|
|
392
|
+
function groupKey(need: PlanNeed): string {
|
|
393
|
+
const pending = need.pending.map((item) => item.kind ?? "value").sort().join(",");
|
|
394
|
+
if (need.summary === undefined) return `?${pending}|${need.issue ?? ""}`;
|
|
395
|
+
const fields = Object.entries(need.summary.fields)
|
|
396
|
+
.map(([name, value]) => {
|
|
397
|
+
const measured = typeof value === "string" ? MEASURE.exec(value) : null;
|
|
398
|
+
return measured === null ? `${name}=${String(value)}` : `${name}=<${measured[2]}>`;
|
|
399
|
+
});
|
|
400
|
+
const references = Object.entries(need.summary.references).map(([kind, count]) => `${kind}=${count}`);
|
|
401
|
+
return [...fields, "|", ...references, "|", pending, "|", need.issue ?? ""].join(" ");
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
function needSummaryText(needs: readonly PlanNeed[]): string {
|
|
405
|
+
const first = needs[0]!;
|
|
406
|
+
const parts: string[] = [];
|
|
407
|
+
for (const [name, value] of Object.entries(first.summary?.fields ?? {})) {
|
|
408
|
+
const measured = typeof value === "string" ? MEASURE.exec(value) : null;
|
|
409
|
+
if (measured !== null) {
|
|
410
|
+
const unit = measured[2]!;
|
|
411
|
+
const counts = needs.map((need) => Number(MEASURE.exec(String(need.summary?.fields[name] ?? `0 ${unit}`))?.[1] ?? 0));
|
|
412
|
+
const low = Math.min(...counts);
|
|
413
|
+
const high = Math.max(...counts);
|
|
414
|
+
parts.push(`${name} ${low === high ? low : `${low}–${high}`} ${unit}`);
|
|
415
|
+
} else if (typeof value === "boolean") {
|
|
416
|
+
parts.push(value ? name : `no ${name}`);
|
|
417
|
+
} else {
|
|
418
|
+
parts.push(`${name} ${value}`);
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
const references = Object.entries(first.summary?.references ?? {}).sort(([left], [right]) => left.localeCompare(right))
|
|
422
|
+
.map(([kind, count]) => `${count} ${kind}`);
|
|
423
|
+
if (references.length > 0) parts.push(`${references.join(" + ")} reference${references.length === 1 && references[0]!.startsWith("1 ") ? "" : "s"}`);
|
|
424
|
+
const pendingCount = first.pending.length;
|
|
425
|
+
if (pendingCount > 0) parts.push(`${pendingCount === 1 ? "input" : `${pendingCount} inputs`} produced during Build`);
|
|
426
|
+
if (first.issue !== undefined) parts.push(`could not inspect: ${first.issue}`);
|
|
427
|
+
return parts.length === 0 ? "no parameters" : parts.join(" · ");
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
/** One line per distinct request shape, counted; the step names when only one request has that shape. */
|
|
431
|
+
function groupedNeedLines(needs: readonly PlanNeed[], colors: Palette, verbose: boolean): string[] {
|
|
432
|
+
const groups = new Map<string, PlanNeed[]>();
|
|
433
|
+
for (const need of needs) {
|
|
434
|
+
const key = groupKey(need);
|
|
435
|
+
groups.set(key, [...(groups.get(key) ?? []), need]);
|
|
436
|
+
}
|
|
437
|
+
return [...groups.values()].map((group) => {
|
|
438
|
+
const who = group.length === 1 || verbose ? colors.dim(group.map((need) => stepLabel(need.step)).join(", ")) : "";
|
|
439
|
+
const count = `×${group.length}`.padStart(4);
|
|
440
|
+
return ` ${colors.dim(count)} ${needSummaryText(group)}${who.length === 0 ? "" : ` ${who}`}`;
|
|
441
|
+
});
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
function providerGroupKey(provider: PlanProvider): string {
|
|
445
|
+
return JSON.stringify({
|
|
446
|
+
capability: provider.capability,
|
|
447
|
+
status: provider.status,
|
|
448
|
+
endpoint: provider.endpoint,
|
|
449
|
+
use: provider.use,
|
|
450
|
+
pricing: provider.pricing,
|
|
451
|
+
endpoints: provider.endpoints,
|
|
452
|
+
rejections: provider.rejections,
|
|
453
|
+
binding: provider.binding,
|
|
454
|
+
});
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
function providerRejectionText(provider: Pick<PlanProvider, "rejections">, verbose: boolean): string {
|
|
458
|
+
const rejections = provider.rejections ?? [];
|
|
459
|
+
if (rejections.length === 0) return "no configured Endpoint accepts this request";
|
|
460
|
+
const shown = verbose ? rejections : rejections.slice(0, 1);
|
|
461
|
+
return shown.map((rejection) => `${rejection.endpoint}: ${rejection.message}`).join("; ")
|
|
462
|
+
+ (shown.length === rejections.length ? "" : ` · ${rejections.length - shown.length} more Endpoint rejection${rejections.length - shown.length === 1 ? "" : "s"}`);
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
function renderPlan(
|
|
466
|
+
view: Extract<CliPresentation, { kind: "plan" }>,
|
|
467
|
+
io: CliIo,
|
|
468
|
+
colors: Palette,
|
|
469
|
+
verbose: boolean,
|
|
470
|
+
): string {
|
|
471
|
+
const lines = [heading(view.machine.ok ? "success" : "error",
|
|
472
|
+
view.machine.ok ? "Build plan is valid" : "Build plan needs attention", io, colors), ""];
|
|
473
|
+
const targetSummary = view.machine.targets.length === 0
|
|
474
|
+
? String(view.machine.targetCount)
|
|
475
|
+
: view.machine.targets.join(", ")
|
|
476
|
+
+ (view.machine.targets.length < view.machine.targetCount
|
|
477
|
+
? ` (+${view.machine.targetCount - view.machine.targets.length})`
|
|
478
|
+
: "");
|
|
479
|
+
lines.push(...facts([
|
|
480
|
+
["Run", shortPath(view.machine.run)],
|
|
481
|
+
["Targets", targetSummary],
|
|
482
|
+
["Requests", String(view.machine.requestCount)],
|
|
483
|
+
...(view.machine.requestIssueCount === 0 ? [] : [["Request issues", String(view.machine.requestIssueCount)] as const]),
|
|
484
|
+
...((view.machine.providerRequestCount ?? 0) === 0 ? [] : [["Provider requests", String(view.machine.providerRequestCount)] as const]),
|
|
485
|
+
...((view.machine.localRequestCount ?? 0) === 0 ? [] : [["Local requests", String(view.machine.localRequestCount)] as const]),
|
|
486
|
+
...((view.machine.unsupportedRequestCount ?? 0) === 0 ? [] : [["Unsupported", String(view.machine.unsupportedRequestCount)] as const]),
|
|
487
|
+
...((view.machine.unresolvedRequestCount ?? 0) === 0 ? [] : [["Unresolved", String(view.machine.unresolvedRequestCount)] as const]),
|
|
488
|
+
...(view.machine.preflight === undefined ? [] : [[
|
|
489
|
+
"Preflight", view.machine.preflight.ok ? "ready" : "needs attention",
|
|
490
|
+
] as const]),
|
|
491
|
+
...(verbose ? [["Steps", String(view.machine.steps)] as const] : []),
|
|
492
|
+
], colors));
|
|
493
|
+
if (view.machine.providers !== undefined) {
|
|
494
|
+
if (view.machine.providers.length > 0) lines.push("", colors.strong("Providers and price pages"));
|
|
495
|
+
const groups = new Map<string, PlanProvider[]>();
|
|
496
|
+
for (const provider of view.machine.providers) {
|
|
497
|
+
const key = providerGroupKey(provider);
|
|
498
|
+
groups.set(key, [...(groups.get(key) ?? []), provider]);
|
|
499
|
+
}
|
|
500
|
+
for (const group of groups.values()) {
|
|
501
|
+
const item = group[0]!;
|
|
502
|
+
const requestIssue = (view.machine.needs ?? [])
|
|
503
|
+
.find((need) => need.request === item.request)?.issue;
|
|
504
|
+
const where = requestIssue !== undefined
|
|
505
|
+
? colors.error("request is not completely described before Build")
|
|
506
|
+
: item.status === "resolved"
|
|
507
|
+
? `${item.endpoint ?? ""} ${colors.dim(`(${item.use ?? "?"})${item.binding === undefined ? "" : ", bound in the Profile"}`)}`
|
|
508
|
+
: item.status === "ambiguous"
|
|
509
|
+
? colors.warning(`${(item.endpoints ?? []).join(", ")} all offer it; add "bindings": { "${item.capability}": "<instance>" } to the Profile`)
|
|
510
|
+
: item.status === "unsupported"
|
|
511
|
+
? colors.error(providerRejectionText(item, verbose))
|
|
512
|
+
: item.binding === undefined
|
|
513
|
+
? colors.error("no selected Endpoint accepts this request")
|
|
514
|
+
: colors.error(`bound to ${item.binding}, which does not offer it`);
|
|
515
|
+
const price = item.pricing === undefined
|
|
516
|
+
? (item.status === "resolved" ? colors.warning("price source unknown") : undefined)
|
|
517
|
+
: item.pricing.kind === "local"
|
|
518
|
+
? colors.dim("local, no Provider charge")
|
|
519
|
+
: item.pricing.url;
|
|
520
|
+
lines.push(` ${colors.accent(verbose ? item.capability : capabilityLabel(item.capability))}`);
|
|
521
|
+
lines.push(` ${where}${price === undefined ? "" : ` · ${price}`}`);
|
|
522
|
+
const requests = new Set(group.map((provider) => provider.request));
|
|
523
|
+
lines.push(...groupedNeedLines((view.machine.needs ?? []).filter((need) => requests.has(need.request)), colors, verbose));
|
|
524
|
+
}
|
|
525
|
+
if ((view.machine.omittedProviders ?? 0) > 0) {
|
|
526
|
+
lines.push(` ${colors.dim(`${view.machine.omittedProviders} more requests · use --limit <count>`)}`);
|
|
527
|
+
}
|
|
528
|
+
} else if (view.machine.requestCount > 0) {
|
|
529
|
+
const byCapability = new Map<string, PlanNeed[]>();
|
|
530
|
+
for (const need of view.machine.needs ?? []) {
|
|
531
|
+
byCapability.set(need.capability, [...(byCapability.get(need.capability) ?? []), need]);
|
|
532
|
+
}
|
|
533
|
+
if (byCapability.size > 0) lines.push("", colors.strong("Requests"));
|
|
534
|
+
for (const [capability, needs] of byCapability) {
|
|
535
|
+
lines.push(` ${colors.accent(verbose ? capability : capabilityLabel(capability))}`);
|
|
536
|
+
lines.push(...groupedNeedLines(needs, colors, verbose));
|
|
537
|
+
}
|
|
538
|
+
lines.push("", colors.dim("Pass --runtime <profile> to see the Endpoint and price page behind each request."));
|
|
539
|
+
}
|
|
540
|
+
const unreached = view.machine.unreached ?? [];
|
|
541
|
+
if (verbose && unreached.length > 0) {
|
|
542
|
+
lines.push("", colors.strong("Declared but not reached"));
|
|
543
|
+
const width = Math.max(...unreached.map((item) => item.output.length));
|
|
544
|
+
for (const item of unreached) {
|
|
545
|
+
lines.push(` ${colors.accent(item.output.padEnd(width))} ${colors.dim(item.operation)}`);
|
|
546
|
+
}
|
|
547
|
+
if ((view.machine.omittedUnreached ?? 0) > 0) {
|
|
548
|
+
lines.push(` ${colors.dim(`${view.machine.omittedUnreached} more · use --limit <count>`)}`);
|
|
549
|
+
}
|
|
550
|
+
}
|
|
551
|
+
if (view.machine.preflight !== undefined
|
|
552
|
+
&& (view.machine.preflight.diagnostics.length > 0
|
|
553
|
+
|| (verbose && view.machine.preflight.capabilities.length > 0))) {
|
|
554
|
+
lines.push("", colors.strong("Runtime preflight"));
|
|
555
|
+
if (verbose) for (const capability of view.machine.preflight.capabilities) lines.push(` ${colors.accent(capability)}`);
|
|
556
|
+
if (verbose && (view.machine.preflight.omittedCapabilities ?? 0) > 0) {
|
|
557
|
+
lines.push(` ${colors.dim(`${view.machine.preflight.omittedCapabilities} more capabilities · use --limit <count>`)}`);
|
|
558
|
+
}
|
|
559
|
+
if (verbose && view.machine.preflight.diagnostics.length === 0) {
|
|
560
|
+
lines.push(` ${colors.success(glyph(io, "✓", "+"))} required deployment slice is ready`);
|
|
561
|
+
} else {
|
|
562
|
+
for (const item of view.machine.preflight.diagnostics) {
|
|
563
|
+
const mark = item.severity === "error" ? colors.error(glyph(io, "×", "x")) : colors.warning("!");
|
|
564
|
+
lines.push(` ${mark} ${item.code}: ${item.message}`);
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
if (verbose) {
|
|
568
|
+
const capabilityCount = view.machine.preflight.capabilityCount;
|
|
569
|
+
lines.push(` ${colors.dim(`${capabilityCount} demanded Endpoint ${capabilityCount === 1 ? "capability" : "capabilities"} checked.`)}`);
|
|
570
|
+
}
|
|
571
|
+
}
|
|
572
|
+
if (view.machine.choices.length > 0) {
|
|
573
|
+
lines.push("", colors.strong("Run choices"));
|
|
574
|
+
for (const selection of view.machine.choices) {
|
|
575
|
+
const status = colors.success(glyph(io, "✓", "+"));
|
|
576
|
+
lines.push(` ${status} ${colors.accent(selection.output)} ← ${selection.candidate}`);
|
|
577
|
+
}
|
|
578
|
+
if ((view.machine.omittedChoices ?? 0) > 0) {
|
|
579
|
+
lines.push(` ${colors.dim(`${view.machine.omittedChoices} more choices · use --limit <count>`)}`);
|
|
580
|
+
}
|
|
581
|
+
}
|
|
582
|
+
return `${lines.join("\n")}\n`;
|
|
583
|
+
}
|
|
584
|
+
|
|
585
|
+
function pricingDocumentLines(document: PricingDocument, colors: Palette, verbose: boolean): string[] {
|
|
586
|
+
const rendered = !verbose && document.summary !== undefined
|
|
587
|
+
? document.summary : JSON.stringify(document.data, undefined, 2);
|
|
588
|
+
return [
|
|
589
|
+
` ${colors.dim("Source")} ${document.source}`,
|
|
590
|
+
...rendered.split("\n").map((line) => ` ${line}`),
|
|
591
|
+
];
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
/** Factor shared request parameters without losing the combinations of the remaining parameters. */
|
|
595
|
+
function pricingNeedLines(needs: readonly PlanNeed[], colors: Palette, verbose: boolean): string[] {
|
|
596
|
+
if (verbose || needs.length < 2) return groupedNeedLines(needs, colors, verbose);
|
|
597
|
+
const first = needs[0]!;
|
|
598
|
+
const sharedFields = Object.fromEntries(Object.entries(first.summary?.fields ?? {}).filter(([key, value]) => {
|
|
599
|
+
const measured = typeof value === "string" ? MEASURE.exec(value) : null;
|
|
600
|
+
return needs.every((need) => {
|
|
601
|
+
const other = need.summary?.fields[key];
|
|
602
|
+
return other === value || (measured !== null && typeof other === "string"
|
|
603
|
+
&& MEASURE.exec(other)?.[2] === measured[2]);
|
|
604
|
+
});
|
|
605
|
+
}));
|
|
606
|
+
const sharedReferences = needs.every((need) =>
|
|
607
|
+
JSON.stringify(need.summary?.references ?? {}) === JSON.stringify(first.summary?.references ?? {}));
|
|
608
|
+
const sharedPending = needs.every((need) =>
|
|
609
|
+
JSON.stringify(need.pending.map((input) => input.kind).sort())
|
|
610
|
+
=== JSON.stringify(first.pending.map((input) => input.kind).sort()));
|
|
611
|
+
const common = needs.map(({ issue: _issue, ...need }) => ({
|
|
612
|
+
...need,
|
|
613
|
+
summary: {
|
|
614
|
+
fields: Object.fromEntries(Object.keys(sharedFields).map((key) => [key, need.summary!.fields[key]!])),
|
|
615
|
+
references: sharedReferences ? need.summary?.references ?? {} : {},
|
|
616
|
+
},
|
|
617
|
+
pending: sharedPending ? need.pending : [],
|
|
618
|
+
}));
|
|
619
|
+
const varying = needs.map((need) => ({
|
|
620
|
+
...need,
|
|
621
|
+
summary: {
|
|
622
|
+
fields: Object.fromEntries(Object.entries(need.summary?.fields ?? {}).filter(([key]) => !Object.hasOwn(sharedFields, key))),
|
|
623
|
+
references: sharedReferences ? {} : need.summary?.references ?? {},
|
|
624
|
+
},
|
|
625
|
+
pending: sharedPending ? [] : need.pending,
|
|
626
|
+
}));
|
|
627
|
+
const hasParameters = (need: PlanNeed) => Object.keys(need.summary?.fields ?? {}).length > 0
|
|
628
|
+
|| Object.keys(need.summary?.references ?? {}).length > 0 || need.pending.length > 0 || need.issue !== undefined;
|
|
629
|
+
return [
|
|
630
|
+
...(common.some(hasParameters) ? [` ${needSummaryText(common)}`] : []),
|
|
631
|
+
...(varying.some(hasParameters) ? groupedNeedLines(varying, colors, false) : []),
|
|
632
|
+
];
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
/** Group Provider facts without interpreting their documents or inferring charges from model names. */
|
|
636
|
+
export function createPricingOutput(
|
|
637
|
+
run: string,
|
|
638
|
+
entries: readonly PricingEntry[],
|
|
639
|
+
needs: readonly PlanNeed[],
|
|
640
|
+
includeNoCharge = false,
|
|
641
|
+
): PricingOutput {
|
|
642
|
+
const needsByRequest = new Map(needs.map((need) => [need.request, need]));
|
|
643
|
+
const groups = new Map<string, Omit<PricingEntry, "request"> & { requests: PlanNeed[] }>();
|
|
644
|
+
let noChargeRequestCount = 0;
|
|
645
|
+
for (const { request, ...entry } of entries) {
|
|
646
|
+
if (entry.status === "resolved" && entry.pricing?.kind === "local") {
|
|
647
|
+
noChargeRequestCount++;
|
|
648
|
+
if (!includeNoCharge) continue;
|
|
649
|
+
}
|
|
650
|
+
const key = JSON.stringify(entry);
|
|
651
|
+
let group = groups.get(key);
|
|
652
|
+
if (group === undefined) {
|
|
653
|
+
group = { ...entry, requests: [] };
|
|
654
|
+
groups.set(key, group);
|
|
655
|
+
}
|
|
656
|
+
const need = needsByRequest.get(request);
|
|
657
|
+
if (need !== undefined) group.requests.push(need);
|
|
658
|
+
}
|
|
659
|
+
return {
|
|
660
|
+
format: "hypit.cli-pricing@1", run, requestCount: entries.length,
|
|
661
|
+
noChargeRequestCount, groups: [...groups.values()],
|
|
662
|
+
};
|
|
663
|
+
}
|
|
664
|
+
|
|
665
|
+
function renderPricing(
|
|
666
|
+
view: Extract<CliPresentation, { kind: "pricing" }>,
|
|
667
|
+
io: CliIo,
|
|
668
|
+
colors: Palette,
|
|
669
|
+
verbose: boolean,
|
|
670
|
+
): string {
|
|
671
|
+
const machine = view.machine;
|
|
672
|
+
const lines = [heading("info", "Provider pricing information", io, colors), ""];
|
|
673
|
+
lines.push(...facts([
|
|
674
|
+
["Run", shortPath(machine.run)],
|
|
675
|
+
["Requests", String(machine.requestCount)],
|
|
676
|
+
["No Provider charge", `${machine.noChargeRequestCount} requests`],
|
|
677
|
+
], colors));
|
|
678
|
+
if (machine.noChargeRequestCount > 0 && !verbose) {
|
|
679
|
+
lines.push(` ${colors.dim("No-charge request details: --verbose")}`);
|
|
680
|
+
}
|
|
681
|
+
if (machine.groups.length > 0) lines.push("", colors.strong("Requests and Provider rates"));
|
|
682
|
+
const shown = view.limit === undefined ? machine.groups : machine.groups.slice(0, view.limit);
|
|
683
|
+
for (const item of shown) {
|
|
684
|
+
const selected = item.status === "resolved"
|
|
685
|
+
? `${item.endpoint ?? ""} ${colors.dim(`(${item.use ?? "?"})`)}`
|
|
686
|
+
: item.status === "ambiguous"
|
|
687
|
+
? colors.error(`several Endpoints: ${(item.endpoints ?? []).join(", ")}`)
|
|
688
|
+
: item.status === "unsupported"
|
|
689
|
+
? colors.error(providerRejectionText(item, verbose))
|
|
690
|
+
: colors.error("no selected Endpoint accepts this request");
|
|
691
|
+
lines.push(` ${colors.accent(verbose ? item.capability : capabilityLabel(item.capability))}`);
|
|
692
|
+
lines.push(` ${selected} · ${item.requests.length} request${item.requests.length === 1 ? "" : "s"}`);
|
|
693
|
+
lines.push(...pricingNeedLines(item.requests, colors, verbose));
|
|
694
|
+
if (item.pricing?.kind === "local") {
|
|
695
|
+
lines.push(` ${colors.dim("local, no Provider charge")}`);
|
|
696
|
+
}
|
|
697
|
+
for (const document of item.pricingDocuments ?? []) {
|
|
698
|
+
lines.push(...pricingDocumentLines(document, colors, verbose));
|
|
699
|
+
}
|
|
700
|
+
if (item.pricingError !== undefined) {
|
|
701
|
+
lines.push(` ${colors.warning(`Could not read Provider pricing: ${item.pricingError}`)}`);
|
|
702
|
+
}
|
|
703
|
+
if ((item.pricingDocuments?.length ?? 0) === 0 && item.pricing?.kind === "page") {
|
|
704
|
+
lines.push(` ${colors.dim("Pricing page")} ${item.pricing.url}`);
|
|
705
|
+
} else if ((item.pricingDocuments?.length ?? 0) === 0 && item.pricing === undefined
|
|
706
|
+
&& item.status === "resolved" && item.pricingError === undefined) {
|
|
707
|
+
lines.push(` ${colors.warning("Pricing unknown: no pricing source declared by this Provider")}`);
|
|
708
|
+
}
|
|
709
|
+
lines.push("");
|
|
710
|
+
}
|
|
711
|
+
if (shown.length < machine.groups.length) {
|
|
712
|
+
lines.push(` ${colors.dim(`${machine.groups.length - shown.length} more groups · omit --limit or use --json for all groups`)}`);
|
|
713
|
+
}
|
|
714
|
+
return `${lines.join("\n")}\n`;
|
|
715
|
+
}
|
|
716
|
+
|
|
717
|
+
function renderOperational(
|
|
718
|
+
view: Extract<CliPresentation, { kind: "operational" }>,
|
|
719
|
+
io: CliIo,
|
|
720
|
+
colors: Palette,
|
|
721
|
+
): string {
|
|
722
|
+
const lines = [heading(view.status ?? "info", view.title, io, colors)];
|
|
723
|
+
if ((view.facts?.length ?? 0) > 0) lines.push("", ...facts(view.facts!, colors));
|
|
724
|
+
if ((view.lines?.length ?? 0) > 0) lines.push("", ...view.lines!);
|
|
725
|
+
return `${lines.join("\n")}\n`;
|
|
726
|
+
}
|
|
727
|
+
|
|
728
|
+
export function writeCliOutput(
|
|
729
|
+
io: CliIo,
|
|
730
|
+
options: CliOutputOptions,
|
|
731
|
+
presentation: CliPresentation,
|
|
732
|
+
): void {
|
|
733
|
+
if (options.json) {
|
|
734
|
+
io.write(`${JSON.stringify(presentation.machine, null, options.jsonl === true ? 0 : 2)}\n`);
|
|
735
|
+
return;
|
|
736
|
+
}
|
|
737
|
+
const colors = palette(colorEnabled(io, options.color));
|
|
738
|
+
const output = presentation.kind === "doctor"
|
|
739
|
+
? renderDoctor(presentation, io, colors)
|
|
740
|
+
: presentation.kind === "check-author"
|
|
741
|
+
? renderAuthorCheck(presentation, io, colors, options.verbose)
|
|
742
|
+
: presentation.kind === "check-run"
|
|
743
|
+
? renderRunCheck(presentation, io, colors, options.verbose)
|
|
744
|
+
: presentation.kind === "plan"
|
|
745
|
+
? renderPlan(presentation, io, colors, options.verbose)
|
|
746
|
+
: presentation.kind === "pricing"
|
|
747
|
+
? renderPricing(presentation, io, colors, options.verbose)
|
|
748
|
+
: renderOperational(presentation, io, colors);
|
|
749
|
+
io.write(output);
|
|
750
|
+
}
|
|
751
|
+
|
|
752
|
+
function commandHelp(topic: string, colors: Palette): readonly string[] | undefined {
|
|
753
|
+
const common = [
|
|
754
|
+
"",
|
|
755
|
+
colors.strong("Output"),
|
|
756
|
+
" --json stable machine view",
|
|
757
|
+
" --verbose add bounded operational detail",
|
|
758
|
+
" --color auto|always|never control ANSI color",
|
|
759
|
+
" --debug include internal trace frames on failure",
|
|
760
|
+
"",
|
|
761
|
+
];
|
|
762
|
+
const topics: Readonly<Record<string, readonly string[]>> = {
|
|
763
|
+
check: [
|
|
764
|
+
colors.accent(colors.strong("hypit check")),
|
|
765
|
+
colors.dim("Validate one self-described Author Source or Run Source without executing it."),
|
|
766
|
+
"",
|
|
767
|
+
" hypit check <source> [--workspace <workspace>] [--asset-root <directory>]",
|
|
768
|
+
],
|
|
769
|
+
doctor: [
|
|
770
|
+
colors.accent(colors.strong("hypit doctor")),
|
|
771
|
+
colors.dim("Diagnose project Results and, when selected or supplied, one Runtime Profile."),
|
|
772
|
+
"",
|
|
773
|
+
" hypit doctor [<runtime-profile>] [--workspace <project>]",
|
|
774
|
+
" Without a Runtime Profile, checks only the project's selected Result Store.",
|
|
775
|
+
],
|
|
776
|
+
plan: [
|
|
777
|
+
colors.accent(colors.strong("hypit plan")),
|
|
778
|
+
colors.dim("Freeze the demanded subgraph and expose explicit Run choices and every external Need."),
|
|
779
|
+
"",
|
|
780
|
+
" hypit plan <run-source> [--runtime <profile>] [--workspace <workspace>] [--asset-root <directory>]",
|
|
781
|
+
"",
|
|
782
|
+
"With --runtime, plan also preflights only the demanded deployment slice and names the Provider",
|
|
783
|
+
"and price page behind each external request.",
|
|
784
|
+
"Planning never starts external work.",
|
|
785
|
+
],
|
|
786
|
+
pricing: [
|
|
787
|
+
colors.accent(colors.strong("hypit pricing")),
|
|
788
|
+
colors.dim("Read current pricing material from the selected Providers for the requests in one Run."),
|
|
789
|
+
"",
|
|
790
|
+
" hypit pricing <run-source> [--runtime <profile>] [--workspace <workspace>] [--asset-root <directory>]",
|
|
791
|
+
"",
|
|
792
|
+
"Pricing is an explicit read-only network operation. It starts no Build and submits no generation.",
|
|
793
|
+
"Matching requests share their parameters and Provider rates, with source URLs.",
|
|
794
|
+
"Provider summaries appear when available; --verbose and --json retain the full documents.",
|
|
795
|
+
"Explicit no-charge requests are summarized; --verbose includes their details.",
|
|
796
|
+
"All groups are shown by default. --limit <count> limits human groups; --json always includes all groups.",
|
|
797
|
+
"Hypit calculates no total.",
|
|
798
|
+
],
|
|
799
|
+
build: [
|
|
800
|
+
colors.accent(colors.strong("hypit build")),
|
|
801
|
+
colors.dim("Submit one durable Build and ensure its selected Runtime Worker is available."),
|
|
802
|
+
"",
|
|
803
|
+
" hypit build <run-source> [--title <text>] [--runtime <profile>] [--workspace <workspace>] [--asset-root <directory>] [--follow]",
|
|
804
|
+
"",
|
|
805
|
+
" --title <text> give this Result a human-facing title",
|
|
806
|
+
" --follow observe the Build; the Worker still owns execution",
|
|
807
|
+
" --max-wait-ms <ms> bound startup or follow waiting",
|
|
808
|
+
],
|
|
809
|
+
runtime: [
|
|
810
|
+
colors.accent(colors.strong("hypit runtime")),
|
|
811
|
+
colors.dim("Select a project Runtime Profile, then operate the local Build Worker."),
|
|
812
|
+
"",
|
|
813
|
+
" hypit runtime init [<profile>] [--workspace <project>] create and select a starter Profile",
|
|
814
|
+
" hypit runtime use <profile> [--workspace <project>] select the project Profile",
|
|
815
|
+
" hypit runtime unset [--workspace <project>] remove only that selection",
|
|
816
|
+
" hypit runtime up [<profile>] prepare local packages and programs, then start the Worker",
|
|
817
|
+
" hypit runtime status [<profile>] inspect the local Worker, active Builds and programs",
|
|
818
|
+
" hypit runtime logs [<profile>] [--lines <count>]",
|
|
819
|
+
" hypit runtime down [<profile>] stop the Worker; external programs keep running",
|
|
820
|
+
"",
|
|
821
|
+
"The project is resolved first. Selection is read only from that project's .hypit/runtime.",
|
|
822
|
+
"No Profile filename discovery or parent-project inheritance is performed.",
|
|
823
|
+
"Remote Endpoints such as HypiHub are not started by this command; use doctor to test them.",
|
|
824
|
+
],
|
|
825
|
+
packages: [
|
|
826
|
+
colors.accent(colors.strong("hypit packages")),
|
|
827
|
+
colors.dim("Inspect or install one pinned upstream npm package in the shared machine home."),
|
|
828
|
+
"",
|
|
829
|
+
" hypit packages status <package@exact-version>",
|
|
830
|
+
" hypit packages install <package@exact-version>",
|
|
831
|
+
"",
|
|
832
|
+
"The package is reused by every project and later session on this machine.",
|
|
833
|
+
"npm owns the ordinary package.json; Hypit creates no package lock or receipt.",
|
|
834
|
+
],
|
|
835
|
+
programs: [
|
|
836
|
+
colors.accent(colors.strong("hypit programs")),
|
|
837
|
+
colors.dim("Prepare and operate external programs declared by Endpoints in one Runtime Profile."),
|
|
838
|
+
"",
|
|
839
|
+
" hypit programs up [<profile>] [--max-wait-ms <ms>]",
|
|
840
|
+
" hypit programs status [<profile>]",
|
|
841
|
+
" hypit programs down [<profile>]",
|
|
842
|
+
],
|
|
843
|
+
activity: [
|
|
844
|
+
colors.accent(colors.strong("hypit activity")),
|
|
845
|
+
colors.dim("Inspect active Builds and Provider pool capacity."),
|
|
846
|
+
"",
|
|
847
|
+
" hypit activity [--runtime <profile>] [--watch]",
|
|
848
|
+
" hypit activity [--runtime <profile>] --watch --jsonl",
|
|
849
|
+
],
|
|
850
|
+
paths: [
|
|
851
|
+
colors.accent(colors.strong("hypit paths")),
|
|
852
|
+
colors.dim("Show project, Runtime and host state locations without creating them."),
|
|
853
|
+
"",
|
|
854
|
+
" hypit paths [--runtime <profile>]",
|
|
855
|
+
],
|
|
856
|
+
builds: [
|
|
857
|
+
colors.accent(colors.strong("hypit builds")),
|
|
858
|
+
colors.dim("List project-owned Build Results without opening a Runtime."),
|
|
859
|
+
"",
|
|
860
|
+
" hypit builds [--workspace <project>] [--limit <count>] [--before <build-id>]",
|
|
861
|
+
],
|
|
862
|
+
status: [
|
|
863
|
+
colors.accent(colors.strong("hypit status")),
|
|
864
|
+
colors.dim("Show one Build now, or keep watching it without owning execution."),
|
|
865
|
+
"",
|
|
866
|
+
" hypit status <build-id> [--runtime <profile>] [--watch]",
|
|
867
|
+
" --watch observe until a Result outcome or operator attention",
|
|
868
|
+
" --max-wait-ms <ms> stop watching after a bounded wait",
|
|
869
|
+
],
|
|
870
|
+
inspect: [
|
|
871
|
+
colors.accent(colors.strong("hypit inspect")),
|
|
872
|
+
colors.dim("Inspect one project-owned Build Result and its public Outputs."),
|
|
873
|
+
"",
|
|
874
|
+
" hypit inspect <build-id> [--output <name>] [--limit <count>] [--workspace <project>]",
|
|
875
|
+
],
|
|
876
|
+
get: [
|
|
877
|
+
colors.accent(colors.strong("hypit get")),
|
|
878
|
+
colors.dim("Export one exact named Build Output to an explicit local destination."),
|
|
879
|
+
"",
|
|
880
|
+
" hypit get <build-id> --output <name> --to <path> [--workspace <project>]",
|
|
881
|
+
"",
|
|
882
|
+
"Scalar and Resource Outputs become files. A Composite Output becomes a directory",
|
|
883
|
+
"containing value.json and every Resource referenced by that value.",
|
|
884
|
+
],
|
|
885
|
+
history: [
|
|
886
|
+
colors.accent(colors.strong("hypit history")),
|
|
887
|
+
colors.dim("Find one named Output across project-owned Build Results."),
|
|
888
|
+
"",
|
|
889
|
+
" hypit history <output-name> [--workspace <project>] [--source <author-source>] [--limit <count>] [--before <build-id>]",
|
|
890
|
+
],
|
|
891
|
+
cancel: [
|
|
892
|
+
colors.accent(colors.strong("hypit cancel")),
|
|
893
|
+
colors.dim("Stop one Build and request cancellation of submitted work when supported."),
|
|
894
|
+
"",
|
|
895
|
+
" hypit cancel <build-id> [--runtime <profile>] [--reason <text>]",
|
|
896
|
+
],
|
|
897
|
+
result: [
|
|
898
|
+
colors.accent(colors.strong("hypit result")),
|
|
899
|
+
colors.dim("Edit one Result, finish an interrupted Result write, or discard an incomplete submission."),
|
|
900
|
+
"",
|
|
901
|
+
" hypit result finish <build-id> [--runtime <profile>]",
|
|
902
|
+
" hypit result discard <build-id> [--runtime <profile>]",
|
|
903
|
+
" hypit result edit <build-id> [--workspace <project>] [--title <text>] [--note <text>]",
|
|
904
|
+
" [--highlight <output> ...]",
|
|
905
|
+
" --clear-title remove the Result's human title",
|
|
906
|
+
" --clear-note remove its note",
|
|
907
|
+
" --clear-highlights remove all highlighted Outputs",
|
|
908
|
+
],
|
|
909
|
+
auth: [
|
|
910
|
+
colors.accent(colors.strong("hypit auth")),
|
|
911
|
+
colors.dim("Manage credentials required by one declared Endpoint instance."),
|
|
912
|
+
"",
|
|
913
|
+
" hypit auth status <endpoint-instance> [--runtime <profile>] [--slot <name>]",
|
|
914
|
+
" hypit auth login <endpoint-instance> [--runtime <profile>] [--slot <name>] [--from <secret-file>]",
|
|
915
|
+
" hypit auth logout <endpoint-instance> [--runtime <profile>] [--slot <name>]",
|
|
916
|
+
],
|
|
917
|
+
};
|
|
918
|
+
const selected = topics[topic];
|
|
919
|
+
return selected === undefined ? undefined : [...selected, ...common];
|
|
920
|
+
}
|
|
921
|
+
|
|
922
|
+
export function writeCliHelp(io: CliIo, topic?: string): void {
|
|
923
|
+
const colors = palette(io.terminal?.isTTY === true && io.terminal.color);
|
|
924
|
+
const row = (command: string, description: string, width = 30): string =>
|
|
925
|
+
` ${command}${" ".repeat(Math.max(2, width - command.length))}${description}`;
|
|
926
|
+
if (topic !== undefined) {
|
|
927
|
+
const selected = commandHelp(topic, colors);
|
|
928
|
+
if (selected !== undefined) {
|
|
929
|
+
io.write(`${selected.join("\n")}\n`);
|
|
930
|
+
return;
|
|
931
|
+
}
|
|
932
|
+
}
|
|
933
|
+
io.write([
|
|
934
|
+
colors.accent(colors.strong("Hypit")),
|
|
935
|
+
"",
|
|
936
|
+
colors.strong("Authoring"),
|
|
937
|
+
row("check <source>", "verify one self-described Author or Run source"),
|
|
938
|
+
row("plan <run-source>", "show selected work without executing"),
|
|
939
|
+
row("pricing <run-source>", "read selected Providers' current pricing material"),
|
|
940
|
+
row("build <run-source>", "submit a Build; --follow observes it"),
|
|
941
|
+
"",
|
|
942
|
+
colors.strong("Results"),
|
|
943
|
+
row("builds", "list Results newest first"),
|
|
944
|
+
row("history <output>", "find one named Output across Builds"),
|
|
945
|
+
row("status <build-id> [--watch]", "show current work and Result facts"),
|
|
946
|
+
row("inspect <build-id>", "inspect one Result"),
|
|
947
|
+
row("get <build-id> --output <name> --to <path>", "export one Build Output"),
|
|
948
|
+
row("result edit <build-id>", "title, annotate or highlight a Result"),
|
|
949
|
+
"",
|
|
950
|
+
colors.strong("Runtime"),
|
|
951
|
+
row("doctor [profile]", "diagnose selected external setup"),
|
|
952
|
+
row("runtime init|use|unset", "create or select this project's Runtime Profile"),
|
|
953
|
+
row("runtime up|status|logs|down", "prepare and manage the local Build Runtime"),
|
|
954
|
+
row("programs up|status|down", "manage declared external programs only"),
|
|
955
|
+
row("packages install|status", "manage pinned upstream packages in the machine home"),
|
|
956
|
+
row("activity [--watch]", "inspect active Builds and shared capacity"),
|
|
957
|
+
row("cancel <build-id>", "withdraw one active Build"),
|
|
958
|
+
row("paths", "show physical state locations"),
|
|
959
|
+
row("auth status|login|logout", "manage Endpoint credentials"),
|
|
960
|
+
"",
|
|
961
|
+
colors.strong("Output"),
|
|
962
|
+
row("--json", "stable machine view"),
|
|
963
|
+
row("--verbose", "add bounded operational detail"),
|
|
964
|
+
row("--color auto|always|never", "control ANSI color"),
|
|
965
|
+
row("--debug", "include internal trace frames on failure"),
|
|
966
|
+
"",
|
|
967
|
+
].join("\n"));
|
|
968
|
+
}
|
|
969
|
+
|
|
970
|
+
export function renderCliError(error: unknown, options: {
|
|
971
|
+
readonly json: boolean;
|
|
972
|
+
readonly color: boolean;
|
|
973
|
+
readonly unicode: boolean;
|
|
974
|
+
readonly debug: boolean;
|
|
975
|
+
}): string {
|
|
976
|
+
const source = error instanceof Error ? error : new Error(String(error));
|
|
977
|
+
const trace = source.stack?.split("\n").slice(1).join("\n").trim();
|
|
978
|
+
const candidateCode = (source as Error & { readonly code?: unknown }).code;
|
|
979
|
+
const code = typeof candidateCode === "string" && candidateCode.trim().length > 0
|
|
980
|
+
? candidateCode
|
|
981
|
+
: "CLI_ERROR";
|
|
982
|
+
if (options.json) {
|
|
983
|
+
return `${JSON.stringify({
|
|
984
|
+
format: "hypit.cli-error@1",
|
|
985
|
+
ok: false,
|
|
986
|
+
error: {
|
|
987
|
+
code,
|
|
988
|
+
message: source.message,
|
|
989
|
+
...(options.debug && trace !== undefined && trace.length > 0 ? { trace } : {}),
|
|
990
|
+
},
|
|
991
|
+
}, null, 2)}\n`;
|
|
992
|
+
}
|
|
993
|
+
const colors = palette(options.color);
|
|
994
|
+
const mark = options.unicode ? "×" : "x";
|
|
995
|
+
const lines = [
|
|
996
|
+
`${colors.error(mark)} ${colors.strong("Command failed")}`,
|
|
997
|
+
"",
|
|
998
|
+
` ${colors.error(code)}`,
|
|
999
|
+
...source.message.split("\n").map((line) => ` ${line}`),
|
|
1000
|
+
];
|
|
1001
|
+
if (options.debug && trace !== undefined && trace.length > 0) {
|
|
1002
|
+
lines.push("", colors.dim(trace));
|
|
1003
|
+
} else {
|
|
1004
|
+
lines.push("", colors.dim("Run with --debug to include the internal stack trace."));
|
|
1005
|
+
}
|
|
1006
|
+
return `${lines.join("\n")}\n`;
|
|
1007
|
+
}
|