@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
package/src/index.ts CHANGED
@@ -4,20 +4,13 @@ import {
4
4
  readDiagramFile,
5
5
  renderDiagramFile,
6
6
  } from "./artifacts.js"
7
- import {
8
- desktopDownloadPage,
9
- desktopStatus,
10
- findDesktopApplication,
11
- getLatestDesktopRelease,
12
- installDesktop,
13
- openInDesktop,
14
- selectDesktopAsset,
15
- } from "./desktop.js"
16
7
  import {
17
8
  generateSlopcameraImage,
18
9
  generateSlopcameraImageFile,
19
10
  slopcameraGatewayCredentialStatus,
20
11
  } from "./generate.js"
12
+ import { generateSlopcameraIcon } from "./icon.js"
13
+ import { generateSlopcameraImageGallery } from "./image-gallery.js"
21
14
  import { builtInIcons } from "./icons.js"
22
15
  import {
23
16
  resolveDiagramSource,
@@ -64,27 +57,23 @@ export const slopcameraApi = Object.freeze({
64
57
  builtInIcons,
65
58
  bundledSkillPath,
66
59
  checkDiagramFile,
67
- desktopDownloadPage,
68
- desktopStatus,
69
60
  defineSlopcameraWorkflow,
70
61
  DiagramValidationError,
71
- findDesktopApplication,
72
62
  generateSlopcameraImage,
73
63
  generateSlopcameraImageFile,
74
- getLatestDesktopRelease,
64
+ generateSlopcameraImageGallery,
65
+ generateSlopcameraIcon,
75
66
  slopcameraGatewayCredentialStatus,
76
67
  slopcameraMcpProtocolVersion,
77
68
  slopcameraMcpServerName,
78
69
  slopcameraMcpTools,
79
70
  slopcameraOperationRegistry,
80
71
  SlopcameraMcpToolRuntime,
81
- installDesktop,
82
72
  installSkill,
83
73
  lintDiagram,
84
74
  mcpMaximumRenderedPixels,
85
75
  mcpMaximumScale,
86
76
  mcpSourceByteLimit,
87
- openInDesktop,
88
77
  parseDiagramSource,
89
78
  parseDiagramSpec,
90
79
  readDiagramFile,
@@ -97,7 +86,6 @@ export const slopcameraApi = Object.freeze({
97
86
  runSlopcameraWorkflow,
98
87
  runMcpServer,
99
88
  searchSlopcameraOperations,
100
- selectDesktopAsset,
101
89
  serializeTldr,
102
90
  stackLayoutDefaults,
103
91
  StackLayoutError,
@@ -116,26 +104,22 @@ export {
116
104
  builtInIcons,
117
105
  bundledSkillPath,
118
106
  checkDiagramFile,
119
- desktopDownloadPage,
120
- desktopStatus,
121
107
  DiagramValidationError,
122
- findDesktopApplication,
123
108
  generateSlopcameraImage,
124
109
  generateSlopcameraImageFile,
125
- getLatestDesktopRelease,
110
+ generateSlopcameraImageGallery,
111
+ generateSlopcameraIcon,
126
112
  slopcameraGatewayCredentialStatus,
127
113
  slopcameraMcpProtocolVersion,
128
114
  slopcameraMcpServerName,
129
115
  slopcameraMcpTools,
130
116
  slopcameraOperationRegistry,
131
117
  SlopcameraMcpToolRuntime,
132
- installDesktop,
133
118
  installSkill,
134
119
  lintDiagram,
135
120
  mcpMaximumRenderedPixels,
136
121
  mcpMaximumScale,
137
122
  mcpSourceByteLimit,
138
- openInDesktop,
139
123
  parseDiagramSource,
140
124
  parseDiagramSpec,
141
125
  readDiagramFile,
@@ -147,7 +131,6 @@ export {
147
131
  resolveStackLayout,
148
132
  runMcpServer,
149
133
  searchSlopcameraOperations,
150
- selectDesktopAsset,
151
134
  serializeTldr,
152
135
  stackLayoutDefaults,
153
136
  StackLayoutError,
@@ -159,10 +142,15 @@ export {
159
142
  WorkspaceBoundaryError,
160
143
  executeSlopcameraOperation,
161
144
  }
145
+ export * from "./capability-manifest.js"
162
146
  export * from "./cloud-errors.js"
163
147
  export * from "./generate.js"
164
148
  export * from "./host-resources.js"
149
+ export * from "./icon.js"
150
+ export * from "./image-gallery.js"
165
151
  export * from "./operations.js"
152
+ export * from "./portable-capability-manifest.js"
153
+ export * from "./scene-gallery.js"
166
154
  export * from "./studio/index.js"
167
155
  export * from "./workflow.js"
168
156
  export type * from "./types.js"
@@ -102,7 +102,7 @@ function isConfined(rootDirectory: string, target: string): boolean {
102
102
  return fromRoot === "" || (!fromRoot.startsWith("..") && !isAbsolute(fromRoot))
103
103
  }
104
104
 
105
- async function readUtf8WithCap(filePath: string): Promise<string> {
105
+ async function readUtf8WithCap(filePath: string, sourceLabel: string): Promise<string> {
106
106
  let handle
107
107
  try {
108
108
  handle = await open(filePath, "r")
@@ -110,13 +110,13 @@ async function readUtf8WithCap(filePath: string): Promise<string> {
110
110
  if (!metadata.isFile()) {
111
111
  throw new WorkspaceBoundaryError(
112
112
  "SOURCE_NOT_FILE",
113
- "Diagram source must be a regular file.",
113
+ `${sourceLabel} must be a regular file.`,
114
114
  )
115
115
  }
116
116
  if (metadata.size > mcpSourceByteLimit) {
117
117
  throw new WorkspaceBoundaryError(
118
118
  "SOURCE_TOO_LARGE",
119
- `Diagram source exceeds the ${mcpSourceByteLimit}-byte limit.`,
119
+ `${sourceLabel} exceeds the ${mcpSourceByteLimit}-byte limit.`,
120
120
  )
121
121
  }
122
122
 
@@ -135,7 +135,7 @@ async function readUtf8WithCap(filePath: string): Promise<string> {
135
135
  if (bytesRead > mcpSourceByteLimit) {
136
136
  throw new WorkspaceBoundaryError(
137
137
  "SOURCE_TOO_LARGE",
138
- `Diagram source exceeds the ${mcpSourceByteLimit}-byte limit.`,
138
+ `${sourceLabel} exceeds the ${mcpSourceByteLimit}-byte limit.`,
139
139
  )
140
140
  }
141
141
  try {
@@ -145,16 +145,16 @@ async function readUtf8WithCap(filePath: string): Promise<string> {
145
145
  } catch {
146
146
  throw new WorkspaceBoundaryError(
147
147
  "SOURCE_ENCODING",
148
- "Diagram source must contain valid UTF-8.",
148
+ `${sourceLabel} must contain valid UTF-8.`,
149
149
  )
150
150
  }
151
151
  } catch (error) {
152
152
  if (error instanceof WorkspaceBoundaryError) throw error
153
153
  const code = filesystemCode(error)
154
154
  if (code === "ENOENT") {
155
- throw new WorkspaceBoundaryError("SOURCE_NOT_FOUND", "Diagram source does not exist.")
155
+ throw new WorkspaceBoundaryError("SOURCE_NOT_FOUND", `${sourceLabel} does not exist.`)
156
156
  }
157
- throw new WorkspaceBoundaryError("FILESYSTEM_ERROR", "Diagram source could not be read.")
157
+ throw new WorkspaceBoundaryError("FILESYSTEM_ERROR", `${sourceLabel} could not be read.`)
158
158
  } finally {
159
159
  await handle?.close()
160
160
  }
@@ -202,7 +202,7 @@ export class WorkspaceBoundary {
202
202
  return fromRoot === "" ? "." : fromRoot.split("\\").join("/")
203
203
  }
204
204
 
205
- async readSource(value: string): Promise<WorkspaceSource> {
205
+ async readSource(value: string, sourceLabel = "Diagram source"): Promise<WorkspaceSource> {
206
206
  const normalized = normalizeRelativePath(value, { allowRoot: false })
207
207
  const lexicalPath = resolve(this.rootDirectory, normalized.native)
208
208
  this.assertConfined(lexicalPath)
@@ -214,19 +214,19 @@ export class WorkspaceBoundary {
214
214
  if (filesystemCode(error) === "ENOENT") {
215
215
  throw new WorkspaceBoundaryError(
216
216
  "SOURCE_NOT_FOUND",
217
- "Diagram source does not exist.",
217
+ `${sourceLabel} does not exist.`,
218
218
  )
219
219
  }
220
220
  throw new WorkspaceBoundaryError(
221
221
  "FILESYSTEM_ERROR",
222
- "Diagram source could not be resolved.",
222
+ `${sourceLabel} could not be resolved.`,
223
223
  )
224
224
  }
225
225
  this.assertConfined(canonicalPath)
226
226
  return {
227
227
  absolutePath: canonicalPath,
228
228
  relativePath: this.toRelativePath(canonicalPath),
229
- text: await readUtf8WithCap(canonicalPath),
229
+ text: await readUtf8WithCap(canonicalPath, sourceLabel),
230
230
  }
231
231
  }
232
232
 
package/src/mcp/index.ts CHANGED
@@ -8,6 +8,9 @@ export {
8
8
  SlopcameraMcpToolRuntime,
9
9
  mcpMaximumEdges,
10
10
  mcpMaximumRenderedPixels,
11
+ mcpMaximumReturnedAuditSamples,
12
+ mcpMaximumReturnedDiffEntries,
13
+ mcpMaximumReturnedEntities,
11
14
  mcpMaximumReturnedFindings,
12
15
  mcpMaximumScale,
13
16
  mcpMaximumShapes,
package/src/mcp/server.ts CHANGED
@@ -144,7 +144,7 @@ class SlopcameraMcpSession {
144
144
  version: this.serverVersion,
145
145
  },
146
146
  instructions:
147
- "Use check_diagram/render_diagram or search_slopcamera followed by execute_slopcamera with an exact registry code and typed JSON. Local paths are root-relative; source code is never accepted or evaluated.",
147
+ "Use check_diagram/render_diagram, the read-only scene tools (check_scene, inspect_scene, audit_scene, diff_scenes, evaluate_scene), or search_slopcamera followed by execute_slopcamera with an exact registry code and typed JSON. Local paths are root-relative; source code is never accepted or evaluated.",
148
148
  })
149
149
  }
150
150
 
@@ -232,6 +232,7 @@ export async function runMcpServer(
232
232
  const runtime = await SlopcameraMcpToolRuntime.create(
233
233
  options.rootDirectory ?? process.cwd(),
234
234
  options.generateDependencies,
235
+ options.hostResourceCoordinator,
235
236
  )
236
237
  const session = new SlopcameraMcpSession(
237
238
  runtime,