@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,450 @@
|
|
|
1
|
+
import { z } from "zod"
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
type OperationContract,
|
|
5
|
+
type OperationLifecycleKind,
|
|
6
|
+
type OperationPolicy,
|
|
7
|
+
} from "./contracts.js"
|
|
8
|
+
import { utf8ByteLength } from "./json-utf8.js"
|
|
9
|
+
|
|
10
|
+
const MAX_PATH_CHARACTERS = 4_096
|
|
11
|
+
const MAX_PROMPT_BYTES = 32 * 1024
|
|
12
|
+
const MAX_GENERATED_IMAGE_BYTES = 64 * 1024 * 1024
|
|
13
|
+
const MAX_VECTOR_INPUT_BYTES = 16 * 1024 * 1024
|
|
14
|
+
const MAX_VECTOR_OUTPUT_BYTES = 2_000_000
|
|
15
|
+
const MAX_DIAGRAM_ARTIFACT_BYTES = 64 * 1024 * 1024
|
|
16
|
+
|
|
17
|
+
const BoundedPathSchema = z.string()
|
|
18
|
+
.min(1)
|
|
19
|
+
.max(MAX_PATH_CHARACTERS)
|
|
20
|
+
.refine(value => !value.includes("\0"), "Paths must not contain NUL bytes.")
|
|
21
|
+
|
|
22
|
+
const Sha256Schema = z.string().regex(/^[a-f0-9]{64}$/u)
|
|
23
|
+
const BoundedVersionStringSchema = z.string().min(1).max(256)
|
|
24
|
+
const NonnegativeSafeIntegerSchema = z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER)
|
|
25
|
+
const PositiveSafeIntegerSchema = z.number().int().positive().max(Number.MAX_SAFE_INTEGER)
|
|
26
|
+
|
|
27
|
+
function schemaWithReadonlyOutput<Output>(
|
|
28
|
+
schema: z.ZodType,
|
|
29
|
+
): z.ZodType<Output> {
|
|
30
|
+
return schema as z.ZodType<Output>
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export type SlopcameraImageModel = string
|
|
34
|
+
|
|
35
|
+
export interface SlopcameraDiagramCheckInput {
|
|
36
|
+
readonly path: string
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export interface SlopcameraDiagramRenderInput extends SlopcameraDiagramCheckInput {
|
|
40
|
+
readonly outDirectory?: string
|
|
41
|
+
readonly scale?: number
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export interface SlopcameraImageVectorizeInput {
|
|
45
|
+
readonly alphaCutoff?: number
|
|
46
|
+
readonly duotone?: readonly [string, string]
|
|
47
|
+
readonly inputPath: string
|
|
48
|
+
readonly outputPath: string
|
|
49
|
+
readonly timeoutMs?: number
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export interface SlopcameraImageGenerateInput {
|
|
53
|
+
readonly model: SlopcameraImageModel
|
|
54
|
+
readonly outputPath: string
|
|
55
|
+
readonly prompt: string
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export interface SlopcameraLintFinding {
|
|
59
|
+
readonly code: string
|
|
60
|
+
readonly message: string
|
|
61
|
+
readonly shapeIds: readonly string[]
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export interface SlopcameraDiagramCheckOutput {
|
|
65
|
+
readonly configPath: null
|
|
66
|
+
readonly findings: readonly SlopcameraLintFinding[]
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export interface SlopcameraRenderArtifacts {
|
|
70
|
+
readonly darkPng: string
|
|
71
|
+
readonly darkSvg: string
|
|
72
|
+
readonly lightPng: string
|
|
73
|
+
readonly lightSvg: string
|
|
74
|
+
readonly spec: string
|
|
75
|
+
readonly tldr: string
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export interface SlopcameraDiagramRenderOutput {
|
|
79
|
+
readonly artifacts: SlopcameraRenderArtifacts
|
|
80
|
+
readonly configPath: null
|
|
81
|
+
readonly findings: readonly SlopcameraLintFinding[]
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export interface SlopcameraVectorizeQualityReceipt {
|
|
85
|
+
readonly alphaRmse: number
|
|
86
|
+
readonly colorRmse: number
|
|
87
|
+
readonly outsideAlphaRatio: number
|
|
88
|
+
readonly sampleHeight: number
|
|
89
|
+
readonly sampleWidth: number
|
|
90
|
+
readonly supportRecall: number
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export interface SlopcameraVectorizeProvenance {
|
|
94
|
+
readonly arch: string
|
|
95
|
+
readonly platform: string
|
|
96
|
+
readonly sharp: string
|
|
97
|
+
readonly sharpVersions: Readonly<Record<string, string>>
|
|
98
|
+
readonly vips: string
|
|
99
|
+
readonly vtracerSha256: string
|
|
100
|
+
readonly vtracerSource: "official-release" | "override"
|
|
101
|
+
readonly vtracerVersion: string
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
export interface SlopcameraVectorizeReceipt {
|
|
105
|
+
readonly alphaCutoff: number
|
|
106
|
+
readonly bytes: number
|
|
107
|
+
readonly candidatesEvaluated: number
|
|
108
|
+
readonly format: string
|
|
109
|
+
readonly height: number
|
|
110
|
+
readonly inputBytes: number
|
|
111
|
+
readonly outputMode: "color" | "duotone"
|
|
112
|
+
readonly pathCount: number
|
|
113
|
+
readonly profile: "balanced" | "detailed" | "photo"
|
|
114
|
+
readonly provenance: SlopcameraVectorizeProvenance
|
|
115
|
+
readonly quality: SlopcameraVectorizeQualityReceipt
|
|
116
|
+
readonly receiptVersion: 1
|
|
117
|
+
readonly representation: "color-paths" | "alpha-mask"
|
|
118
|
+
readonly sourceSha256: string
|
|
119
|
+
readonly svgSha256: string
|
|
120
|
+
readonly width: number
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
export interface SlopcameraImageVectorizeOutput {
|
|
124
|
+
readonly outputPath: string
|
|
125
|
+
readonly receipt: SlopcameraVectorizeReceipt
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
export interface SlopcameraImageGenerateOutput {
|
|
129
|
+
readonly bytes: number
|
|
130
|
+
readonly mediaType: "image/jpeg" | "image/png" | "image/webp"
|
|
131
|
+
readonly model: SlopcameraImageModel
|
|
132
|
+
readonly outputPath: string
|
|
133
|
+
readonly provider: "vercel-ai-gateway"
|
|
134
|
+
readonly requestId: string
|
|
135
|
+
readonly sha256: string
|
|
136
|
+
readonly warnings: readonly string[]
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
export const SlopcameraImageModelSchema = z.string()
|
|
140
|
+
.min(3)
|
|
141
|
+
.max(256)
|
|
142
|
+
.regex(/^[a-z0-9][a-z0-9._-]*\/[a-z0-9][a-z0-9._:-]*$/iu) satisfies z.ZodType<SlopcameraImageModel>
|
|
143
|
+
|
|
144
|
+
export const SlopcameraDiagramCheckInputSchema = z.strictObject({
|
|
145
|
+
path: BoundedPathSchema,
|
|
146
|
+
}) satisfies z.ZodType<SlopcameraDiagramCheckInput>
|
|
147
|
+
|
|
148
|
+
export const SlopcameraDiagramRenderInputSchema = schemaWithReadonlyOutput<
|
|
149
|
+
SlopcameraDiagramRenderInput
|
|
150
|
+
>(z.strictObject({
|
|
151
|
+
outDirectory: BoundedPathSchema.optional(),
|
|
152
|
+
path: BoundedPathSchema,
|
|
153
|
+
scale: z.number().finite().positive().max(4).optional(),
|
|
154
|
+
}))
|
|
155
|
+
|
|
156
|
+
export const SlopcameraImageVectorizeInputSchema = schemaWithReadonlyOutput<
|
|
157
|
+
SlopcameraImageVectorizeInput
|
|
158
|
+
>(z.strictObject({
|
|
159
|
+
alphaCutoff: z.number().int().min(1).max(64).optional(),
|
|
160
|
+
duotone: z.tuple([
|
|
161
|
+
z.string().regex(/^#[a-f0-9]{3}(?:[a-f0-9]{3})?$/iu),
|
|
162
|
+
z.string().regex(/^#[a-f0-9]{3}(?:[a-f0-9]{3})?$/iu),
|
|
163
|
+
]).optional(),
|
|
164
|
+
inputPath: BoundedPathSchema,
|
|
165
|
+
outputPath: BoundedPathSchema.refine(
|
|
166
|
+
value => value.toLowerCase().endsWith(".svg"),
|
|
167
|
+
"Vector output paths must end in .svg.",
|
|
168
|
+
),
|
|
169
|
+
timeoutMs: z.number().int().min(1).max(300_000).optional(),
|
|
170
|
+
}))
|
|
171
|
+
|
|
172
|
+
const PromptSchema = z.string().superRefine((value, context) => {
|
|
173
|
+
if (utf8ByteLength(value, MAX_PROMPT_BYTES) === undefined) {
|
|
174
|
+
context.addIssue({
|
|
175
|
+
code: "custom",
|
|
176
|
+
message: `Prompts must contain at most ${String(MAX_PROMPT_BYTES)} UTF-8 bytes.`,
|
|
177
|
+
})
|
|
178
|
+
return
|
|
179
|
+
}
|
|
180
|
+
if (value.trim().length === 0) {
|
|
181
|
+
context.addIssue({ code: "custom", message: "Prompts must not be blank." })
|
|
182
|
+
return
|
|
183
|
+
}
|
|
184
|
+
if (/[\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]/u.test(value)) {
|
|
185
|
+
context.addIssue({
|
|
186
|
+
code: "custom",
|
|
187
|
+
message: "Prompts must not contain control characters.",
|
|
188
|
+
})
|
|
189
|
+
}
|
|
190
|
+
})
|
|
191
|
+
|
|
192
|
+
export const SlopcameraImageGenerateInputSchema = schemaWithReadonlyOutput<
|
|
193
|
+
SlopcameraImageGenerateInput
|
|
194
|
+
>(z.strictObject({
|
|
195
|
+
model: SlopcameraImageModelSchema,
|
|
196
|
+
outputPath: BoundedPathSchema.refine(
|
|
197
|
+
value => /\.(?:jpe?g|png|webp)$/iu.test(value),
|
|
198
|
+
"Generated image output paths must end in .png, .jpg, .jpeg, or .webp.",
|
|
199
|
+
),
|
|
200
|
+
prompt: PromptSchema,
|
|
201
|
+
}))
|
|
202
|
+
|
|
203
|
+
export const SlopcameraLintFindingSchema = z.strictObject({
|
|
204
|
+
code: z.string().min(1).max(160),
|
|
205
|
+
message: z.string().min(1).max(4_096),
|
|
206
|
+
shapeIds: z.array(z.string().min(1).max(256)).max(4_096),
|
|
207
|
+
}) satisfies z.ZodType<SlopcameraLintFinding>
|
|
208
|
+
|
|
209
|
+
export const SlopcameraDiagramCheckOutputSchema = z.strictObject({
|
|
210
|
+
configPath: z.null(),
|
|
211
|
+
findings: z.array(SlopcameraLintFindingSchema).max(4_096),
|
|
212
|
+
}) satisfies z.ZodType<SlopcameraDiagramCheckOutput>
|
|
213
|
+
|
|
214
|
+
export const SlopcameraRenderArtifactsSchema = z.strictObject({
|
|
215
|
+
darkPng: BoundedPathSchema,
|
|
216
|
+
darkSvg: BoundedPathSchema,
|
|
217
|
+
lightPng: BoundedPathSchema,
|
|
218
|
+
lightSvg: BoundedPathSchema,
|
|
219
|
+
spec: BoundedPathSchema,
|
|
220
|
+
tldr: BoundedPathSchema,
|
|
221
|
+
}) satisfies z.ZodType<SlopcameraRenderArtifacts>
|
|
222
|
+
|
|
223
|
+
export const SlopcameraDiagramRenderOutputSchema = z.strictObject({
|
|
224
|
+
artifacts: SlopcameraRenderArtifactsSchema,
|
|
225
|
+
configPath: z.null(),
|
|
226
|
+
findings: z.array(SlopcameraLintFindingSchema).max(4_096),
|
|
227
|
+
}) satisfies z.ZodType<SlopcameraDiagramRenderOutput>
|
|
228
|
+
|
|
229
|
+
export const SlopcameraVectorizeQualityReceiptSchema = z.strictObject({
|
|
230
|
+
alphaRmse: z.number().finite().nonnegative(),
|
|
231
|
+
colorRmse: z.number().finite().nonnegative(),
|
|
232
|
+
outsideAlphaRatio: z.number().finite().min(0).max(1),
|
|
233
|
+
sampleHeight: PositiveSafeIntegerSchema,
|
|
234
|
+
sampleWidth: PositiveSafeIntegerSchema,
|
|
235
|
+
supportRecall: z.number().finite().min(0).max(1),
|
|
236
|
+
}) satisfies z.ZodType<SlopcameraVectorizeQualityReceipt>
|
|
237
|
+
|
|
238
|
+
export const SlopcameraVectorizeProvenanceSchema = z.strictObject({
|
|
239
|
+
arch: BoundedVersionStringSchema,
|
|
240
|
+
platform: BoundedVersionStringSchema,
|
|
241
|
+
sharp: BoundedVersionStringSchema,
|
|
242
|
+
sharpVersions: z.record(
|
|
243
|
+
z.string().min(1).max(128),
|
|
244
|
+
BoundedVersionStringSchema,
|
|
245
|
+
),
|
|
246
|
+
vips: BoundedVersionStringSchema,
|
|
247
|
+
vtracerSha256: Sha256Schema,
|
|
248
|
+
vtracerSource: z.enum(["official-release", "override"]),
|
|
249
|
+
vtracerVersion: BoundedVersionStringSchema,
|
|
250
|
+
}) satisfies z.ZodType<SlopcameraVectorizeProvenance>
|
|
251
|
+
|
|
252
|
+
export const SlopcameraVectorizeReceiptSchema = z.strictObject({
|
|
253
|
+
alphaCutoff: z.number().int().min(1).max(64),
|
|
254
|
+
bytes: NonnegativeSafeIntegerSchema.max(MAX_VECTOR_OUTPUT_BYTES),
|
|
255
|
+
candidatesEvaluated: PositiveSafeIntegerSchema,
|
|
256
|
+
format: z.string().min(1).max(80),
|
|
257
|
+
height: PositiveSafeIntegerSchema.max(4_096),
|
|
258
|
+
inputBytes: PositiveSafeIntegerSchema.max(MAX_VECTOR_INPUT_BYTES),
|
|
259
|
+
outputMode: z.enum(["color", "duotone"]),
|
|
260
|
+
pathCount: NonnegativeSafeIntegerSchema.max(12_000),
|
|
261
|
+
profile: z.enum(["balanced", "detailed", "photo"]),
|
|
262
|
+
provenance: SlopcameraVectorizeProvenanceSchema,
|
|
263
|
+
quality: SlopcameraVectorizeQualityReceiptSchema,
|
|
264
|
+
receiptVersion: z.literal(1),
|
|
265
|
+
representation: z.enum(["color-paths", "alpha-mask"]),
|
|
266
|
+
sourceSha256: Sha256Schema,
|
|
267
|
+
svgSha256: Sha256Schema,
|
|
268
|
+
width: PositiveSafeIntegerSchema.max(4_096),
|
|
269
|
+
}) satisfies z.ZodType<SlopcameraVectorizeReceipt>
|
|
270
|
+
|
|
271
|
+
export const SlopcameraImageVectorizeOutputSchema = z.strictObject({
|
|
272
|
+
outputPath: BoundedPathSchema,
|
|
273
|
+
receipt: SlopcameraVectorizeReceiptSchema,
|
|
274
|
+
}) satisfies z.ZodType<SlopcameraImageVectorizeOutput>
|
|
275
|
+
|
|
276
|
+
export const SlopcameraImageGenerateOutputSchema = z.strictObject({
|
|
277
|
+
bytes: PositiveSafeIntegerSchema.max(MAX_GENERATED_IMAGE_BYTES),
|
|
278
|
+
mediaType: z.enum(["image/jpeg", "image/png", "image/webp"]),
|
|
279
|
+
model: SlopcameraImageModelSchema,
|
|
280
|
+
outputPath: BoundedPathSchema,
|
|
281
|
+
provider: z.literal("vercel-ai-gateway"),
|
|
282
|
+
requestId: z.string()
|
|
283
|
+
.min(1)
|
|
284
|
+
.max(256)
|
|
285
|
+
.refine(
|
|
286
|
+
value => !/[\u0000-\u001f\u007f]/u.test(value),
|
|
287
|
+
"Request ids must not contain control characters.",
|
|
288
|
+
),
|
|
289
|
+
sha256: Sha256Schema,
|
|
290
|
+
warnings: z.array(z.string().min(1).max(256)).max(100),
|
|
291
|
+
}) satisfies z.ZodType<SlopcameraImageGenerateOutput>
|
|
292
|
+
|
|
293
|
+
export interface PortableSlopcameraOperationInputMap {
|
|
294
|
+
readonly "slopcamera.diagram.check": SlopcameraDiagramCheckInput
|
|
295
|
+
readonly "slopcamera.diagram.render": SlopcameraDiagramRenderInput
|
|
296
|
+
readonly "slopcamera.image.generate": SlopcameraImageGenerateInput
|
|
297
|
+
readonly "slopcamera.image.vectorize": SlopcameraImageVectorizeInput
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
export interface PortableSlopcameraOperationResultMap {
|
|
301
|
+
readonly "slopcamera.diagram.check": SlopcameraDiagramCheckOutput
|
|
302
|
+
readonly "slopcamera.diagram.render": SlopcameraDiagramRenderOutput
|
|
303
|
+
readonly "slopcamera.image.generate": SlopcameraImageGenerateOutput
|
|
304
|
+
readonly "slopcamera.image.vectorize": SlopcameraImageVectorizeOutput
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
export const PORTABLE_SLOPCAMERA_OPERATION_KINDS = Object.freeze([
|
|
308
|
+
"slopcamera.diagram.check",
|
|
309
|
+
"slopcamera.diagram.render",
|
|
310
|
+
"slopcamera.image.generate",
|
|
311
|
+
"slopcamera.image.vectorize",
|
|
312
|
+
] as const)
|
|
313
|
+
export type PortableSlopcameraOperationKind =
|
|
314
|
+
typeof PORTABLE_SLOPCAMERA_OPERATION_KINDS[number]
|
|
315
|
+
|
|
316
|
+
export interface PortableSlopcameraOperationContract<
|
|
317
|
+
Kind extends PortableSlopcameraOperationKind,
|
|
318
|
+
> extends OperationContract<
|
|
319
|
+
PortableSlopcameraOperationInputMap[Kind],
|
|
320
|
+
PortableSlopcameraOperationResultMap[Kind]
|
|
321
|
+
> {
|
|
322
|
+
readonly inputSchema: z.ZodType<PortableSlopcameraOperationInputMap[Kind]>
|
|
323
|
+
readonly kind: Kind
|
|
324
|
+
readonly lifecycle: OperationLifecycleKind
|
|
325
|
+
readonly outputSchema: z.ZodType<PortableSlopcameraOperationResultMap[Kind]>
|
|
326
|
+
readonly policy: OperationPolicy
|
|
327
|
+
readonly version: 2
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
function freezePolicy(policy: OperationPolicy): OperationPolicy {
|
|
331
|
+
const preparation = Object.freeze([...policy.preparation])
|
|
332
|
+
const resources = Object.freeze(policy.resources.map(claim => Object.freeze({ ...claim })))
|
|
333
|
+
return Object.freeze({ ...policy, preparation, resources })
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
function portableContract<Kind extends PortableSlopcameraOperationKind>(
|
|
337
|
+
contract: PortableSlopcameraOperationContract<Kind>,
|
|
338
|
+
): PortableSlopcameraOperationContract<Kind> {
|
|
339
|
+
return Object.freeze({ ...contract, policy: freezePolicy(contract.policy) })
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
export const PORTABLE_SLOPCAMERA_OPERATION_CONTRACTS = Object.freeze({
|
|
343
|
+
"slopcamera.diagram.check": portableContract({
|
|
344
|
+
inputSchema: SlopcameraDiagramCheckInputSchema,
|
|
345
|
+
inputSchemaId: "slopcamera.operation.diagram.check.input/v2",
|
|
346
|
+
kind: "slopcamera.diagram.check",
|
|
347
|
+
lifecycle: "pure",
|
|
348
|
+
outputSchema: SlopcameraDiagramCheckOutputSchema,
|
|
349
|
+
outputSchemaId: "slopcamera.operation.diagram.check.output/v2",
|
|
350
|
+
policy: {
|
|
351
|
+
cache: "content-addressed",
|
|
352
|
+
cancellable: false,
|
|
353
|
+
effect: "local-read",
|
|
354
|
+
maxDurationMs: 30_000,
|
|
355
|
+
maxFanOut: 0,
|
|
356
|
+
maxInputBytes: 4_096,
|
|
357
|
+
maxOutputBytes: 256 * 1024,
|
|
358
|
+
preparation: ["local-media"],
|
|
359
|
+
resources: [
|
|
360
|
+
{ amount: 1, resource: "cpu" },
|
|
361
|
+
{ amount: 1, resource: "local-io" },
|
|
362
|
+
],
|
|
363
|
+
resume: "deterministic",
|
|
364
|
+
},
|
|
365
|
+
version: 2,
|
|
366
|
+
}),
|
|
367
|
+
"slopcamera.diagram.render": portableContract({
|
|
368
|
+
inputSchema: SlopcameraDiagramRenderInputSchema,
|
|
369
|
+
inputSchemaId: "slopcamera.operation.diagram.render.input/v2",
|
|
370
|
+
kind: "slopcamera.diagram.render",
|
|
371
|
+
lifecycle: "local-artifact",
|
|
372
|
+
outputSchema: SlopcameraDiagramRenderOutputSchema,
|
|
373
|
+
outputSchemaId: "slopcamera.operation.diagram.render.output/v2",
|
|
374
|
+
policy: {
|
|
375
|
+
cache: "none",
|
|
376
|
+
cancellable: false,
|
|
377
|
+
effect: "local-derived-write",
|
|
378
|
+
maxDurationMs: 120_000,
|
|
379
|
+
maxFanOut: 5,
|
|
380
|
+
maxInputBytes: 8_192,
|
|
381
|
+
maxOutputBytes: 5 * MAX_DIAGRAM_ARTIFACT_BYTES,
|
|
382
|
+
preparation: ["local-media"],
|
|
383
|
+
resources: [
|
|
384
|
+
{ amount: 1, resource: "cpu" },
|
|
385
|
+
{ amount: 1, resource: "local-io" },
|
|
386
|
+
],
|
|
387
|
+
resume: "ambiguous-after-dispatch",
|
|
388
|
+
},
|
|
389
|
+
version: 2,
|
|
390
|
+
}),
|
|
391
|
+
"slopcamera.image.generate": portableContract({
|
|
392
|
+
inputSchema: SlopcameraImageGenerateInputSchema,
|
|
393
|
+
inputSchemaId: "slopcamera.operation.image.generate.input/v2",
|
|
394
|
+
kind: "slopcamera.image.generate",
|
|
395
|
+
lifecycle: "paid-dispatch",
|
|
396
|
+
outputSchema: SlopcameraImageGenerateOutputSchema,
|
|
397
|
+
outputSchemaId: "slopcamera.operation.image.generate.output/v2",
|
|
398
|
+
policy: {
|
|
399
|
+
cache: "exact-run",
|
|
400
|
+
cancellable: false,
|
|
401
|
+
effect: "paid-cloud",
|
|
402
|
+
maxDurationMs: 120_000,
|
|
403
|
+
maxFanOut: 1,
|
|
404
|
+
maxInputBytes: 16 * 1024,
|
|
405
|
+
maxOutputBytes: MAX_GENERATED_IMAGE_BYTES,
|
|
406
|
+
preparation: ["provider-options"],
|
|
407
|
+
resources: [
|
|
408
|
+
{ amount: 1, resource: "local-io" },
|
|
409
|
+
{ amount: 1, resource: "network" },
|
|
410
|
+
{ amount: 1, resource: "paid-call" },
|
|
411
|
+
],
|
|
412
|
+
resume: "ambiguous-after-dispatch",
|
|
413
|
+
},
|
|
414
|
+
version: 2,
|
|
415
|
+
}),
|
|
416
|
+
"slopcamera.image.vectorize": portableContract({
|
|
417
|
+
inputSchema: SlopcameraImageVectorizeInputSchema,
|
|
418
|
+
inputSchemaId: "slopcamera.operation.image.vectorize.input/v2",
|
|
419
|
+
kind: "slopcamera.image.vectorize",
|
|
420
|
+
lifecycle: "local-artifact",
|
|
421
|
+
outputSchema: SlopcameraImageVectorizeOutputSchema,
|
|
422
|
+
outputSchemaId: "slopcamera.operation.image.vectorize.output/v2",
|
|
423
|
+
policy: {
|
|
424
|
+
cache: "none",
|
|
425
|
+
cancellable: false,
|
|
426
|
+
effect: "local-derived-write",
|
|
427
|
+
maxDurationMs: 300_000,
|
|
428
|
+
maxFanOut: 1,
|
|
429
|
+
maxInputBytes: MAX_VECTOR_INPUT_BYTES,
|
|
430
|
+
maxOutputBytes: MAX_VECTOR_OUTPUT_BYTES,
|
|
431
|
+
preparation: ["local-media"],
|
|
432
|
+
resources: [
|
|
433
|
+
{ amount: 1, resource: "cpu" },
|
|
434
|
+
{ amount: 1, resource: "local-io" },
|
|
435
|
+
],
|
|
436
|
+
resume: "ambiguous-after-dispatch",
|
|
437
|
+
},
|
|
438
|
+
version: 2,
|
|
439
|
+
}),
|
|
440
|
+
}) satisfies {
|
|
441
|
+
readonly [Kind in PortableSlopcameraOperationKind]: PortableSlopcameraOperationContract<Kind>
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
export function isPortableSlopcameraOperationKind(
|
|
445
|
+
value: string,
|
|
446
|
+
): value is PortableSlopcameraOperationKind {
|
|
447
|
+
return PORTABLE_SLOPCAMERA_OPERATION_KINDS.includes(
|
|
448
|
+
value as PortableSlopcameraOperationKind,
|
|
449
|
+
)
|
|
450
|
+
}
|