@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,77 @@
|
|
|
1
|
+
# Fonts and icon adapters
|
|
2
|
+
|
|
3
|
+
`slopcamera` deliberately ships no commercial font and no large icon set.
|
|
4
|
+
|
|
5
|
+
## Custom font
|
|
6
|
+
|
|
7
|
+
Create `slopcamera.config.ts` beside the source:
|
|
8
|
+
|
|
9
|
+
```ts
|
|
10
|
+
import type { DiagramConfig } from "@hraness/slopcamera"
|
|
11
|
+
|
|
12
|
+
export default {
|
|
13
|
+
font: {
|
|
14
|
+
family: "Your Font",
|
|
15
|
+
monoFamily: "Your Mono, ui-monospace, monospace",
|
|
16
|
+
files: [
|
|
17
|
+
{
|
|
18
|
+
path: "./fonts/YourFont-Regular.ttf",
|
|
19
|
+
weight: 400,
|
|
20
|
+
embed: false,
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
path: "./fonts/YourFont-Semibold.ttf",
|
|
24
|
+
weight: 600,
|
|
25
|
+
embed: false,
|
|
26
|
+
},
|
|
27
|
+
],
|
|
28
|
+
},
|
|
29
|
+
} satisfies DiagramConfig
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
The PNG renderer reads those local files. With `embed: false`, SVG output names
|
|
33
|
+
the family but does not copy font bytes; serve the font through the website or
|
|
34
|
+
fall back through CSS. Set `embed: true` only when the font license permits
|
|
35
|
+
redistribution and self-contained SVG is worth the added file size.
|
|
36
|
+
|
|
37
|
+
`monoFamily` names a system or site-provided CSS fallback stack for source
|
|
38
|
+
fields that use `"fontFamily": "mono"`. Font files in this config belong to
|
|
39
|
+
the primary `family`; Slopcamera does not embed separate mono-family files. The
|
|
40
|
+
editable `.tldr` export maps the two source roles to tldraw's `sans` and `mono`
|
|
41
|
+
families while the SVG and PNG adapter owns the configured typography.
|
|
42
|
+
|
|
43
|
+
Do not commit a commercial font merely because it exists on the local machine.
|
|
44
|
+
|
|
45
|
+
## Custom icon
|
|
46
|
+
|
|
47
|
+
An icon definition has a view box and SVG body:
|
|
48
|
+
|
|
49
|
+
```ts
|
|
50
|
+
import type { DiagramConfig } from "@hraness/slopcamera"
|
|
51
|
+
|
|
52
|
+
export default {
|
|
53
|
+
icons: {
|
|
54
|
+
inbox: {
|
|
55
|
+
viewBox: "0 0 24 24",
|
|
56
|
+
body:
|
|
57
|
+
'<path d="M4 5h16v14H4zM4 14h4l2 2h4l2-2h4" ' +
|
|
58
|
+
'fill="none" stroke="currentColor" stroke-width="1.5" ' +
|
|
59
|
+
'stroke-linecap="round" stroke-linejoin="round"/>',
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
} satisfies DiagramConfig
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Reference it with `"icon": "inbox"` on a rectangle or ellipse. The renderer
|
|
66
|
+
uses `currentColor`, so one definition works in both themes. The `.tldr`
|
|
67
|
+
adapter embeds the icon as an SVG image asset; the card, icon, and label remain
|
|
68
|
+
separate movable tldraw shapes.
|
|
69
|
+
|
|
70
|
+
To use a third-party icon package, write a small local adapter that converts the
|
|
71
|
+
package's data into `{ viewBox, body }`. Keep that package in the consuming
|
|
72
|
+
repository rather than adding it to `slopcamera`. Preserve the icon package's
|
|
73
|
+
license and attribution requirements.
|
|
74
|
+
|
|
75
|
+
Icon bodies may contain ordinary SVG geometry such as `path`, `circle`, `rect`,
|
|
76
|
+
`line`, `polyline`, and `polygon`. Scripts, event handlers, `foreignObject`, and
|
|
77
|
+
embedded web content are rejected.
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
# Create and revise diagrams
|
|
2
|
+
|
|
3
|
+
Use the installed `slopcamera` CLI as the deterministic adapter. Keep the authored
|
|
4
|
+
`.diagram.json` source; treat `.light.svg`, `.dark.svg`, `.light.png`,
|
|
5
|
+
`.dark.png`, and `.tldr` as replaceable exports.
|
|
6
|
+
|
|
7
|
+
## Follow the prompt literally
|
|
8
|
+
|
|
9
|
+
Treat the user's prompt as the complete content specification.
|
|
10
|
+
|
|
11
|
+
- Preserve supplied labels, values, relationships, relative sizes, and
|
|
12
|
+
omissions.
|
|
13
|
+
- Add only neutral mechanics needed to draw those facts.
|
|
14
|
+
- Do not invent a title, subtitle, legend, annotation, example, implication,
|
|
15
|
+
category, metric, tick, connector, or decorative claim.
|
|
16
|
+
- Do not expand a short label into a sentence. Prefer the user's own one-to-three
|
|
17
|
+
word label.
|
|
18
|
+
- When updating, remove rejected content without replacing it with a new
|
|
19
|
+
elaboration.
|
|
20
|
+
|
|
21
|
+
## Find the source
|
|
22
|
+
|
|
23
|
+
1. Read local repository instructions and look for `slopcamera.config.*`.
|
|
24
|
+
2. Search for an existing same-subject `.diagram.json` before creating one.
|
|
25
|
+
3. Update that source rather than editing generated images or creating a
|
|
26
|
+
duplicate.
|
|
27
|
+
4. Follow local vault instructions and existing diagram/note directories. Use
|
|
28
|
+
`info/diagrams/<slug>.diagram.json` with `info/notes/<slug>.md` only when
|
|
29
|
+
that is the established convention. A vault named `kb/` does not imply a
|
|
30
|
+
nested `info/` directory. Do not invent a vault or migration layout.
|
|
31
|
+
5. Link the diagram through its companion note when local instructions require
|
|
32
|
+
one, following the host's image-embedding convention.
|
|
33
|
+
6. Outside a vault, default to `diagrams/<slug>.diagram.json`.
|
|
34
|
+
|
|
35
|
+
## Compose the visual
|
|
36
|
+
|
|
37
|
+
Read [visual-communication.md](visual-communication.md) before
|
|
38
|
+
creating or materially redesigning a diagram.
|
|
39
|
+
|
|
40
|
+
Apply these defaults deeply:
|
|
41
|
+
|
|
42
|
+
- Use rounded rectangles for ordinary concepts. Equal roles get equal sizes,
|
|
43
|
+
radii, stroke weights, icon sizes, and label treatment.
|
|
44
|
+
- Leave at least 96px—and preferably 120–200px—between connected shapes so
|
|
45
|
+
arrows read as relationships rather than seams.
|
|
46
|
+
- Put icons directly inside their semantic shape. Do not place a bordered icon
|
|
47
|
+
tile inside another bordered card.
|
|
48
|
+
- Use three to seven primary elements when the prompt permits abstraction.
|
|
49
|
+
- Establish a clear reading order and align peers to a shared grid.
|
|
50
|
+
- Use whitespace before borders, colors, or prose to separate groups.
|
|
51
|
+
- Use one color distinction by default. A supplied system with several stable
|
|
52
|
+
roles may use a small repeated semantic palette, but every role must remain
|
|
53
|
+
legible through its label, icon, or position without hue.
|
|
54
|
+
- Keep icons supportive: a label must still carry the meaning.
|
|
55
|
+
- Prefer one visible boundary per object and one visible stroke per axis or
|
|
56
|
+
connector.
|
|
57
|
+
- Box content is vertically centered as one measured icon-and-text group. Do
|
|
58
|
+
not compensate with source-coordinate nudges.
|
|
59
|
+
- Set `labelFontSize`, `labelFontFamily`, or `labelWeight` when one box label
|
|
60
|
+
needs a different treatment. Use `"fontFamily": "mono"` for a supplied
|
|
61
|
+
identifier, type, or relation, not as decoration.
|
|
62
|
+
- Use `labelRows` for two to four supplied text roles inside one box. Each row
|
|
63
|
+
can set `text`, `fontSize`, `fontFamily`, and `weight`; `labelRowGap` controls
|
|
64
|
+
the measured gap. Do not combine `labelRows` with the legacy `label` fields.
|
|
65
|
+
- Edge labels support the same font family, size, and weight controls plus
|
|
66
|
+
`labelPosition` and `labelOffset`. Keep relation labels short.
|
|
67
|
+
- In positioned diagrams, distribute fan-in or fan-out connectors with
|
|
68
|
+
`startPosition` and `endPosition` from `0` to `1`. On left and right sides,
|
|
69
|
+
zero is the top and one is the bottom. On top and bottom sides, zero is the
|
|
70
|
+
left and one is the right.
|
|
71
|
+
|
|
72
|
+
Do not “improve” literal data to satisfy these preferences. The prompt wins.
|
|
73
|
+
|
|
74
|
+
## Let deterministic layout own ordinary coordinates
|
|
75
|
+
|
|
76
|
+
Use a coordinate-free `stack` layout for one horizontal or vertical sequence:
|
|
77
|
+
|
|
78
|
+
```json
|
|
79
|
+
{
|
|
80
|
+
"layout": {
|
|
81
|
+
"type": "stack",
|
|
82
|
+
"direction": "horizontal",
|
|
83
|
+
"gap": 160,
|
|
84
|
+
"align": "center"
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
- Array order controls placement only. Draw an edge only when the prompt
|
|
90
|
+
supplied that relationship.
|
|
91
|
+
- Keep stack shapes to rectangles or ellipses and omit `x` and `y`.
|
|
92
|
+
- Use the default 160px gap unless the prompt or publication frame requires a
|
|
93
|
+
different runway.
|
|
94
|
+
- Switch to positioned mode for branching, non-adjacent edges, charts, free
|
|
95
|
+
text, lines, or deliberately unequal placement. Do not force those meanings
|
|
96
|
+
into a one-dimensional stack.
|
|
97
|
+
- If a stack does not fit, increase the canvas or reduce authored dimensions
|
|
98
|
+
explicitly. Do not silently shrink shapes or gaps.
|
|
99
|
+
|
|
100
|
+
## Author and render
|
|
101
|
+
|
|
102
|
+
Use the public schema URL or run `slopcamera diagram init` for a starter:
|
|
103
|
+
|
|
104
|
+
```sh
|
|
105
|
+
slopcamera diagram check diagrams/<slug>.diagram.json --strict
|
|
106
|
+
slopcamera diagram render diagrams/<slug>.diagram.json
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
The render command replaces five exports whose common stem is the document’s `name`, not necessarily the input filename. `diagram init first.diagram.json` starts with `name: "example-flow"`, so its exports are `example-flow.*`. Inspect both
|
|
110
|
+
light and dark output when layout or contrast is uncertain. Address all useful
|
|
111
|
+
lint findings; change the source, then rerender.
|
|
112
|
+
|
|
113
|
+
For a directed connector, positive `bend` moves its quadratic control point to
|
|
114
|
+
the viewer's right side of the source-to-target chord; negative moves it left.
|
|
115
|
+
For a left-to-right connector, positive bends down and negative bends up. The
|
|
116
|
+
visible midpoint moves by half the authored bend value. Inspect branching
|
|
117
|
+
connectors instead of guessing their sign.
|
|
118
|
+
|
|
119
|
+
If the repository uses its own font or icon package, read
|
|
120
|
+
[customization.md](customization.md). Do not add MonoLisa or another
|
|
121
|
+
proprietary or restricted font to the repository. Default SVG rendering embeds
|
|
122
|
+
the bundled Nebula Sans Book and Bold faces. PNG rendering loads those exact
|
|
123
|
+
assets for ordinary proportional text while retaining host discovery for
|
|
124
|
+
explicit mono and custom font roles.
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
## Use tldraw deliberately
|
|
128
|
+
|
|
129
|
+
The generated `.tldr` file is editable interchange and does not require the
|
|
130
|
+
tldraw SDK or desktop app to create. Open it in tldraw Offline when a person
|
|
131
|
+
wants direct canvas editing:
|
|
132
|
+
|
|
133
|
+
```sh
|
|
134
|
+
slopcamera canvas open diagrams/<slug>.tldr
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
If the optional app is absent, `slopcamera canvas install` resolves the current
|
|
138
|
+
official release, verifies its published SHA-256 digest, and launches the
|
|
139
|
+
platform installer. The app imports `.tldr` as an unsaved document; save it
|
|
140
|
+
there to create its newer native `.tldraw` bundle. Never rewrite a native
|
|
141
|
+
`.tldraw` ZIP/SQLite bundle directly.
|
|
142
|
+
|
|
143
|
+
## Verify
|
|
144
|
+
|
|
145
|
+
1. Run `slopcamera diagram check <source> --strict`.
|
|
146
|
+
2. Run `slopcamera diagram render <source>`.
|
|
147
|
+
3. Confirm all five artifacts exist beside the source or in the requested
|
|
148
|
+
output directory.
|
|
149
|
+
4. Inspect light and dark output at actual size.
|
|
150
|
+
5. Confirm peer shapes do not imply false differences.
|
|
151
|
+
6. Confirm connectors are long, bound to the intended shapes in `.tldr`, and
|
|
152
|
+
do not cross labels.
|
|
153
|
+
7. If a companion note is required, confirm its path and visual reference.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Author and direct editable scenes
|
|
2
|
+
|
|
3
|
+
Use `slopcamera scene --help` to check that the installed CLI includes the directed-scene foundation. The initial renderer uses Three.js and supports explicit scene JSON, semantic edits, calibrated cameras, native media surfaces, contact sheets, and transparent video.
|
|
4
|
+
|
|
5
|
+
Start with `slopcamera scene init scene.json --json`, then `slopcamera scene inspect scene.json --json`. Retain the original source. Use its stable entity IDs and exact `sceneSha256` in typed patches; save each edit with `--output` to a new file. Inspect `editableControls` before changing generated parts or imported materials. Do not replace named scene parts with opaque regenerated source merely to change one color or camera.
|
|
6
|
+
|
|
7
|
+
Use `slopcamera scene plan scene.json --request request.json --json` before rendering. A frame request is:
|
|
8
|
+
|
|
9
|
+
```json
|
|
10
|
+
{
|
|
11
|
+
"cameraId": "camera_hero",
|
|
12
|
+
"selection": { "kind": "frame", "timeUs": 1000000 },
|
|
13
|
+
"mode": { "kind": "beauty" }
|
|
14
|
+
}
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Render with `slopcamera scene render scene.json --request request.json --json`. Inspect the actual output before delivery. A contact sheet uses explicit `timesUs`, `columns`, `cellWidth`, and `cellHeight`; a video uses a half-open microsecond range and rational `{numerator, denominator}` frame rate. Keep images, text, and diagrams in camera-view layers when their flat layout matters. A different aspect requires an explicit camera/layout decision.
|
|
18
|
+
|
|
19
|
+
Keep asset payloads local, declared, and digest-bound. Never invent provenance, units, font coverage, or color metadata to force admission. Unsupported GLB features, fonts, and color profiles need an explicit asset conversion or a different authoring workflow. The scene parser never executes source or downloads resources. Existing reviewed HTML workflows remain suitable for effects outside the closed scene profile.
|
|
20
|
+
|
|
21
|
+
For a media project, finish ordinary timeline/audio edits before V2 migration. Read `slopcamera operations show spatial.project.migrate --json` and snapshot the exact project basis. Migration retains the old media state in one immutable aggregate; old editing commands then reject the V2 head. Scene patches require both the project basis and scene digest, plus explicit all-shot or selected-shot retargeting.
|
|
22
|
+
|
|
23
|
+
Use `scene project restore` to select an earlier retained scene for explicit shots in a new project revision. Use `add-asset`/`replace-asset` and `set-mesh-geometry` for authored representation changes. Preserve the entity ID and explicitly readdress GLB node/clip indices after a payload replacement; inspect available controls again afterward.
|
|
24
|
+
|
|
25
|
+
Prepare a camera program with `slopcamera scene project prepare-render <project-id> --input prepare.json --output prepared-render.json --json`. The input declares the exact basis, calibrated output profile, straight-alpha full-frame scene policy, and delivery output/sync policy/tier. Then run `slopcamera workflows plan directed-scene --input prepared-render.json --json` and `slopcamera workflows run directed-scene --input prepared-render.json --json`. Use `slopcamera workflows show directed-scene --json` for the complete prepared-input schema.
|
|
26
|
+
|
|
27
|
+
Use `--profile three-webgl2-hardware-v1` on scene rendering or project preparation to require the qualified macOS Metal backend. Missing or software GPU evidence rejects; no silent fallback occurs. A profile already in the request must agree with the CLI. Omit both fields for the historical software renderer. GPU identity and retained artifact hashes serve different purposes: cross-driver regeneration need not be pixel-identical.
|
|
28
|
+
|
|
29
|
+
Import saved SPZ and an optional approximate collider with `scene world import --input import.json --source-root <directory> --output-root artifacts/slopcamera/generated/<name> --json`. Declare exact payload hashes, stable IDs, scale, source up axis and uniform transform. Historical World Labs provenance remains supported for offline replay and requires the matching world ID, approximate collider and retained provider receipt. Import needs no provider credential; paid world-generation commands were removed from current source (they remain in the historical Atet v3.2.3 release). Keep all returned assets and the splat entity, and save the consuming scene JSON inside that import output directory so its asset paths resolve relative to the scene file. Metadata dependencies preserve provenance through source-gone replay. Do not invent scale or relabel a collider as verified physics. Use `three-spark-webgl2-hardware-v1` for non-AA SPZ v2/v3, perspective cameras and at most 500,000 splats across the rendered world. This profile renders beauty only; splat depth/ID products and interleaved transparent world surfaces are unsupported. Materials and internal objects inside a splat are not ordinary editable mesh parts.
|
|
30
|
+
|
|
31
|
+
Keep receipts and the original run ID after interruption. Inspect `slopcamera runs` and reconcile the exact attempt instead of blindly repeating a possibly published operation. Candidate records preserve derivation and staleness; candidate selection does not yet replace authored footage in the V2 scene compositor. Interactive scene editing and portable simulation remain deferred; native Blender jobs retain their own simulation caches. Use the separate [directing workflow](directing-video.md) to generate and review short clips before assembling an ordinary media project.
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
## Direct short generated clips
|
|
35
|
+
|
|
36
|
+
Use [short-video directing](directing-video.md) for retained paid takes and accepted-shot assembly. Use the matching Slopcamera source build for those commands.
|
|
37
|
+
|
|
38
|
+
## Share native assets and camera samples
|
|
39
|
+
|
|
40
|
+
On current source, `studio asset <studio-id> --output-id <id> --asset-id <asset-id> --representation native|encoded-video [--frame <index>] --json` admits one exact successful native output or existing encode. Preserve the returned asset, binding and receipt together. Admission never executes source or silently transcodes an incompatible GLB. Use named frame indices; do not select an implicit latest derivative.
|
|
41
|
+
|
|
42
|
+
`scene camera-track <scene.json> --request <request.json> --output <track.json> --json` evaluates explicit calibrated samples without a browser. Use `slopcamera help scene` for the request contract. The native helper transfers camera intrinsics, pose, world scale and clock; it does not guarantee equal lighting or shader output between renderers. Keep native rigs in the native bundle and use a compatible static model when the portable representation cannot preserve them.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Direct short generated clips
|
|
2
|
+
|
|
3
|
+
These commands require current source. Check the installed `slopcamera help direct` and [installation reference](install.md) before preparing a paid session.
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
Use `slopcamera direct --help` for the installed command contract and read the [complete directing guide](https://github.com/hraness/slopcamera/blob/main/docs/directing-video.md) for recipe examples. Start with `slopcamera direct init recipe.json --json`, edit the stable `direct_<id>` and ordered shots, then run `slopcamera direct plan recipe.json --json`. Planning reads live Gateway capabilities, per-second pricing, and image transport requirements without a paid generation. Use [gateway-media.md](gateway-media.md) for model discovery and process-local credentials. Gateway reads `AI_GATEWAY_API_KEY` before `VERCEL_OIDC_TOKEN`.
|
|
7
|
+
|
|
8
|
+
To use a rendered scene frame, pass the exact returned PNG path to `slopcamera direct anchor --input <image> --json`. Set a shot's `firstFrame` to `{kind: "image", source: <complete returned reference>}`. The import is local; generation uploads only the exact references acknowledged by `--allow-cloud-upload` on that invocation. A later shot can instead set `firstFrame` to `{kind: "shot-end", shotId: "<earlier-shot-id>"}` to use its currently accepted predecessor's final decoded frame. Optional `lastFrame` needs a first frame and live model support. Retain authored prompts for every shot and inspect motion, geometry, lighting, and identity at each join. Endpoint conditioning doesn't carry a provider neural checkpoint or complete 3D world state.
|
|
9
|
+
|
|
10
|
+
For a shot whose planned `inputTransport` is `url`, configure an existing private Vercel Blob store and include `--allow-reference-hosting` alongside `--allow-cloud-upload`. H3 Max currently needs this path for image conditioning. Blob prefers `VERCEL_OIDC_TOKEN` with `BLOB_STORE_ID`, then falls back to `BLOB_READ_WRITE_TOKEN`; a Gateway API key alone cannot authorize Blob. The adapter copies at most two exact retained PNG, JPEG, or WebP images of 30 MiB each, verifies bytes and private access, then grants the model signed GET access that expires 15 minutes after issuance. It doesn't publish public URLs or retain credentials and signed URLs. GET access doesn't imply support for every provider download method. Budget for Blob storage, operations, and transfer separately from the Gateway estimate.
|
|
11
|
+
|
|
12
|
+
Create the retained budget once with `slopcamera direct start recipe.json --budget-usd <authorized-USD> --json`. Generate one deliberate take with `slopcamera direct generate <direct-id> --shot <shot-id> --attempt <take-id> --allow-paid-generation --json`; include the upload and hosting flags required by its references and planned transport. Inspect the actual output, then record `slopcamera direct review <direct-id> --attempt <take-id> --decision accepted|rejected --note <review> --json`. Acceptance requires a completed video with its retained endpoint. A successful provider response can still fail local timestamp or color admission; retain those paid bytes for inspection and explicit conversion. Supported opaque 8-bit YUV with missing color tags uses the retained `untagged-8bit-yuv-assume-bt709-v1` policy: missing transfer, primaries, and matrix mean BT.709; missing range means limited range. Receipts preserve the observed tags and assumptions. Endpoint images become sRGB; conflicting tags, HDR, 10-bit formats, and video with alpha are rejected without tone mapping. Admitted RGB formats are opaque `rgb24`, `bgr24`, and `gbrp`. A rejected output and its budget reservation remain retained; another generation needs a new take ID and explicit paid invocation.
|
|
13
|
+
|
|
14
|
+
Activate changed recipes with `slopcamera direct revise <direct-id> --recipe revised.json --json`. Inspect selection status with `slopcamera direct inspect <direct-id> --json`. Changing a shot or selecting a different predecessor invalidates dependent takes; unrelated accepted shots stay valid. Old recipes and takes remain available. After interruption, use `slopcamera direct resume <direct-id> --attempt <take-id> --json`. Resume reconciles local receipts and missing endpoint extraction without resubmitting a provider call. A missing journal on resume cannot release a reserved or ambiguous take; recovery can still attach a completed local receipt. Only a new reservation proven undispatched during its generation invocation can be released. The budget uses catalog estimates, not settled invoices or a provider spending cap; Gateway may make several provider attempts even with client retries disabled.
|
|
15
|
+
|
|
16
|
+
Inspect `referenceHosting` in generation results or error details. `cleanupRequired: true` needs follow-up through the included `receiptPath` and `cleanupCommand`; the receipt may be absent when unreadable. Retain `artifacts/slopcamera/private/directing-blob/<direct-id>/<take-id>/receipt.json` after failures. Only per-entry `cleanup: "deleted"` confirms removal; `pending` or `uncertain` needs attention. Access expiry doesn't delete storage. Run `slopcamera direct cleanup <direct-id> --attempt <take-id> --json` with credentials for the same Blob store to reconcile exact objects. Cleanup is repeatable and never regenerates video; an absent object can remain uncertain when the original upload's remote outcome is unknown. Automatic cleanup runs after completed or proven-undispatched calls and preserves references for ambiguous calls. Manual cleanup revokes future object access, so let an active generation finish if it still needs its references. Resume is local and doesn't perform Blob cleanup.
|
|
17
|
+
|
|
18
|
+
Run `slopcamera direct assemble <direct-id> --json` only when all shots have current accepted takes. Assembly returns an ordinary V1 video project with clips in recipe order and cuts based on measured video spans. Source audio plays at unity gain within each span; leading or trailing audio outside it is trimmed so audio padding doesn't extend the video placement. Cumulative native rational video durations determine floored microsecond cuts. The version-two assembly receipt records video spans, cut positions, and audio trims under a new assembly identity while retaining older projects and take records. YUV clips use a retained sRGB RGB derivative encoded losslessly with FFmpeg `libx264rgb`, using the endpoint's color interpretation and complete copied audio. Placements apply the trims; derivative admission verifies frame timestamps, final-frame duration, geometry, and audio timing. Original media remains unchanged. This local encode is bounded to 120 seconds and 512 MiB per derivative. Keep the original, derivative, and normalization receipts, which bind source/output hashes, interpretation, and encoder version. Inspect the returned project ID, apply ordinary timeline or audio edits, and use `slopcamera project render plan|run <project-id> --json` for delivery. Review, resume, and assembly are local and need no cloud credential. This path doesn't replace candidate footage in the V2 scene compositor. Preserve receipt and source files when reusing a project or continuing a directing session.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Make an educational film
|
|
2
|
+
|
|
3
|
+
Use current-source `studio init lesson --template manim-lesson` for Manim visuals, or combine existing diagrams and spatial scenes when they better express the subject. Read [native studio](native-studio.md) for retained jobs and [video projects](video-projects.md) for composition.
|
|
4
|
+
|
|
5
|
+
Preserve supplied mathematical facts, units and labels. Separate an explanatory illustration from a measured simulation or formal proof. Use tested lesson helpers for layout, axes, typography, equations and camera framing; inspect the actual rendered notation and endpoints rather than trusting syntactically valid code.
|
|
6
|
+
|
|
7
|
+
## Retain and render visuals
|
|
8
|
+
|
|
9
|
+
The Manim starter contains a scene, lesson data and explicit toolkit helpers. Its initial profile is Cairo, 480×854, 24 fps and ten seconds of silent visuals. Select the exact Python environment; dependencies such as Typst belong to that environment. Edit the scene/data, retain every helper with `studio bundle`, then copy the returned bundle hash into a new job ID. Use `studio plan`, `probe` and an explicitly trusted `run` before `inspect`, `encode` and `assemble`.
|
|
10
|
+
|
|
11
|
+
Native frame intervals are half-open. Keep the lesson's animation clock inside the declared interval; a requested duration does not stretch or align independently authored content. Retain the original high-precision frames and source, even if an ordinary delivery uses a smaller derivative.
|
|
12
|
+
|
|
13
|
+
## Place narration and effects explicitly
|
|
14
|
+
|
|
15
|
+
Manim owns silent visuals. Narration or SFX references in lesson data do not automatically synthesize, import, align or place audio. Use caller-supplied audio, an authorized local voice tool, or [Gateway speech](gateway-media.md), then inspect duration and place its exact file in the ordinary project:
|
|
16
|
+
|
|
17
|
+
```sh
|
|
18
|
+
slopcamera project add <project-id> narration.wav --role dialogue --at 0 --json
|
|
19
|
+
slopcamera project add <project-id> cue.wav --role other --at 3 --json
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Imported audio has unverified synchronization. For independently authored timestamps, inspect the complete edit and use `--allow-unverified-sync` only when that provisional timing is intended. For synchronized recordings, measure/apply alignment first. Keep subtitles and transcript wording reviewable; authored word times and mouth cues are not measured alignment. Rhubarb cues describe mouth shapes, not word boundaries.
|
|
23
|
+
|
|
24
|
+
## Review the explanation
|
|
25
|
+
|
|
26
|
+
Inspect meaningful frames, equations, crop and safe areas at delivery dimensions. Check that narration describes the visible state at the same time, effects do not mask speech, and the ending has no clipped sound or black padding. Play the actual audio when supported; otherwise report duration, levels and timing checks without claiming listening. Keep the explanation's original source, audio and project timing independently revisable.
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
# Generate media through Vercel AI Gateway
|
|
2
|
+
|
|
3
|
+
Use this workflow when the user asks Slopcamera to generate an image, video, spoken
|
|
4
|
+
audio, or transcript. The Slopcamera process uses the caller's Vercel AI Gateway
|
|
5
|
+
credential. It has no Slopcamera account, credential store, or hosted project.
|
|
6
|
+
|
|
7
|
+
## Start with the intended role
|
|
8
|
+
|
|
9
|
+
Clarify what the generated media needs to do in the final project:
|
|
10
|
+
|
|
11
|
+
- the subject or message;
|
|
12
|
+
- the source files that control identity, composition, or timing;
|
|
13
|
+
- the number of alternatives;
|
|
14
|
+
- the delivery aspect ratio and duration when relevant; and
|
|
15
|
+
- the details that must remain recognizable or unchanged.
|
|
16
|
+
|
|
17
|
+
Preserve the user’s subject, supplied copy, identity constraints and requested omissions. A literal generation request keeps its literal prompt; a creative brief can require authored scene details. Vary only the dimensions the request leaves open.
|
|
18
|
+
|
|
19
|
+
## Discover a current model
|
|
20
|
+
|
|
21
|
+
The Gateway catalog changes independently of Slopcamera. Inspect it instead of
|
|
22
|
+
guessing a model ID or provider option:
|
|
23
|
+
|
|
24
|
+
```sh
|
|
25
|
+
slopcamera ai models list --type image --json
|
|
26
|
+
slopcamera ai models list --type video --json
|
|
27
|
+
slopcamera ai models list --type speech --json
|
|
28
|
+
slopcamera ai models list --type transcription --json
|
|
29
|
+
slopcamera ai models show <model-id> --json
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Choose a model whose reported capabilities match the requested input and
|
|
33
|
+
output. Do not assume that an image model accepts references, a video model
|
|
34
|
+
accepts first and last frames, or a speech model exposes a particular voice.
|
|
35
|
+
Use `slopcamera help ai` for the current common flags. Put provider-specific options
|
|
36
|
+
in a private ignored JSON file and pass it with `--provider-options`.
|
|
37
|
+
|
|
38
|
+
## Keep credentials out of the project
|
|
39
|
+
|
|
40
|
+
Prefer a process-local environment variable:
|
|
41
|
+
|
|
42
|
+
```sh
|
|
43
|
+
export AI_GATEWAY_API_KEY='<value>'
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
When the workspace is linked and the user is authenticated with Vercel, prefer
|
|
47
|
+
`vercel env run -- bun "$SLOPCAMERA_SOURCE_ROOT/apps/desktop/dist/cli/main.js" <arguments>`. [Source installation](install.md) defines this root; its shell function cannot be launched by another program. Vercel injects credentials only into that child invocation. Slopcamera reads `AI_GATEWAY_API_KEY` first and
|
|
48
|
+
`VERCEL_OIDC_TOKEN` second. Never place either credential on argv, in a
|
|
49
|
+
project file, in provider options, in a prompt, or in task output.
|
|
50
|
+
|
|
51
|
+
## Generate the requested media
|
|
52
|
+
|
|
53
|
+
Use a prompt file when the brief is long enough that shell quoting could alter
|
|
54
|
+
it.
|
|
55
|
+
|
|
56
|
+
```sh
|
|
57
|
+
slopcamera ai image generate \
|
|
58
|
+
--model <image-model-id> \
|
|
59
|
+
--prompt-file image-brief.txt \
|
|
60
|
+
--aspect-ratio 16:9 \
|
|
61
|
+
--count 3
|
|
62
|
+
|
|
63
|
+
slopcamera ai video generate \
|
|
64
|
+
--model <video-model-id> \
|
|
65
|
+
--prompt-file shot-brief.txt \
|
|
66
|
+
--image product.png \
|
|
67
|
+
--duration 6 \
|
|
68
|
+
--aspect-ratio 16:9 \
|
|
69
|
+
--allow-cloud-upload
|
|
70
|
+
|
|
71
|
+
slopcamera ai speech generate \
|
|
72
|
+
--model <speech-model-id> \
|
|
73
|
+
--text-file script.txt \
|
|
74
|
+
--format wav
|
|
75
|
+
|
|
76
|
+
slopcamera ai transcribe interview.wav \
|
|
77
|
+
--model <transcription-model-id> \
|
|
78
|
+
--format all \
|
|
79
|
+
--allow-cloud-audio-upload
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
The image and video commands also support masks, first and last frames,
|
|
83
|
+
multiple references, resolution, FPS, seed, generated audio, and bounded
|
|
84
|
+
provider options when the selected model reports those capabilities.
|
|
85
|
+
|
|
86
|
+
## Treat local upload as a separate decision
|
|
87
|
+
|
|
88
|
+
Slopcamera never uploads local reference media or transcription audio implicitly.
|
|
89
|
+
Use `--allow-cloud-upload` only when the task authorizes sending each named local reference to Gateway and the model provider. Use `--allow-cloud-audio-upload` for authorized transcription audio. Reuse explicit authorization already given; ask only when the selected upload or spending scope is missing.
|
|
90
|
+
|
|
91
|
+
A public HTTPS reference may still be sensitive because its URL is visible in
|
|
92
|
+
shell and process history. Do not use signed, private, local-network, or
|
|
93
|
+
credential-bearing URLs.
|
|
94
|
+
|
|
95
|
+
## Inspect and import the selected output
|
|
96
|
+
|
|
97
|
+
Outputs and immutable receipts are written below
|
|
98
|
+
`artifacts/slopcamera/generated/`. Slopcamera decodes self-describing media before it
|
|
99
|
+
suggests a project import command. Inspect each candidate at its intended size
|
|
100
|
+
or duration. For a reference-led request, verify silhouette, lettering,
|
|
101
|
+
proportions, color, and other identity-bearing details before selecting it.
|
|
102
|
+
|
|
103
|
+
When a generated artifact belongs in an existing video project, use the exact
|
|
104
|
+
`slopcamera project add ...` command returned by Slopcamera rather than reconstructing its
|
|
105
|
+
path or role. Generated images and video normally enter as b-roll; generated
|
|
106
|
+
speech normally enters as dialogue.
|
|
107
|
+
|
|
108
|
+
Never automatically retry an interrupted or failed paid generation. Slopcamera uses
|
|
109
|
+
zero client retries because an ambiguous request may still have been charged.
|
|
110
|
+
Report the failure receipt and reconcile the exact attempt. A deliberate new paid command needs authority within the user’s budget; do not infer that an ambiguous failure was free.
|
|
111
|
+
|
|
112
|
+
## Finish the task
|
|
113
|
+
|
|
114
|
+
Report:
|
|
115
|
+
|
|
116
|
+
- the selected model and the capability that justified it;
|
|
117
|
+
- which local files, if any, were explicitly uploaded;
|
|
118
|
+
- each useful generated output and receipt path;
|
|
119
|
+
- the project import command or imported placement when applicable; and
|
|
120
|
+
- what you inspected before accepting the result.
|
|
121
|
+
|
|
122
|
+
## Directing and the portable image command
|
|
123
|
+
|
|
124
|
+
Use [directing video](directing-video.md) for budgeted takes, accepted predecessor frames and local recovery. URL-only models can use its explicit private Blob path; do not paste short-lived signed URLs into CLI arguments or project files. Blob charges and authority are separate from Gateway.
|
|
125
|
+
|
|
126
|
+
The small portable `slopcamera image generate '<prompt>' --output image.webp` command defaults to `recraft/recraft-v4.1-utility` and admits PNG/JPEG/WebP output. It is distinct from the local `ai` catalog workflow. Preserve literal prompts when requested, keep its output inside the intended workspace and never automatically retry a failed paid call.
|
|
127
|
+
|
|
128
|
+
## Style recipes
|
|
129
|
+
|
|
130
|
+
For the rubber-stamp travel field-note layout (photograph left, small hand-stamped
|
|
131
|
+
vignette and typewriter notes on paper right), do not ask Gateway to redraw the
|
|
132
|
+
whole poster. Follow [rubber-stamp-field-notes.md](rubber-stamp-field-notes.md):
|
|
133
|
+
generate only the stamp with a reference-capable model, then assemble with the
|
|
134
|
+
local compositor.
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Install and diagnose Slopcamera
|
|
2
|
+
|
|
3
|
+
Use this reference when the CLI is unavailable, a command differs from the installed release, or `slopcamera doctor` reports a missing dependency for the selected workflow.
|
|
4
|
+
|
|
5
|
+
## Install the CLI
|
|
6
|
+
|
|
7
|
+
Slopcamera requires Bun 1.3.14 or newer. Check the current machine before changing
|
|
8
|
+
it:
|
|
9
|
+
|
|
10
|
+
```sh
|
|
11
|
+
command -v bun
|
|
12
|
+
command -v slopcamera
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
A restricted shell can omit package-manager paths. Check known host installation paths before declaring a tool unavailable. If Bun is genuinely absent, follow its official [installation guide](https://bun.sh/docs/installation) within the user’s authorized setup scope. Do not switch package managers or pipe an unreviewed installer into a shell.
|
|
16
|
+
|
|
17
|
+
Slopcamera currently installs from source. No renamed release archive has been published. Historical Atet archives do not install the renamed CLI; never substitute `slopcamera` into an old archive URL.
|
|
18
|
+
|
|
19
|
+
Use an existing compatible source build when available. Otherwise follow the [complete source-install guide](https://github.com/hraness/slopcamera/blob/main/docs/how-to/use-current-source.md): clone into a new directory, record its exact commit, install locked dependencies without lifecycle scripts, build the SDK and source CLI, then define the shell command against that checkout. A clone or skill installation alone does not install the executable. Do not alter an existing active checkout to satisfy this path.
|
|
20
|
+
|
|
21
|
+
For a new source checkout:
|
|
22
|
+
|
|
23
|
+
```sh
|
|
24
|
+
git clone --branch main https://github.com/hraness/slopcamera.git slopcamera-source
|
|
25
|
+
cd slopcamera-source
|
|
26
|
+
git rev-parse HEAD > ../slopcamera-source-commit.txt
|
|
27
|
+
bun install --frozen-lockfile --ignore-scripts
|
|
28
|
+
bun run build:sdk
|
|
29
|
+
bun run build:desktop:cli
|
|
30
|
+
export SLOPCAMERA_SOURCE_ROOT="$PWD"
|
|
31
|
+
slopcamera() { bun "$SLOPCAMERA_SOURCE_ROOT/apps/desktop/dist/cli/main.js" "$@"; }
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Keep the checkout and commit record. Restore the same path and function in a later shell. The function is local to that shell; another program cannot launch it as an executable. For an already linked Vercel workspace, use the built entrypoint explicitly:
|
|
35
|
+
|
|
36
|
+
```sh
|
|
37
|
+
vercel env run -- bun "$SLOPCAMERA_SOURCE_ROOT/apps/desktop/dist/cli/main.js" ai models list --type image --json
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Vercel injects credentials only into that child. Use the same explicit launcher for each provider call that needs those credentials. Do not infer the source root from the current production directory. Inspect the resulting host:
|
|
41
|
+
|
|
42
|
+
```sh
|
|
43
|
+
slopcamera --help
|
|
44
|
+
slopcamera doctor --json
|
|
45
|
+
slopcamera workflows list --json
|
|
46
|
+
slopcamera skill path
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
`slopcamera skill install` installs that same checkout’s guide for Codex by default; use `--target claude` or `--target agents` for another Agent Skill reader. Optional native engines remain separate. Do not invoke historical paid World Labs commands as a substitute for missing capabilities.
|
|
50
|
+
|
|
51
|
+
## Add only required optional tools
|
|
52
|
+
|
|
53
|
+
Treat `slopcamera doctor --json` as the readiness report. Install FFmpeg, a supported
|
|
54
|
+
browser, native capture support, VTracer, tldraw Offline, or another optional
|
|
55
|
+
dependency only when the requested workflow needs it and the user has
|
|
56
|
+
authorized that machine change. Slopcamera obtains its checksum-pinned VTracer on
|
|
57
|
+
first vectorization use; do not replace that path with an unverified binary.
|
|
58
|
+
|
|
59
|
+
Gateway generation uses the caller's `AI_GATEWAY_API_KEY` or
|
|
60
|
+
`VERCEL_OIDC_TOKEN`. Keep credentials in the process environment and never
|
|
61
|
+
persist, print, or place them on argv. A missing credential is not permission
|
|
62
|
+
to switch providers.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Direct a native film studio
|
|
2
|
+
|
|
3
|
+
These commands require current source; check [installation](install.md) and `slopcamera help studio`.
|
|
4
|
+
|
|
5
|
+
Use `slopcamera studio` when the deliverable needs native Blender, CadQuery or Manim authoring. Keep the native source, caches and exact settings alongside review frames and final clips. This complements the existing Three/Spark scene and ordinary video-project workflows.
|
|
6
|
+
|
|
7
|
+
1. Choose a starter with `slopcamera studio init <directory> --template blender-product|blender-character|blender-shaded-street|blender-cloth|blender-fluid|cadquery-bracket|manim-lesson`.
|
|
8
|
+
2. Edit the source, explicit file list and typed job. Retain all helpers and input assets with `slopcamera studio bundle <source.json> --json`. After source edits, use its new `bundleSha256` and a new job ID.
|
|
9
|
+
3. Inspect `slopcamera studio plan <job.json> --json`. It does not load a native engine. Use `studio probe` with an explicit `--blender-bin` or `--python` path to inspect the installed runtime.
|
|
10
|
+
4. Run the requested trusted source using `slopcamera studio run <job.json> --allow-trusted-code` and the same explicit runtime selection. This executes as the current user without an OS sandbox. Importing an asset or source is not permission to execute downloaded code.
|
|
11
|
+
5. Review actual geometry, frames, simulation caches and physical output receipts. For a successful PNG sequence, `slopcamera studio encode <studio-id> --output-id beauty --json` returns a verified video derivative. Use `studio assemble <studio-id> --output-id beauty --json` to create an ordinary project from an opaque sequence, add the selected video/audio with `project add`, and render the intended delivery.
|
|
12
|
+
|
|
13
|
+
The default Blender starter requests Cycles GPU. Missing GPU support fails instead of silently switching to CPU. A separate bake job retains a native scene and caches; rendering an existing cache is a separate source bundle and job. Native control rigs, materials and physics are broader than the portable spatial scene contract.
|
|
14
|
+
|
|
15
|
+
`studio assets search|describe|plan|import` provides a free Poly Haven HDRI/PBR/glTF route. Search and selections are JSON inputs, and import consumes the complete saved plan. Preserve attribution, license, all listed dependencies and returned hashes. Import does not insert or execute the asset. Other native assets should come from user-supplied or explicitly authorized downloads, with their actual license and dependencies retained.
|
|
16
|
+
|
|
17
|
+
Use the existing Gateway catalog, generation, speech and transcription operations for missing images, reference clips and narration. Provider calls use their normal cost and upload controls; native rendering does not make a paid call. Manim owns silent visuals. The ordinary project owns narration, music and effects, so audio revisions do not require rerendering mathematical animation. Distinguish authored word/mouth cues from measured alignment and review the final sound when playback is available; report signal-only checks otherwise.
|
|
18
|
+
|
|
19
|
+
A failed or interrupted job is never automatically rerun. `studio inspect` rechecks retained evidence; `studio reconcile` restores only a matching completed validation checkpoint. Review custody before choosing a new job. Do not delete a machine activity marker to bypass unresolved work.
|
|
20
|
+
|
|
21
|
+
See the shipped `docs/studio.md` and checked `examples/studio/` for source conventions, color/alpha rules, native caveats and the local `.studio.run()` workflow operation. Source/runtime identities are observed provenance, not a complete hash of every plugin, font, library or ambient read.
|
|
22
|
+
|
|
23
|
+
## Share a native output without re-executing it
|
|
24
|
+
|
|
25
|
+
`studio asset <studio-id> --output-id <id> --asset-id <id> --representation native|encoded-video [--frame <index>] --json` rechecks one successful output and returns its spatial asset, binding and receipt. It never rerenders or silently transcodes. Preserve all three together. A frame selection uses the native job’s explicit frame index; an encoded-video selection requires a previously retained unambiguous encode. Unsupported GLB materials, skins or morphs fail before rendering. Keep the original native rig and export a deliberate compatible static derivative.
|
|
26
|
+
|
|
27
|
+
Use [directed scenes](directed-scenes.md) for calibrated `scene camera-track` samples, world-space media and saved splats. Three and Blender share explicit geometry/camera data or rendered pixels, not one live renderer or automatic lighting equivalence. The external vgpu example uses its own pinned Node/Dawn environment, not a fourth studio engine.
|
|
28
|
+
|
|
29
|
+
Encoding preserves PNG masters. RGB sequences produce lossless RGB video; straight RGBA produces QTRLE MOV. A 16-bit sequence records its 8-bit derivative policy. `studio assemble` initially admits opaque sRGB sequences up to 4096 pixels per side, 4000 frames and 60 seconds; transparent and linear/data passes need their explicit compositing paths.
|
|
30
|
+
|
|
31
|
+
For `.studio.run()` inside a durable local workflow, use [workflows and SDK](workflows-sdk.md). Generic plan approval never supplies native authority: execution needs invocation-scoped `--allow-trusted-code` plus the selected studio runtime. For Manim visuals with narration, read [educational video](educational-video.md); lesson audio references do not automatically synthesize or place tracks.
|