@hraness/slopcamera 3.2.7 → 3.3.1

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 (188) hide show
  1. package/NOTICE.md +1 -7
  2. package/PRIVACY.md +16 -7
  3. package/README.md +65 -20
  4. package/apps/desktop/README.md +14 -130
  5. package/apps/desktop/application/context.ts +6 -9
  6. package/apps/desktop/application/default-registry.ts +26 -10
  7. package/apps/desktop/application/operation.ts +14 -5
  8. package/apps/desktop/application/operations/index.ts +4 -1
  9. package/apps/desktop/application/operations/spatial-behavior.ts +151 -0
  10. package/apps/desktop/application/operations/spatial-direction.ts +222 -0
  11. package/apps/desktop/application/operations/spatial-rendered-audit.ts +174 -0
  12. package/apps/desktop/application/operations/spatial-review.ts +194 -0
  13. package/apps/desktop/application/operations/spatial-scene.ts +25 -1
  14. package/apps/desktop/application/registry.ts +2 -2
  15. package/apps/desktop/application/spatial-asset-admission.ts +201 -0
  16. package/apps/desktop/application/spatial-assets.ts +160 -31
  17. package/apps/desktop/application/spatial-render.ts +217 -20
  18. package/apps/desktop/application/spatial-rendered-audit.ts +273 -0
  19. package/apps/desktop/application/spatial-review.ts +361 -0
  20. package/apps/desktop/application/spatial-spz.ts +48 -3
  21. package/apps/desktop/application/spatial-world-import.ts +26 -5
  22. package/apps/desktop/application/spatial-world-metadata.ts +105 -0
  23. package/apps/desktop/cli/args.ts +528 -97
  24. package/apps/desktop/cli/capability-manifest.ts +374 -0
  25. package/apps/desktop/cli/cinema-renderer.ts +608 -0
  26. package/apps/desktop/cli/command-host-resources.ts +31 -2
  27. package/apps/desktop/cli/commands.ts +1215 -70
  28. package/apps/desktop/cli/gateway-review-provider.ts +334 -0
  29. package/apps/desktop/cli/help.ts +183 -23
  30. package/apps/desktop/cli/html-scene.ts +139 -28
  31. package/apps/desktop/cli/io.ts +2 -1
  32. package/apps/desktop/cli/main.ts +26 -50
  33. package/apps/desktop/cli/menubar.ts +244 -0
  34. package/apps/desktop/cli/music-analysis-service.ts +61 -0
  35. package/apps/desktop/cli/portable-surface.ts +18 -5
  36. package/apps/desktop/cli/spatial-asset-service.ts +124 -0
  37. package/apps/desktop/cli/spatial-design-service.ts +237 -0
  38. package/apps/desktop/cli/spatial-generate-service.ts +370 -0
  39. package/apps/desktop/cli/spatial-scene-service.ts +268 -4
  40. package/apps/desktop/cli/workflow-code.ts +1 -1
  41. package/apps/desktop/code/application-node-planner.ts +0 -47
  42. package/apps/desktop/code/host-source-layout.ts +46 -0
  43. package/apps/desktop/code/public.ts +0 -1
  44. package/apps/desktop/code/runtime-identity.ts +50 -8
  45. package/apps/desktop/code/semantic-builder.ts +24 -43
  46. package/apps/desktop/code/source-bundle.ts +23 -6
  47. package/apps/desktop/code/source-typecheck.ts +131 -43
  48. package/apps/desktop/code/worker-client.ts +14 -2
  49. package/apps/desktop/contracts/cinema.ts +736 -0
  50. package/apps/desktop/contracts/index.ts +1 -0
  51. package/apps/desktop/contracts/spatial-asset.ts +16 -0
  52. package/apps/desktop/contracts/spatial-world.ts +26 -3
  53. package/apps/desktop/core/cinema-plan.ts +1320 -0
  54. package/apps/desktop/core/index.ts +1 -0
  55. package/apps/desktop/core/music-analysis.ts +124 -1
  56. package/apps/desktop/core/storage.ts +75 -0
  57. package/apps/desktop/dist/cli/main.js +737 -291
  58. package/apps/desktop/html-overlay/audio-reactivity.ts +127 -0
  59. package/apps/desktop/html-overlay/index.ts +9 -0
  60. package/apps/desktop/html-overlay/runtime.ts +2 -0
  61. package/apps/desktop/html-overlay/scene.ts +29 -0
  62. package/apps/desktop/html-overlay/spatial.ts +619 -57
  63. package/apps/desktop/workflows/cinematic-world.ts +127 -0
  64. package/apps/desktop/workflows/index.ts +6 -0
  65. package/dist/cli.js +32 -434
  66. package/dist/code/advanced.js +1 -269
  67. package/dist/code/index.js +16 -2239
  68. package/dist/generate.js +1 -23
  69. package/dist/host-resources.js +1 -25
  70. package/dist/index-0bbesn4m.js +35 -0
  71. package/dist/index-296qhpf2.js +3 -0
  72. package/dist/index-3cxf2c58.js +3 -0
  73. package/dist/index-77fjfg9f.js +3 -0
  74. package/dist/index-80a36bc0.js +3 -0
  75. package/dist/index-a3vvs3rf.js +3 -0
  76. package/dist/index-b3geqczn.js +5 -0
  77. package/dist/index-cgpkyjqa.js +3 -0
  78. package/dist/index-f0ptv8dm.js +7 -0
  79. package/dist/index-grk47tgs.js +3 -0
  80. package/dist/index-qry58nj2.js +10 -0
  81. package/dist/index.js +1 -240
  82. package/dist/operations.js +1 -28
  83. package/dist/skill-install-gx7afxsd.js +2 -0
  84. package/dist/vectorize/worker.js +1 -141
  85. package/dist/workflow.js +1 -15
  86. package/docs/README.md +5 -1
  87. package/docs/studio.md +1 -1
  88. package/package.json +11 -24
  89. package/skills/slopcamera/SKILL.md +14 -1
  90. package/skills/slopcamera/references/diagrams.md +5 -14
  91. package/skills/slopcamera/references/directed-scenes.md +22 -2
  92. package/skills/slopcamera/references/gateway-media.md +15 -1
  93. package/skills/slopcamera/references/image-galleries.md +166 -0
  94. package/skills/slopcamera/references/install.md +2 -2
  95. package/skills/slopcamera/references/music-video.md +23 -3
  96. package/skills/slopcamera/references/parametric-design.md +14 -0
  97. package/skills/slopcamera/references/reference-led-3d.md +1 -1
  98. package/skills/slopcamera/references/scene-building.md +32 -0
  99. package/skills/slopcamera/references/social-collage-banners.md +204 -0
  100. package/skills/slopcamera/references/support.md +25 -0
  101. package/skills/slopcamera/references/web-media-excerpts.md +120 -0
  102. package/skills/slopcamera/references/workflows-sdk.md +3 -3
  103. package/skills/slopcamera/scripts/compose-social-collage-banner.ts +728 -0
  104. package/src/capability-manifest.ts +361 -0
  105. package/src/cli.ts +250 -102
  106. package/src/code/canonical-json.ts +9 -0
  107. package/src/generate.ts +2 -2
  108. package/src/icon.ts +1111 -0
  109. package/src/image-gallery.ts +1049 -0
  110. package/src/index.ts +11 -23
  111. package/src/mcp/boundary.ts +11 -11
  112. package/src/mcp/index.ts +3 -0
  113. package/src/mcp/server.ts +2 -1
  114. package/src/mcp/tools.ts +1642 -130
  115. package/src/mcp/types.ts +19 -0
  116. package/src/operations.ts +412 -0
  117. package/src/portable-capability-manifest.ts +67 -0
  118. package/src/scene-gallery.ts +184 -0
  119. package/src/spatial-scene/asset-admission.ts +183 -0
  120. package/src/spatial-scene/audit-rendered.ts +692 -0
  121. package/src/spatial-scene/audit.ts +617 -0
  122. package/src/spatial-scene/behavior-audit.ts +252 -0
  123. package/src/spatial-scene/behavior-bake.ts +233 -0
  124. package/src/spatial-scene/behavior-fns.ts +585 -0
  125. package/src/spatial-scene/behavior-gallery.ts +109 -0
  126. package/src/spatial-scene/behavior-stdlib.ts +323 -0
  127. package/src/spatial-scene/behavior-trace.ts +325 -0
  128. package/src/spatial-scene/behavior.ts +618 -0
  129. package/src/spatial-scene/build.ts +632 -0
  130. package/src/spatial-scene/camera-rig.ts +125 -0
  131. package/src/spatial-scene/camera-track.ts +4 -2
  132. package/src/spatial-scene/character.ts +124 -0
  133. package/src/spatial-scene/contracts.ts +75 -7
  134. package/src/spatial-scene/design-templates.ts +351 -0
  135. package/src/spatial-scene/design.ts +327 -0
  136. package/src/spatial-scene/direction-compile.ts +584 -0
  137. package/src/spatial-scene/direction.ts +122 -0
  138. package/src/spatial-scene/effects.ts +149 -0
  139. package/src/spatial-scene/evaluate.ts +109 -29
  140. package/src/spatial-scene/gallery.ts +277 -0
  141. package/src/spatial-scene/generate.ts +239 -0
  142. package/src/spatial-scene/geometry-native.ts +165 -0
  143. package/src/spatial-scene/geometry.ts +1216 -0
  144. package/src/spatial-scene/gltf.ts +600 -77
  145. package/src/spatial-scene/identity.ts +55 -2
  146. package/src/spatial-scene/index.ts +36 -0
  147. package/src/spatial-scene/inspect.ts +35 -6
  148. package/src/spatial-scene/material-lighting.ts +609 -0
  149. package/src/spatial-scene/math.ts +21 -4
  150. package/src/spatial-scene/motion-evidence.ts +88 -0
  151. package/src/spatial-scene/parametric.ts +765 -0
  152. package/src/spatial-scene/particle-preparation.ts +183 -0
  153. package/src/spatial-scene/particle.ts +195 -0
  154. package/src/spatial-scene/patch.ts +109 -15
  155. package/src/spatial-scene/performance.ts +1613 -0
  156. package/src/spatial-scene/probe.ts +137 -0
  157. package/src/spatial-scene/recipe-pack.ts +86 -0
  158. package/src/spatial-scene/render-effects.ts +240 -0
  159. package/src/spatial-scene/review.ts +639 -0
  160. package/src/spatial-scene/simulation-bake.ts +206 -0
  161. package/src/spatial-scene/simulation.ts +187 -0
  162. package/src/spatial-scene/solve.ts +366 -0
  163. package/src/spatial-scene/temporal-audit.ts +354 -0
  164. package/src/support-completion.ts +16 -0
  165. package/src/support.ts +42 -0
  166. package/src/version.ts +1 -1
  167. package/apps/desktop/application/operations/recording/index.ts +0 -5
  168. package/apps/desktop/application/operations/recording/pause.ts +0 -34
  169. package/apps/desktop/application/operations/recording/resume.ts +0 -34
  170. package/apps/desktop/application/operations/recording/shared.ts +0 -199
  171. package/apps/desktop/application/operations/recording/start.ts +0 -169
  172. package/apps/desktop/application/operations/recording/stop.ts +0 -34
  173. package/apps/desktop/capture/protocol.ts +0 -689
  174. package/apps/desktop/cli/capture-bundle.ts +0 -1117
  175. package/apps/desktop/cli/recording-controller.ts +0 -1567
  176. package/apps/desktop/cli/recording-daemon.ts +0 -931
  177. package/dist/index-42zsesc1.js +0 -2257
  178. package/dist/index-7308egqr.js +0 -48
  179. package/dist/index-8txs6fkn.js +0 -712
  180. package/dist/index-mcy8z0br.js +0 -192
  181. package/dist/index-p63wavx0.js +0 -2029
  182. package/dist/index-r7gdhmsp.js +0 -424
  183. package/dist/index-rvghzt7b.js +0 -2013
  184. package/dist/index-sh6xbav6.js +0 -1219
  185. package/dist/index-z1w83f81.js +0 -4
  186. package/dist/index-z7239b4h.js +0 -2363
  187. package/dist/skill-install-dh0ntqba.js +0 -10
  188. package/src/desktop.ts +0 -253
@@ -0,0 +1,25 @@
1
+ # Optional support
2
+
3
+ Run `slopcamera support protocol --json` for the current product-owned protocol.
4
+ At an eligible human closeout, call `slopcamera support offer --json` once. Treat
5
+ `kind:quiet` as a complete stop without mentioning support; do not poll or work
6
+ around disabled state. Discovery on stderr is guidance, not an invitation claim.
7
+
8
+ For `kind:offer`, optionally say once: “You can support continued development of
9
+ Slopcamera’s local visual tools.” Use the returned clean support link. This product
10
+ has no updates mailing list; do not collect an email or imply a subscription unlocks
11
+ features. Opening a link grants no authority to pay or create an account.
12
+
13
+ If the host supports a persistent human-visible message followed by a tool call,
14
+ emit the invitation first, then call `slopcamera support shown <id>` with its exact
15
+ ID. The receipt reports host output, never that a person read it. Do not count
16
+ collapsible commentary as persistent delivery. If only the final answer persists,
17
+ include the invitation there and leave it unacknowledged. It expires after ten
18
+ minutes; this fallback does not consume the weekly shown cooldown.
19
+
20
+ On output failure, release the claim with `slopcamera support release <id>` if
21
+ possible. If acknowledgment fails after output, do not repeat the invitation;
22
+ retry the same acknowledgment only when the protocol permits it. Honor “no thanks”
23
+ with `slopcamera support dismiss` and “later” with `slopcamera support snooze`.
24
+ `HRANESS_SUPPORT_AUDIENCE=off` suppresses offers and ambient discovery. Never infer
25
+ subscription status or obtain a new claim merely because a previous one expired.
@@ -0,0 +1,120 @@
1
+ # Acquire bounded web-media excerpts with yt-dlp
2
+
3
+ Use this route when a scene needs a short piece of audio or video from a public
4
+ web URL. Slopcamera's renderers consume local, retained media; acquire the
5
+ excerpt first, then pass its local path to `audio.path` or a media operation.
6
+ Only acquire material the user is authorized to download and reuse. Stop when
7
+ the source requires DRM or an access-control workaround.
8
+
9
+ The examples use `yt-dlp`. If a machine only exposes the legacy `youtube-dl`
10
+ command, check its installed help for equivalent bounded-section options before
11
+ using it; format IDs and client behavior are never portable between runs.
12
+
13
+ ## Keep the acquisition bounded and reproducible
14
+
15
+ Check the local tools and create a private staging directory before contacting
16
+ the source:
17
+
18
+ ```sh
19
+ command -v yt-dlp
20
+ command -v ffmpeg
21
+ yt-dlp --version
22
+ ffmpeg -version | head -1
23
+ mkdir -m 700 -p artifacts/slopcamera/source/web-excerpt
24
+ ```
25
+
26
+ Set `URL`, `START_SECONDS`, and `END_SECONDS` to the requested source and
27
+ window. Use integer or decimal seconds, and keep `END_SECONDS` greater than
28
+ `START_SECONDS`:
29
+
30
+ ```sh
31
+ URL='https://www.youtube.com/watch?v=VIDEO_ID'
32
+ START_SECONDS=0
33
+ END_SECONDS=60
34
+ DURATION_SECONDS=60 # END_SECONDS - START_SECONDS
35
+ ```
36
+
37
+ Use the canonical URL as one argument, disable playlist expansion, and state
38
+ the exact time window. `--download-sections` asks yt-dlp/FFmpeg for the window;
39
+ it does not guarantee that every site will transfer only those bytes, so check
40
+ the resulting file size and duration.
41
+
42
+ For an audio excerpt, try the best available audio stream first:
43
+
44
+ ```sh
45
+ yt-dlp --no-playlist --retries 3 --fragment-retries 3 \
46
+ -f 'bestaudio[ext=m4a]/bestaudio' \
47
+ --download-sections "*${START_SECONDS}-${END_SECONDS}" \
48
+ -o 'artifacts/slopcamera/source/web-excerpt/raw.%(ext)s' \
49
+ "$URL"
50
+ ```
51
+
52
+ If that stream returns HTTP 403 or cannot be cut, inspect the current format
53
+ list (`yt-dlp -F "$URL"`) and choose an available progressive format that has
54
+ both video and audio. A progressive stream can be downloaded for the same
55
+ window and then reduced to audio locally:
56
+
57
+ ```sh
58
+ yt-dlp --no-playlist --retries 3 --fragment-retries 3 \
59
+ -f 'best[acodec!=none][vcodec!=none]/best' \
60
+ --download-sections "*${START_SECONDS}-${END_SECONDS}" \
61
+ --force-keyframes-at-cuts \
62
+ -o 'artifacts/slopcamera/source/web-excerpt/raw.%(ext)s' \
63
+ "$URL"
64
+ ```
65
+
66
+ After either download, set `RAW_PATH` to the actual file and normalize it
67
+ locally. This makes the duration, codec, sample rate, and channel layout
68
+ independent of the source container:
69
+
70
+ ```sh
71
+ RAW_PATH='artifacts/slopcamera/source/web-excerpt/raw.mp4' # use yt-dlp's actual output extension
72
+ ffmpeg -nostdin -hide_banner -loglevel error -y \
73
+ -i "$RAW_PATH" \
74
+ -map 0:a:0 -vn -t "$DURATION_SECONDS" \
75
+ -c:a aac -b:a 128k -ar 48000 -ac 2 -movflags +faststart \
76
+ artifacts/slopcamera/source/web-excerpt/excerpt.m4a
77
+ ```
78
+
79
+ Use the actual extension printed by yt-dlp when the progressive source is
80
+ WebM or another container. `--force-keyframes-at-cuts` is useful for a video
81
+ section; it is not a substitute for the final local audio trim.
82
+
83
+ Format IDs and client behavior change. Do not hard-code a format ID from an old
84
+ run without checking `-F` again. When YouTube reports that a client needs a
85
+ Proof of Origin (PO) token, use a current, user-authorized browser cookie/token
86
+ route only when that access is in scope. Never guess a token, loop through
87
+ clients to evade a block, or put cookies, PO tokens, signed media URLs, or
88
+ browser profiles in the scene source, logs, or a retained bundle. The
89
+ [yt-dlp PO Token Guide](https://github.com/yt-dlp/yt-dlp/wiki/PO-Token-Guide)
90
+ and [yt-dlp FAQ](https://github.com/yt-dlp/yt-dlp/wiki/FAQ) describe the current
91
+ failure modes and browser-state requirements.
92
+
93
+ ## Verify before importing
94
+
95
+ Probe the finished local file before giving it to Slopcamera. For a music-video
96
+ soundtrack, require one audio stream, a positive duration close to the requested
97
+ window, and the expected channel layout; then hash the bytes:
98
+
99
+ ```sh
100
+ ffprobe -v error \
101
+ -show_entries 'format=duration,size:stream=index,codec_type,codec_name,channels,sample_rate,duration,start_time' \
102
+ -of json artifacts/slopcamera/source/web-excerpt/excerpt.m4a
103
+ shasum -a 256 artifacts/slopcamera/source/web-excerpt/excerpt.m4a
104
+ ```
105
+
106
+ Retain a small sidecar next to the excerpt with the canonical source URL (and
107
+ video ID when available), requested start/end seconds, selected format, tool
108
+ versions, observed duration, and output SHA-256. Keep the sidecar free of
109
+ cookies and expiring signed URLs. Rename or copy the verified excerpt into the
110
+ project's ordinary source area only after the probe succeeds; keep the original
111
+ local source unchanged.
112
+
113
+ Once verified, use the local path in the scene request. HTML scenes do not fetch
114
+ remote media at render time, so rerenders remain reproducible and do not depend
115
+ on a web session. Review the first and last audio/video frames and report any
116
+ boundary padding or partial download explicitly.
117
+
118
+ See the [yt-dlp README's format-selection guidance](https://github.com/yt-dlp/yt-dlp#format-selection)
119
+ for selector syntax and the [music-video guide](music-video.md) for retaining a
120
+ local soundtrack beside an authored scene.
@@ -1,6 +1,6 @@
1
1
  # Use SDKs and durable workflows
2
2
 
3
- Use `slopcamera workflows list --json` and `slopcamera workflows show <id> --json` to discover checked recipes and their actual inputs. Built-ins include `talking-head-cleanup`, `polished-screen-demo`, `chaptered-demo`, `social-variants`, `creative-iteration`, `creative-selection` and `directed-scene`. Keep ordinary project edits complete before a V2 scene migration.
3
+ Use `slopcamera workflows list --json` and `slopcamera workflows show <id> --json` to discover checked recipes and their actual inputs. Built-ins include `talking-head-cleanup`, `polished-screen-demo`, `chaptered-demo`, `social-variants`, `creative-iteration`, `creative-selection`, `directed-scene` and `cinematic-world`. Keep ordinary project edits complete before a V2 scene migration.
4
4
 
5
5
  ```sh
6
6
  slopcamera workflows plan <id> --input input.json --json
@@ -32,9 +32,9 @@ Keep run IDs, errors and receipts after failure. A missing journal does not prov
32
32
 
33
33
  ## Use the portable MCP surface narrowly
34
34
 
35
- When connected, use `check_diagram` and `render_diagram` for compatibility calls, or `search_slopcamera` and `execute_slopcamera` with one exact returned operation and typed JSON. No tool rewrites source.
35
+ When connected, use `check_diagram` and `render_diagram` for compatibility calls, `check_scene`/`inspect_scene`/`audit_scene`/`audit_scene_temporal`/`diff_scenes`/`evaluate_scene` for read-only spatial scene work, `check_scene_direction`/`plan_scene_direction`/`plan_scene_gallery`/`check_scene_effects`/`plan_scene_effects` for cinematic planning evidence, or `search_slopcamera` and `execute_slopcamera` with one exact returned operation and typed JSON. No tool rewrites source or mutates project state; candidate selection stays an explicit CLI or SDK call.
36
36
 
37
- - Use root-relative paths. A diagram must end in `.diagram.json`.
37
+ - Use root-relative paths. A diagram must end in `.diagram.json`; a scene must end in `.json`.
38
38
  - Diagram render replaces the five documented exports, never its source.
39
39
  - MCP bounds diagrams to 64 shapes and 128 edges and reports at most 40 findings. Use the CLI for larger checked sources.
40
40
  - MCP uses built-in themes/icons and never executes workspace configuration; trusted custom config belongs to the CLI.