@hraness/slopcamera 3.2.4
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 +21 -0
- package/NOTICE.md +60 -0
- package/PRIVACY.md +46 -0
- package/README.md +311 -0
- package/SECURITY.md +21 -0
- package/apps/desktop/README.md +966 -0
- package/apps/desktop/analysis/protocol.ts +223 -0
- package/apps/desktop/application/capability-binding.ts +594 -0
- package/apps/desktop/application/context.ts +97 -0
- package/apps/desktop/application/creative-iteration.ts +1385 -0
- package/apps/desktop/application/default-registry.ts +146 -0
- package/apps/desktop/application/directing-contract.ts +218 -0
- package/apps/desktop/application/directing-plan.ts +178 -0
- package/apps/desktop/application/errors.ts +18 -0
- package/apps/desktop/application/gateway-port.ts +867 -0
- package/apps/desktop/application/html-overlay-browser-runtime.ts +687 -0
- package/apps/desktop/application/html-overlay-integrity.ts +337 -0
- package/apps/desktop/application/html-overlay-renderer.ts +45 -0
- package/apps/desktop/application/index.ts +13 -0
- package/apps/desktop/application/operation-completion-checkpoint.ts +333 -0
- package/apps/desktop/application/operation-effects.ts +94 -0
- package/apps/desktop/application/operation.ts +224 -0
- package/apps/desktop/application/operations/analysis/faces.ts +244 -0
- package/apps/desktop/application/operations/analysis/music.ts +248 -0
- package/apps/desktop/application/operations/analysis/project-auto-zooms.ts +302 -0
- package/apps/desktop/application/operations/analysis/project-inactivity.ts +381 -0
- package/apps/desktop/application/operations/analysis/scenes.ts +272 -0
- package/apps/desktop/application/operations/analysis/shared.ts +202 -0
- package/apps/desktop/application/operations/derive/edit-batch.ts +967 -0
- package/apps/desktop/application/operations/derive/follow-faces.ts +454 -0
- package/apps/desktop/application/operations/edit/bind-candidate-revision.ts +91 -0
- package/apps/desktop/application/operations/edit/create-candidate-revision.ts +377 -0
- package/apps/desktop/application/operations/edit/create-revision.ts +255 -0
- package/apps/desktop/application/operations/edit/freeze-revision.ts +182 -0
- package/apps/desktop/application/operations/gateway/image.ts +41 -0
- package/apps/desktop/application/operations/gateway/index.ts +17 -0
- package/apps/desktop/application/operations/gateway/shared.ts +122 -0
- package/apps/desktop/application/operations/gateway/speech.ts +41 -0
- package/apps/desktop/application/operations/gateway/transcription.ts +42 -0
- package/apps/desktop/application/operations/gateway/video.ts +41 -0
- package/apps/desktop/application/operations/index.ts +31 -0
- package/apps/desktop/application/operations/iteration/create-candidate.ts +240 -0
- package/apps/desktop/application/operations/iteration/create-matrix.ts +117 -0
- package/apps/desktop/application/operations/iteration/select.ts +155 -0
- package/apps/desktop/application/operations/iteration/shared.ts +250 -0
- package/apps/desktop/application/operations/media/audio-effects.ts +376 -0
- package/apps/desktop/application/operations/media/binding.ts +79 -0
- package/apps/desktop/application/operations/media/capabilities.ts +112 -0
- package/apps/desktop/application/operations/media/color-grade.ts +343 -0
- package/apps/desktop/application/operations/media/html-overlay.ts +802 -0
- package/apps/desktop/application/operations/media/index.ts +8 -0
- package/apps/desktop/application/operations/media/ingest.ts +303 -0
- package/apps/desktop/application/operations/media/overlay.ts +729 -0
- package/apps/desktop/application/operations/media/shared.ts +845 -0
- package/apps/desktop/application/operations/media/transform-platform.ts +120 -0
- package/apps/desktop/application/operations/project/commit-edits.ts +2054 -0
- package/apps/desktop/application/operations/project/promote-selection.ts +495 -0
- package/apps/desktop/application/operations/project/snapshot.ts +95 -0
- package/apps/desktop/application/operations/recording/index.ts +5 -0
- package/apps/desktop/application/operations/recording/pause.ts +34 -0
- package/apps/desktop/application/operations/recording/resume.ts +34 -0
- package/apps/desktop/application/operations/recording/shared.ts +199 -0
- package/apps/desktop/application/operations/recording/start.ts +169 -0
- package/apps/desktop/application/operations/recording/stop.ts +34 -0
- package/apps/desktop/application/operations/render/bind-candidate-output.ts +324 -0
- package/apps/desktop/application/operations/render/materialize-selection.ts +322 -0
- package/apps/desktop/application/operations/render/project-caption-plan.ts +287 -0
- package/apps/desktop/application/operations/render/project-plan.ts +939 -0
- package/apps/desktop/application/operations/render/project-spatial-receipt.ts +70 -0
- package/apps/desktop/application/operations/render/project.ts +1922 -0
- package/apps/desktop/application/operations/shared.ts +67 -0
- package/apps/desktop/application/operations/slopcamera-portable.ts +1188 -0
- package/apps/desktop/application/operations/slopcamera-visuals.ts +784 -0
- package/apps/desktop/application/operations/spatial-project.ts +209 -0
- package/apps/desktop/application/operations/spatial-render.ts +415 -0
- package/apps/desktop/application/operations/spatial-scene.ts +97 -0
- package/apps/desktop/application/operations/studio.ts +143 -0
- package/apps/desktop/application/output-publication-lease.ts +163 -0
- package/apps/desktop/application/project-publication-lease.ts +233 -0
- package/apps/desktop/application/project-store.ts +196 -0
- package/apps/desktop/application/receipts.ts +533 -0
- package/apps/desktop/application/registry.ts +182 -0
- package/apps/desktop/application/spatial-assets.ts +675 -0
- package/apps/desktop/application/spatial-compositor-cadence.ts +23 -0
- package/apps/desktop/application/spatial-project-authority.ts +35 -0
- package/apps/desktop/application/spatial-project-lease.ts +126 -0
- package/apps/desktop/application/spatial-project-render-preparation.ts +225 -0
- package/apps/desktop/application/spatial-project-store.ts +286 -0
- package/apps/desktop/application/spatial-render-projection.ts +201 -0
- package/apps/desktop/application/spatial-render.ts +677 -0
- package/apps/desktop/application/spatial-spz.ts +44 -0
- package/apps/desktop/application/spatial-world-import.ts +135 -0
- package/apps/desktop/application/spatial-world-provenance.ts +46 -0
- package/apps/desktop/application/studio-port.ts +58 -0
- package/apps/desktop/application/verified-receipt-reconciliation.ts +1574 -0
- package/apps/desktop/capture/protocol.ts +689 -0
- package/apps/desktop/cli/analyzer.ts +406 -0
- package/apps/desktop/cli/args.ts +3181 -0
- package/apps/desktop/cli/asset-ingest.ts +747 -0
- package/apps/desktop/cli/atomic-render-effects.ts +210 -0
- package/apps/desktop/cli/atomic-render-platform.ts +205 -0
- package/apps/desktop/cli/atomic-render.ts +50 -0
- package/apps/desktop/cli/audio-analysis.ts +252 -0
- package/apps/desktop/cli/bounded-map.ts +39 -0
- package/apps/desktop/cli/bundle-service.ts +256 -0
- package/apps/desktop/cli/capabilities.ts +212 -0
- package/apps/desktop/cli/capture-bundle.ts +1117 -0
- package/apps/desktop/cli/command-host-resources.ts +251 -0
- package/apps/desktop/cli/commands.ts +6836 -0
- package/apps/desktop/cli/directing-blob.ts +291 -0
- package/apps/desktop/cli/directing-media.ts +517 -0
- package/apps/desktop/cli/directing-quote.ts +89 -0
- package/apps/desktop/cli/directing-service.ts +288 -0
- package/apps/desktop/cli/emoji-assets.ts +538 -0
- package/apps/desktop/cli/errors.ts +29 -0
- package/apps/desktop/cli/face-analysis-service.ts +940 -0
- package/apps/desktop/cli/filter-script.ts +76 -0
- package/apps/desktop/cli/gateway-application-port.ts +1142 -0
- package/apps/desktop/cli/gateway-credential.ts +81 -0
- package/apps/desktop/cli/gateway-media-artifacts.ts +723 -0
- package/apps/desktop/cli/gateway-media-catalog.ts +922 -0
- package/apps/desktop/cli/gateway-media-service.ts +3106 -0
- package/apps/desktop/cli/gateway-media-signature.ts +122 -0
- package/apps/desktop/cli/gateway-provider-options.ts +562 -0
- package/apps/desktop/cli/gateway-scene-provider.ts +391 -0
- package/apps/desktop/cli/help.ts +501 -0
- package/apps/desktop/cli/html-overlay-gpu.ts +97 -0
- package/apps/desktop/cli/html-overlay-renderer.ts +2478 -0
- package/apps/desktop/cli/io.ts +290 -0
- package/apps/desktop/cli/main.ts +123 -0
- package/apps/desktop/cli/media-effects-service.ts +885 -0
- package/apps/desktop/cli/media-ingest-model.ts +364 -0
- package/apps/desktop/cli/media-ingest-platform.ts +227 -0
- package/apps/desktop/cli/media-ingest-program.ts +200 -0
- package/apps/desktop/cli/media-ingest.ts +30 -0
- package/apps/desktop/cli/music-analysis-service.ts +434 -0
- package/apps/desktop/cli/mutation-lock.ts +530 -0
- package/apps/desktop/cli/native-assets.d.ts +12 -0
- package/apps/desktop/cli/native-media-runtime.macos.ts +7 -0
- package/apps/desktop/cli/overlay-playback.ts +177 -0
- package/apps/desktop/cli/paths.ts +265 -0
- package/apps/desktop/cli/portable-surface.ts +242 -0
- package/apps/desktop/cli/project-camera-receipt.ts +112 -0
- package/apps/desktop/cli/project-face-camera.ts +394 -0
- package/apps/desktop/cli/project-inactivity-service.ts +552 -0
- package/apps/desktop/cli/project-media-integrity.ts +121 -0
- package/apps/desktop/cli/project-renderer.ts +1526 -0
- package/apps/desktop/cli/project-service.ts +519 -0
- package/apps/desktop/cli/project-state-transaction.ts +520 -0
- package/apps/desktop/cli/query-limits.ts +1 -0
- package/apps/desktop/cli/recording-controller.ts +1567 -0
- package/apps/desktop/cli/recording-daemon.ts +931 -0
- package/apps/desktop/cli/recording-ref.ts +56 -0
- package/apps/desktop/cli/renamed-environment.ts +6 -0
- package/apps/desktop/cli/renderer.ts +1439 -0
- package/apps/desktop/cli/run-cli-test-helper.ts +60 -0
- package/apps/desktop/cli/scene-analysis-service.ts +879 -0
- package/apps/desktop/cli/spatial-compositor-verifier.ts +213 -0
- package/apps/desktop/cli/spatial-project-service.ts +90 -0
- package/apps/desktop/cli/spatial-scene-service.ts +105 -0
- package/apps/desktop/cli/spatial-world-service.ts +39 -0
- package/apps/desktop/cli/speech-analysis-service.ts +682 -0
- package/apps/desktop/cli/studio-assemble.ts +58 -0
- package/apps/desktop/cli/studio-command.ts +60 -0
- package/apps/desktop/cli/studio-custody.ts +60 -0
- package/apps/desktop/cli/studio-encode.ts +216 -0
- package/apps/desktop/cli/studio-exr.ts +52 -0
- package/apps/desktop/cli/studio-files.ts +179 -0
- package/apps/desktop/cli/studio-output-validation.ts +162 -0
- package/apps/desktop/cli/studio-process.ts +145 -0
- package/apps/desktop/cli/studio-runtime.ts +77 -0
- package/apps/desktop/cli/studio-scaffold.ts +70 -0
- package/apps/desktop/cli/studio-service.ts +301 -0
- package/apps/desktop/cli/studio-spatial-asset.ts +248 -0
- package/apps/desktop/cli/studio-template-names.ts +3 -0
- package/apps/desktop/cli/studio-workflow.ts +19 -0
- package/apps/desktop/cli/time.ts +25 -0
- package/apps/desktop/cli/workflow-code.ts +584 -0
- package/apps/desktop/cli/workflow-runs.ts +576 -0
- package/apps/desktop/code/advanced.ts +139 -0
- package/apps/desktop/code/application-node-planner.ts +1288 -0
- package/apps/desktop/code/compiler.ts +329 -0
- package/apps/desktop/code/contracts.ts +13 -0
- package/apps/desktop/code/creative-recipes.ts +94 -0
- package/apps/desktop/code/define-workflow.ts +115 -0
- package/apps/desktop/code/editing.ts +284 -0
- package/apps/desktop/code/file-candidate-provenance.ts +420 -0
- package/apps/desktop/code/file-candidate.ts +69 -0
- package/apps/desktop/code/graph-builder.ts +10 -0
- package/apps/desktop/code/host-resource-policy.ts +55 -0
- package/apps/desktop/code/plan-contracts.ts +159 -0
- package/apps/desktop/code/planning.ts +361 -0
- package/apps/desktop/code/public.ts +134 -0
- package/apps/desktop/code/reference-projection.ts +62 -0
- package/apps/desktop/code/run-contracts.ts +466 -0
- package/apps/desktop/code/run-store.ts +2478 -0
- package/apps/desktop/code/runtime-identity.ts +328 -0
- package/apps/desktop/code/scheduler.ts +3067 -0
- package/apps/desktop/code/semantic-builder.ts +1436 -0
- package/apps/desktop/code/source-bundle.ts +1641 -0
- package/apps/desktop/code/source-typecheck.ts +211 -0
- package/apps/desktop/code/testing.ts +79 -0
- package/apps/desktop/code/worker-client.ts +1675 -0
- package/apps/desktop/code/worker-effects.ts +141 -0
- package/apps/desktop/code/worker-entry.ts +435 -0
- package/apps/desktop/code/worker-lease-guardian.ts +179 -0
- package/apps/desktop/code/worker-process-identity.ts +484 -0
- package/apps/desktop/code/worker-protocol.ts +211 -0
- package/apps/desktop/code/workflow-effects.ts +132 -0
- package/apps/desktop/contracts/analysis.ts +949 -0
- package/apps/desktop/contracts/edit.ts +576 -0
- package/apps/desktop/contracts/index.ts +9 -0
- package/apps/desktop/contracts/media-effects.ts +139 -0
- package/apps/desktop/contracts/project-render.ts +644 -0
- package/apps/desktop/contracts/project.ts +740 -0
- package/apps/desktop/contracts/recording.ts +1434 -0
- package/apps/desktop/contracts/render.ts +334 -0
- package/apps/desktop/contracts/runtime.ts +155 -0
- package/apps/desktop/contracts/spatial-compositor.ts +58 -0
- package/apps/desktop/contracts/spatial-project.ts +159 -0
- package/apps/desktop/contracts/spatial-world.ts +48 -0
- package/apps/desktop/contracts/video-effects.ts +120 -0
- package/apps/desktop/core/alignment-apply.ts +400 -0
- package/apps/desktop/core/audio-alignment.ts +466 -0
- package/apps/desktop/core/auto-zoom.ts +209 -0
- package/apps/desktop/core/canonical-json.ts +14 -0
- package/apps/desktop/core/emoji.ts +210 -0
- package/apps/desktop/core/events.ts +409 -0
- package/apps/desktop/core/face-framing.ts +533 -0
- package/apps/desktop/core/face-tracks.ts +326 -0
- package/apps/desktop/core/inactivity.ts +137 -0
- package/apps/desktop/core/index.ts +30 -0
- package/apps/desktop/core/intervals.ts +123 -0
- package/apps/desktop/core/montage.ts +236 -0
- package/apps/desktop/core/music-analysis.ts +518 -0
- package/apps/desktop/core/plan.ts +244 -0
- package/apps/desktop/core/project-auto-zoom.ts +75 -0
- package/apps/desktop/core/project-camera-spatial.ts +676 -0
- package/apps/desktop/core/project-camera.ts +403 -0
- package/apps/desktop/core/project-captions.ts +888 -0
- package/apps/desktop/core/project-inactivity.ts +125 -0
- package/apps/desktop/core/project-metadata.ts +927 -0
- package/apps/desktop/core/project-plan.ts +375 -0
- package/apps/desktop/core/project-render-plan.ts +303 -0
- package/apps/desktop/core/project-time.ts +469 -0
- package/apps/desktop/core/render-plan.ts +442 -0
- package/apps/desktop/core/scene-cache.ts +174 -0
- package/apps/desktop/core/scene-sampling.ts +448 -0
- package/apps/desktop/core/spatial-compositor.ts +22 -0
- package/apps/desktop/core/spatial-durability.ts +99 -0
- package/apps/desktop/core/spatial-project.ts +169 -0
- package/apps/desktop/core/spatial-shot-clock.ts +32 -0
- package/apps/desktop/core/speech-analysis.ts +333 -0
- package/apps/desktop/core/storage.ts +970 -0
- package/apps/desktop/core/time-map.ts +91 -0
- package/apps/desktop/core/time.ts +61 -0
- package/apps/desktop/core/video-effects.ts +660 -0
- package/apps/desktop/dist/cli/NebulaSans-Bold-26se8aek.otf +0 -0
- package/apps/desktop/dist/cli/NebulaSans-Bold-bcz7y08t.woff2 +0 -0
- package/apps/desktop/dist/cli/NebulaSans-Book-5ax05zvn.woff2 +0 -0
- package/apps/desktop/dist/cli/NebulaSans-Book-8cenzchw.otf +0 -0
- package/apps/desktop/dist/cli/main.js +5086 -0
- package/apps/desktop/html-overlay/catalog.ts +171 -0
- package/apps/desktop/html-overlay/contracts.ts +372 -0
- package/apps/desktop/html-overlay/execution-profile.ts +77 -0
- package/apps/desktop/html-overlay/index.ts +98 -0
- package/apps/desktop/html-overlay/libraries.ts +263 -0
- package/apps/desktop/html-overlay/random.ts +49 -0
- package/apps/desktop/html-overlay/runtime.ts +813 -0
- package/apps/desktop/html-overlay/scaffolds.ts +792 -0
- package/apps/desktop/html-overlay/spark-runtime.ts +88 -0
- package/apps/desktop/html-overlay/spatial-splat-runtime.ts +60 -0
- package/apps/desktop/html-overlay/spatial.ts +720 -0
- package/apps/desktop/studio/assets/README.md +39 -0
- package/apps/desktop/studio/assets/contracts.ts +129 -0
- package/apps/desktop/studio/assets/network.ts +64 -0
- package/apps/desktop/studio/assets/poly-haven.ts +148 -0
- package/apps/desktop/studio/drivers/blender_driver.py +466 -0
- package/apps/desktop/studio/drivers/cadquery_driver.py +176 -0
- package/apps/desktop/studio/education/driver.py +308 -0
- package/apps/desktop/studio/education/lesson.py +180 -0
- package/apps/desktop/studio/education/toolkit.py +249 -0
- package/apps/desktop/workflows/chaptered-demo.ts +48 -0
- package/apps/desktop/workflows/creative-iteration.ts +107 -0
- package/apps/desktop/workflows/creative-selection.ts +92 -0
- package/apps/desktop/workflows/fragments.ts +486 -0
- package/apps/desktop/workflows/index.ts +93 -0
- package/apps/desktop/workflows/polished-screen-demo.ts +128 -0
- package/apps/desktop/workflows/scene-direction.ts +12 -0
- package/apps/desktop/workflows/social-variants.ts +75 -0
- package/apps/desktop/workflows/talking-head-cleanup.ts +53 -0
- package/dist/NebulaSans-Bold-26se8aek.otf +0 -0
- package/dist/NebulaSans-Bold-bcz7y08t.woff2 +0 -0
- package/dist/NebulaSans-Book-5ax05zvn.woff2 +0 -0
- package/dist/NebulaSans-Book-8cenzchw.otf +0 -0
- package/dist/cli.js +479 -0
- package/dist/code/advanced.js +270 -0
- package/dist/code/index.js +2240 -0
- package/dist/generate.js +24 -0
- package/dist/host-resources.js +26 -0
- package/dist/index-42zsesc1.js +2257 -0
- package/dist/index-7308egqr.js +48 -0
- package/dist/index-8txs6fkn.js +712 -0
- package/dist/index-mcy8z0br.js +192 -0
- package/dist/index-p63wavx0.js +2029 -0
- package/dist/index-r7gdhmsp.js +424 -0
- package/dist/index-sh6xbav6.js +1219 -0
- package/dist/index-z1w83f81.js +4 -0
- package/dist/index-z7239b4h.js +2363 -0
- package/dist/index-zfeg9hmw.js +2013 -0
- package/dist/index.js +241 -0
- package/dist/operations.js +29 -0
- package/dist/skill-install-dh0ntqba.js +10 -0
- package/dist/vectorize/worker.js +142 -0
- package/dist/workflow.js +16 -0
- package/docs/README.md +38 -0
- package/docs/studio.md +215 -0
- package/examples/studio/blender/README.md +26 -0
- package/examples/studio/blender/character.py +152 -0
- package/examples/studio/blender/cloth.py +101 -0
- package/examples/studio/blender/color_chart.py +29 -0
- package/examples/studio/blender/fluid.py +78 -0
- package/examples/studio/blender/import_model.py +74 -0
- package/examples/studio/blender/product.py +53 -0
- package/examples/studio/blender/shaded_street.py +481 -0
- package/examples/studio/blender/studio_scene.py +147 -0
- package/examples/studio/cadquery/README.md +13 -0
- package/examples/studio/cadquery/bracket.py +36 -0
- package/examples/studio/cadquery/import_step.py +12 -0
- package/examples/studio/education/README.md +46 -0
- package/examples/studio/education/lesson.json +99 -0
- package/examples/studio/education/scene.py +7 -0
- package/examples/studio/hybrid-scene.ts +96 -0
- package/examples/studio/native-workflow.ts +14 -0
- package/examples/studio/vgpu/README.md +64 -0
- package/examples/studio/vgpu/heat-field.mjs +290 -0
- package/package.json +304 -0
- package/packages/scene/src/index.ts +1 -0
- package/packages/scene/src/scene.ts +215 -0
- package/schema/diagram.schema.json +334 -0
- package/skills/slopcamera/SKILL.md +45 -0
- package/skills/slopcamera/agents/openai.yaml +4 -0
- package/skills/slopcamera/references/customization.md +77 -0
- package/skills/slopcamera/references/diagrams.md +153 -0
- package/skills/slopcamera/references/directed-scenes.md +42 -0
- package/skills/slopcamera/references/directing-video.md +18 -0
- package/skills/slopcamera/references/educational-video.md +26 -0
- package/skills/slopcamera/references/gateway-media.md +134 -0
- package/skills/slopcamera/references/install.md +62 -0
- package/skills/slopcamera/references/native-studio.md +31 -0
- package/skills/slopcamera/references/reference-led-3d.md +140 -0
- package/skills/slopcamera/references/rubber-stamp-examples/poster-example-1.jpg +0 -0
- package/skills/slopcamera/references/rubber-stamp-examples/poster-example-2.jpg +0 -0
- package/skills/slopcamera/references/rubber-stamp-examples/stamp-style-1.png +0 -0
- package/skills/slopcamera/references/rubber-stamp-examples/stamp-style-2.png +0 -0
- package/skills/slopcamera/references/rubber-stamp-field-notes.md +144 -0
- package/skills/slopcamera/references/vectorization.md +29 -0
- package/skills/slopcamera/references/video-projects.md +187 -0
- package/skills/slopcamera/references/visual-communication.md +120 -0
- package/skills/slopcamera/references/workflows-sdk.md +45 -0
- package/skills/slopcamera/scripts/compose-rubber-stamp-field-note.ts +229 -0
- package/src/artifacts.ts +106 -0
- package/src/assets/fonts/nebula-sans/LICENSE.txt +96 -0
- package/src/assets/fonts/nebula-sans/NebulaSans-Bold.otf +0 -0
- package/src/assets/fonts/nebula-sans/NebulaSans-Bold.woff2 +0 -0
- package/src/assets/fonts/nebula-sans/NebulaSans-Book.otf +0 -0
- package/src/assets/fonts/nebula-sans/NebulaSans-Book.woff2 +0 -0
- package/src/assets/fonts/nebula-sans/PROVENANCE.md +21 -0
- package/src/assets.d.ts +9 -0
- package/src/cli.ts +601 -0
- package/src/cloud-errors.ts +26 -0
- package/src/code/advanced.ts +10 -0
- package/src/code/boundary.ts +21 -0
- package/src/code/canonical-json.ts +129 -0
- package/src/code/compiler.ts +953 -0
- package/src/code/contracts.ts +576 -0
- package/src/code/define-workflow.ts +334 -0
- package/src/code/errors.ts +41 -0
- package/src/code/graph-builder.ts +945 -0
- package/src/code/index.ts +121 -0
- package/src/code/json-snapshot.ts +899 -0
- package/src/code/json-utf8.ts +88 -0
- package/src/code/portable-builder.ts +136 -0
- package/src/code/projection.ts +378 -0
- package/src/code/public-operations.ts +450 -0
- package/src/code/runtime.ts +580 -0
- package/src/code/sha256.ts +36 -0
- package/src/config.ts +180 -0
- package/src/desktop.ts +253 -0
- package/src/fs.ts +10 -0
- package/src/generate.ts +704 -0
- package/src/host-resource-posix.ts +161 -0
- package/src/host-resources.ts +1749 -0
- package/src/icons.ts +58 -0
- package/src/index.ts +200 -0
- package/src/label-layout.ts +130 -0
- package/src/layout.ts +413 -0
- package/src/lint.ts +127 -0
- package/src/mcp/boundary.ts +354 -0
- package/src/mcp/index.ts +33 -0
- package/src/mcp/server.ts +272 -0
- package/src/mcp/tools.ts +963 -0
- package/src/mcp/types.ts +71 -0
- package/src/operations.ts +775 -0
- package/src/parse.ts +861 -0
- package/src/process-environment.ts +17 -0
- package/src/render.ts +437 -0
- package/src/skill-install.ts +49 -0
- package/src/spatial-scene/authoring.ts +27 -0
- package/src/spatial-scene/camera-track.ts +83 -0
- package/src/spatial-scene/contracts.ts +277 -0
- package/src/spatial-scene/evaluate.ts +145 -0
- package/src/spatial-scene/gltf.ts +558 -0
- package/src/spatial-scene/identity.ts +260 -0
- package/src/spatial-scene/index.ts +10 -0
- package/src/spatial-scene/inspect.ts +68 -0
- package/src/spatial-scene/math.ts +280 -0
- package/src/spatial-scene/patch.ts +131 -0
- package/src/spatial-scene/time.ts +53 -0
- package/src/studio/contracts.ts +129 -0
- package/src/studio/index.ts +2 -0
- package/src/studio/plan.ts +156 -0
- package/src/studio/shared.ts +41 -0
- package/src/theme.ts +68 -0
- package/src/tldr.ts +474 -0
- package/src/types.ts +212 -0
- package/src/vectorize/archive.ts +101 -0
- package/src/vectorize/command.ts +797 -0
- package/src/vectorize/index.ts +27 -0
- package/src/vectorize/limits.ts +61 -0
- package/src/vectorize/metrics.ts +351 -0
- package/src/vectorize/pixels.ts +323 -0
- package/src/vectorize/supervisor.ts +339 -0
- package/src/vectorize/svg.ts +188 -0
- package/src/vectorize/tool.ts +542 -0
- package/src/vectorize/types.ts +113 -0
- package/src/vectorize/vectorize.ts +634 -0
- package/src/vectorize/worker-protocol.ts +40 -0
- package/src/vectorize/worker.ts +209 -0
- package/src/version.ts +1 -0
- package/src/workflow.ts +409 -0
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
import type { z } from "zod"
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
AuthoredComputeIdentitySchema,
|
|
5
|
+
ComputeKeySchema,
|
|
6
|
+
MAX_TRUSTED_COMPUTE_DURATION_MS,
|
|
7
|
+
MAX_TRUSTED_COMPUTE_INPUT_BYTES,
|
|
8
|
+
MAX_TRUSTED_COMPUTE_OUTPUT_BYTES,
|
|
9
|
+
SchemaIdSchema,
|
|
10
|
+
TRUSTED_COMPUTE_BRAND,
|
|
11
|
+
WorkflowIdSchema,
|
|
12
|
+
type AuthoredWorkflowGraphV1,
|
|
13
|
+
type AnyTrustedComputeDefinition,
|
|
14
|
+
type JsonValue,
|
|
15
|
+
type TrustedComputeDefinition,
|
|
16
|
+
type WorkflowOutputValue,
|
|
17
|
+
type WorkflowRegistryProjection,
|
|
18
|
+
} from "./contracts.js"
|
|
19
|
+
import { parseCodeBoundary } from "./boundary.js"
|
|
20
|
+
import { SlopcameraCodeError } from "./errors.js"
|
|
21
|
+
import {
|
|
22
|
+
captureJsonStructure,
|
|
23
|
+
createBoundedJsonValueSnapshot,
|
|
24
|
+
deepFreezeJson,
|
|
25
|
+
} from "./json-snapshot.js"
|
|
26
|
+
import {
|
|
27
|
+
WorkflowGraphBuilder,
|
|
28
|
+
type OperationDiscoveryProvider,
|
|
29
|
+
} from "./graph-builder.js"
|
|
30
|
+
import { PortableWorkflowBuilder } from "./portable-builder.js"
|
|
31
|
+
import { PUBLIC_WORKFLOW_REGISTRY_PROJECTION } from "./projection.js"
|
|
32
|
+
|
|
33
|
+
export interface WorkflowDefinitionOptions<
|
|
34
|
+
Input,
|
|
35
|
+
Output extends WorkflowOutputValue,
|
|
36
|
+
> {
|
|
37
|
+
readonly build: (builder: PortableWorkflowBuilder, input: Input) => Output
|
|
38
|
+
readonly id: string
|
|
39
|
+
readonly inputSchema: z.ZodType<Input>
|
|
40
|
+
readonly inputSchemaId: string
|
|
41
|
+
readonly version: number
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export interface WorkflowDefinition<Input, Output extends WorkflowOutputValue> {
|
|
45
|
+
readonly build: (builder: PortableWorkflowBuilder, input: Input) => Output
|
|
46
|
+
readonly id: string
|
|
47
|
+
readonly inputSchema: z.ZodType<Input>
|
|
48
|
+
readonly inputSchemaId: string
|
|
49
|
+
readonly version: number
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export interface BuiltWorkflow<
|
|
53
|
+
Input extends JsonValue = JsonValue,
|
|
54
|
+
Output extends WorkflowOutputValue = WorkflowOutputValue,
|
|
55
|
+
> {
|
|
56
|
+
readonly graph: AuthoredWorkflowGraphV1
|
|
57
|
+
readonly input: Input
|
|
58
|
+
readonly projection: WorkflowRegistryProjection
|
|
59
|
+
readonly __output?: () => Output
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function boundedWorkflowInput<Input>(
|
|
63
|
+
schema: z.ZodType<Input>,
|
|
64
|
+
input: unknown,
|
|
65
|
+
): JsonValue {
|
|
66
|
+
const capturedInput = captureJsonStructure(input, "workflow input", {
|
|
67
|
+
maximumBytes: MAX_TRUSTED_COMPUTE_INPUT_BYTES,
|
|
68
|
+
})
|
|
69
|
+
const parsedInput = parseCodeBoundary(
|
|
70
|
+
schema,
|
|
71
|
+
capturedInput,
|
|
72
|
+
"workflow input",
|
|
73
|
+
)
|
|
74
|
+
return createBoundedJsonValueSnapshot(
|
|
75
|
+
parsedInput,
|
|
76
|
+
MAX_TRUSTED_COMPUTE_INPUT_BYTES,
|
|
77
|
+
"JSON-safe workflow input",
|
|
78
|
+
).value
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
function workflowDefinitionIdentity(options: {
|
|
82
|
+
readonly build: unknown
|
|
83
|
+
readonly id: string
|
|
84
|
+
readonly inputSchemaId: string
|
|
85
|
+
readonly version: number
|
|
86
|
+
}): {
|
|
87
|
+
readonly id: string
|
|
88
|
+
readonly inputSchemaId: string
|
|
89
|
+
readonly version: number
|
|
90
|
+
} {
|
|
91
|
+
if (typeof options.build !== "function") {
|
|
92
|
+
throw new SlopcameraCodeError(
|
|
93
|
+
"invalid-data",
|
|
94
|
+
"Workflow definitions require a build function.",
|
|
95
|
+
)
|
|
96
|
+
}
|
|
97
|
+
const id = parseCodeBoundary(WorkflowIdSchema, options.id, "workflow id")
|
|
98
|
+
const inputSchemaId = parseCodeBoundary(
|
|
99
|
+
SchemaIdSchema,
|
|
100
|
+
options.inputSchemaId,
|
|
101
|
+
"workflow input schema id",
|
|
102
|
+
)
|
|
103
|
+
if (!Number.isSafeInteger(options.version) || options.version < 1) {
|
|
104
|
+
throw new SlopcameraCodeError(
|
|
105
|
+
"invalid-data",
|
|
106
|
+
"Workflow versions must be positive safe integers.",
|
|
107
|
+
)
|
|
108
|
+
}
|
|
109
|
+
return { id, inputSchemaId, version: options.version }
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
function assertOptionsObject(
|
|
113
|
+
value: unknown,
|
|
114
|
+
name: string,
|
|
115
|
+
): asserts value is Readonly<Record<string, unknown>> {
|
|
116
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
117
|
+
throw new SlopcameraCodeError("invalid-data", `${name} must be an object.`)
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
function assertSchemaCapability(
|
|
122
|
+
value: unknown,
|
|
123
|
+
name: string,
|
|
124
|
+
): asserts value is z.ZodType<unknown> {
|
|
125
|
+
if (
|
|
126
|
+
typeof value !== "object"
|
|
127
|
+
|| value === null
|
|
128
|
+
|| typeof (value as { readonly safeParse?: unknown }).safeParse !== "function"
|
|
129
|
+
) {
|
|
130
|
+
throw new SlopcameraCodeError(
|
|
131
|
+
"invalid-data",
|
|
132
|
+
`${name} must provide a synchronous safeParse function.`,
|
|
133
|
+
)
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
export function defineWorkflow<Input, Output extends WorkflowOutputValue>(
|
|
138
|
+
options: WorkflowDefinitionOptions<Input, Output>,
|
|
139
|
+
): WorkflowDefinition<Input, Output> {
|
|
140
|
+
assertOptionsObject(options, "Workflow definition options")
|
|
141
|
+
assertSchemaCapability(options.inputSchema, "Workflow input schema")
|
|
142
|
+
const identity = workflowDefinitionIdentity(options)
|
|
143
|
+
return Object.freeze({
|
|
144
|
+
build: options.build,
|
|
145
|
+
id: identity.id,
|
|
146
|
+
inputSchema: options.inputSchema,
|
|
147
|
+
inputSchemaId: identity.inputSchemaId,
|
|
148
|
+
version: identity.version,
|
|
149
|
+
})
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
export function buildWorkflow<
|
|
153
|
+
Input,
|
|
154
|
+
Output extends WorkflowOutputValue,
|
|
155
|
+
>(
|
|
156
|
+
definition: WorkflowDefinition<Input, Output>,
|
|
157
|
+
input: unknown,
|
|
158
|
+
): BuiltWorkflow<JsonValue, Output> {
|
|
159
|
+
assertOptionsObject(definition, "Workflow definition")
|
|
160
|
+
assertSchemaCapability(definition.inputSchema, "Workflow input schema")
|
|
161
|
+
workflowDefinitionIdentity(definition)
|
|
162
|
+
const workflowInput = boundedWorkflowInput(definition.inputSchema, input)
|
|
163
|
+
const builder = PortableWorkflowBuilder.create()
|
|
164
|
+
const outputs = definition.build(builder, workflowInput as unknown as Input)
|
|
165
|
+
const graph = builder.build({
|
|
166
|
+
id: definition.id,
|
|
167
|
+
inputSchemaId: definition.inputSchemaId,
|
|
168
|
+
version: definition.version,
|
|
169
|
+
}, outputs)
|
|
170
|
+
return Object.freeze({
|
|
171
|
+
graph,
|
|
172
|
+
input: workflowInput,
|
|
173
|
+
projection: PUBLIC_WORKFLOW_REGISTRY_PROJECTION,
|
|
174
|
+
})
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
export const buildWorkflowGraph = buildWorkflow
|
|
178
|
+
|
|
179
|
+
export interface DefineComputeOptions<Input, Output> {
|
|
180
|
+
readonly inputSchema: z.ZodType<Input>
|
|
181
|
+
readonly inputSchemaId: string
|
|
182
|
+
readonly key: string
|
|
183
|
+
readonly maxDurationMs?: number
|
|
184
|
+
readonly maxInputBytes?: number
|
|
185
|
+
readonly maxOutputBytes?: number
|
|
186
|
+
readonly outputSchema: z.ZodType<Output>
|
|
187
|
+
readonly outputSchemaId: string
|
|
188
|
+
readonly run: (
|
|
189
|
+
input: Input,
|
|
190
|
+
context: {
|
|
191
|
+
readonly abortSignal: AbortSignal
|
|
192
|
+
readonly nodeKey: string
|
|
193
|
+
readonly replayAcknowledged: boolean
|
|
194
|
+
},
|
|
195
|
+
) => Output | Promise<Output>
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
export function defineCompute<Input, Output>(
|
|
199
|
+
options: DefineComputeOptions<Input, Output>,
|
|
200
|
+
): TrustedComputeDefinition<Input, Output> {
|
|
201
|
+
assertOptionsObject(options, "Trusted compute definition options")
|
|
202
|
+
assertSchemaCapability(options.inputSchema, "Trusted compute input schema")
|
|
203
|
+
assertSchemaCapability(options.outputSchema, "Trusted compute output schema")
|
|
204
|
+
if (typeof options.run !== "function") {
|
|
205
|
+
throw new SlopcameraCodeError(
|
|
206
|
+
"invalid-data",
|
|
207
|
+
"Trusted compute definitions require a run function.",
|
|
208
|
+
)
|
|
209
|
+
}
|
|
210
|
+
const key = parseCodeBoundary(ComputeKeySchema, options.key, "trusted compute key")
|
|
211
|
+
const inputSchemaId = parseCodeBoundary(
|
|
212
|
+
SchemaIdSchema,
|
|
213
|
+
options.inputSchemaId,
|
|
214
|
+
"trusted compute input schema id",
|
|
215
|
+
)
|
|
216
|
+
const outputSchemaId = parseCodeBoundary(
|
|
217
|
+
SchemaIdSchema,
|
|
218
|
+
options.outputSchemaId,
|
|
219
|
+
"trusted compute output schema id",
|
|
220
|
+
)
|
|
221
|
+
const identity = parseCodeBoundary(AuthoredComputeIdentitySchema, {
|
|
222
|
+
bounds: {
|
|
223
|
+
maxDurationMs: options.maxDurationMs ?? 30_000,
|
|
224
|
+
maxInputBytes: options.maxInputBytes ?? Math.min(
|
|
225
|
+
1024 * 1024,
|
|
226
|
+
MAX_TRUSTED_COMPUTE_INPUT_BYTES,
|
|
227
|
+
),
|
|
228
|
+
maxOutputBytes: options.maxOutputBytes ?? Math.min(
|
|
229
|
+
1024 * 1024,
|
|
230
|
+
MAX_TRUSTED_COMPUTE_OUTPUT_BYTES,
|
|
231
|
+
),
|
|
232
|
+
},
|
|
233
|
+
key,
|
|
234
|
+
version: 1,
|
|
235
|
+
}, "trusted compute definition")
|
|
236
|
+
if (identity.bounds.maxDurationMs > MAX_TRUSTED_COMPUTE_DURATION_MS) {
|
|
237
|
+
throw new SlopcameraCodeError(
|
|
238
|
+
"invalid-data",
|
|
239
|
+
"Trusted compute duration exceeds the host maximum.",
|
|
240
|
+
)
|
|
241
|
+
}
|
|
242
|
+
return Object.freeze({
|
|
243
|
+
[TRUSTED_COMPUTE_BRAND]: true as const,
|
|
244
|
+
bounds: deepFreezeJson(identity.bounds),
|
|
245
|
+
inputSchema: options.inputSchema,
|
|
246
|
+
inputSchemaId,
|
|
247
|
+
key,
|
|
248
|
+
outputSchema: options.outputSchema,
|
|
249
|
+
outputSchemaId,
|
|
250
|
+
run: options.run,
|
|
251
|
+
})
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
export interface AdvancedWorkflowDefinitionOptions<
|
|
255
|
+
Input,
|
|
256
|
+
Output extends WorkflowOutputValue,
|
|
257
|
+
> {
|
|
258
|
+
readonly build: (builder: WorkflowGraphBuilder, input: Input) => Output
|
|
259
|
+
readonly id: string
|
|
260
|
+
readonly inputSchema: z.ZodType<Input>
|
|
261
|
+
readonly inputSchemaId: string
|
|
262
|
+
readonly version: number
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
export type AdvancedWorkflowDefinition<
|
|
266
|
+
Input,
|
|
267
|
+
Output extends WorkflowOutputValue,
|
|
268
|
+
> = AdvancedWorkflowDefinitionOptions<Input, Output>
|
|
269
|
+
|
|
270
|
+
export interface BuiltAdvancedWorkflow<Input extends JsonValue = JsonValue> {
|
|
271
|
+
readonly computeDefinitions: readonly AnyTrustedComputeDefinition[]
|
|
272
|
+
readonly graph: AuthoredWorkflowGraphV1
|
|
273
|
+
readonly input: Input
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
export function defineAdvancedWorkflow<
|
|
277
|
+
Input,
|
|
278
|
+
Output extends WorkflowOutputValue,
|
|
279
|
+
>(
|
|
280
|
+
options: AdvancedWorkflowDefinitionOptions<Input, Output>,
|
|
281
|
+
): AdvancedWorkflowDefinition<Input, Output> {
|
|
282
|
+
assertOptionsObject(options, "Advanced workflow definition options")
|
|
283
|
+
assertSchemaCapability(options.inputSchema, "Advanced workflow input schema")
|
|
284
|
+
const identity = workflowDefinitionIdentity(options)
|
|
285
|
+
return Object.freeze({
|
|
286
|
+
build: options.build,
|
|
287
|
+
id: identity.id,
|
|
288
|
+
inputSchema: options.inputSchema,
|
|
289
|
+
inputSchemaId: identity.inputSchemaId,
|
|
290
|
+
version: identity.version,
|
|
291
|
+
})
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
export function buildAdvancedWorkflow<
|
|
295
|
+
Input,
|
|
296
|
+
Output extends WorkflowOutputValue,
|
|
297
|
+
>(
|
|
298
|
+
definition: AdvancedWorkflowDefinition<Input, Output>,
|
|
299
|
+
provider: OperationDiscoveryProvider,
|
|
300
|
+
input: unknown,
|
|
301
|
+
): BuiltAdvancedWorkflow {
|
|
302
|
+
assertOptionsObject(definition, "Advanced workflow definition")
|
|
303
|
+
assertSchemaCapability(definition.inputSchema, "Advanced workflow input schema")
|
|
304
|
+
workflowDefinitionIdentity(definition)
|
|
305
|
+
const workflowInput = boundedWorkflowInput(definition.inputSchema, input)
|
|
306
|
+
const builder = WorkflowGraphBuilder.create(provider)
|
|
307
|
+
const outputs = definition.build(builder, workflowInput as unknown as Input)
|
|
308
|
+
return Object.freeze({
|
|
309
|
+
computeDefinitions: builder.computeDefinitions(),
|
|
310
|
+
graph: builder.build({
|
|
311
|
+
id: definition.id,
|
|
312
|
+
inputSchemaId: definition.inputSchemaId,
|
|
313
|
+
version: definition.version,
|
|
314
|
+
}, outputs),
|
|
315
|
+
input: workflowInput,
|
|
316
|
+
})
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
export function seconds(value: number): number {
|
|
320
|
+
if (!Number.isFinite(value) || value < 0) {
|
|
321
|
+
throw new SlopcameraCodeError(
|
|
322
|
+
"invalid-data",
|
|
323
|
+
"Seconds must be a finite nonnegative number.",
|
|
324
|
+
)
|
|
325
|
+
}
|
|
326
|
+
const microseconds = value * 1_000_000
|
|
327
|
+
if (!Number.isSafeInteger(microseconds)) {
|
|
328
|
+
throw new SlopcameraCodeError(
|
|
329
|
+
"invalid-data",
|
|
330
|
+
"Seconds must resolve to an integer number of safe microseconds.",
|
|
331
|
+
)
|
|
332
|
+
}
|
|
333
|
+
return microseconds
|
|
334
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export type SlopcameraCodeErrorCode =
|
|
2
|
+
| "usage"
|
|
3
|
+
| "not-found"
|
|
4
|
+
| "conflict"
|
|
5
|
+
| "unavailable"
|
|
6
|
+
| "unsafe-path"
|
|
7
|
+
| "invalid-data"
|
|
8
|
+
| "subprocess"
|
|
9
|
+
| "unsupported-plan"
|
|
10
|
+
| "authorization-required"
|
|
11
|
+
| "cancelled"
|
|
12
|
+
| "ambiguous"
|
|
13
|
+
| "incompatible"
|
|
14
|
+
| "internal"
|
|
15
|
+
|
|
16
|
+
export class SlopcameraCodeError extends Error {
|
|
17
|
+
readonly code: SlopcameraCodeErrorCode
|
|
18
|
+
readonly details: Readonly<Record<string, unknown>> | undefined
|
|
19
|
+
|
|
20
|
+
constructor(
|
|
21
|
+
code: SlopcameraCodeErrorCode,
|
|
22
|
+
message: string,
|
|
23
|
+
details?: Readonly<Record<string, unknown>>,
|
|
24
|
+
) {
|
|
25
|
+
super(message)
|
|
26
|
+
this.name = "SlopcameraCodeError"
|
|
27
|
+
this.code = code
|
|
28
|
+
this.details = details === undefined
|
|
29
|
+
? undefined
|
|
30
|
+
: Object.freeze({ ...details })
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export function slopcameraCodeErrorMessage(error: unknown): string {
|
|
35
|
+
return error instanceof Error ? error.message : String(error)
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export function asSlopcameraCodeError(error: unknown): SlopcameraCodeError {
|
|
39
|
+
if (error instanceof SlopcameraCodeError) return error
|
|
40
|
+
return new SlopcameraCodeError("internal", slopcameraCodeErrorMessage(error))
|
|
41
|
+
}
|