@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.
- package/NOTICE.md +1 -7
- package/PRIVACY.md +16 -7
- package/README.md +65 -20
- package/apps/desktop/README.md +14 -130
- package/apps/desktop/application/context.ts +6 -9
- package/apps/desktop/application/default-registry.ts +26 -10
- package/apps/desktop/application/operation.ts +14 -5
- package/apps/desktop/application/operations/index.ts +4 -1
- package/apps/desktop/application/operations/spatial-behavior.ts +151 -0
- package/apps/desktop/application/operations/spatial-direction.ts +222 -0
- package/apps/desktop/application/operations/spatial-rendered-audit.ts +174 -0
- package/apps/desktop/application/operations/spatial-review.ts +194 -0
- package/apps/desktop/application/operations/spatial-scene.ts +25 -1
- package/apps/desktop/application/registry.ts +2 -2
- package/apps/desktop/application/spatial-asset-admission.ts +201 -0
- package/apps/desktop/application/spatial-assets.ts +160 -31
- package/apps/desktop/application/spatial-render.ts +217 -20
- package/apps/desktop/application/spatial-rendered-audit.ts +273 -0
- package/apps/desktop/application/spatial-review.ts +361 -0
- package/apps/desktop/application/spatial-spz.ts +48 -3
- package/apps/desktop/application/spatial-world-import.ts +26 -5
- package/apps/desktop/application/spatial-world-metadata.ts +105 -0
- package/apps/desktop/cli/args.ts +528 -97
- package/apps/desktop/cli/capability-manifest.ts +374 -0
- package/apps/desktop/cli/cinema-renderer.ts +608 -0
- package/apps/desktop/cli/command-host-resources.ts +31 -2
- package/apps/desktop/cli/commands.ts +1215 -70
- package/apps/desktop/cli/gateway-review-provider.ts +334 -0
- package/apps/desktop/cli/help.ts +183 -23
- package/apps/desktop/cli/html-scene.ts +139 -28
- package/apps/desktop/cli/io.ts +2 -1
- package/apps/desktop/cli/main.ts +26 -50
- package/apps/desktop/cli/menubar.ts +244 -0
- package/apps/desktop/cli/music-analysis-service.ts +61 -0
- package/apps/desktop/cli/portable-surface.ts +18 -5
- package/apps/desktop/cli/spatial-asset-service.ts +124 -0
- package/apps/desktop/cli/spatial-design-service.ts +237 -0
- package/apps/desktop/cli/spatial-generate-service.ts +370 -0
- package/apps/desktop/cli/spatial-scene-service.ts +268 -4
- package/apps/desktop/cli/workflow-code.ts +1 -1
- package/apps/desktop/code/application-node-planner.ts +0 -47
- package/apps/desktop/code/host-source-layout.ts +46 -0
- package/apps/desktop/code/public.ts +0 -1
- package/apps/desktop/code/runtime-identity.ts +50 -8
- package/apps/desktop/code/semantic-builder.ts +24 -43
- package/apps/desktop/code/source-bundle.ts +23 -6
- package/apps/desktop/code/source-typecheck.ts +131 -43
- package/apps/desktop/code/worker-client.ts +14 -2
- package/apps/desktop/contracts/cinema.ts +736 -0
- package/apps/desktop/contracts/index.ts +1 -0
- package/apps/desktop/contracts/spatial-asset.ts +16 -0
- package/apps/desktop/contracts/spatial-world.ts +26 -3
- package/apps/desktop/core/cinema-plan.ts +1320 -0
- package/apps/desktop/core/index.ts +1 -0
- package/apps/desktop/core/music-analysis.ts +124 -1
- package/apps/desktop/core/storage.ts +75 -0
- package/apps/desktop/dist/cli/main.js +737 -291
- package/apps/desktop/html-overlay/audio-reactivity.ts +127 -0
- package/apps/desktop/html-overlay/index.ts +9 -0
- package/apps/desktop/html-overlay/runtime.ts +2 -0
- package/apps/desktop/html-overlay/scene.ts +29 -0
- package/apps/desktop/html-overlay/spatial.ts +619 -57
- package/apps/desktop/workflows/cinematic-world.ts +127 -0
- package/apps/desktop/workflows/index.ts +6 -0
- package/dist/cli.js +32 -434
- package/dist/code/advanced.js +1 -269
- package/dist/code/index.js +16 -2239
- package/dist/generate.js +1 -23
- package/dist/host-resources.js +1 -25
- package/dist/index-0bbesn4m.js +35 -0
- package/dist/index-296qhpf2.js +3 -0
- package/dist/index-3cxf2c58.js +3 -0
- package/dist/index-77fjfg9f.js +3 -0
- package/dist/index-80a36bc0.js +3 -0
- package/dist/index-a3vvs3rf.js +3 -0
- package/dist/index-b3geqczn.js +5 -0
- package/dist/index-cgpkyjqa.js +3 -0
- package/dist/index-f0ptv8dm.js +7 -0
- package/dist/index-grk47tgs.js +3 -0
- package/dist/index-qry58nj2.js +10 -0
- package/dist/index.js +1 -240
- package/dist/operations.js +1 -28
- package/dist/skill-install-gx7afxsd.js +2 -0
- package/dist/vectorize/worker.js +1 -141
- package/dist/workflow.js +1 -15
- package/docs/README.md +5 -1
- package/docs/studio.md +1 -1
- package/package.json +11 -24
- package/skills/slopcamera/SKILL.md +14 -1
- package/skills/slopcamera/references/diagrams.md +5 -14
- package/skills/slopcamera/references/directed-scenes.md +22 -2
- package/skills/slopcamera/references/gateway-media.md +15 -1
- package/skills/slopcamera/references/image-galleries.md +166 -0
- package/skills/slopcamera/references/install.md +2 -2
- package/skills/slopcamera/references/music-video.md +23 -3
- package/skills/slopcamera/references/parametric-design.md +14 -0
- package/skills/slopcamera/references/reference-led-3d.md +1 -1
- package/skills/slopcamera/references/scene-building.md +32 -0
- package/skills/slopcamera/references/social-collage-banners.md +204 -0
- package/skills/slopcamera/references/support.md +25 -0
- package/skills/slopcamera/references/web-media-excerpts.md +120 -0
- package/skills/slopcamera/references/workflows-sdk.md +3 -3
- package/skills/slopcamera/scripts/compose-social-collage-banner.ts +728 -0
- package/src/capability-manifest.ts +361 -0
- package/src/cli.ts +250 -102
- package/src/code/canonical-json.ts +9 -0
- package/src/generate.ts +2 -2
- package/src/icon.ts +1111 -0
- package/src/image-gallery.ts +1049 -0
- package/src/index.ts +11 -23
- package/src/mcp/boundary.ts +11 -11
- package/src/mcp/index.ts +3 -0
- package/src/mcp/server.ts +2 -1
- package/src/mcp/tools.ts +1642 -130
- package/src/mcp/types.ts +19 -0
- package/src/operations.ts +412 -0
- package/src/portable-capability-manifest.ts +67 -0
- package/src/scene-gallery.ts +184 -0
- package/src/spatial-scene/asset-admission.ts +183 -0
- package/src/spatial-scene/audit-rendered.ts +692 -0
- package/src/spatial-scene/audit.ts +617 -0
- package/src/spatial-scene/behavior-audit.ts +252 -0
- package/src/spatial-scene/behavior-bake.ts +233 -0
- package/src/spatial-scene/behavior-fns.ts +585 -0
- package/src/spatial-scene/behavior-gallery.ts +109 -0
- package/src/spatial-scene/behavior-stdlib.ts +323 -0
- package/src/spatial-scene/behavior-trace.ts +325 -0
- package/src/spatial-scene/behavior.ts +618 -0
- package/src/spatial-scene/build.ts +632 -0
- package/src/spatial-scene/camera-rig.ts +125 -0
- package/src/spatial-scene/camera-track.ts +4 -2
- package/src/spatial-scene/character.ts +124 -0
- package/src/spatial-scene/contracts.ts +75 -7
- package/src/spatial-scene/design-templates.ts +351 -0
- package/src/spatial-scene/design.ts +327 -0
- package/src/spatial-scene/direction-compile.ts +584 -0
- package/src/spatial-scene/direction.ts +122 -0
- package/src/spatial-scene/effects.ts +149 -0
- package/src/spatial-scene/evaluate.ts +109 -29
- package/src/spatial-scene/gallery.ts +277 -0
- package/src/spatial-scene/generate.ts +239 -0
- package/src/spatial-scene/geometry-native.ts +165 -0
- package/src/spatial-scene/geometry.ts +1216 -0
- package/src/spatial-scene/gltf.ts +600 -77
- package/src/spatial-scene/identity.ts +55 -2
- package/src/spatial-scene/index.ts +36 -0
- package/src/spatial-scene/inspect.ts +35 -6
- package/src/spatial-scene/material-lighting.ts +609 -0
- package/src/spatial-scene/math.ts +21 -4
- package/src/spatial-scene/motion-evidence.ts +88 -0
- package/src/spatial-scene/parametric.ts +765 -0
- package/src/spatial-scene/particle-preparation.ts +183 -0
- package/src/spatial-scene/particle.ts +195 -0
- package/src/spatial-scene/patch.ts +109 -15
- package/src/spatial-scene/performance.ts +1613 -0
- package/src/spatial-scene/probe.ts +137 -0
- package/src/spatial-scene/recipe-pack.ts +86 -0
- package/src/spatial-scene/render-effects.ts +240 -0
- package/src/spatial-scene/review.ts +639 -0
- package/src/spatial-scene/simulation-bake.ts +206 -0
- package/src/spatial-scene/simulation.ts +187 -0
- package/src/spatial-scene/solve.ts +366 -0
- package/src/spatial-scene/temporal-audit.ts +354 -0
- package/src/support-completion.ts +16 -0
- package/src/support.ts +42 -0
- package/src/version.ts +1 -1
- package/apps/desktop/application/operations/recording/index.ts +0 -5
- package/apps/desktop/application/operations/recording/pause.ts +0 -34
- package/apps/desktop/application/operations/recording/resume.ts +0 -34
- package/apps/desktop/application/operations/recording/shared.ts +0 -199
- package/apps/desktop/application/operations/recording/start.ts +0 -169
- package/apps/desktop/application/operations/recording/stop.ts +0 -34
- package/apps/desktop/capture/protocol.ts +0 -689
- package/apps/desktop/cli/capture-bundle.ts +0 -1117
- package/apps/desktop/cli/recording-controller.ts +0 -1567
- package/apps/desktop/cli/recording-daemon.ts +0 -931
- package/dist/index-42zsesc1.js +0 -2257
- package/dist/index-7308egqr.js +0 -48
- package/dist/index-8txs6fkn.js +0 -712
- package/dist/index-mcy8z0br.js +0 -192
- package/dist/index-p63wavx0.js +0 -2029
- package/dist/index-r7gdhmsp.js +0 -424
- package/dist/index-rvghzt7b.js +0 -2013
- package/dist/index-sh6xbav6.js +0 -1219
- package/dist/index-z1w83f81.js +0 -4
- package/dist/index-z7239b4h.js +0 -2363
- package/dist/skill-install-dh0ntqba.js +0 -10
- package/src/desktop.ts +0 -253
|
@@ -0,0 +1,374 @@
|
|
|
1
|
+
import {
|
|
2
|
+
compileSlopcameraCapabilityManifest,
|
|
3
|
+
defineSlopcameraCapabilityModule,
|
|
4
|
+
type SlopcameraCapabilityManifest,
|
|
5
|
+
type SlopcameraCapabilityOperation,
|
|
6
|
+
type SlopcameraCapabilityTool,
|
|
7
|
+
type SlopcameraCapabilityWorkflow,
|
|
8
|
+
} from "../../../src/capability-manifest";
|
|
9
|
+
import { slopcameraMcpTools } from "../../../src/mcp/tools";
|
|
10
|
+
import { createApplicationOperationRegistry } from "../application/default-registry";
|
|
11
|
+
import { SLOPCAMERA_APPLICATION_TOOL_VERSION } from "../application/operation";
|
|
12
|
+
import type { OperationDiscovery, OperationRegistry } from "../application/registry";
|
|
13
|
+
import { BUILT_IN_WORKFLOWS } from "../workflows";
|
|
14
|
+
|
|
15
|
+
const diagramImageOperations = [
|
|
16
|
+
"slopcamera.diagram.check@1",
|
|
17
|
+
"slopcamera.diagram.check@2",
|
|
18
|
+
"slopcamera.diagram.render@1",
|
|
19
|
+
"slopcamera.diagram.render@2",
|
|
20
|
+
"slopcamera.image.generate@2",
|
|
21
|
+
"slopcamera.image.vectorize@1",
|
|
22
|
+
"slopcamera.image.vectorize@2",
|
|
23
|
+
] as const;
|
|
24
|
+
|
|
25
|
+
const spatialSceneOperations = [
|
|
26
|
+
"scene.audit@1",
|
|
27
|
+
"scene.behavior.audit@1",
|
|
28
|
+
"scene.behavior.bake@1",
|
|
29
|
+
"scene.behavior.check@1",
|
|
30
|
+
"scene.behavior.gallery@1",
|
|
31
|
+
"scene.direction.check@1",
|
|
32
|
+
"scene.direction.compile@1",
|
|
33
|
+
"scene.direction.gallery@1",
|
|
34
|
+
"scene.effects.check@1",
|
|
35
|
+
"scene.effects.plan@1",
|
|
36
|
+
"scene.evaluate@1",
|
|
37
|
+
"scene.inspect@1",
|
|
38
|
+
"scene.patch@1",
|
|
39
|
+
"scene.render@1",
|
|
40
|
+
"scene.render-audit@1",
|
|
41
|
+
"scene.review@1",
|
|
42
|
+
"scene.temporal-audit@1",
|
|
43
|
+
] as const;
|
|
44
|
+
|
|
45
|
+
const spatialProjectOperations = [
|
|
46
|
+
"spatial.project.add-candidate@1",
|
|
47
|
+
"spatial.project.add-shot@1",
|
|
48
|
+
"spatial.project.migrate@1",
|
|
49
|
+
"spatial.project.patch@1",
|
|
50
|
+
"spatial.project.reconcile@1",
|
|
51
|
+
"spatial.project.restore@1",
|
|
52
|
+
"spatial.project.select-candidate@1",
|
|
53
|
+
"spatial.project.snapshot@1",
|
|
54
|
+
] as const;
|
|
55
|
+
|
|
56
|
+
const analysisOperations = [
|
|
57
|
+
"analysis.faces@1",
|
|
58
|
+
"analysis.music@1",
|
|
59
|
+
"analysis.project-auto-zooms@1",
|
|
60
|
+
"analysis.project-inactivity@1",
|
|
61
|
+
"analysis.scenes@1",
|
|
62
|
+
"derive.follow-faces@1",
|
|
63
|
+
] as const;
|
|
64
|
+
|
|
65
|
+
const editingOperations = [
|
|
66
|
+
"derive.edit-batch@1",
|
|
67
|
+
"derive.edit-batch@2",
|
|
68
|
+
"derive.edit-batch@3",
|
|
69
|
+
"edit.bind-candidate-revision@1",
|
|
70
|
+
"edit.create-candidate-revision@1",
|
|
71
|
+
"edit.create-revision@1",
|
|
72
|
+
"edit.freeze-revision@1",
|
|
73
|
+
"media.audio-effects@1",
|
|
74
|
+
"media.color-grade@1",
|
|
75
|
+
"media.html-overlay@1",
|
|
76
|
+
"media.ingest@1",
|
|
77
|
+
"media.overlay@1",
|
|
78
|
+
"project.commit-edits@1",
|
|
79
|
+
"project.commit-edits@2",
|
|
80
|
+
"project.commit-edits@3",
|
|
81
|
+
"project.snapshot@1",
|
|
82
|
+
"render.project@1",
|
|
83
|
+
"render.project@2",
|
|
84
|
+
"render.project@3",
|
|
85
|
+
"render.project@4",
|
|
86
|
+
"render.project-plan@1",
|
|
87
|
+
"render.project-plan@2",
|
|
88
|
+
] as const;
|
|
89
|
+
|
|
90
|
+
const iterationOperations = [
|
|
91
|
+
"iteration.create-candidate@1",
|
|
92
|
+
"iteration.create-matrix@1",
|
|
93
|
+
"iteration.select@1",
|
|
94
|
+
"project.promote-selection@1",
|
|
95
|
+
"render.bind-candidate-output@1",
|
|
96
|
+
"render.materialize-selection@1",
|
|
97
|
+
] as const;
|
|
98
|
+
|
|
99
|
+
const gatewayOperations = [
|
|
100
|
+
"gateway.image@1",
|
|
101
|
+
"gateway.speech@1",
|
|
102
|
+
"gateway.transcription@1",
|
|
103
|
+
"gateway.video@1",
|
|
104
|
+
] as const;
|
|
105
|
+
|
|
106
|
+
const capabilityModules = Object.freeze([
|
|
107
|
+
defineSlopcameraCapabilityModule({
|
|
108
|
+
commands: [
|
|
109
|
+
{ effect: "pure", name: "operations list" },
|
|
110
|
+
{ effect: "pure", name: "capabilities" },
|
|
111
|
+
{ effect: "local-read", name: "diagram check" },
|
|
112
|
+
{ effect: "local-derived-write", name: "diagram render" },
|
|
113
|
+
{ effect: "local-derived-write", name: "image vectorize" },
|
|
114
|
+
],
|
|
115
|
+
description: "Portable diagrams, local vectorization, and the bounded semantic operation projection.",
|
|
116
|
+
moduleId: "slopcamera.capability.diagram-image",
|
|
117
|
+
operationKeys: diagramImageOperations,
|
|
118
|
+
profiles: [{
|
|
119
|
+
id: "vtracer-official-release-v1",
|
|
120
|
+
kind: "authoring",
|
|
121
|
+
qualification: { evidence: ["scripts/official-vectorizer-smoke.ts"], level: "native", status: "conditional" },
|
|
122
|
+
requirements: [{ description: "A checksum-pinned supported VTracer release.", id: "vtracer", optional: false }],
|
|
123
|
+
}],
|
|
124
|
+
stability: "stable",
|
|
125
|
+
title: "Diagrams and images",
|
|
126
|
+
toolNames: ["check_diagram", "execute_slopcamera", "render_diagram", "search_slopcamera"],
|
|
127
|
+
trust: "portable",
|
|
128
|
+
version: 1,
|
|
129
|
+
workflowKeys: [],
|
|
130
|
+
}),
|
|
131
|
+
defineSlopcameraCapabilityModule({
|
|
132
|
+
commands: [
|
|
133
|
+
{ effect: "local-read", name: "scene inspect" },
|
|
134
|
+
{ effect: "pure", name: "scene design catalog" },
|
|
135
|
+
{ effect: "local-read", name: "scene design inspect" },
|
|
136
|
+
{ effect: "local-derived-write", name: "scene design init" },
|
|
137
|
+
{ effect: "local-derived-write", name: "scene design set" },
|
|
138
|
+
{ effect: "local-derived-write", name: "scene design compile" },
|
|
139
|
+
{ effect: "local-derived-write", name: "scene design gallery" },
|
|
140
|
+
{ effect: "pure", name: "scene audit" },
|
|
141
|
+
{ effect: "local-derived-write", name: "scene render" },
|
|
142
|
+
{ effect: "pure", name: "scene direction check" },
|
|
143
|
+
{ effect: "local-derived-write", name: "scene direction plan" },
|
|
144
|
+
{ effect: "local-derived-write", name: "scene direction gallery" },
|
|
145
|
+
{ effect: "pure", name: "scene effects check" },
|
|
146
|
+
{ effect: "local-derived-write", name: "scene effects plan" },
|
|
147
|
+
{ effect: "local-derived-write", name: "scene effects bake" },
|
|
148
|
+
{ effect: "pure", name: "scene behavior check" },
|
|
149
|
+
{ effect: "local-derived-write", name: "scene behavior bake" },
|
|
150
|
+
{ effect: "local-derived-write", name: "scene behavior gallery" },
|
|
151
|
+
{ effect: "pure", name: "scene behavior audit" },
|
|
152
|
+
{ effect: "pure", name: "scene temporal-audit" },
|
|
153
|
+
],
|
|
154
|
+
description: "Editable spatial scenes, calibrated cameras, bounded geometry, rendered evidence, direction proposals, and closed effects contracts.",
|
|
155
|
+
moduleId: "slopcamera.capability.spatial-scenes",
|
|
156
|
+
operationKeys: spatialSceneOperations,
|
|
157
|
+
profiles: [
|
|
158
|
+
{
|
|
159
|
+
id: "three-webgl2-hardware-v1",
|
|
160
|
+
kind: "renderer",
|
|
161
|
+
qualification: { evidence: ["apps/desktop/qualification/spatial-scenes.ts"], level: "browser", status: "conditional" },
|
|
162
|
+
requirements: [{ description: "An explicitly selected supported Chromium browser with WebGL2.", id: "html-browser", optional: false }],
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
id: "three-spark-webgl2-hardware-v1",
|
|
166
|
+
kind: "renderer",
|
|
167
|
+
qualification: { evidence: ["apps/desktop/qualification/world-render.ts"], level: "browser", status: "conditional" },
|
|
168
|
+
requirements: [{ description: "Chromium WebGL2 and the exact Spark runtime closure.", id: "html-browser", optional: false }],
|
|
169
|
+
},
|
|
170
|
+
],
|
|
171
|
+
stability: "experimental",
|
|
172
|
+
title: "Spatial scenes",
|
|
173
|
+
toolNames: [
|
|
174
|
+
"audit_scene",
|
|
175
|
+
"audit_scene_behavior",
|
|
176
|
+
"audit_scene_temporal",
|
|
177
|
+
"check_scene",
|
|
178
|
+
"check_scene_behavior",
|
|
179
|
+
"check_scene_direction",
|
|
180
|
+
"check_scene_effects",
|
|
181
|
+
"diff_scenes",
|
|
182
|
+
"evaluate_scene",
|
|
183
|
+
"inspect_scene",
|
|
184
|
+
"plan_scene_direction",
|
|
185
|
+
"plan_scene_effects",
|
|
186
|
+
"plan_scene_gallery",
|
|
187
|
+
],
|
|
188
|
+
trust: "local-effects",
|
|
189
|
+
version: 1,
|
|
190
|
+
workflowKeys: ["cinematic-world@1"],
|
|
191
|
+
}),
|
|
192
|
+
defineSlopcameraCapabilityModule({
|
|
193
|
+
commands: [{ effect: "project-mutation", name: "scene project" }],
|
|
194
|
+
description: "Versioned spatial-project revisions, shots, candidates, selection, recovery, and prepared delivery.",
|
|
195
|
+
moduleId: "slopcamera.capability.spatial-projects",
|
|
196
|
+
operationKeys: spatialProjectOperations,
|
|
197
|
+
profiles: [{
|
|
198
|
+
id: "spatial-project-v2",
|
|
199
|
+
kind: "interchange",
|
|
200
|
+
qualification: { evidence: ["apps/desktop/qualification/project.ts"], level: "fixture", status: "qualified" },
|
|
201
|
+
requirements: [],
|
|
202
|
+
}],
|
|
203
|
+
stability: "experimental",
|
|
204
|
+
title: "Spatial projects",
|
|
205
|
+
toolNames: [],
|
|
206
|
+
trust: "local-effects",
|
|
207
|
+
version: 1,
|
|
208
|
+
workflowKeys: ["directed-scene@1"],
|
|
209
|
+
}),
|
|
210
|
+
defineSlopcameraCapabilityModule({
|
|
211
|
+
commands: [{ effect: "local-read", name: "analyze" }],
|
|
212
|
+
description: "Local bounded analysis for scenes, activity, music, faces, and camera following.",
|
|
213
|
+
moduleId: "slopcamera.capability.analysis",
|
|
214
|
+
operationKeys: analysisOperations,
|
|
215
|
+
profiles: [{
|
|
216
|
+
id: "local-analysis-v1",
|
|
217
|
+
kind: "authoring",
|
|
218
|
+
qualification: { evidence: ["apps/desktop/analysis", "apps/desktop/core"], level: "fixture", status: "conditional" },
|
|
219
|
+
requirements: [{ description: "Some analysis profiles need separately qualified native helpers.", id: "native-analysis-helper", optional: true }],
|
|
220
|
+
}],
|
|
221
|
+
stability: "stable",
|
|
222
|
+
title: "Local analysis",
|
|
223
|
+
toolNames: [],
|
|
224
|
+
trust: "local-effects",
|
|
225
|
+
version: 1,
|
|
226
|
+
workflowKeys: [],
|
|
227
|
+
}),
|
|
228
|
+
defineSlopcameraCapabilityModule({
|
|
229
|
+
commands: [
|
|
230
|
+
{ effect: "project-mutation", name: "project edit" },
|
|
231
|
+
{ effect: "local-derived-write", name: "project render" },
|
|
232
|
+
{ effect: "local-derived-write", name: "media color" },
|
|
233
|
+
{ effect: "local-derived-write", name: "media audio" },
|
|
234
|
+
],
|
|
235
|
+
description: "Immutable source media, non-destructive edits, overlays, color/audio treatment, and deterministic project rendering.",
|
|
236
|
+
moduleId: "slopcamera.capability.project-editing",
|
|
237
|
+
operationKeys: editingOperations,
|
|
238
|
+
profiles: [{
|
|
239
|
+
id: "ffmpeg-project-render-v1",
|
|
240
|
+
kind: "renderer",
|
|
241
|
+
qualification: { evidence: ["apps/desktop/qualification/project.ts"], level: "native", status: "conditional" },
|
|
242
|
+
requirements: [
|
|
243
|
+
{ description: "A supported FFmpeg executable.", id: "ffmpeg", optional: false },
|
|
244
|
+
{ description: "A supported FFprobe executable.", id: "ffprobe", optional: false },
|
|
245
|
+
],
|
|
246
|
+
}],
|
|
247
|
+
stability: "stable",
|
|
248
|
+
title: "Project editing and rendering",
|
|
249
|
+
toolNames: [],
|
|
250
|
+
trust: "local-effects",
|
|
251
|
+
version: 1,
|
|
252
|
+
workflowKeys: ["chaptered-demo@3", "polished-screen-demo@4", "social-variants@3", "talking-head-cleanup@2"],
|
|
253
|
+
}),
|
|
254
|
+
defineSlopcameraCapabilityModule({
|
|
255
|
+
commands: [
|
|
256
|
+
{ effect: "project-mutation", name: "workflows run" },
|
|
257
|
+
{ effect: "project-mutation", name: "runs resume" },
|
|
258
|
+
],
|
|
259
|
+
description: "Bounded creative candidates, render matrices, explicit selection, promotion, and materialized deliveries.",
|
|
260
|
+
moduleId: "slopcamera.capability.iteration",
|
|
261
|
+
operationKeys: iterationOperations,
|
|
262
|
+
profiles: [{
|
|
263
|
+
id: "durable-workflow-v1",
|
|
264
|
+
kind: "authoring",
|
|
265
|
+
qualification: { evidence: ["apps/desktop/code", "apps/desktop/workflows"], level: "fixture", status: "qualified" },
|
|
266
|
+
requirements: [],
|
|
267
|
+
}],
|
|
268
|
+
stability: "stable",
|
|
269
|
+
title: "Durable iteration",
|
|
270
|
+
toolNames: [],
|
|
271
|
+
trust: "local-effects",
|
|
272
|
+
version: 1,
|
|
273
|
+
workflowKeys: ["creative-iteration@1", "creative-selection@1"],
|
|
274
|
+
}),
|
|
275
|
+
defineSlopcameraCapabilityModule({
|
|
276
|
+
commands: [{ effect: "paid-cloud", name: "ai models" }, { effect: "paid-cloud", name: "ai image" }],
|
|
277
|
+
description: "Explicit Vercel AI Gateway image, video, speech, and transcription operations with opt-in uploads.",
|
|
278
|
+
moduleId: "slopcamera.capability.gateway",
|
|
279
|
+
operationKeys: gatewayOperations,
|
|
280
|
+
profiles: [{
|
|
281
|
+
id: "vercel-ai-gateway-v1",
|
|
282
|
+
kind: "provider",
|
|
283
|
+
qualification: { evidence: ["docs/vercel.md"], level: "provider", status: "conditional" },
|
|
284
|
+
requirements: [{ description: "Caller-owned Vercel AI Gateway credentials.", id: "vercel-ai-gateway-credential", optional: false }],
|
|
285
|
+
}],
|
|
286
|
+
stability: "stable",
|
|
287
|
+
title: "Gateway media",
|
|
288
|
+
toolNames: [],
|
|
289
|
+
trust: "paid-provider",
|
|
290
|
+
version: 1,
|
|
291
|
+
workflowKeys: [],
|
|
292
|
+
}),
|
|
293
|
+
defineSlopcameraCapabilityModule({
|
|
294
|
+
commands: [{ effect: "local-derived-write", name: "studio run" }],
|
|
295
|
+
description: "Retained Blender, CadQuery, and Manim source executed only under an invocation-scoped trusted-current-user envelope.",
|
|
296
|
+
moduleId: "slopcamera.capability.native-authoring",
|
|
297
|
+
operationKeys: ["slopcamera.studio.run@1"],
|
|
298
|
+
profiles: [
|
|
299
|
+
{
|
|
300
|
+
id: "blender-native-v1",
|
|
301
|
+
kind: "native-adapter",
|
|
302
|
+
qualification: { evidence: ["apps/desktop/studio"], level: "native", status: "conditional" },
|
|
303
|
+
requirements: [{ description: "Caller-selected Blender executable and explicit trusted-code authority.", id: "blender", optional: false }],
|
|
304
|
+
},
|
|
305
|
+
{
|
|
306
|
+
id: "cadquery-native-v1",
|
|
307
|
+
kind: "native-adapter",
|
|
308
|
+
qualification: { evidence: ["apps/desktop/studio"], level: "native", status: "conditional" },
|
|
309
|
+
requirements: [{ description: "Caller-selected pinned Python environment and explicit trusted-code authority.", id: "cadquery-python", optional: false }],
|
|
310
|
+
},
|
|
311
|
+
{
|
|
312
|
+
id: "manim-native-v1",
|
|
313
|
+
kind: "native-adapter",
|
|
314
|
+
qualification: { evidence: ["apps/desktop/studio"], level: "native", status: "conditional" },
|
|
315
|
+
requirements: [{ description: "Caller-selected pinned Python environment and explicit trusted-code authority.", id: "manim-python", optional: false }],
|
|
316
|
+
},
|
|
317
|
+
],
|
|
318
|
+
stability: "experimental",
|
|
319
|
+
title: "Native authoring",
|
|
320
|
+
toolNames: [],
|
|
321
|
+
trust: "native-adapter",
|
|
322
|
+
version: 1,
|
|
323
|
+
workflowKeys: [],
|
|
324
|
+
}),
|
|
325
|
+
]);
|
|
326
|
+
|
|
327
|
+
function operationProjection(operation: OperationDiscovery): SlopcameraCapabilityOperation {
|
|
328
|
+
return {
|
|
329
|
+
cache: operation.policy.cache,
|
|
330
|
+
cancellable: operation.policy.cancellable,
|
|
331
|
+
effect: operation.policy.effect,
|
|
332
|
+
inputSchemaId: operation.inputSchemaId,
|
|
333
|
+
key: `${operation.kind}@${operation.version}`,
|
|
334
|
+
kind: operation.kind,
|
|
335
|
+
lifecycle: operation.lifecycle,
|
|
336
|
+
maxDurationMs: operation.policy.maxDurationMs,
|
|
337
|
+
maxFanOut: operation.policy.maxFanOut,
|
|
338
|
+
maxInputBytes: operation.policy.maxInputBytes,
|
|
339
|
+
maxOutputBytes: operation.policy.maxOutputBytes,
|
|
340
|
+
outputSchemaId: operation.outputSchemaId,
|
|
341
|
+
preparation: [...operation.policy.preparation],
|
|
342
|
+
resources: operation.policy.resources.map(claim => ({ ...claim })),
|
|
343
|
+
resume: operation.policy.resume,
|
|
344
|
+
version: operation.version,
|
|
345
|
+
};
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
function workflowProjection(workflow: typeof BUILT_IN_WORKFLOWS[number]): SlopcameraCapabilityWorkflow {
|
|
349
|
+
return { id: workflow.id, inputSchemaId: workflow.inputSchemaId, key: `${workflow.id}@${workflow.version}`, version: workflow.version };
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
function toolProjection(tool: typeof slopcameraMcpTools[number]): SlopcameraCapabilityTool {
|
|
353
|
+
return {
|
|
354
|
+
destructive: tool.annotations.destructiveHint,
|
|
355
|
+
idempotent: tool.annotations.idempotentHint,
|
|
356
|
+
name: tool.name,
|
|
357
|
+
openWorld: tool.annotations.openWorldHint,
|
|
358
|
+
readOnly: tool.annotations.readOnlyHint,
|
|
359
|
+
};
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
export function createLocalSlopcameraCapabilityManifest(
|
|
363
|
+
registry: Pick<OperationRegistry, "list"> = createApplicationOperationRegistry(),
|
|
364
|
+
toolVersion: string = SLOPCAMERA_APPLICATION_TOOL_VERSION,
|
|
365
|
+
): SlopcameraCapabilityManifest {
|
|
366
|
+
return compileSlopcameraCapabilityManifest({
|
|
367
|
+
host: "local",
|
|
368
|
+
modules: capabilityModules,
|
|
369
|
+
operations: registry.list().map(operationProjection),
|
|
370
|
+
tools: slopcameraMcpTools.map(toolProjection),
|
|
371
|
+
toolVersion,
|
|
372
|
+
workflows: BUILT_IN_WORKFLOWS.map(workflowProjection),
|
|
373
|
+
});
|
|
374
|
+
}
|