@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,140 @@
|
|
|
1
|
+
# Reference-led Three.js and metallic treatments
|
|
2
|
+
|
|
3
|
+
Use this guide only when Slopcamera's complete local Code Mode host is available.
|
|
4
|
+
It ships in this repository alongside the thin desktop capture shell. The
|
|
5
|
+
portable `@hraness/slopcamera/code` and `@hraness/slopcamera/workflow`
|
|
6
|
+
entrypoints intentionally expose no HTML renderer, Three.js operation, or
|
|
7
|
+
arbitrary source execution. Those capabilities belong to the local host.
|
|
8
|
+
|
|
9
|
+
## Separate reference generation from source execution
|
|
10
|
+
|
|
11
|
+
An image model may supply a visual reference. It must not supply executable
|
|
12
|
+
authority.
|
|
13
|
+
|
|
14
|
+
1. Generate or select one reference image and preserve its exact artifact
|
|
15
|
+
record.
|
|
16
|
+
2. Inspect the subject, silhouette, palette, proportions, negative space, and
|
|
17
|
+
intended polygon character.
|
|
18
|
+
3. Run `slopcamera html scaffold three --output <scene.html>`. The command does
|
|
19
|
+
not overwrite an existing source.
|
|
20
|
+
4. Edit only the scaffold's `createSubject()` region unless the requested
|
|
21
|
+
camera, lights, or timing require a reviewed change elsewhere.
|
|
22
|
+
5. Run Code Mode checks and render a full-length 1x preview.
|
|
23
|
+
6. Inspect the first, middle, and last frame plus at least two useful angles.
|
|
24
|
+
7. Change the checked scene source, not a rendered frame. Render a final target
|
|
25
|
+
only after selection.
|
|
26
|
+
|
|
27
|
+
Do not collapse those stages into an operation that accepts JavaScript text.
|
|
28
|
+
Local Code Mode is trusted local code with the current user's authority. It
|
|
29
|
+
is not a sandbox. The reviewed physical source and its imports enter the graph
|
|
30
|
+
identity before an effect can execute.
|
|
31
|
+
|
|
32
|
+
## Bind the reference to the reviewed scene
|
|
33
|
+
|
|
34
|
+
In a local Code Mode module, use the typed helper with the image artifact
|
|
35
|
+
and its projected media type:
|
|
36
|
+
|
|
37
|
+
```ts
|
|
38
|
+
const generated = workflow.gateway.image("reference", imageOptions);
|
|
39
|
+
const reference = generated.select("outputs").at(0);
|
|
40
|
+
const binding = createThreeReferenceScaffoldInput(
|
|
41
|
+
reference,
|
|
42
|
+
reference.select("mediaType"),
|
|
43
|
+
);
|
|
44
|
+
const scene = workflow.media.htmlOverlay("scene", {
|
|
45
|
+
...binding,
|
|
46
|
+
document: { path: "overlays/reviewed-scene.html" },
|
|
47
|
+
canvas: { deviceScaleFactor: 1, height: 1080, width: 1920 },
|
|
48
|
+
parameters: { explode: 0.35, orbitTurns: 1, zoom: 1 },
|
|
49
|
+
project,
|
|
50
|
+
range: { startUs: 0, endUs: 3_000_000 },
|
|
51
|
+
timing: { durationUs: 3_000_000, fps: 30 },
|
|
52
|
+
});
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
The resource binding verifies path, bytes, SHA-256, and media type. A mismatch
|
|
56
|
+
fails before the browser render. The reference remains execution provenance
|
|
57
|
+
even when the final scene does not display it.
|
|
58
|
+
|
|
59
|
+
If the scene uses the reference as a color texture, load only its declared
|
|
60
|
+
private URL and settle decoding before frame zero:
|
|
61
|
+
|
|
62
|
+
```js
|
|
63
|
+
const texture = new THREE.TextureLoader()
|
|
64
|
+
.loadAsync(SlopcameraOverlay.asset("reference-image"))
|
|
65
|
+
.then((loaded) => {
|
|
66
|
+
loaded.colorSpace = THREE.SRGBColorSpace;
|
|
67
|
+
return loaded;
|
|
68
|
+
});
|
|
69
|
+
SlopcameraOverlay.ready(texture);
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Never load a remote URL, data URL, object URL, undeclared font, environment map,
|
|
73
|
+
or model file from scene code.
|
|
74
|
+
|
|
75
|
+
## Preserve deterministic motion
|
|
76
|
+
|
|
77
|
+
- Derive every visible state from `progress`, `timeMs`, parameters, or
|
|
78
|
+
`SlopcameraOverlay.randomFor(key)`.
|
|
79
|
+
- Do not use `requestAnimationFrame`, `setAnimationLoop`, wall-clock time,
|
|
80
|
+
mutable random sequences, pointer input, or cumulative per-frame state.
|
|
81
|
+
- Create geometry, materials, textures, vectors, matrices, and arrays before
|
|
82
|
+
`onFrame`. Avoid allocation and asset loading inside the frame callback.
|
|
83
|
+
- Keep the first and last frame loop-compatible when the result is a loop.
|
|
84
|
+
- Use one `renderer.render(scene, camera)` call per frame unless a reviewed
|
|
85
|
+
multipass effect justifies the extra cost.
|
|
86
|
+
|
|
87
|
+
## Keep generated Three.js inexpensive
|
|
88
|
+
|
|
89
|
+
The starter defaults to 64 draw calls and 200,000 triangles per frame. Keep
|
|
90
|
+
those ceilings unless the user chooses a measured exception.
|
|
91
|
+
|
|
92
|
+
- Reuse geometry and materials. Use `THREE.InstancedMesh` for repeated forms.
|
|
93
|
+
- Prefer flat-shaded primitives, indexed `BufferGeometry`, and a few deliberate
|
|
94
|
+
lights for low-poly subjects.
|
|
95
|
+
- Leave shadows, postprocessing, physics, environment maps, logarithmic depth,
|
|
96
|
+
and high-detail subdivisions off by default.
|
|
97
|
+
- Fit the camera from `Box3` or a bounding sphere rather than hand-tuning it for
|
|
98
|
+
one output ratio.
|
|
99
|
+
- Keep opaque objects opaque. Preserve alpha in the renderer and background,
|
|
100
|
+
rather than making every material transparent.
|
|
101
|
+
- Track every geometry, material, texture, and render target. Dispose them and
|
|
102
|
+
the renderer when the page closes.
|
|
103
|
+
- Set color textures to `THREE.SRGBColorSpace`. Leave normal, roughness, metal,
|
|
104
|
+
and other data textures in their default no-color space.
|
|
105
|
+
- Use a 1x canvas for the full-duration preview. A selected final may raise
|
|
106
|
+
device scale or destination dimensions. Do not shorten the preview to hide a
|
|
107
|
+
late-frame failure.
|
|
108
|
+
|
|
109
|
+
Compare output at each destination aspect ratio. Camera fit, negative space,
|
|
110
|
+
caption-safe areas, and transparent edges can fail even when the source scene
|
|
111
|
+
is valid.
|
|
112
|
+
|
|
113
|
+
## Create a metallic logo candidate
|
|
114
|
+
|
|
115
|
+
Use the supplied logo image as the sole shape authority. The treatment has
|
|
116
|
+
three literal creative variables: brand name, background color, and object
|
|
117
|
+
color. Model selection is separate because image-reference support changes by
|
|
118
|
+
provider.
|
|
119
|
+
|
|
120
|
+
```ts
|
|
121
|
+
const candidate = workflow.gateway.image("metallic-logo",
|
|
122
|
+
createMetallicLogoImageRequest({
|
|
123
|
+
backgroundColor: "warm gray",
|
|
124
|
+
brandName: "Hraness",
|
|
125
|
+
model: input.imageModel,
|
|
126
|
+
objectColor: "brushed cobalt",
|
|
127
|
+
reference: input.logo,
|
|
128
|
+
}));
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
For direct local CLI use, choose a live image model that accepts reference
|
|
132
|
+
images, then pass the exact logo with `--image` and the required
|
|
133
|
+
`--allow-cloud-upload`. Inspect model capabilities before dispatch. Do not
|
|
134
|
+
silently upload a local brand asset.
|
|
135
|
+
|
|
136
|
+
Treat every output as a candidate. Reject it when the silhouette, negative
|
|
137
|
+
space, proportions, orientation, or existing lettering changes. Reject added
|
|
138
|
+
text, duplicated marks, invented symbols, cropped edges, implausible bevels,
|
|
139
|
+
dirty reflections, or a background that contaminates the mark. Preserve the
|
|
140
|
+
reference and prompt receipt beside an accepted derivative.
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
# Rubber-stamp travel field notes
|
|
2
|
+
|
|
3
|
+
Use this when the user wants travel photos turned into «橡皮章旅行田野笔记»
|
|
4
|
+
posters: photograph on the left, a small multi-color rubber-stamp vignette and
|
|
5
|
+
typewriter field notes on warm paper on the right.
|
|
6
|
+
|
|
7
|
+
Reference look: https://x.com/Hamburgerai/status/2090683415104557406
|
|
8
|
+
|
|
9
|
+
Do **not** ask a generative model to redraw the whole poster. Keep the source
|
|
10
|
+
photograph as real pixels. Generate only the stamp (and optionally a stamp-on-paper
|
|
11
|
+
crop), then assemble with the local compositor.
|
|
12
|
+
|
|
13
|
+
## Inputs
|
|
14
|
+
|
|
15
|
+
Per poster, collect:
|
|
16
|
+
|
|
17
|
+
- one absolute path to the source photograph;
|
|
18
|
+
- place name in English (`VENICE`, `ROME`, …);
|
|
19
|
+
- serial number (`01`, `02`, …);
|
|
20
|
+
- three short English keywords joined with ` / `;
|
|
21
|
+
- year (`2026` unless the user names another).
|
|
22
|
+
|
|
23
|
+
If the user does not supply place / keywords / year, derive them from the photo
|
|
24
|
+
and say what you assumed. Never invent a brand slogan.
|
|
25
|
+
|
|
26
|
+
## Layout contract
|
|
27
|
+
|
|
28
|
+
- One independent poster per photo. No multi-photo collage.
|
|
29
|
+
- Aspect ratio **4:3** landscape (default `1600×1200`).
|
|
30
|
+
- Left ≈ **58%**: the source photo, cover-cropped. Preserve subject identity,
|
|
31
|
+
terrain, architecture, plants, people, spatial relationships, natural light,
|
|
32
|
+
real texture, and the photo's color character. Only restrained publication-grade
|
|
33
|
+
grading and a touch of fine film grain are allowed. Natural crop for the frame
|
|
34
|
+
is fine; never stretch, warp, move, replace, or redraw the subject.
|
|
35
|
+
- Right ≈ **42%**: warm off-white aged paper with fiber, matte feel, and generous
|
|
36
|
+
unprinted blank space. No hard vertical divider.
|
|
37
|
+
- Stamp sits mid-lower on the paper, about **30–38%** of the right panel's height,
|
|
38
|
+
with ample margin. It is a small rubber stamp, not a full illustration, logo, or
|
|
39
|
+
landscape painting.
|
|
40
|
+
|
|
41
|
+
## Stamp generation (Gateway only)
|
|
42
|
+
|
|
43
|
+
Generate **only** the stamp vignette (square-ish, on transparent or warm paper),
|
|
44
|
+
using a current image model that accepts a reference photo. Prefer
|
|
45
|
+
`bfl/flux-kontext-pro` when available; otherwise discover with
|
|
46
|
+
`slopcamera ai models list --type image --json` and pick a reference-capable model.
|
|
47
|
+
|
|
48
|
+
Write the brief to a prompt file. Example shape:
|
|
49
|
+
|
|
50
|
+
```text
|
|
51
|
+
Using the attached travel photograph as the only reference, create ONE small
|
|
52
|
+
multi-color rubber-stamp vignette of this place for a field notebook.
|
|
53
|
+
|
|
54
|
+
Compress the scene into the least information needed to recognize the location:
|
|
55
|
+
keep the dominant silhouette, a few stepped color blocks, and key terrain / shore /
|
|
56
|
+
road relationships. Delete crowds, cars, dense windows, repeated buildings,
|
|
57
|
+
busy foliage, and decorative clutter.
|
|
58
|
+
|
|
59
|
+
2–4 spot-ink colors sampled from the photo after desaturation (charcoal, deep
|
|
60
|
+
green, brick, ochre, gray-blue, gray-brown). One small accent color only.
|
|
61
|
+
|
|
62
|
+
Each color layer must look hand-carved and hand-stamped: uneven hatch, broken
|
|
63
|
+
edges, dry ink, paper show-through, pressure variation, slight 1–2mm misregistration.
|
|
64
|
+
Not a smooth vector logo, not a filtered photo, not a full landscape painting.
|
|
65
|
+
|
|
66
|
+
Center the stamp on a warm off-white paper square with generous blank margin.
|
|
67
|
+
No typewriter text in this image. No Chinese seals, round postmarks, stamp
|
|
68
|
+
perforations, wax seals, stickers, or collage.
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Pass the source photo first, then one packaged style reference from
|
|
72
|
+
`references/rubber-stamp-examples/stamp-style-1.png` (or
|
|
73
|
+
`references/rubber-stamp-examples/stamp-style-2.png`)
|
|
74
|
+
so the model copies the hand-stamped ink language without copying that place.
|
|
75
|
+
|
|
76
|
+
Resolve the version-matched packaged skill inside each executable shell step.
|
|
77
|
+
Do not assume the current directory is a Slopcamera source checkout or use the
|
|
78
|
+
agent runner's copied skill path. The [source installation](install.md) supplies `SLOPCAMERA_SOURCE_ROOT`; restore that exact checkout in a new shell. Vercel launches the built Bun entrypoint because it cannot execute the source-install shell function. Run through the linked Vercel project:
|
|
79
|
+
|
|
80
|
+
```sh
|
|
81
|
+
skill_root="$(slopcamera skill path)"
|
|
82
|
+
vercel env run -- bun "$SLOPCAMERA_SOURCE_ROOT/apps/desktop/dist/cli/main.js" ai image generate \
|
|
83
|
+
--model bfl/flux-kontext-pro \
|
|
84
|
+
--prompt-file stamp-brief.txt \
|
|
85
|
+
--image /absolute/source-photo.png \
|
|
86
|
+
--image "$skill_root/references/rubber-stamp-examples/stamp-style-1.png" \
|
|
87
|
+
--aspect-ratio 1:1 \
|
|
88
|
+
--allow-cloud-upload \
|
|
89
|
+
--json --timeout 180s
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Remux awkward JPEGs to PNG first if Slopcamera's FFprobe rejects them. If Gateway
|
|
93
|
+
decode validation fails but bytes exist under `artifacts/slopcamera/generated/…`,
|
|
94
|
+
inspect the file; a valid image may still be usable after a local remux.
|
|
95
|
+
|
|
96
|
+
## Compose with code
|
|
97
|
+
|
|
98
|
+
Assemble the final poster with the packaged compositor so the photograph stays
|
|
99
|
+
literal:
|
|
100
|
+
|
|
101
|
+
```sh
|
|
102
|
+
skill_root="$(slopcamera skill path)"
|
|
103
|
+
bun "$skill_root/scripts/compose-rubber-stamp-field-note.ts" \
|
|
104
|
+
--photo /absolute/source-photo.jpg \
|
|
105
|
+
--stamp /absolute/generated-stamp.png \
|
|
106
|
+
--output /absolute/field-note.jpg \
|
|
107
|
+
--place "VENICE" \
|
|
108
|
+
--number "01" \
|
|
109
|
+
--keywords "brick / bell / lagoon" \
|
|
110
|
+
--year "2026"
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
The compositor cover-crops the photo into the left panel, draws warm paper on
|
|
114
|
+
the right, places the stamp mid-lower, and sets typewriter text beneath it:
|
|
115
|
+
|
|
116
|
+
```text
|
|
117
|
+
PLACE
|
|
118
|
+
No. NN
|
|
119
|
+
keyword / keyword / keyword
|
|
120
|
+
YEAR
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
Use a small monospace face. Keep the copy like a traveler's field record, not
|
|
124
|
+
an advertisement.
|
|
125
|
+
|
|
126
|
+
## Avoid
|
|
127
|
+
|
|
128
|
+
Hard center dividers, round Chinese seals, postage perforations, wax seals,
|
|
129
|
+
sticker collage, souvenir templates, smooth vector city icons, full rebuilds of
|
|
130
|
+
every building, dense carving, cartoon or child-craft looks, 3D plastic renders,
|
|
131
|
+
smooth digital gradients, oversaturation, excess copy, decorative pile-up, and
|
|
132
|
+
any redraw of the left-side photograph.
|
|
133
|
+
|
|
134
|
+
## Save and show
|
|
135
|
+
|
|
136
|
+
- Prefer `/home/box/media/images/slopcamera/YYYY-MM-DD-<place-slug>-field-note.jpg`
|
|
137
|
+
for Slopcamera library copies.
|
|
138
|
+
- Show the finished poster to the user.
|
|
139
|
+
- Keep the stamp artifact and receipt for iteration.
|
|
140
|
+
|
|
141
|
+
## Batch
|
|
142
|
+
|
|
143
|
+
Process one photo at a time. Reuse the same serial numbering scheme across a
|
|
144
|
+
trip. Do not stitch multiple photos into one poster unless the user asks.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Vectorize raster artwork
|
|
2
|
+
|
|
3
|
+
When the user asks to convert caller-owned raster artwork to SVG, keep the
|
|
4
|
+
raster as the source and treat the SVG as a replaceable derivative:
|
|
5
|
+
|
|
6
|
+
```sh
|
|
7
|
+
slopcamera image vectorize path/to/input.png --output path/to/input.svg --json
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
- Do not provide a credential for vectorization. The conversion keeps image bytes local; the initial tool provisioning can download a verified VTracer release.
|
|
11
|
+
- Do not redraw, relabel, crop, recolor, or simplify the subject beyond the
|
|
12
|
+
trace mechanics the command measures.
|
|
13
|
+
- Use `--duotone '#primary,#secondary'` only when the user explicitly asks for
|
|
14
|
+
that two-color adaptation.
|
|
15
|
+
- Preserve the emitted receipt in task output or an adjacent provenance record
|
|
16
|
+
when auditability matters.
|
|
17
|
+
- Do not bypass input, decoded-pixel, duration, path, byte, or fidelity gates.
|
|
18
|
+
- Inspect the SVG at its intended size. A successful trace is not evidence
|
|
19
|
+
that an unfamiliar symbol communicates the intended concept.
|
|
20
|
+
|
|
21
|
+
VTracer downloads from its checksum-pinned official release on first use. Use
|
|
22
|
+
`SLOPCAMERA_VTRACER_PATH` only for a compatible local 0.6.4 binary; Slopcamera still
|
|
23
|
+
records its hash. Never add an upscaling model, embedded raster fallback, or
|
|
24
|
+
commercial font to make a trace pass.
|
|
25
|
+
|
|
26
|
+
Bounded vectorization is currently supported on macOS and Linux. On Windows,
|
|
27
|
+
report the deliberate `tool_platform` failure; do not bypass it with an
|
|
28
|
+
unbounded temporary output file.
|
|
29
|
+
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
# Edit a video project
|
|
2
|
+
|
|
3
|
+
Use this workflow for screen recordings, talking-head videos, product demos,
|
|
4
|
+
imported camera or audio takes, captions, motion layers, creative alternatives,
|
|
5
|
+
and multi-format delivery. Slopcamera records editing decisions in a local project
|
|
6
|
+
and leaves original media unchanged.
|
|
7
|
+
|
|
8
|
+
## Define the finished result
|
|
9
|
+
|
|
10
|
+
Before editing, identify:
|
|
11
|
+
|
|
12
|
+
- the source recording or existing project;
|
|
13
|
+
- the intended audience and approximate duration;
|
|
14
|
+
- what should be removed, emphasized, or left untouched;
|
|
15
|
+
- whether the project needs generated images, video, speech, or transcripts;
|
|
16
|
+
- the required captions, logo, overlays, music, and audio treatment; and
|
|
17
|
+
- the final aspect ratios and clean or captioned versions.
|
|
18
|
+
|
|
19
|
+
Ask only when a missing choice would materially change the edit. Do not invent
|
|
20
|
+
brand assets, remove content merely to make the video shorter, or select a creative alternative outside the user’s supplied criteria.
|
|
21
|
+
|
|
22
|
+
## Inspect the host and project
|
|
23
|
+
|
|
24
|
+
Run these before building exact commands:
|
|
25
|
+
|
|
26
|
+
```sh
|
|
27
|
+
slopcamera doctor --json
|
|
28
|
+
slopcamera recordings list --json
|
|
29
|
+
slopcamera projects list --json
|
|
30
|
+
slopcamera workflows list --json
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Use `slopcamera inspect <recording> --json` for a recording bundle and
|
|
34
|
+
`slopcamera project inspect <project> --json` for a project. Read IDs, streams,
|
|
35
|
+
placements, synchronization, analyses, and current edit state from those
|
|
36
|
+
results. Never guess them.
|
|
37
|
+
|
|
38
|
+
Check the bootstrap before promising a file-only edit. There is no public empty-project or arbitrary-media project creator: `projects create` requires a real stopped Slopcamera recording, and `project add` / SDK `media.ingest` require an existing project. Current-source `studio assemble` creates one from a real successful native sequence; `direct assemble` uses accepted generated takes. Neither is a generic file import. Do not fabricate recording manifests or receipts, run paid generation to obtain an empty project, or hand-edit private state. If the request permits, use a standalone spatial scene for visuals and disclose any separate local audio/editor step; otherwise report the missing project bootstrap precisely.
|
|
39
|
+
|
|
40
|
+
If the work begins with a new Slopcamera recording, create the project from that
|
|
41
|
+
recording, then add any independent footage or audio:
|
|
42
|
+
|
|
43
|
+
```sh
|
|
44
|
+
slopcamera projects create --from-recording <recording-id> --name '<name>' --json
|
|
45
|
+
slopcamera project add <project-id> camera.mov --role camera --json
|
|
46
|
+
slopcamera project add <project-id> narration.wav --role dialogue --json
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Imported media begins with unverified synchronization. When timing with another
|
|
50
|
+
track matters, inspect and apply audio alignment before cuts, filler removal,
|
|
51
|
+
camera moves, or rendering depend on it.
|
|
52
|
+
|
|
53
|
+
## Analyze before changing the edit
|
|
54
|
+
|
|
55
|
+
Use only the evidence the requested edit needs:
|
|
56
|
+
|
|
57
|
+
- `slopcamera analyze inactivity` for long still or silent ranges;
|
|
58
|
+
- `slopcamera analyze speech` and `slopcamera fillers list` for words and safe filler
|
|
59
|
+
candidates;
|
|
60
|
+
- `slopcamera analyze faces` and `slopcamera faces list` for local face geometry used
|
|
61
|
+
by framing;
|
|
62
|
+
- `slopcamera analyze music` before applying filler removal that must protect music;
|
|
63
|
+
- `slopcamera analyze scenes` for scene boundaries or bounded scene descriptions;
|
|
64
|
+
and
|
|
65
|
+
- recording events for cursor, click, keystroke, focused-input, and typed-text
|
|
66
|
+
timing.
|
|
67
|
+
|
|
68
|
+
Face analysis is local geometry tracking, not recognition. Scene descriptions
|
|
69
|
+
upload only selected derived frames and require `--allow-cloud-upload`.
|
|
70
|
+
Speech analysis may use the configured local Whisper runtime; Gateway
|
|
71
|
+
transcription is the separate workflow in
|
|
72
|
+
[gateway-media.md](gateway-media.md).
|
|
73
|
+
|
|
74
|
+
## Make non-destructive editorial changes
|
|
75
|
+
|
|
76
|
+
Run `slopcamera help project` for the current grammar. The project editor supports:
|
|
77
|
+
|
|
78
|
+
- cuts, trims, and speed changes in project time;
|
|
79
|
+
- camera push, reframe, arbitrary camera paths, and local face-follow framing;
|
|
80
|
+
- screen zooms tied to a rectangle, point, cursor, window, or focused input;
|
|
81
|
+
- cursor, click, keystroke, and typed-text presentation;
|
|
82
|
+
- direct image, SVG, GIF, video and emoji overlays;
|
|
83
|
+
- captions and interaction metadata; and
|
|
84
|
+
- captions, clean outputs, and captioned outputs.
|
|
85
|
+
|
|
86
|
+
Preserve the original recording and imported media. Apply changes to the
|
|
87
|
+
project or its editable scene source, then inspect the resulting project hash.
|
|
88
|
+
When an edit depends on evidence, use the evidence identifier returned by its
|
|
89
|
+
analysis rather than recomputing or approximating it.
|
|
90
|
+
|
|
91
|
+
Direct `project edit` does not accept HTML or arbitrary audio/color filters. Render HTML/Canvas/Three/WGSL through the local workflow `media.htmlOverlay` operation, then use its returned video as a project layer. `media audio` and `media color` produce separate controlled derivatives.
|
|
92
|
+
|
|
93
|
+
Overlay `--position x,y` is an offset from its selected anchor. Use `--anchor center --position 0,0` to center a layer, or `--anchor top-left --position 42,70` for an actual top-left pixel position. A full-frame overlay uses top-left at `0,0`. Do not add half the canvas dimensions to center offsets.
|
|
94
|
+
|
|
95
|
+
For independently authored media, explicit `project add --at` timing may be appropriate. Rendering with `--allow-unverified-sync` acknowledges provisional synchronization; it does not turn authored times into measured alignment. Finish ordinary edits before V2 spatial migration, because ordinary editing rejects the migrated head.
|
|
96
|
+
|
|
97
|
+
## Choose one HTML authoring surface
|
|
98
|
+
|
|
99
|
+
Run `slopcamera html catalog` before creating a transparent HTML overlay. Choose the
|
|
100
|
+
profile by its primary job:
|
|
101
|
+
|
|
102
|
+
- `plain` for document layout, CSS, SVG, and native browser drawing;
|
|
103
|
+
- `motion` for seekable DOM or SVG choreography;
|
|
104
|
+
- `p5` for an immediate-mode Canvas 2D sketch;
|
|
105
|
+
- `two` for a retained vector 2D scene;
|
|
106
|
+
- `paper-shaders` for a parameterized texture or gradient;
|
|
107
|
+
- `three` for a retained 3D scene; and
|
|
108
|
+
- `vgpu` for explicit WGSL, compute, or pass-level GPU control.
|
|
109
|
+
|
|
110
|
+
Slopcamera owns the clock and declared assets in every profile. Keep p5 in P2D instance
|
|
111
|
+
mode with an empty startup draw, `noLoop()`, and one awaited `redraw()`. Keep
|
|
112
|
+
Two.js on its explicit WebGL renderer with `autostart: false` and one manual
|
|
113
|
+
`render()`. Derive all visible state from the absolute Slopcamera frame and
|
|
114
|
+
`SlopcameraOverlay.randomFor`; never add a CDN, live input, ambient asset loader, or
|
|
115
|
+
second frame loop.
|
|
116
|
+
|
|
117
|
+
## Use vgpu for explicit WebGPU effects
|
|
118
|
+
|
|
119
|
+
Choose `slopcamera html scaffold vgpu --output <file.html>` for a reviewed fullscreen
|
|
120
|
+
WGSL effect or a composition that needs explicit WebGPU passes. The
|
|
121
|
+
starter is one transparent pass; extend its checked source for bounded
|
|
122
|
+
multipass work instead of introducing a second animation clock.
|
|
123
|
+
|
|
124
|
+
- Derive motion from the absolute `timeMs` supplied by `SlopcameraOverlay.onFrame`.
|
|
125
|
+
- Submit explicit `frame()` passes and wait for both frame completion and GPU
|
|
126
|
+
settlement before the callback resolves.
|
|
127
|
+
- Keep the transparent clear and premultiplied-alpha contract intact.
|
|
128
|
+
- Expect the render to fail closed when WebGPU or its adapter is unavailable;
|
|
129
|
+
do not add a silent Canvas, WebGL, or static-image fallback.
|
|
130
|
+
|
|
131
|
+
Prefer Motion for DOM animation, Paper Shaders for its existing texture and
|
|
132
|
+
gradient treatments, and Three.js for full 3D scenes. vgpu is not a reason to
|
|
133
|
+
rewrite an overlay that already fits one of those paths.
|
|
134
|
+
|
|
135
|
+
## Prefer a built-in workflow for a complete known job
|
|
136
|
+
|
|
137
|
+
Inspect the exact input schema with
|
|
138
|
+
`slopcamera workflows show <id> --json` before preparing its JSON input.
|
|
139
|
+
|
|
140
|
+
- `talking-head-cleanup` removes long pauses, keeps local face evidence, and
|
|
141
|
+
renders a final landscape talking-head video.
|
|
142
|
+
- `polished-screen-demo` analyzes inactivity, screen actions, faces, and
|
|
143
|
+
music before applying cleanup, interaction effects, and face-aware framing.
|
|
144
|
+
- `chaptered-demo` adds a reviewed overlay composition and renders an exact
|
|
145
|
+
final video.
|
|
146
|
+
- `social-variants` renders 16:9, 9:16, 1:1, and 4:5 branches, with clean and
|
|
147
|
+
optional captioned outputs.
|
|
148
|
+
- `creative-iteration` makes two to sixteen independent preview candidates
|
|
149
|
+
from one frozen project.
|
|
150
|
+
- `creative-selection` records an explicit human or task selection, promotes
|
|
151
|
+
it when requested, and materializes named deliveries.
|
|
152
|
+
|
|
153
|
+
Read [workflows and SDK](workflows-sdk.md) for custom Bun authoring, exact plan approval and durable recovery. The seventh built-in, `directed-scene`, consumes prepared V2 scene render inputs.
|
|
154
|
+
|
|
155
|
+
Plan a workflow before running it. Do not choose or promote a creative
|
|
156
|
+
candidate unless the user has selected it or the request supplies a
|
|
157
|
+
deterministic selection rule.
|
|
158
|
+
|
|
159
|
+
## Preview before final delivery
|
|
160
|
+
|
|
161
|
+
For substantial edits:
|
|
162
|
+
|
|
163
|
+
1. inspect the current project;
|
|
164
|
+
2. plan or apply the requested edits;
|
|
165
|
+
3. render the complete timeline at preview quality;
|
|
166
|
+
4. inspect picture, sound, captions, transitions, framing, and the first and
|
|
167
|
+
last frames;
|
|
168
|
+
5. revise the project, not the preview file; and
|
|
169
|
+
6. render final outputs from the selected project state.
|
|
170
|
+
|
|
171
|
+
Ordinary project render `--output` paths are relative to that project’s directory. Under the default workspace, `--output renders/final.mp4` means `artifacts/slopcamera/projects/<project-id>/renders/final.mp4`. Resolve returned relative receipt paths against that project, not the shell directory.
|
|
172
|
+
|
|
173
|
+
Preview and final use the same timeline and composition. A preview is evidence
|
|
174
|
+
about the final edit, but still check the final file's duration, dimensions,
|
|
175
|
+
streams, and output path.
|
|
176
|
+
|
|
177
|
+
## Report the creative result
|
|
178
|
+
|
|
179
|
+
Tell the user:
|
|
180
|
+
|
|
181
|
+
- which recording or project was edited;
|
|
182
|
+
- what was generated, analyzed, removed, added, or reframed;
|
|
183
|
+
- which decisions remain alternatives rather than the current project state;
|
|
184
|
+
- the preview path they can review;
|
|
185
|
+
- every final output path and aspect ratio; and
|
|
186
|
+
- any upload, model, synchronization, or local-tool limitation that affected
|
|
187
|
+
the result.
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
# Slopcamera visual communication rules
|
|
2
|
+
|
|
3
|
+
Use these rules to turn supplied content into a diagram without adding content.
|
|
4
|
+
|
|
5
|
+
## Start with the claim
|
|
6
|
+
|
|
7
|
+
A diagram should make one relationship, comparison, sequence, or hierarchy easy
|
|
8
|
+
to perceive. Write down that supplied claim privately before placing shapes.
|
|
9
|
+
Every primary mark must help the viewer perceive it. Remove marks that merely
|
|
10
|
+
repeat styling.
|
|
11
|
+
|
|
12
|
+
Keep the semantic inventory small:
|
|
13
|
+
|
|
14
|
+
- Three to seven primary objects is a useful default for a high-level overview.
|
|
15
|
+
- A viewer should be able to name the reading order after a quick glance.
|
|
16
|
+
- Labels should normally be one to three words. Use a second diagram when the
|
|
17
|
+
only way to fit the content is paragraph-sized labels.
|
|
18
|
+
|
|
19
|
+
These are compression rules, not permission to omit facts the user explicitly
|
|
20
|
+
asked to show.
|
|
21
|
+
|
|
22
|
+
## Make visual grammar consistent
|
|
23
|
+
|
|
24
|
+
Similarity implies shared meaning. Proximity implies grouping. Alignment implies
|
|
25
|
+
relationship. Encode those implications deliberately:
|
|
26
|
+
|
|
27
|
+
- Equal roles use equal geometry and treatment.
|
|
28
|
+
- A size change must encode a supplied magnitude or hierarchy.
|
|
29
|
+
- A color change must encode a supplied category or state.
|
|
30
|
+
- A different shape must encode a different kind of object.
|
|
31
|
+
- Group with whitespace and position before adding a new enclosing border.
|
|
32
|
+
- Do not mix rounded and hard corners for peers.
|
|
33
|
+
|
|
34
|
+
When appearance varies without a reason, a viewer spends attention searching
|
|
35
|
+
for a distinction that does not exist.
|
|
36
|
+
|
|
37
|
+
## Route relationships clearly
|
|
38
|
+
|
|
39
|
+
Connectors need room to be seen as connectors.
|
|
40
|
+
|
|
41
|
+
- Keep at least 96px of visible connector between shape boundaries; prefer
|
|
42
|
+
120–200px.
|
|
43
|
+
- Bind each semantic arrow to its source and target.
|
|
44
|
+
- Point arrowheads into open space at the target edge.
|
|
45
|
+
- Avoid crossings. If a crossing is unavoidable, change the layout before
|
|
46
|
+
adding bridge decorations.
|
|
47
|
+
- Keep connector labels short and off the path.
|
|
48
|
+
- Separate repeated fan-in and fan-out arrowheads with distinct endpoint
|
|
49
|
+
positions. A shared side-center port makes several relationships look like
|
|
50
|
+
one heavy or broken connector.
|
|
51
|
+
- Looking from a source toward a target, positive bend is on the viewer's
|
|
52
|
+
right side of the chord and negative bend is on the left. For a
|
|
53
|
+
left-to-right chord, that means positive bends down and negative bends up.
|
|
54
|
+
Reverse paired signs when branches should bow toward their open interior.
|
|
55
|
+
- Do not use an arrow where proximity or containment already states the
|
|
56
|
+
relationship.
|
|
57
|
+
|
|
58
|
+
Longer arrows are the default because a short arrow can collapse into the
|
|
59
|
+
neighboring strokes and make two objects look like one component.
|
|
60
|
+
|
|
61
|
+
## Use icons as recognition cues
|
|
62
|
+
|
|
63
|
+
- Use one icon family and one stroke language in a diagram.
|
|
64
|
+
- Keep peer icons the same optical size.
|
|
65
|
+
- Render an icon bare inside its existing card or shape.
|
|
66
|
+
- Do not add a second bordered icon container inside a bordered card.
|
|
67
|
+
- Pair an icon with a short label when the glyph is not universally understood.
|
|
68
|
+
- Never let an icon introduce a fact absent from the prompt.
|
|
69
|
+
|
|
70
|
+
## Build hierarchy without prose
|
|
71
|
+
|
|
72
|
+
Use position, whitespace, and restrained contrast before size or saturation.
|
|
73
|
+
Make the important path visually continuous. Keep supporting objects quieter.
|
|
74
|
+
Avoid shadows, gradients, textures, and ornamental strokes unless they encode
|
|
75
|
+
requested meaning.
|
|
76
|
+
|
|
77
|
+
When one supplied object contains two distinct text roles, use measured label
|
|
78
|
+
rows rather than punctuation or manual vertical offsets. A compact mono row can
|
|
79
|
+
name a type, identifier, or relation while a larger default-family row carries
|
|
80
|
+
the human-readable value. Keep peer rows consistent and center the complete
|
|
81
|
+
icon, gaps, and wrapped line boxes as one group.
|
|
82
|
+
|
|
83
|
+
Use one color distinction by default. When the supplied system contains stable
|
|
84
|
+
roles across several diagrams, a restrained family palette can reduce relearning:
|
|
85
|
+
|
|
86
|
+
- blue for sources, evidence, and observed records;
|
|
87
|
+
- purple for proposed structure, transforms, or system-generated candidates;
|
|
88
|
+
- yellow for named-human review or authority;
|
|
89
|
+
- green for accepted, versioned, or published outputs;
|
|
90
|
+
- red or orange for correction, retraction, or failure; and
|
|
91
|
+
- neutral for ordinary supporting objects.
|
|
92
|
+
|
|
93
|
+
Use only the roles the content actually supplies. Preserve the same mapping
|
|
94
|
+
throughout the diagram family, and keep text or icons sufficient when color is
|
|
95
|
+
unavailable.
|
|
96
|
+
|
|
97
|
+
For light and dark variants:
|
|
98
|
+
|
|
99
|
+
- Preserve the same geometry and semantic contrast.
|
|
100
|
+
- Test text and thin strokes against their immediate background.
|
|
101
|
+
- Do not encode meaning only by hue.
|
|
102
|
+
- Keep axis and connector strokes single and opaque enough to avoid a faint
|
|
103
|
+
inner-line effect.
|
|
104
|
+
|
|
105
|
+
## Sources behind the rules
|
|
106
|
+
|
|
107
|
+
These defaults synthesize established work rather than copying a house style:
|
|
108
|
+
|
|
109
|
+
- Gestalt principles of proximity, similarity, continuity, and enclosure.
|
|
110
|
+
- Colin Ware, *Information Visualization: Perception for Design*, on
|
|
111
|
+
preattentive features and visual queries.
|
|
112
|
+
- Stephen Kosslyn, *Graph Design for the Eye and Mind*, on perceptual grouping
|
|
113
|
+
and correspondence between visual marks and meaning.
|
|
114
|
+
- Richard Mayer's coherence principle: exclude extraneous material that
|
|
115
|
+
competes with the intended explanation.
|
|
116
|
+
- Barbara Tversky's work on spatial representations and diagrams as external
|
|
117
|
+
structures for inference.
|
|
118
|
+
|
|
119
|
+
The practical test is semantic: if a visual difference makes a reasonable
|
|
120
|
+
viewer infer a difference that the prompt did not supply, remove it.
|