@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.
Files changed (441) hide show
  1. package/LICENSE +21 -0
  2. package/NOTICE.md +60 -0
  3. package/PRIVACY.md +46 -0
  4. package/README.md +311 -0
  5. package/SECURITY.md +21 -0
  6. package/apps/desktop/README.md +966 -0
  7. package/apps/desktop/analysis/protocol.ts +223 -0
  8. package/apps/desktop/application/capability-binding.ts +594 -0
  9. package/apps/desktop/application/context.ts +97 -0
  10. package/apps/desktop/application/creative-iteration.ts +1385 -0
  11. package/apps/desktop/application/default-registry.ts +146 -0
  12. package/apps/desktop/application/directing-contract.ts +218 -0
  13. package/apps/desktop/application/directing-plan.ts +178 -0
  14. package/apps/desktop/application/errors.ts +18 -0
  15. package/apps/desktop/application/gateway-port.ts +867 -0
  16. package/apps/desktop/application/html-overlay-browser-runtime.ts +687 -0
  17. package/apps/desktop/application/html-overlay-integrity.ts +337 -0
  18. package/apps/desktop/application/html-overlay-renderer.ts +45 -0
  19. package/apps/desktop/application/index.ts +13 -0
  20. package/apps/desktop/application/operation-completion-checkpoint.ts +333 -0
  21. package/apps/desktop/application/operation-effects.ts +94 -0
  22. package/apps/desktop/application/operation.ts +224 -0
  23. package/apps/desktop/application/operations/analysis/faces.ts +244 -0
  24. package/apps/desktop/application/operations/analysis/music.ts +248 -0
  25. package/apps/desktop/application/operations/analysis/project-auto-zooms.ts +302 -0
  26. package/apps/desktop/application/operations/analysis/project-inactivity.ts +381 -0
  27. package/apps/desktop/application/operations/analysis/scenes.ts +272 -0
  28. package/apps/desktop/application/operations/analysis/shared.ts +202 -0
  29. package/apps/desktop/application/operations/derive/edit-batch.ts +967 -0
  30. package/apps/desktop/application/operations/derive/follow-faces.ts +454 -0
  31. package/apps/desktop/application/operations/edit/bind-candidate-revision.ts +91 -0
  32. package/apps/desktop/application/operations/edit/create-candidate-revision.ts +377 -0
  33. package/apps/desktop/application/operations/edit/create-revision.ts +255 -0
  34. package/apps/desktop/application/operations/edit/freeze-revision.ts +182 -0
  35. package/apps/desktop/application/operations/gateway/image.ts +41 -0
  36. package/apps/desktop/application/operations/gateway/index.ts +17 -0
  37. package/apps/desktop/application/operations/gateway/shared.ts +122 -0
  38. package/apps/desktop/application/operations/gateway/speech.ts +41 -0
  39. package/apps/desktop/application/operations/gateway/transcription.ts +42 -0
  40. package/apps/desktop/application/operations/gateway/video.ts +41 -0
  41. package/apps/desktop/application/operations/index.ts +31 -0
  42. package/apps/desktop/application/operations/iteration/create-candidate.ts +240 -0
  43. package/apps/desktop/application/operations/iteration/create-matrix.ts +117 -0
  44. package/apps/desktop/application/operations/iteration/select.ts +155 -0
  45. package/apps/desktop/application/operations/iteration/shared.ts +250 -0
  46. package/apps/desktop/application/operations/media/audio-effects.ts +376 -0
  47. package/apps/desktop/application/operations/media/binding.ts +79 -0
  48. package/apps/desktop/application/operations/media/capabilities.ts +112 -0
  49. package/apps/desktop/application/operations/media/color-grade.ts +343 -0
  50. package/apps/desktop/application/operations/media/html-overlay.ts +802 -0
  51. package/apps/desktop/application/operations/media/index.ts +8 -0
  52. package/apps/desktop/application/operations/media/ingest.ts +303 -0
  53. package/apps/desktop/application/operations/media/overlay.ts +729 -0
  54. package/apps/desktop/application/operations/media/shared.ts +845 -0
  55. package/apps/desktop/application/operations/media/transform-platform.ts +120 -0
  56. package/apps/desktop/application/operations/project/commit-edits.ts +2054 -0
  57. package/apps/desktop/application/operations/project/promote-selection.ts +495 -0
  58. package/apps/desktop/application/operations/project/snapshot.ts +95 -0
  59. package/apps/desktop/application/operations/recording/index.ts +5 -0
  60. package/apps/desktop/application/operations/recording/pause.ts +34 -0
  61. package/apps/desktop/application/operations/recording/resume.ts +34 -0
  62. package/apps/desktop/application/operations/recording/shared.ts +199 -0
  63. package/apps/desktop/application/operations/recording/start.ts +169 -0
  64. package/apps/desktop/application/operations/recording/stop.ts +34 -0
  65. package/apps/desktop/application/operations/render/bind-candidate-output.ts +324 -0
  66. package/apps/desktop/application/operations/render/materialize-selection.ts +322 -0
  67. package/apps/desktop/application/operations/render/project-caption-plan.ts +287 -0
  68. package/apps/desktop/application/operations/render/project-plan.ts +939 -0
  69. package/apps/desktop/application/operations/render/project-spatial-receipt.ts +70 -0
  70. package/apps/desktop/application/operations/render/project.ts +1922 -0
  71. package/apps/desktop/application/operations/shared.ts +67 -0
  72. package/apps/desktop/application/operations/slopcamera-portable.ts +1188 -0
  73. package/apps/desktop/application/operations/slopcamera-visuals.ts +784 -0
  74. package/apps/desktop/application/operations/spatial-project.ts +209 -0
  75. package/apps/desktop/application/operations/spatial-render.ts +415 -0
  76. package/apps/desktop/application/operations/spatial-scene.ts +97 -0
  77. package/apps/desktop/application/operations/studio.ts +143 -0
  78. package/apps/desktop/application/output-publication-lease.ts +163 -0
  79. package/apps/desktop/application/project-publication-lease.ts +233 -0
  80. package/apps/desktop/application/project-store.ts +196 -0
  81. package/apps/desktop/application/receipts.ts +533 -0
  82. package/apps/desktop/application/registry.ts +182 -0
  83. package/apps/desktop/application/spatial-assets.ts +675 -0
  84. package/apps/desktop/application/spatial-compositor-cadence.ts +23 -0
  85. package/apps/desktop/application/spatial-project-authority.ts +35 -0
  86. package/apps/desktop/application/spatial-project-lease.ts +126 -0
  87. package/apps/desktop/application/spatial-project-render-preparation.ts +225 -0
  88. package/apps/desktop/application/spatial-project-store.ts +286 -0
  89. package/apps/desktop/application/spatial-render-projection.ts +201 -0
  90. package/apps/desktop/application/spatial-render.ts +677 -0
  91. package/apps/desktop/application/spatial-spz.ts +44 -0
  92. package/apps/desktop/application/spatial-world-import.ts +135 -0
  93. package/apps/desktop/application/spatial-world-provenance.ts +46 -0
  94. package/apps/desktop/application/studio-port.ts +58 -0
  95. package/apps/desktop/application/verified-receipt-reconciliation.ts +1574 -0
  96. package/apps/desktop/capture/protocol.ts +689 -0
  97. package/apps/desktop/cli/analyzer.ts +406 -0
  98. package/apps/desktop/cli/args.ts +3181 -0
  99. package/apps/desktop/cli/asset-ingest.ts +747 -0
  100. package/apps/desktop/cli/atomic-render-effects.ts +210 -0
  101. package/apps/desktop/cli/atomic-render-platform.ts +205 -0
  102. package/apps/desktop/cli/atomic-render.ts +50 -0
  103. package/apps/desktop/cli/audio-analysis.ts +252 -0
  104. package/apps/desktop/cli/bounded-map.ts +39 -0
  105. package/apps/desktop/cli/bundle-service.ts +256 -0
  106. package/apps/desktop/cli/capabilities.ts +212 -0
  107. package/apps/desktop/cli/capture-bundle.ts +1117 -0
  108. package/apps/desktop/cli/command-host-resources.ts +251 -0
  109. package/apps/desktop/cli/commands.ts +6836 -0
  110. package/apps/desktop/cli/directing-blob.ts +291 -0
  111. package/apps/desktop/cli/directing-media.ts +517 -0
  112. package/apps/desktop/cli/directing-quote.ts +89 -0
  113. package/apps/desktop/cli/directing-service.ts +288 -0
  114. package/apps/desktop/cli/emoji-assets.ts +538 -0
  115. package/apps/desktop/cli/errors.ts +29 -0
  116. package/apps/desktop/cli/face-analysis-service.ts +940 -0
  117. package/apps/desktop/cli/filter-script.ts +76 -0
  118. package/apps/desktop/cli/gateway-application-port.ts +1142 -0
  119. package/apps/desktop/cli/gateway-credential.ts +81 -0
  120. package/apps/desktop/cli/gateway-media-artifacts.ts +723 -0
  121. package/apps/desktop/cli/gateway-media-catalog.ts +922 -0
  122. package/apps/desktop/cli/gateway-media-service.ts +3106 -0
  123. package/apps/desktop/cli/gateway-media-signature.ts +122 -0
  124. package/apps/desktop/cli/gateway-provider-options.ts +562 -0
  125. package/apps/desktop/cli/gateway-scene-provider.ts +391 -0
  126. package/apps/desktop/cli/help.ts +501 -0
  127. package/apps/desktop/cli/html-overlay-gpu.ts +97 -0
  128. package/apps/desktop/cli/html-overlay-renderer.ts +2478 -0
  129. package/apps/desktop/cli/io.ts +290 -0
  130. package/apps/desktop/cli/main.ts +123 -0
  131. package/apps/desktop/cli/media-effects-service.ts +885 -0
  132. package/apps/desktop/cli/media-ingest-model.ts +364 -0
  133. package/apps/desktop/cli/media-ingest-platform.ts +227 -0
  134. package/apps/desktop/cli/media-ingest-program.ts +200 -0
  135. package/apps/desktop/cli/media-ingest.ts +30 -0
  136. package/apps/desktop/cli/music-analysis-service.ts +434 -0
  137. package/apps/desktop/cli/mutation-lock.ts +530 -0
  138. package/apps/desktop/cli/native-assets.d.ts +12 -0
  139. package/apps/desktop/cli/native-media-runtime.macos.ts +7 -0
  140. package/apps/desktop/cli/overlay-playback.ts +177 -0
  141. package/apps/desktop/cli/paths.ts +265 -0
  142. package/apps/desktop/cli/portable-surface.ts +242 -0
  143. package/apps/desktop/cli/project-camera-receipt.ts +112 -0
  144. package/apps/desktop/cli/project-face-camera.ts +394 -0
  145. package/apps/desktop/cli/project-inactivity-service.ts +552 -0
  146. package/apps/desktop/cli/project-media-integrity.ts +121 -0
  147. package/apps/desktop/cli/project-renderer.ts +1526 -0
  148. package/apps/desktop/cli/project-service.ts +519 -0
  149. package/apps/desktop/cli/project-state-transaction.ts +520 -0
  150. package/apps/desktop/cli/query-limits.ts +1 -0
  151. package/apps/desktop/cli/recording-controller.ts +1567 -0
  152. package/apps/desktop/cli/recording-daemon.ts +931 -0
  153. package/apps/desktop/cli/recording-ref.ts +56 -0
  154. package/apps/desktop/cli/renamed-environment.ts +6 -0
  155. package/apps/desktop/cli/renderer.ts +1439 -0
  156. package/apps/desktop/cli/run-cli-test-helper.ts +60 -0
  157. package/apps/desktop/cli/scene-analysis-service.ts +879 -0
  158. package/apps/desktop/cli/spatial-compositor-verifier.ts +213 -0
  159. package/apps/desktop/cli/spatial-project-service.ts +90 -0
  160. package/apps/desktop/cli/spatial-scene-service.ts +105 -0
  161. package/apps/desktop/cli/spatial-world-service.ts +39 -0
  162. package/apps/desktop/cli/speech-analysis-service.ts +682 -0
  163. package/apps/desktop/cli/studio-assemble.ts +58 -0
  164. package/apps/desktop/cli/studio-command.ts +60 -0
  165. package/apps/desktop/cli/studio-custody.ts +60 -0
  166. package/apps/desktop/cli/studio-encode.ts +216 -0
  167. package/apps/desktop/cli/studio-exr.ts +52 -0
  168. package/apps/desktop/cli/studio-files.ts +179 -0
  169. package/apps/desktop/cli/studio-output-validation.ts +162 -0
  170. package/apps/desktop/cli/studio-process.ts +145 -0
  171. package/apps/desktop/cli/studio-runtime.ts +77 -0
  172. package/apps/desktop/cli/studio-scaffold.ts +70 -0
  173. package/apps/desktop/cli/studio-service.ts +301 -0
  174. package/apps/desktop/cli/studio-spatial-asset.ts +248 -0
  175. package/apps/desktop/cli/studio-template-names.ts +3 -0
  176. package/apps/desktop/cli/studio-workflow.ts +19 -0
  177. package/apps/desktop/cli/time.ts +25 -0
  178. package/apps/desktop/cli/workflow-code.ts +584 -0
  179. package/apps/desktop/cli/workflow-runs.ts +576 -0
  180. package/apps/desktop/code/advanced.ts +139 -0
  181. package/apps/desktop/code/application-node-planner.ts +1288 -0
  182. package/apps/desktop/code/compiler.ts +329 -0
  183. package/apps/desktop/code/contracts.ts +13 -0
  184. package/apps/desktop/code/creative-recipes.ts +94 -0
  185. package/apps/desktop/code/define-workflow.ts +115 -0
  186. package/apps/desktop/code/editing.ts +284 -0
  187. package/apps/desktop/code/file-candidate-provenance.ts +420 -0
  188. package/apps/desktop/code/file-candidate.ts +69 -0
  189. package/apps/desktop/code/graph-builder.ts +10 -0
  190. package/apps/desktop/code/host-resource-policy.ts +55 -0
  191. package/apps/desktop/code/plan-contracts.ts +159 -0
  192. package/apps/desktop/code/planning.ts +361 -0
  193. package/apps/desktop/code/public.ts +134 -0
  194. package/apps/desktop/code/reference-projection.ts +62 -0
  195. package/apps/desktop/code/run-contracts.ts +466 -0
  196. package/apps/desktop/code/run-store.ts +2478 -0
  197. package/apps/desktop/code/runtime-identity.ts +328 -0
  198. package/apps/desktop/code/scheduler.ts +3067 -0
  199. package/apps/desktop/code/semantic-builder.ts +1436 -0
  200. package/apps/desktop/code/source-bundle.ts +1641 -0
  201. package/apps/desktop/code/source-typecheck.ts +211 -0
  202. package/apps/desktop/code/testing.ts +79 -0
  203. package/apps/desktop/code/worker-client.ts +1675 -0
  204. package/apps/desktop/code/worker-effects.ts +141 -0
  205. package/apps/desktop/code/worker-entry.ts +435 -0
  206. package/apps/desktop/code/worker-lease-guardian.ts +179 -0
  207. package/apps/desktop/code/worker-process-identity.ts +484 -0
  208. package/apps/desktop/code/worker-protocol.ts +211 -0
  209. package/apps/desktop/code/workflow-effects.ts +132 -0
  210. package/apps/desktop/contracts/analysis.ts +949 -0
  211. package/apps/desktop/contracts/edit.ts +576 -0
  212. package/apps/desktop/contracts/index.ts +9 -0
  213. package/apps/desktop/contracts/media-effects.ts +139 -0
  214. package/apps/desktop/contracts/project-render.ts +644 -0
  215. package/apps/desktop/contracts/project.ts +740 -0
  216. package/apps/desktop/contracts/recording.ts +1434 -0
  217. package/apps/desktop/contracts/render.ts +334 -0
  218. package/apps/desktop/contracts/runtime.ts +155 -0
  219. package/apps/desktop/contracts/spatial-compositor.ts +58 -0
  220. package/apps/desktop/contracts/spatial-project.ts +159 -0
  221. package/apps/desktop/contracts/spatial-world.ts +48 -0
  222. package/apps/desktop/contracts/video-effects.ts +120 -0
  223. package/apps/desktop/core/alignment-apply.ts +400 -0
  224. package/apps/desktop/core/audio-alignment.ts +466 -0
  225. package/apps/desktop/core/auto-zoom.ts +209 -0
  226. package/apps/desktop/core/canonical-json.ts +14 -0
  227. package/apps/desktop/core/emoji.ts +210 -0
  228. package/apps/desktop/core/events.ts +409 -0
  229. package/apps/desktop/core/face-framing.ts +533 -0
  230. package/apps/desktop/core/face-tracks.ts +326 -0
  231. package/apps/desktop/core/inactivity.ts +137 -0
  232. package/apps/desktop/core/index.ts +30 -0
  233. package/apps/desktop/core/intervals.ts +123 -0
  234. package/apps/desktop/core/montage.ts +236 -0
  235. package/apps/desktop/core/music-analysis.ts +518 -0
  236. package/apps/desktop/core/plan.ts +244 -0
  237. package/apps/desktop/core/project-auto-zoom.ts +75 -0
  238. package/apps/desktop/core/project-camera-spatial.ts +676 -0
  239. package/apps/desktop/core/project-camera.ts +403 -0
  240. package/apps/desktop/core/project-captions.ts +888 -0
  241. package/apps/desktop/core/project-inactivity.ts +125 -0
  242. package/apps/desktop/core/project-metadata.ts +927 -0
  243. package/apps/desktop/core/project-plan.ts +375 -0
  244. package/apps/desktop/core/project-render-plan.ts +303 -0
  245. package/apps/desktop/core/project-time.ts +469 -0
  246. package/apps/desktop/core/render-plan.ts +442 -0
  247. package/apps/desktop/core/scene-cache.ts +174 -0
  248. package/apps/desktop/core/scene-sampling.ts +448 -0
  249. package/apps/desktop/core/spatial-compositor.ts +22 -0
  250. package/apps/desktop/core/spatial-durability.ts +99 -0
  251. package/apps/desktop/core/spatial-project.ts +169 -0
  252. package/apps/desktop/core/spatial-shot-clock.ts +32 -0
  253. package/apps/desktop/core/speech-analysis.ts +333 -0
  254. package/apps/desktop/core/storage.ts +970 -0
  255. package/apps/desktop/core/time-map.ts +91 -0
  256. package/apps/desktop/core/time.ts +61 -0
  257. package/apps/desktop/core/video-effects.ts +660 -0
  258. package/apps/desktop/dist/cli/NebulaSans-Bold-26se8aek.otf +0 -0
  259. package/apps/desktop/dist/cli/NebulaSans-Bold-bcz7y08t.woff2 +0 -0
  260. package/apps/desktop/dist/cli/NebulaSans-Book-5ax05zvn.woff2 +0 -0
  261. package/apps/desktop/dist/cli/NebulaSans-Book-8cenzchw.otf +0 -0
  262. package/apps/desktop/dist/cli/main.js +5086 -0
  263. package/apps/desktop/html-overlay/catalog.ts +171 -0
  264. package/apps/desktop/html-overlay/contracts.ts +372 -0
  265. package/apps/desktop/html-overlay/execution-profile.ts +77 -0
  266. package/apps/desktop/html-overlay/index.ts +98 -0
  267. package/apps/desktop/html-overlay/libraries.ts +263 -0
  268. package/apps/desktop/html-overlay/random.ts +49 -0
  269. package/apps/desktop/html-overlay/runtime.ts +813 -0
  270. package/apps/desktop/html-overlay/scaffolds.ts +792 -0
  271. package/apps/desktop/html-overlay/spark-runtime.ts +88 -0
  272. package/apps/desktop/html-overlay/spatial-splat-runtime.ts +60 -0
  273. package/apps/desktop/html-overlay/spatial.ts +720 -0
  274. package/apps/desktop/studio/assets/README.md +39 -0
  275. package/apps/desktop/studio/assets/contracts.ts +129 -0
  276. package/apps/desktop/studio/assets/network.ts +64 -0
  277. package/apps/desktop/studio/assets/poly-haven.ts +148 -0
  278. package/apps/desktop/studio/drivers/blender_driver.py +466 -0
  279. package/apps/desktop/studio/drivers/cadquery_driver.py +176 -0
  280. package/apps/desktop/studio/education/driver.py +308 -0
  281. package/apps/desktop/studio/education/lesson.py +180 -0
  282. package/apps/desktop/studio/education/toolkit.py +249 -0
  283. package/apps/desktop/workflows/chaptered-demo.ts +48 -0
  284. package/apps/desktop/workflows/creative-iteration.ts +107 -0
  285. package/apps/desktop/workflows/creative-selection.ts +92 -0
  286. package/apps/desktop/workflows/fragments.ts +486 -0
  287. package/apps/desktop/workflows/index.ts +93 -0
  288. package/apps/desktop/workflows/polished-screen-demo.ts +128 -0
  289. package/apps/desktop/workflows/scene-direction.ts +12 -0
  290. package/apps/desktop/workflows/social-variants.ts +75 -0
  291. package/apps/desktop/workflows/talking-head-cleanup.ts +53 -0
  292. package/dist/NebulaSans-Bold-26se8aek.otf +0 -0
  293. package/dist/NebulaSans-Bold-bcz7y08t.woff2 +0 -0
  294. package/dist/NebulaSans-Book-5ax05zvn.woff2 +0 -0
  295. package/dist/NebulaSans-Book-8cenzchw.otf +0 -0
  296. package/dist/cli.js +479 -0
  297. package/dist/code/advanced.js +270 -0
  298. package/dist/code/index.js +2240 -0
  299. package/dist/generate.js +24 -0
  300. package/dist/host-resources.js +26 -0
  301. package/dist/index-42zsesc1.js +2257 -0
  302. package/dist/index-7308egqr.js +48 -0
  303. package/dist/index-8txs6fkn.js +712 -0
  304. package/dist/index-mcy8z0br.js +192 -0
  305. package/dist/index-p63wavx0.js +2029 -0
  306. package/dist/index-r7gdhmsp.js +424 -0
  307. package/dist/index-sh6xbav6.js +1219 -0
  308. package/dist/index-z1w83f81.js +4 -0
  309. package/dist/index-z7239b4h.js +2363 -0
  310. package/dist/index-zfeg9hmw.js +2013 -0
  311. package/dist/index.js +241 -0
  312. package/dist/operations.js +29 -0
  313. package/dist/skill-install-dh0ntqba.js +10 -0
  314. package/dist/vectorize/worker.js +142 -0
  315. package/dist/workflow.js +16 -0
  316. package/docs/README.md +38 -0
  317. package/docs/studio.md +215 -0
  318. package/examples/studio/blender/README.md +26 -0
  319. package/examples/studio/blender/character.py +152 -0
  320. package/examples/studio/blender/cloth.py +101 -0
  321. package/examples/studio/blender/color_chart.py +29 -0
  322. package/examples/studio/blender/fluid.py +78 -0
  323. package/examples/studio/blender/import_model.py +74 -0
  324. package/examples/studio/blender/product.py +53 -0
  325. package/examples/studio/blender/shaded_street.py +481 -0
  326. package/examples/studio/blender/studio_scene.py +147 -0
  327. package/examples/studio/cadquery/README.md +13 -0
  328. package/examples/studio/cadquery/bracket.py +36 -0
  329. package/examples/studio/cadquery/import_step.py +12 -0
  330. package/examples/studio/education/README.md +46 -0
  331. package/examples/studio/education/lesson.json +99 -0
  332. package/examples/studio/education/scene.py +7 -0
  333. package/examples/studio/hybrid-scene.ts +96 -0
  334. package/examples/studio/native-workflow.ts +14 -0
  335. package/examples/studio/vgpu/README.md +64 -0
  336. package/examples/studio/vgpu/heat-field.mjs +290 -0
  337. package/package.json +304 -0
  338. package/packages/scene/src/index.ts +1 -0
  339. package/packages/scene/src/scene.ts +215 -0
  340. package/schema/diagram.schema.json +334 -0
  341. package/skills/slopcamera/SKILL.md +45 -0
  342. package/skills/slopcamera/agents/openai.yaml +4 -0
  343. package/skills/slopcamera/references/customization.md +77 -0
  344. package/skills/slopcamera/references/diagrams.md +153 -0
  345. package/skills/slopcamera/references/directed-scenes.md +42 -0
  346. package/skills/slopcamera/references/directing-video.md +18 -0
  347. package/skills/slopcamera/references/educational-video.md +26 -0
  348. package/skills/slopcamera/references/gateway-media.md +134 -0
  349. package/skills/slopcamera/references/install.md +62 -0
  350. package/skills/slopcamera/references/native-studio.md +31 -0
  351. package/skills/slopcamera/references/reference-led-3d.md +140 -0
  352. package/skills/slopcamera/references/rubber-stamp-examples/poster-example-1.jpg +0 -0
  353. package/skills/slopcamera/references/rubber-stamp-examples/poster-example-2.jpg +0 -0
  354. package/skills/slopcamera/references/rubber-stamp-examples/stamp-style-1.png +0 -0
  355. package/skills/slopcamera/references/rubber-stamp-examples/stamp-style-2.png +0 -0
  356. package/skills/slopcamera/references/rubber-stamp-field-notes.md +144 -0
  357. package/skills/slopcamera/references/vectorization.md +29 -0
  358. package/skills/slopcamera/references/video-projects.md +187 -0
  359. package/skills/slopcamera/references/visual-communication.md +120 -0
  360. package/skills/slopcamera/references/workflows-sdk.md +45 -0
  361. package/skills/slopcamera/scripts/compose-rubber-stamp-field-note.ts +229 -0
  362. package/src/artifacts.ts +106 -0
  363. package/src/assets/fonts/nebula-sans/LICENSE.txt +96 -0
  364. package/src/assets/fonts/nebula-sans/NebulaSans-Bold.otf +0 -0
  365. package/src/assets/fonts/nebula-sans/NebulaSans-Bold.woff2 +0 -0
  366. package/src/assets/fonts/nebula-sans/NebulaSans-Book.otf +0 -0
  367. package/src/assets/fonts/nebula-sans/NebulaSans-Book.woff2 +0 -0
  368. package/src/assets/fonts/nebula-sans/PROVENANCE.md +21 -0
  369. package/src/assets.d.ts +9 -0
  370. package/src/cli.ts +601 -0
  371. package/src/cloud-errors.ts +26 -0
  372. package/src/code/advanced.ts +10 -0
  373. package/src/code/boundary.ts +21 -0
  374. package/src/code/canonical-json.ts +129 -0
  375. package/src/code/compiler.ts +953 -0
  376. package/src/code/contracts.ts +576 -0
  377. package/src/code/define-workflow.ts +334 -0
  378. package/src/code/errors.ts +41 -0
  379. package/src/code/graph-builder.ts +945 -0
  380. package/src/code/index.ts +121 -0
  381. package/src/code/json-snapshot.ts +899 -0
  382. package/src/code/json-utf8.ts +88 -0
  383. package/src/code/portable-builder.ts +136 -0
  384. package/src/code/projection.ts +378 -0
  385. package/src/code/public-operations.ts +450 -0
  386. package/src/code/runtime.ts +580 -0
  387. package/src/code/sha256.ts +36 -0
  388. package/src/config.ts +180 -0
  389. package/src/desktop.ts +253 -0
  390. package/src/fs.ts +10 -0
  391. package/src/generate.ts +704 -0
  392. package/src/host-resource-posix.ts +161 -0
  393. package/src/host-resources.ts +1749 -0
  394. package/src/icons.ts +58 -0
  395. package/src/index.ts +200 -0
  396. package/src/label-layout.ts +130 -0
  397. package/src/layout.ts +413 -0
  398. package/src/lint.ts +127 -0
  399. package/src/mcp/boundary.ts +354 -0
  400. package/src/mcp/index.ts +33 -0
  401. package/src/mcp/server.ts +272 -0
  402. package/src/mcp/tools.ts +963 -0
  403. package/src/mcp/types.ts +71 -0
  404. package/src/operations.ts +775 -0
  405. package/src/parse.ts +861 -0
  406. package/src/process-environment.ts +17 -0
  407. package/src/render.ts +437 -0
  408. package/src/skill-install.ts +49 -0
  409. package/src/spatial-scene/authoring.ts +27 -0
  410. package/src/spatial-scene/camera-track.ts +83 -0
  411. package/src/spatial-scene/contracts.ts +277 -0
  412. package/src/spatial-scene/evaluate.ts +145 -0
  413. package/src/spatial-scene/gltf.ts +558 -0
  414. package/src/spatial-scene/identity.ts +260 -0
  415. package/src/spatial-scene/index.ts +10 -0
  416. package/src/spatial-scene/inspect.ts +68 -0
  417. package/src/spatial-scene/math.ts +280 -0
  418. package/src/spatial-scene/patch.ts +131 -0
  419. package/src/spatial-scene/time.ts +53 -0
  420. package/src/studio/contracts.ts +129 -0
  421. package/src/studio/index.ts +2 -0
  422. package/src/studio/plan.ts +156 -0
  423. package/src/studio/shared.ts +41 -0
  424. package/src/theme.ts +68 -0
  425. package/src/tldr.ts +474 -0
  426. package/src/types.ts +212 -0
  427. package/src/vectorize/archive.ts +101 -0
  428. package/src/vectorize/command.ts +797 -0
  429. package/src/vectorize/index.ts +27 -0
  430. package/src/vectorize/limits.ts +61 -0
  431. package/src/vectorize/metrics.ts +351 -0
  432. package/src/vectorize/pixels.ts +323 -0
  433. package/src/vectorize/supervisor.ts +339 -0
  434. package/src/vectorize/svg.ts +188 -0
  435. package/src/vectorize/tool.ts +542 -0
  436. package/src/vectorize/types.ts +113 -0
  437. package/src/vectorize/vectorize.ts +634 -0
  438. package/src/vectorize/worker-protocol.ts +40 -0
  439. package/src/vectorize/worker.ts +209 -0
  440. package/src/version.ts +1 -0
  441. package/src/workflow.ts +409 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Hraness contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/NOTICE.md ADDED
@@ -0,0 +1,60 @@
1
+ # Notices
2
+
3
+ Slopcamera is an independent project and is not affiliated with or endorsed by
4
+ tldraw, Inc.
5
+
6
+ The runtime package does not include the tldraw SDK or tldraw Offline. It writes
7
+ the documented `.tldr` JSON interchange format so that users can import a
8
+ diagram into compatible tldraw software. The development test suite optionally
9
+ uses the upstream `tldraw` package to check compatibility; that package remains
10
+ under the [tldraw license](https://tldraw.dev/community/license).
11
+
12
+ The optional `slopcamera canvas install` command downloads an unmodified installer
13
+ from the official
14
+ [`tldraw/tldraw-offline`](https://github.com/tldraw/tldraw-offline) GitHub
15
+ release and verifies the SHA-256 digest published by GitHub. tldraw Offline is
16
+ not open source and remains subject to its own terms.
17
+
18
+ tldraw and its associated marks are trademarks of tldraw, Inc.
19
+
20
+ Raster output uses
21
+ [`@resvg/resvg-js`](https://github.com/yisibl/resvg-js), distributed under the
22
+ Mozilla Public License 2.0. It is installed as a separate runtime dependency
23
+ and is not relicensed by this project.
24
+
25
+ Default diagram and caption typography uses the unmodified Nebula Sans Book
26
+ and Bold fonts, distributed under the SIL Open Font License 1.1. The npm
27
+ package retains the upstream license and provenance in
28
+ `src/assets/fonts/nebula-sans/`.
29
+
30
+ Raster-to-SVG conversion uses
31
+ [`VTracer`](https://github.com/visioncortex/vtracer), distributed under the MIT
32
+ License. The package does not bundle VTracer. On first use it downloads an
33
+ unmodified macOS or Linux platform archive from the official VTracer 0.6.4
34
+ GitHub release, verifies both archive and extracted binary SHA-256, and caches
35
+ the binary outside the package.
36
+
37
+ Raster decoding and fidelity measurement use
38
+ [`sharp`](https://github.com/lovell/sharp), distributed under the Apache
39
+ License 2.0. Sharp's prebuilt
40
+ [`libvips`](https://github.com/libvips/libvips) dependency is distributed under
41
+ the GNU Lesser General Public License 3.0 or later. Both remain separately
42
+ installed runtime dependencies and are not relicensed by this project.
43
+
44
+ Optional model-backed generation uses
45
+ [`@ai-sdk/gateway`](https://www.npmjs.com/package/@ai-sdk/gateway) and the
46
+ [`ai`](https://www.npmjs.com/package/ai) SDK. Prompts and referenced media are
47
+ sent to Vercel AI Gateway and the model provider selected by the caller, under
48
+ those services' terms. Slopcamera does not operate an intermediary generation
49
+ service.
50
+
51
+ The production `slopcamera.com` browser bundle includes
52
+ [`posthog-js`](https://github.com/PostHog/posthog-js), distributed under its
53
+ combined Apache License 2.0 and MIT terms. The fingerprinted bundle carries the
54
+ upstream license text generated from the exact locked package.
55
+
56
+ The complete local workflow host uses
57
+ [`Effect`](https://github.com/Effect-TS/effect), distributed under the MIT
58
+ License (Copyright 2023 Effectful Technologies Inc). It remains a separately
59
+ installed runtime dependency and is not relicensed by this project. Portable
60
+ workflow authoring and graph compilation do not load this runtime.
package/PRIVACY.md ADDED
@@ -0,0 +1,46 @@
1
+ # Privacy and local data
2
+
3
+ `@hraness/slopcamera` is a local-first media authoring toolkit for work that the
4
+ operator owns or is authorized to record, import, edit, analyze, and publish.
5
+ This document describes the data it can capture, the local execution boundary,
6
+ and the selected media that can leave the machine.
7
+
8
+ On macOS, Slopcamera can request permission to record selected displays, system
9
+ audio, a selected camera, and a selected microphone. When interaction metadata
10
+ is enabled, it can record cursor positions, clicks, key activity, focused-input
11
+ bounds, display topology, and changed window snapshots. Typed-text collection
12
+ is separately opt-in. Slopcamera suppresses secure fields even when typed-text
13
+ collection is enabled.
14
+
15
+ Slopcamera can also read caller-selected local media and project files, invoke
16
+ bounded local browser and media subprocesses, analyze faces locally without
17
+ identifying them, and write recordings, derived media, metadata, previews, and
18
+ receipts below a caller-selected project. Its local MCP server and workflow
19
+ host expose fixed, typed operations to an authorized local agent. Explicitly
20
+ imported imperative workflow modules are trusted current-user Bun code rather
21
+ than sandboxed input.
22
+
23
+ Generation and model-backed media analysis can send an explicit prompt and
24
+ caller-selected media to Vercel AI Gateway. Local media upload requires the
25
+ matching command acknowledgement. Local vectorization, face detection,
26
+ ordinary media editing, diagram rendering, and capture remain local. Slopcamera does
27
+ not provide an account service and does not upload a project to a Slopcamera
28
+ service.
29
+
30
+ Use Slopcamera only on devices, accounts, displays, conversations, and media that you
31
+ are entitled and permitted to capture or process. Obtain any consent required
32
+ by law, contract, workplace policy, or platform rules. Do not use Slopcamera to
33
+ surveil another person, collect credentials, bypass operating-system
34
+ permissions or access controls, capture protected communications without
35
+ authorization, or publish private media without permission.
36
+
37
+ Screen recordings, camera and microphone media, system audio, cursor and input
38
+ events, typed text, window titles, focus state, project paths, model prompts,
39
+ and generated receipts can contain credentials, private communications,
40
+ personal data, or proprietary material. Review captured and derived artifacts
41
+ before committing, sharing, uploading, or publishing them. Keep Gateway
42
+ credentials in the process environment and remove secrets and private media
43
+ from vulnerability reports.
44
+
45
+ Report suspected vulnerabilities through GitHub private vulnerability
46
+ reporting at https://github.com/hraness/slopcamera/security/advisories/new.
package/README.md ADDED
@@ -0,0 +1,311 @@
1
+ # Slopcamera
2
+
3
+ [![Slopcamera: a visual studio for coding agents](https://slopcamera.com/og.png)](https://slopcamera.com)
4
+
5
+ **Slopcamera is a local visual studio for coding agents. Author scenes, combine
6
+ generated and recorded media, and export images, diagrams, animation, and video
7
+ from retained sources.**
8
+
9
+ Describe a finished result to Codex, Claude, or another coding agent. Slopcamera gives
10
+ it a Bun CLI, TypeScript SDK, and version-matched Agent Skill to inspect sources,
11
+ direct cameras, edit a composition, and render the result. A separate MCP server
12
+ exposes a fixed diagram and image toolset. There is no Slopcamera account or hosted
13
+ project database.
14
+
15
+ [Install](#install-slopcamera) · [Make a first diagram](#make-your-first-diagram) · [Capabilities](#what-slopcamera-does) · [Documentation](docs/README.md) · [slopcamera.com](https://slopcamera.com)
16
+
17
+ ## Why Slopcamera
18
+
19
+ - **Keep creative work editable.** Native scenes, portable scenes, diagrams,
20
+ and video projects retain their own sources and settings. Rendered frames
21
+ and portable assets are derivatives; a video of a character does not retain
22
+ its rig.
23
+ - **Give agents explicit operations.** Inspect a project, name a camera, plan
24
+ a render, review a candidate, and select a result. The CLI returns structured
25
+ results and keeps operation receipts that identify inputs and outputs.
26
+ - **Revise without replacing the originals.** Normal media edits record cuts,
27
+ timing, framing, captions, and effects as project decisions. Preview and final
28
+ renders use the same timeline and composition.
29
+ - **Choose where computation happens.** Local rendering and editing use your
30
+ machine. Optional model-backed work uses your Vercel AI Gateway access, with
31
+ explicit acknowledgement before named local media is uploaded. Native Python
32
+ authoring requires separate trust because it runs as your current user.
33
+
34
+ ## Install Slopcamera
35
+
36
+ Slopcamera currently installs from source. No renamed release archive has been
37
+ published. Install [Bun 1.3.14 or newer](https://bun.sh) and Git, then use a new
38
+ checkout:
39
+
40
+ ```sh
41
+ git clone --branch main https://github.com/hraness/slopcamera.git slopcamera-source
42
+ cd slopcamera-source
43
+ git rev-parse HEAD > ../slopcamera-source-commit.txt
44
+ bun install --frozen-lockfile --ignore-scripts
45
+ bun run build:sdk
46
+ bun run build:desktop:cli
47
+ ```
48
+
49
+ Keep the checkout and recorded commit. In this shell, define the command against
50
+ that exact build:
51
+
52
+ ```sh
53
+ export SLOPCAMERA_SOURCE_ROOT="$PWD"
54
+ slopcamera() { bun "$SLOPCAMERA_SOURCE_ROOT/apps/desktop/dist/cli/main.js" "$@"; }
55
+ slopcamera --help
56
+ slopcamera doctor --json
57
+ slopcamera skill install --target agents
58
+ ```
59
+
60
+ Use `--target claude` for Claude Code or omit the target for Codex. Add
61
+ `--scope project` inside the target repository for a project-only skill install.
62
+ The skill comes from the same checkout as the CLI. Start a new agent session
63
+ after installation. In a later shell, restore the checkout path and function.
64
+
65
+ Native engines install separately. The [source-install guide](docs/how-to/use-current-source.md)
66
+ explains workspace placement and durable-run identity; the
67
+ [capability reference](docs/reference/capabilities.md) names runtime requirements.
68
+
69
+ <details>
70
+ <summary>Historical Atet release evidence</summary>
71
+
72
+ [Atet v3.2.3](https://github.com/hraness/atet/releases/tag/v3.2.3) and its
73
+ [original archive](https://github.com/hraness/atet/releases/download/v3.2.3/hraness-atet-3.2.3.tgz)
74
+ remain historical publication evidence. Those immutable bytes install Atet,
75
+ not Slopcamera. Renaming the repository does not create a renamed package or
76
+ change an existing release.
77
+
78
+ </details>
79
+
80
+ ## Make your first diagram
81
+
82
+ After the source build above, this local task needs no model account. In a new directory,
83
+ create the included diagram, check it, and render it:
84
+
85
+ ```sh
86
+ mkdir slopcamera-first
87
+ cd slopcamera-first
88
+ slopcamera diagram init first.diagram.json
89
+ slopcamera diagram check first.diagram.json --strict
90
+ slopcamera diagram render first.diagram.json
91
+ ```
92
+
93
+ You now have `example-flow.tldr`, `example-flow.light.svg`,
94
+ `example-flow.dark.svg`, `example-flow.light.png`, and
95
+ `example-flow.dark.png`. Open a PNG to inspect the result. The JSON remains
96
+ editable, and the `.tldr` file is editable tldraw interchange. Rendering again
97
+ replaces those five derived files.
98
+
99
+ Follow [Your first diagram](docs/tutorials/first-diagram.md) to change a label and
100
+ see the result. For a moving 3D subject, use [Directed scenes](docs/spatial-scenes.md).
101
+ For detailed native 3D from the current source build, follow
102
+ [Your first native film](docs/tutorials/first-native-film.md).
103
+
104
+ ## What Slopcamera does
105
+
106
+ ### Author scenes and direct cameras
107
+
108
+ Place geometry, images, video, diagrams, and text in a portable scene. Inspect
109
+ stable part IDs, make typed edits, select a named camera, and render frames,
110
+ contact sheets, or video. The Three.js profile includes calibrated cameras,
111
+ explicit animation, supported GLB geometry, and an explicitly selected hardware
112
+ GPU path. Spark admits saved splat worlds for local camera direction.
113
+
114
+ > Create a short product reveal. Keep the model editable, orbit the camera,
115
+ > mount the product diagram on a screen in the scene, and show me contact frames
116
+ > before rendering the video.
117
+
118
+ The portable GLB profile has a defined geometry and material subset. Saved splats
119
+ capture appearance; they do not establish collision geometry or editable native
120
+ meshes. See [Directed scenes](docs/spatial-scenes.md).
121
+
122
+ ### Film native worlds and educational animation
123
+
124
+ The current source build can direct Blender for detailed sets, materials,
125
+ lighting, skinned characters, cloth and liquid caches; CadQuery for parametric
126
+ solids and STEP; and Manim Community for mathematical animation. Seven editable
127
+ starters include a product, character, shaded street, cloth, liquid, CAD bracket,
128
+ and educational presenter.
129
+
130
+ > Build a shaded street with an original presenter. Explain the idea with an
131
+ > animated diagram mounted in the world, then pull the camera back into the
132
+ > city. Keep the native scenes and diagram sources for later edits.
133
+
134
+ Native source and exact job settings remain retained. Verified frames can become
135
+ an ordinary project clip. `slopcamera scene camera-track` samples an explicit
136
+ camera clock for reuse. Supported GLB derivatives and calibrated cameras can
137
+ cross between native and portable scenes; rigs, solvers, and procedural materials
138
+ remain native. Blender and Python environments are installed separately, and
139
+ source execution requires explicit current-user trust. See [Native film studio](docs/studio.md)
140
+ and [Make an educational video](docs/how-to/educational-video.md).
141
+
142
+ ### Build diagrams and motion graphics
143
+
144
+ Create editable diagrams with tldraw, SVG, and PNG outputs, or turn raster artwork
145
+ into SVG locally with VTracer. Animate graphic layers with HTML, SVG, Motion,
146
+ p5, Two, Paper Shaders, or Three.js. Outputs can stand alone or join a video
147
+ project. The optional vgpu example renders programmable WebGPU passes into
148
+ retained raster frames for use on a world-space screen.
149
+
150
+ Use `slopcamera html catalog` to inspect the admitted local creative tools. The
151
+ [creative toolkit reference](docs/html-overlay-creative-toolkit.md) distinguishes
152
+ available profiles from upstream possibilities. vgpu does not enable shared GPU
153
+ textures or a Three WebGPU renderer inside the current WebGL2/Spark profile.
154
+
155
+ ### Generate and direct media
156
+
157
+ Discover image, video, speech, and transcription models through your own Vercel
158
+ AI Gateway access. Generate images from text and references, add a voiceover,
159
+ transcribe sound, or create video shots using the selected model's supported
160
+ inputs. Availability and pricing come from the live catalog.
161
+
162
+ The current source build also provides `direct` shot recipes: retain a film
163
+ budget across attempts, review each take before accepting it, and use an accepted
164
+ clip's last decoded frame as the next shot's reference. Changed predecessors
165
+ invalidate affected continuations while earlier paid results remain retained.
166
+ Model continuity is reviewed, not guaranteed. Budget estimates are not a provider
167
+ billing cap.
168
+
169
+ See [Generate media](docs/how-to/generate-media.md), [Direct short generated clips](docs/directing-video.md),
170
+ and [Gateway configuration](docs/vercel.md). Generation uses caller-owned access;
171
+ uploading local references requires the matching explicit acknowledgement.
172
+
173
+ ### Edit footage and deliver finished videos
174
+
175
+ Record a screen, camera, microphone, and system audio on macOS, or import existing
176
+ footage. Remove pauses and filler words, align sound, reframe speakers, zoom into
177
+ screen actions, and add captions, graphics, color, and audio treatment. Preview
178
+ candidates before selecting a result, then export clean and captioned versions
179
+ in 16:9, 9:16, 1:1, and 4:5 from the same edit.
180
+
181
+ > Edit my product demo: cut the pauses, zoom into each important click, keep the
182
+ > speaker framed, add captions and `logo.svg`, and show a preview before export.
183
+
184
+ Recording requires the corresponding macOS permissions. Input-event capture can
185
+ include clicks, cursor movement, key activity, and focused-input information;
186
+ typed-text capture is separately opt-in and secure fields are suppressed. Read
187
+ [`PRIVACY.md`](PRIVACY.md) before recording sensitive material.
188
+
189
+ Start with [Edit a video](docs/how-to/edit-video.md) or inspect a reusable recipe:
190
+
191
+ ```sh
192
+ slopcamera workflows list --json
193
+ slopcamera workflows show social-variants --json
194
+ ```
195
+
196
+ ## How Slopcamera works
197
+
198
+ Keep the source that owns each creative decision. A native scene owns a rig or
199
+ simulation; a portable scene owns supported geometry, cameras, and media surfaces;
200
+ a diagram owns its objects and labels; a video project owns cuts and delivery.
201
+ SLOPCAMERA connects these through explicit assets and rendered derivatives.
202
+
203
+ 1. **Prepare the sources.** Import footage and assets or author a scene, diagram,
204
+ or native program. Inspect available tools before choosing an engine.
205
+ 2. **Direct the result.** Name cameras, shots, timing, composition, and output
206
+ settings. Generate missing media only when the job calls for it.
207
+ 3. **Review a render.** Inspect contact frames, motion, captions, sound, and
208
+ continuity. Preserve candidates and select the approved result.
209
+ 4. **Deliver and revise.** Export the required formats and retain source paths,
210
+ project decisions, and operation receipts for the next change.
211
+
212
+ ### Instructions for coding agents
213
+
214
+ Read local project instructions and inspect sources before changing them. Use
215
+ `slopcamera --help`, `slopcamera doctor --json`, `slopcamera operations list --json`, and the
216
+ installed skill to discover the exact local surface. Agree on material output
217
+ requirements, preview substantial changes, inspect the resulting files, and
218
+ report their paths. Do not infer provider access, native trust, or model quality
219
+ from a successful plan.
220
+
221
+ [Run agent workflows](docs/how-to/run-workflows.md) covers reusable recipes,
222
+ declarative graphs, approvals, and resuming work.
223
+
224
+ ## Important limitations
225
+
226
+ - **Runtime support varies.** The CLI uses Bun on macOS, Linux, and Windows;
227
+ capture is macOS-specific. Media, browser, GPU, and native studio profiles
228
+ have additional requirements. Use the capability reference and `slopcamera doctor`.
229
+ - **Interchange preserves a supported subset.** Native rigs and simulations do
230
+ not become editable Three scenes by exporting a GLB. An image or video on a
231
+ plane supplies pixels, not hidden geometry. Calibrated camera exchange does
232
+ not match lighting, depth of field, or color treatment automatically.
233
+ - **Generated media requires review.** Models may change subject identity,
234
+ motion, or text. Saved AI worlds are appearance assets, not validated robotics
235
+ or reinforcement-learning environments.
236
+ - **Trusted code is not sandboxed.** Native Python and caller-authored Bun
237
+ workflows run with the current user's access. Hashes and receipts identify
238
+ observed inputs and outputs; they do not make arbitrary code hermetic.
239
+ - **MCP is a subset.** Its fixed tools check and render diagrams, vectorize
240
+ images, and generate images. It does not expose every local CLI operation.
241
+
242
+ ## Design and trust
243
+
244
+ There is no Slopcamera account, hosted project database, or browser generation service.
245
+ Ordinary editing and rendering remain local. Gateway generation and selected
246
+ cloud analysis use credentials from the local process and request explicit
247
+ acknowledgement before uploading named media. This website never accepts a
248
+ Gateway credential. Native Python requires separate authorization. Custom Bun
249
+ workflow modules execute when loaded, including during check and plan; review
250
+ their source first. Both have the current user's access, including potential
251
+ network access, outside the normal media-operation boundary.
252
+
253
+ Original media remains unchanged by normal edit operations. Projects retain
254
+ explicit revisions, and important operations record their inputs and outputs.
255
+ Native tools, providers, codecs, and GPU drivers can affect results, so retained
256
+ source identity alone does not promise identical pixels on another machine.
257
+
258
+ See [Architecture](docs/architecture.md), [`SECURITY.md`](SECURITY.md),
259
+ [`PRIVACY.md`](PRIVACY.md), and [`NOTICE`](NOTICE) for the detailed boundaries.
260
+
261
+ ## Documentation
262
+
263
+ - **Learn:** [Your first diagram](docs/tutorials/first-diagram.md) · [Your first native film](docs/tutorials/first-native-film.md).
264
+ - **Make a result:** [Edit video](docs/how-to/edit-video.md) · [Generate media](docs/how-to/generate-media.md) · [Run workflows](docs/how-to/run-workflows.md) · [Educational video](docs/how-to/educational-video.md).
265
+ - **Look up support:** [Capabilities and release availability](docs/reference/capabilities.md) · [SDK entrypoints](docs/reference/sdk.md) · [Creative tools](docs/html-overlay-creative-toolkit.md).
266
+ - **Understand the system:** [Architecture](docs/architecture.md) · [Native studio](docs/studio.md) · [Directed scenes](docs/spatial-scenes.md).
267
+
268
+ The [documentation index](docs/README.md) connects these paths.
269
+
270
+ ## For software integrations
271
+
272
+ Run this example with Bun from the source checkout after `bun run build:sdk`.
273
+ The checkout resolves its own `@hraness/slopcamera` package exports.
274
+
275
+ SDK imports do not start the CLI or inspect local project state. For example,
276
+ convert an existing local image into an SVG:
277
+
278
+ ```ts
279
+ import { vectorizeImage } from "@hraness/slopcamera"
280
+
281
+ const result = await vectorizeImage("logo.png", { outputPath: "logo.svg" })
282
+ console.log(result.receipt.sourceSha256, result.receipt.svgSha256)
283
+ ```
284
+
285
+ Use `@hraness/slopcamera/code` for declarative workflow graphs,
286
+ `@hraness/slopcamera/workflow` for trusted Bun workflows, and `@hraness/slopcamera/local/*`
287
+ for the local media engine. See the [SDK reference](docs/reference/sdk.md) for
288
+ entrypoint scope and execution effects.
289
+
290
+ ## Verification
291
+
292
+ ```sh
293
+ bun install --frozen-lockfile --ignore-scripts
294
+ bun run check
295
+ ```
296
+
297
+ The required check covers public SDK boundaries, the local runtime, schemas,
298
+ Agent Skill, generated entrypoints, static site, deterministic and property
299
+ tests, and packed consumers. Native and provider-dependent profiles require
300
+ their corresponding external qualification; a local unit-test pass does not
301
+ establish them. See [`CONTRIBUTING.md`](CONTRIBUTING.md) for the complete gates.
302
+
303
+ ## Contributing
304
+
305
+ Read [`CONTRIBUTING.md`](CONTRIBUTING.md) and the nearest `AGENTS.md` before
306
+ changing a package or runtime boundary. Report vulnerabilities through
307
+ [`SECURITY.md`](SECURITY.md).
308
+
309
+ ## License
310
+
311
+ [MIT](LICENSE), with third-party notices in [`NOTICE`](NOTICE).
package/SECURITY.md ADDED
@@ -0,0 +1,21 @@
1
+ # Security
2
+
3
+ Report suspected vulnerabilities privately through [GitHub’s security advisory form](https://github.com/hraness/slopcamera/security/advisories/new). Do not open a public issue for credential exposure, path escape, unsafe SVG output, archive extraction, subprocess containment, unbounded resource use, Gateway authority substitution, or MCP boundary failures.
4
+
5
+ Include the affected version, platform, command or API, minimal reproduction, expected boundary, observed result, and whether any secret or caller-owned media left the machine. Remove tokens, account identifiers, private paths, and proprietary media from the report.
6
+
7
+ Slopcamera’s local MCP server confines paths to one caller-selected root but is not an operating-system sandbox against concurrent same-user mutation. Vectorization is network-silent. Generation sends its prompt and explicitly supplied media directly to Vercel AI Gateway. Slopcamera reads `AI_GATEWAY_API_KEY` or `VERCEL_OIDC_TOKEN` from the process environment and never persists either value.
8
+
9
+ An explicitly imported workflow module is trusted Bun code with the authority of the current user. Review workflow modules before running them. Declarative graph compilation restricts operation nodes to the closed capability projection supplied by the host and rejects unsupported capabilities before executor or resource admission, but it does not sandbox the JavaScript that constructs the graph.
10
+
11
+ The macOS host can request Screen Recording, System Audio Recording, Camera,
12
+ Microphone, and Input Monitoring permissions. Its input-event metadata and
13
+ recordings can contain selected display pixels, system audio, camera video,
14
+ microphone audio, cursor movement, clicks, key activity, focused-input bounds,
15
+ display topology, and changed window snapshots. Typed text is captured only
16
+ when separately enabled, and secure fields are suppressed even then. Treat all
17
+ capture output as sensitive, obtain the required consent, and inspect it before
18
+ sharing or uploading it.
19
+
20
+ The [privacy guide](PRIVACY.md) describes captured data, local processing,
21
+ selected uploads, and how to handle sensitive artifacts.