stillmade-sdk 0.1.41 → 0.1.43
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/.stillmade/sdk-baseline.json +19 -21
- package/AGENTS.md +17 -12
- package/FRAME_VIEWS.md +113 -0
- package/INTERFACE_DESIGN.md +67 -22
- package/MOBILE_UI.md +4 -2
- package/MODULES.md +152 -6
- package/PASTE_TO_LLM.md +42 -32
- package/README.md +3 -2
- package/SDK.md +1028 -563
- package/UI_AESTHETIC.md +30 -3
- package/blocks/generate/package.js +1 -0
- package/blocks/generate/versions/1.0.0/package.js +463 -0
- package/docs/build/audio-to-editor.md +36 -0
- package/docs/build/block-builder-contract.md +150 -0
- package/docs/build/comfyui.md +227 -0
- package/docs/build/concepts.md +40 -0
- package/docs/build/context.md +159 -0
- package/docs/build/cookbook.md +57 -0
- package/docs/build/custom-interface.md +617 -0
- package/docs/build/data-types.md +83 -0
- package/docs/build/frame-views.md +259 -0
- package/docs/build/generate-media.md +59 -0
- package/docs/build/github-applications.md +314 -0
- package/docs/build/hosted-images.md +214 -0
- package/docs/build/hosted-music.md +39 -0
- package/docs/build/hosted-speech.md +157 -0
- package/docs/build/hosted-text.md +246 -0
- package/docs/build/image-description.md +49 -0
- package/docs/build/interface-design.md +343 -0
- package/docs/build/javascript.md +63 -0
- package/docs/build/local-preview.md +61 -0
- package/docs/build/media-analysis.md +27 -0
- package/docs/build/media.md +400 -0
- package/docs/build/mobile-ui.md +106 -0
- package/docs/build/modules.md +487 -0
- package/docs/build/original-blocks.md +70 -0
- package/docs/build/outside-apis.md +128 -0
- package/docs/build/production-context-templates.md +12 -0
- package/docs/build/project-storage.md +94 -0
- package/docs/build/quickstart.md +48 -0
- package/docs/build/recipes.md +103 -0
- package/docs/build/script-handoff.md +45 -0
- package/docs/build/script-writer.md +34 -0
- package/docs/build/state.md +223 -0
- package/docs/build/testing.md +112 -0
- package/docs/build/timeline-edits.md +116 -0
- package/docs/build/timeline-proposals.md +76 -0
- package/docs/build/transcription.md +59 -0
- package/docs/build/triggers.md +59 -0
- package/docs/build/tutorial.md +52 -0
- package/docs/build/typescript.md +34 -0
- package/docs/build/video-generation.md +61 -0
- package/docs/build/web-reading.md +37 -0
- package/docs/build/with-your-ai.md +27 -0
- package/docs/changelog.md +9 -0
- package/docs/creators.md +21 -0
- package/docs/distribute/discovery.md +43 -0
- package/docs/distribute/imports.md +58 -0
- package/docs/distribute/publishing.md +29 -0
- package/docs/distribute/sdk-versions.md +36 -0
- package/docs/distribute/selling.md +14 -0
- package/docs/distribute/teams.md +60 -0
- package/docs/distribute/versioning.md +28 -0
- package/docs/examples.md +23 -0
- package/docs/gallery.md +26 -0
- package/docs/index.md +50 -0
- package/docs/native-mcp.md +307 -0
- package/docs/project-types/automation.md +43 -0
- package/docs/project-types/batches.md +50 -0
- package/docs/project-types/build.md +42 -0
- package/docs/project-types/completion.md +15 -0
- package/docs/project-types/conditions.md +21 -0
- package/docs/project-types/hosted-review.md +115 -0
- package/docs/project-types/onboarding.md +75 -0
- package/docs/project-types/running.md +309 -0
- package/docs/project-types/testing.md +72 -0
- package/docs/reference/application-artifacts.md +87 -0
- package/docs/reference/authoring-guide.md +134 -0
- package/docs/reference/browser-applications.md +267 -0
- package/docs/reference/capabilities.md +45 -0
- package/docs/reference/cli.md +71 -0
- package/docs/reference/connection-api.md +59 -0
- package/docs/reference/cooperative-jobs.md +13 -0
- package/docs/reference/desktop-capabilities.md +172 -0
- package/docs/reference/desktop-execution.md +77 -0
- package/docs/reference/errors.md +233 -0
- package/docs/reference/execution.md +800 -0
- package/docs/reference/first-party-blocks.md +40 -0
- package/docs/reference/generation-models.md +59 -0
- package/docs/reference/limits.md +306 -0
- package/docs/reference/manifest-kinds-controls.md +36 -0
- package/docs/reference/manifest.md +181 -0
- package/docs/reference/operations.md +36 -0
- package/docs/reference/package-jobs.md +35 -0
- package/docs/reference/parity.md +55 -0
- package/docs/reference/permissions.md +86 -0
- package/docs/reference/ports.md +26 -0
- package/docs/reference/types.md +268 -0
- package/docs/reference/universal-resolver.md +303 -0
- package/docs/reference/view-bridge.md +60 -0
- package/docs/reference/view-rules.md +15 -0
- package/docs/reference/workspace-sync.md +25 -0
- package/docs/sdk.md +34 -0
- package/docs/tools/block-remix.md +211 -0
- package/docs/tools/llm.md +2213 -0
- package/docs/tools/repository-adaptation.md +613 -0
- package/examples/check-clip.stillmade.json +8 -1
- package/examples/clean-text.stillmade.json +4 -0
- package/examples/custom-interface.stillmade.json +4 -0
- package/examples/describe-image.stillmade.json +4 -0
- package/examples/foley-cue.stillmade.json +4 -0
- package/examples/generate-image.stillmade.json +4 -0
- package/examples/generate-video.stillmade.json +10 -2
- package/examples/module-word-stats/stillmade.block.json +4 -0
- package/examples/narrate-script.stillmade.json +4 -0
- package/examples/numbered-takes.stillmade.json +4 -0
- package/examples/research-topic.stillmade.json +9 -1
- package/examples/score-a-scene.stillmade.json +4 -0
- package/examples/script-draft.stillmade.json +4 -0
- package/examples/summarize-page.stillmade.json +4 -0
- package/examples/text-workflow.stillmade.json +7 -32
- package/examples/thicken-lines.stillmade.json +4 -0
- package/examples/timeline-polish.stillmade.json +15 -3
- package/examples/transcribe-audio.stillmade.json +15 -3
- package/examples/word-count.stillmade.json +4 -0
- package/package.json +1 -1
- package/packages/block-cli/cli.js +13 -6
- package/packages/block-cli/dev-host/assets/host.js +81 -38
- package/packages/block-cli/dev-host/assets/index.css +1 -1
- package/packages/block-cli/format.js +1 -1
- package/packages/block-cli/ready-gate.js +4 -0
- package/packages/block-cli/templates.js +37 -19
- package/packages/block-cli/type-packages.js +119 -0
- package/packages/block-platform/block-readiness.js +8 -1
- package/packages/block-platform/canvas.js +2 -1
- package/packages/block-platform/catalog.js +27 -48
- package/packages/block-platform/native-host-inventory.js +0 -226
- package/packages/block-platform/plain-descriptions.js +1 -25
- package/packages/block-platform/project-type-starters.js +13 -53
- package/packages/block-platform/script-handoff.js +2 -4
- package/packages/block-platform/type-workspace.js +2 -0
- package/packages/block-sdk/appearance.js +3 -1
- package/packages/block-sdk/audio-generation-example.js +2 -2
- package/packages/block-sdk/block-tier.js +1 -1
- package/packages/block-sdk/builder-contract.js +13 -11
- package/packages/block-sdk/capabilities.js +1 -1
- package/packages/block-sdk/capability-example.js +1 -1
- package/packages/block-sdk/contracts.js +6 -2
- package/packages/block-sdk/examples.js +3 -3
- package/packages/block-sdk/first-party-identities.js +1 -84
- package/packages/block-sdk/first-party-packages.js +3 -85
- package/packages/block-sdk/generation-catalog.js +15 -3
- package/packages/block-sdk/image-description-example.js +1 -1
- package/packages/block-sdk/image-generation-example.js +1 -1
- package/packages/block-sdk/index.d.ts +2 -1
- package/packages/block-sdk/media-analysis-example.js +2 -2
- package/packages/block-sdk/mock-host.js +7 -1
- package/packages/block-sdk/module-example.js +1 -1
- package/packages/block-sdk/module-host-calls.js +35 -10
- package/packages/block-sdk/module-hosted.js +15 -2
- package/packages/block-sdk/module-media-access.js +71 -0
- package/packages/block-sdk/module-node.js +1 -1
- package/packages/block-sdk/portable-media-actions.js +1 -1
- package/packages/block-sdk/runtime.js +1 -1
- package/packages/block-sdk/speech-example.js +1 -1
- package/packages/block-sdk/state-example.js +1 -1
- package/packages/block-sdk/timeline-proposal-example.js +1 -1
- package/packages/block-sdk/transcription-example.js +1 -1
- package/packages/block-sdk/trigger-examples.js +2 -2
- package/packages/block-sdk/video-generation-example.js +1 -1
- package/packages/block-sdk/view-bridge.js +4 -1
- package/packages/block-sdk/view-design.js +44 -15
- package/packages/block-sdk/web-example.js +2 -2
- package/packages/design-system/block-kit.css +53 -12
- package/packages/design-system/block-kit.html +3 -2
- package/blocks/mcp-motion-planner/versions/1.1.0/package.js +0 -97
- package/blocks/motion-designer/versions/1.0.1/package.js +0 -173318
- package/blocks/motion-designer/versions/1.0.2/package.js +0 -173318
- package/blocks/motion-frame-review/versions/1.1.1/package.js +0 -465
- package/blocks/motion-frame-review/versions/1.1.2/package.snapshot.js +0 -572
- package/blocks/narration/package.js +0 -1
- package/blocks/narration/versions/1.0.0/package.js +0 -221
- package/blocks/narration/versions/1.0.1/package.js +0 -221
- package/blocks/native/sm.animated-scene/versions/2.0.0/package.js +0 -475
- package/blocks/native/sm.animated-scene/versions/2.1.0/package.js +0 -498
- package/blocks/native/sm.animated-scene/versions/2.2.0/package.js +0 -524
- package/blocks/native/sm.animated-scene/versions/2.3.0/package.js +0 -618
- package/blocks/native/sm.animated-scene/versions/2.3.1/package.js +0 -618
- package/blocks/native/sm.animated-scene/versions/2.3.2/package.js +0 -723
- package/blocks/native/sm.animated-scene/versions/2.3.3/package.js +0 -723
- package/blocks/native/sm.animated-scene/versions/2.3.4/package.js +0 -676
- package/blocks/native/sm.animated-scene/versions/2.3.5/package.js +0 -693
- package/blocks/native/sm.animated-scene/versions/2.3.6/package.js +0 -700
- package/blocks/native/sm.animated-scene/versions/2.3.7/package.js +0 -747
- package/blocks/native/sm.animated-scene/versions/2.3.8/package.js +0 -769
- package/blocks/native/sm.animated-scene/versions/2.3.9/package.js +0 -769
- package/blocks/native/sm.animated-scene-assistant/versions/1.0.0/package.js +0 -183
- package/blocks/native/sm.blueprint/versions/2.0.0/package.js +0 -358
- package/blocks/native/sm.blueprint/versions/2.1.0/package.js +0 -358
- package/blocks/native/sm.blueprint/versions/2.1.1/package.js +0 -358
- package/blocks/native/sm.blueprint/versions/2.1.2/package.js +0 -358
- package/blocks/native/sm.blueprint/versions/2.1.3/package.js +0 -381
- package/blocks/native/sm.blueprint/versions/2.1.4/package.js +0 -381
- package/blocks/native/sm.blueprint/versions/2.1.5/package.js +0 -339
- package/blocks/native/sm.blueprint/versions/2.1.6/package.js +0 -356
- package/blocks/native/sm.blueprint/versions/2.1.7/package.js +0 -363
- package/blocks/native/sm.blueprint/versions/2.1.8/package.js +0 -410
- package/blocks/native/sm.blueprint/versions/2.1.9/package.js +0 -422
- package/blocks/native/sm.blueprint-assistant/versions/1.0.0/package.js +0 -172
- package/blocks/native/sm.chat/versions/2.0.0/package.js +0 -144
- package/blocks/native/sm.chat/versions/2.0.1/package.js +0 -97
- package/blocks/native/sm.chat/versions/2.0.2/package.js +0 -100
- package/blocks/native/sm.chat/versions/2.0.3/package.js +0 -100
- package/blocks/native/sm.continue-if/versions/1.0.0/package.js +0 -168
- package/blocks/native/sm.describe-media/versions/2.0.0/package.js +0 -153
- package/blocks/native/sm.describe-media/versions/2.0.1/package.js +0 -156
- package/blocks/native/sm.describe-media/versions/2.1.0/package.js +0 -140
- package/blocks/native/sm.image-editor/versions/2.0.0/package.js +0 -183
- package/blocks/native/sm.image-editor/versions/2.0.1/package.js +0 -190
- package/blocks/native/sm.new-items/versions/1.0.0/package.js +0 -191
- package/blocks/native/sm.pick-photos/versions/1.0.0/package.js +0 -334
- package/blocks/native/sm.quality-audit/versions/1.0.0/package.js +0 -192
- package/blocks/native/sm.quality-audit/versions/1.0.1/package.js +0 -192
- package/blocks/native/sm.quality-audit/versions/1.0.2/package.js +0 -195
- package/blocks/native/sm.research/versions/2.0.0/package.js +0 -175
- package/blocks/native/sm.research/versions/2.0.1/package.js +0 -184
- package/blocks/native/sm.research/versions/2.0.2/package.js +0 -187
- package/blocks/native/sm.script/versions/2.0.0/package.js +0 -144
- package/blocks/native/sm.script/versions/2.1.0/package.js +0 -144
- package/blocks/native/sm.script/versions/2.1.1/package.js +0 -144
- package/blocks/native/sm.script/versions/2.1.2/package.js +0 -105
- package/blocks/native/sm.script/versions/2.1.3/package.js +0 -152
- package/blocks/native/sm.script/versions/2.1.4/package.js +0 -156
- package/blocks/native/sm.script/versions/2.1.5/package.js +0 -156
- package/blocks/native/sm.shot-plan/versions/2.0.0/package.js +0 -301
- package/blocks/native/sm.shot-plan/versions/2.1.0/package.js +0 -528
- package/blocks/native/sm.shot-plan/versions/2.1.1/package.js +0 -528
- package/blocks/native/sm.shot-plan/versions/2.1.2/package.js +0 -528
- package/blocks/native/sm.shot-plan/versions/2.1.3/package.js +0 -536
- package/blocks/native/sm.shot-plan/versions/2.2.0/package.js +0 -800
- package/blocks/native/sm.shot-plan/versions/2.2.1/package.js +0 -920
- package/blocks/native/sm.shot-plan-assistant/versions/1.0.0/package.js +0 -173
- package/blocks/native/sm.stock-search/versions/2.0.0/package.js +0 -174
- package/blocks/native/sm.thumbnail/versions/2.0.0/package.js +0 -137
- package/blocks/native/sm.thumbnail/versions/2.0.1/package.js +0 -140
- package/blocks/native/sm.transcribe/versions/2.0.0/package.js +0 -163
- package/blocks/native/sm.transcribe/versions/2.0.1/package.js +0 -168
- package/blocks/native/sm.whiteboard-assistant/versions/1.0.0/package.js +0 -175
- package/blocks/native/sm.youtube/versions/2.0.0/package.js +0 -217
- package/blocks/occasion-story/package.js +0 -1
- package/blocks/occasion-story/versions/1.0.0/package.js +0 -1658
- package/blocks/occasion-story/versions/1.0.1/package.js +0 -1699
- package/blocks/occasion-story/versions/1.0.2/package.js +0 -1682
- package/blocks/photo-reel-composer/versions/1.0.0/package.js +0 -3043
- package/blocks/photo-reel-composer/versions/1.0.1/package.js +0 -3026
- package/blocks/photo-reel-composer/versions/1.0.2/package.js +0 -4149
- package/blocks/product-ad-variants/versions/1.0.0/package.js +0 -2911
- package/blocks/product-launch-director/versions/1.0.0/package.js +0 -103
- package/blocks/release-visuals/package.js +0 -1
- package/blocks/release-visuals/versions/1.0.0/package.js +0 -1492
- package/blocks/release-visuals/versions/1.0.1/package.js +0 -1517
- package/blocks/release-visuals/versions/1.0.2/package.js +0 -1500
- package/blocks/screen-recorder/package.js +0 -1
- package/blocks/screen-recorder/versions/1.0.0/package.js +0 -223
- package/blocks/screen-recorder/versions/1.0.1/package.js +0 -223
- package/blocks/short-form-finish/package.js +0 -1
- package/blocks/short-form-finish/versions/1.0.0/package.js +0 -1043
- package/blocks/short-form-finish/versions/1.0.1/package.js +0 -1043
- package/blocks/short-form-finish/versions/1.0.2/package.js +0 -1043
- package/blocks/short-form-finish/versions/1.0.3/package.js +0 -1026
- package/examples/saas-product-launch-reviewed-source.stillmade.json +0 -383
- package/examples/saas-product-launch.stillmade.json +0 -304
- package/packages/block-platform/dealer-inventory-video-project-type.js +0 -38
- package/packages/block-platform/first-revenue-project-types.js +0 -46
- package/packages/block-platform/fixture-starters.js +0 -13
- package/packages/block-platform/launch-project-source.js +0 -10
- package/packages/block-platform/launch-project.js +0 -30
- package/packages/block-platform/motion-project-types.js +0 -55
- package/packages/block-platform/motion-starters.js +0 -14
- package/packages/block-platform/product-ad-variants-project-type.js +0 -30
- package/packages/block-platform/product-launch-updated.js +0 -90
- package/packages/block-platform/revenue-review-project-types.js +0 -36
- package/packages/block-platform/revenue-review-starters.js +0 -13
- package/packages/block-platform/script-writer.js +0 -29
- package/packages/block-platform/website-source-block.js +0 -14
|
@@ -1,49 +1,5 @@
|
|
|
1
1
|
// Generated from blocks/native/*/navigation.js. Run scripts/generate-native-host-inventory.mjs.
|
|
2
2
|
export const NATIVE_HOST_INVENTORY=[
|
|
3
|
-
{
|
|
4
|
-
"schemaVersion": 1,
|
|
5
|
-
"application": true,
|
|
6
|
-
"id": "sm.animated-scene",
|
|
7
|
-
"versions": [
|
|
8
|
-
"1.0.0",
|
|
9
|
-
"1.1.0"
|
|
10
|
-
],
|
|
11
|
-
"phase": "assetGen",
|
|
12
|
-
"kind": "animation",
|
|
13
|
-
"requirements": [
|
|
14
|
-
"animation"
|
|
15
|
-
],
|
|
16
|
-
"narration": {
|
|
17
|
-
"preparation": "shots",
|
|
18
|
-
"requireWords": true,
|
|
19
|
-
"label": "Assets",
|
|
20
|
-
"fallbackIntents": [
|
|
21
|
-
"shot-plan"
|
|
22
|
-
]
|
|
23
|
-
},
|
|
24
|
-
"legacyRoutes": [
|
|
25
|
-
{
|
|
26
|
-
"phase": "assetGen",
|
|
27
|
-
"priority": 0
|
|
28
|
-
}
|
|
29
|
-
],
|
|
30
|
-
"legacyEngineModes": [
|
|
31
|
-
"animated"
|
|
32
|
-
],
|
|
33
|
-
"host": {}
|
|
34
|
-
},
|
|
35
|
-
{
|
|
36
|
-
"schemaVersion": 1,
|
|
37
|
-
"application": true,
|
|
38
|
-
"id": "sm.blueprint",
|
|
39
|
-
"versions": [
|
|
40
|
-
"1.0.0",
|
|
41
|
-
"1.1.0"
|
|
42
|
-
],
|
|
43
|
-
"phase": "bible",
|
|
44
|
-
"kind": "bible",
|
|
45
|
-
"host": {}
|
|
46
|
-
},
|
|
47
3
|
{
|
|
48
4
|
"schemaVersion": 1,
|
|
49
5
|
"application": true,
|
|
@@ -102,23 +58,6 @@ export const NATIVE_HOST_INVENTORY=[
|
|
|
102
58
|
"canvasNode": "characterReferenceNode"
|
|
103
59
|
}
|
|
104
60
|
},
|
|
105
|
-
{
|
|
106
|
-
"schemaVersion": 1,
|
|
107
|
-
"application": true,
|
|
108
|
-
"id": "sm.chat",
|
|
109
|
-
"versions": [
|
|
110
|
-
"1.0.0"
|
|
111
|
-
],
|
|
112
|
-
"phase": "canvas",
|
|
113
|
-
"kind": "canvas",
|
|
114
|
-
"host": {
|
|
115
|
-
"canvasNode": "productionWorkspaceNode",
|
|
116
|
-
"ports": {
|
|
117
|
-
"input": "in:input",
|
|
118
|
-
"output": "out:output"
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
},
|
|
122
61
|
{
|
|
123
62
|
"schemaVersion": 1,
|
|
124
63
|
"application": true,
|
|
@@ -134,24 +73,6 @@ export const NATIVE_HOST_INVENTORY=[
|
|
|
134
73
|
"canvasNode": "compareNode"
|
|
135
74
|
}
|
|
136
75
|
},
|
|
137
|
-
{
|
|
138
|
-
"schemaVersion": 1,
|
|
139
|
-
"application": true,
|
|
140
|
-
"id": "sm.describe-media",
|
|
141
|
-
"versions": [
|
|
142
|
-
"1.0.0",
|
|
143
|
-
"1.1.0"
|
|
144
|
-
],
|
|
145
|
-
"phase": "canvas",
|
|
146
|
-
"kind": "canvas",
|
|
147
|
-
"host": {
|
|
148
|
-
"canvasNode": "imageDescriberNode",
|
|
149
|
-
"ports": {
|
|
150
|
-
"input": "in",
|
|
151
|
-
"output": "out"
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
},
|
|
155
76
|
{
|
|
156
77
|
"schemaVersion": 1,
|
|
157
78
|
"application": true,
|
|
@@ -290,23 +211,6 @@ export const NATIVE_HOST_INVENTORY=[
|
|
|
290
211
|
"inspectClip": true
|
|
291
212
|
}
|
|
292
213
|
},
|
|
293
|
-
{
|
|
294
|
-
"schemaVersion": 1,
|
|
295
|
-
"application": true,
|
|
296
|
-
"id": "sm.image-editor",
|
|
297
|
-
"versions": [
|
|
298
|
-
"1.0.0"
|
|
299
|
-
],
|
|
300
|
-
"phase": "canvas",
|
|
301
|
-
"kind": "canvas",
|
|
302
|
-
"host": {
|
|
303
|
-
"canvasNode": "productionWorkspaceNode",
|
|
304
|
-
"ports": {
|
|
305
|
-
"input": "in:input",
|
|
306
|
-
"output": "out:output"
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
},
|
|
310
214
|
{
|
|
311
215
|
"schemaVersion": 1,
|
|
312
216
|
"application": true,
|
|
@@ -424,23 +328,6 @@ export const NATIVE_HOST_INVENTORY=[
|
|
|
424
328
|
],
|
|
425
329
|
"host": {}
|
|
426
330
|
},
|
|
427
|
-
{
|
|
428
|
-
"schemaVersion": 1,
|
|
429
|
-
"application": true,
|
|
430
|
-
"id": "sm.research",
|
|
431
|
-
"versions": [
|
|
432
|
-
"1.0.0"
|
|
433
|
-
],
|
|
434
|
-
"phase": "canvas",
|
|
435
|
-
"kind": "canvas",
|
|
436
|
-
"host": {
|
|
437
|
-
"canvasNode": "productionWorkspaceNode",
|
|
438
|
-
"ports": {
|
|
439
|
-
"input": "in:input",
|
|
440
|
-
"output": "out:output"
|
|
441
|
-
}
|
|
442
|
-
}
|
|
443
|
-
},
|
|
444
331
|
{
|
|
445
332
|
"schemaVersion": 1,
|
|
446
333
|
"application": true,
|
|
@@ -467,80 +354,6 @@ export const NATIVE_HOST_INVENTORY=[
|
|
|
467
354
|
"editorTab": "audio"
|
|
468
355
|
}
|
|
469
356
|
},
|
|
470
|
-
{
|
|
471
|
-
"schemaVersion": 1,
|
|
472
|
-
"application": true,
|
|
473
|
-
"id": "sm.script",
|
|
474
|
-
"versions": [
|
|
475
|
-
"1.0.0",
|
|
476
|
-
"1.1.0",
|
|
477
|
-
"1.2.0"
|
|
478
|
-
],
|
|
479
|
-
"phase": "script",
|
|
480
|
-
"kind": "script",
|
|
481
|
-
"host": {}
|
|
482
|
-
},
|
|
483
|
-
{
|
|
484
|
-
"schemaVersion": 1,
|
|
485
|
-
"application": true,
|
|
486
|
-
"id": "sm.shot-plan",
|
|
487
|
-
"versions": [
|
|
488
|
-
"1.0.0",
|
|
489
|
-
"1.1.0"
|
|
490
|
-
],
|
|
491
|
-
"phase": "shotMap",
|
|
492
|
-
"kind": "shot-plan",
|
|
493
|
-
"requirements": [
|
|
494
|
-
"shots"
|
|
495
|
-
],
|
|
496
|
-
"narration": {
|
|
497
|
-
"preparation": "shots",
|
|
498
|
-
"requireWordsWhenNext": [
|
|
499
|
-
"animation"
|
|
500
|
-
],
|
|
501
|
-
"requireWordsModes": [
|
|
502
|
-
"animated",
|
|
503
|
-
"animated-v2"
|
|
504
|
-
],
|
|
505
|
-
"label": "Shot Map",
|
|
506
|
-
"intents": [
|
|
507
|
-
"shot-plan"
|
|
508
|
-
]
|
|
509
|
-
},
|
|
510
|
-
"legacyRoutes": [
|
|
511
|
-
{
|
|
512
|
-
"phase": "shotMap",
|
|
513
|
-
"priority": 0
|
|
514
|
-
}
|
|
515
|
-
],
|
|
516
|
-
"legacyNarration": [
|
|
517
|
-
{
|
|
518
|
-
"priority": 0
|
|
519
|
-
},
|
|
520
|
-
{
|
|
521
|
-
"intent": "shot-plan",
|
|
522
|
-
"priority": 20
|
|
523
|
-
}
|
|
524
|
-
],
|
|
525
|
-
"host": {}
|
|
526
|
-
},
|
|
527
|
-
{
|
|
528
|
-
"schemaVersion": 1,
|
|
529
|
-
"application": true,
|
|
530
|
-
"id": "sm.stock-search",
|
|
531
|
-
"versions": [
|
|
532
|
-
"1.0.0"
|
|
533
|
-
],
|
|
534
|
-
"phase": "canvas",
|
|
535
|
-
"kind": "canvas",
|
|
536
|
-
"host": {
|
|
537
|
-
"canvasNode": "productionWorkspaceNode",
|
|
538
|
-
"ports": {
|
|
539
|
-
"input": "in:input",
|
|
540
|
-
"output": "out:output"
|
|
541
|
-
}
|
|
542
|
-
}
|
|
543
|
-
},
|
|
544
357
|
{
|
|
545
358
|
"schemaVersion": 1,
|
|
546
359
|
"application": true,
|
|
@@ -554,34 +367,6 @@ export const NATIVE_HOST_INVENTORY=[
|
|
|
554
367
|
"canvasNode": "styleNode"
|
|
555
368
|
}
|
|
556
369
|
},
|
|
557
|
-
{
|
|
558
|
-
"schemaVersion": 1,
|
|
559
|
-
"application": true,
|
|
560
|
-
"id": "sm.thumbnail",
|
|
561
|
-
"versions": [
|
|
562
|
-
"1.0.0",
|
|
563
|
-
"1.1.0",
|
|
564
|
-
"1.2.0"
|
|
565
|
-
],
|
|
566
|
-
"phase": "canvas",
|
|
567
|
-
"kind": "canvas",
|
|
568
|
-
"host": {
|
|
569
|
-
"canvasNode": "thumbnailNode",
|
|
570
|
-
"ports": {
|
|
571
|
-
"output": "out"
|
|
572
|
-
}
|
|
573
|
-
}
|
|
574
|
-
},
|
|
575
|
-
{
|
|
576
|
-
"schemaVersion": 1,
|
|
577
|
-
"id": "sm.transcribe",
|
|
578
|
-
"versions": [
|
|
579
|
-
"1.0.0"
|
|
580
|
-
],
|
|
581
|
-
"phase": "voiceover",
|
|
582
|
-
"kind": "voiceover",
|
|
583
|
-
"host": {}
|
|
584
|
-
},
|
|
585
370
|
{
|
|
586
371
|
"schemaVersion": 1,
|
|
587
372
|
"application": true,
|
|
@@ -639,16 +424,5 @@ export const NATIVE_HOST_INVENTORY=[
|
|
|
639
424
|
}
|
|
640
425
|
}
|
|
641
426
|
}
|
|
642
|
-
},
|
|
643
|
-
{
|
|
644
|
-
"schemaVersion": 1,
|
|
645
|
-
"id": "sm.youtube",
|
|
646
|
-
"versions": [
|
|
647
|
-
"1.0.0",
|
|
648
|
-
"1.1.0"
|
|
649
|
-
],
|
|
650
|
-
"phase": "youtube",
|
|
651
|
-
"kind": "youtube",
|
|
652
|
-
"host": {}
|
|
653
427
|
}
|
|
654
428
|
];
|
|
@@ -3,56 +3,32 @@
|
|
|
3
3
|
// immutable, so the plain wording for first-party Blocks lives here, by Block id.
|
|
4
4
|
// A Block whose own description is already plain needs no entry.
|
|
5
5
|
export const PLAIN_BLOCK_DESCRIPTIONS=Object.freeze({
|
|
6
|
-
'stillmade.
|
|
7
|
-
'stillmade.screen-recorder':'Record your screen or a window, keep it on your device, cut out the parts you do not want, and pass it on.',
|
|
8
|
-
'sm.script':'Write and edit a script with AI. Set a length, add notes, and go back to earlier versions.',
|
|
9
|
-
'sm.shot-plan':'Turn a script into a list of timed shots, then edit what each shot shows and how long it lasts.',
|
|
10
|
-
'sm.blueprint':'Plan your video’s scenes, characters and look in one place, and lock the parts you want to keep.',
|
|
6
|
+
'stillmade.generate':'Generate images and videos with any model StillMade runs: pictures from a prompt or your own photos, clips from a start and end frame.',
|
|
11
7
|
'sm.pipeline':'Lay out your project on a canvas and connect its pieces, keeping your Steps and content.',
|
|
12
8
|
'sm.video-assets':'Choose which images and clips go into your video, in order, from everything the project has made or imported.',
|
|
13
9
|
'sm.editor':'The full video editor: text and titles, captions, transitions, music, effects and export are built in.',
|
|
14
10
|
'sm.panel-strip':'Turn a script into pictures timed to the voice, then edit scenes, images and transitions.',
|
|
15
11
|
'sm.board-editor':'Make text and pictures move on a whiteboard in time with a voice, then send it to the Editor.',
|
|
16
|
-
'sm.animated-scene':'Build animated scenes from your images and characters, preview them, then send them to the Editor.',
|
|
17
|
-
'stillmade.product-ad-variants':'Make three short product ads with different opening hooks from your own footage. Nothing is invented.',
|
|
18
|
-
'sm.youtube':'Upload a finished video to your connected YouTube channel.',
|
|
19
|
-
'sm.stock-search':'Search free-to-use stock photos and videos and pick one.',
|
|
20
12
|
'sm.export-video':'Opens the video editor at its Export: change anything on the timeline, then make the video file.',
|
|
21
13
|
'sm.export-audio':'Turn your timeline into an audio file you can download and keep in the project.',
|
|
22
14
|
'sm.motion-graphics':'Add animated titles, text, charts and transitions to your timeline. You see the change before it applies.',
|
|
23
15
|
'sm.score':'Put music, sound effects and voiceover from your project on the timeline. You see the change before it applies.',
|
|
24
|
-
'stillmade.short-form-finish':'Turn your clips and subtitles into a captioned short video you can still edit.',
|
|
25
|
-
'stillmade.occasion-story':'Arrange photos and video messages into a birthday, anniversary or farewell video you can still edit.',
|
|
26
|
-
'stillmade.release-visuals':'Make a social teaser or lyric clip for a song from its cover art and recording.',
|
|
27
|
-
'stillmade.photo-reel-composer':'Arrange property or product photos and your text into a 20–30 second reel. No AI images.',
|
|
28
16
|
'sm.generate-image':'Make a new photo or picture with AI from a description, square unless you ask otherwise. Add your own photos to keep a product, person or place in it.',
|
|
29
17
|
'sm.import-media':'Upload or choose your own photos, images, video and audio, and put them in order for the next Step.',
|
|
30
|
-
'sm.chat':'Work out a script by chatting with AI.',
|
|
31
18
|
'sm.rough-cut':'Put your chosen clips together into a first cut you can review.',
|
|
32
19
|
'sm.final-edit':'Have AI suggest a final polish for a finished timeline. You review the changes before they apply.',
|
|
33
20
|
'sm.edit-assistant':'Ask for a timeline change in your own words, such as trimming a section. You review it before it applies.',
|
|
34
21
|
'sm.grade':'Change the colors of chosen clips with ready-made looks or simple sliders. Your originals stay as they are.',
|
|
35
22
|
'sm.transition':'Pick transitions between clips, with their timing and sounds, then apply them in the Editor.',
|
|
36
|
-
'sm.quality-audit':'Check your images and clips for quality problems before you export.',
|
|
37
23
|
'sm.compare':'Compare two images with a slider and keep the one you prefer.',
|
|
38
|
-
'sm.pick-photos':'Keep only the best photos from an upload: sharp, well lit, clear faces, no near-duplicates, and true to your note.',
|
|
39
24
|
'sm.photo-notes':'Rate up to four photos for sharpness, light, people and faces.',
|
|
40
25
|
'sm.export-timeline':'Download your timeline to open in another editor, with or without its media.',
|
|
41
26
|
'sm.captions':'Turn a transcript or text into captions with word highlighting, then add them to the timeline.',
|
|
42
|
-
'sm.thumbnail':'Make a square thumbnail image from a short description.',
|
|
43
27
|
'sm.write-summary':'Turn data or notes, such as an app’s results, into a short summary in plain words.',
|
|
44
28
|
'sm.generate-video':'Make a short video clip from a description.',
|
|
45
29
|
'sm.character':'Describe a character once so your images and videos keep them the same.',
|
|
46
30
|
'sm.location':'Describe a place once so your images and videos keep it the same.',
|
|
47
31
|
'sm.style':'Set a look, with colors, lighting and camera style, for your images to follow.',
|
|
48
|
-
'sm.research':'Collect your notes and a source link into research you can reuse. It does not browse the web.',
|
|
49
|
-
'sm.image-editor':'Adjust an image’s brightness and contrast.',
|
|
50
|
-
'sm.describe-media':'Have AI describe what is in an image.',
|
|
51
|
-
'sm.transcribe':'Turn speech in an audio file into text, with a time for each word.',
|
|
52
|
-
'sm.shot-plan-assistant':'Have AI suggest a shot list from your script, keeping the shots you already have.',
|
|
53
|
-
'sm.animated-scene-assistant':'Have AI suggest how an animated scene is laid out and how it moves.',
|
|
54
|
-
'sm.blueprint-assistant':'Have AI suggest edits to your video plan.',
|
|
55
|
-
'sm.whiteboard-assistant':'Have AI build whiteboard boards, timing and motion from what you ask for.',
|
|
56
32
|
});
|
|
57
33
|
|
|
58
34
|
// Words that describe how StillMade works inside rather than what a person gets.
|
|
@@ -1,58 +1,20 @@
|
|
|
1
|
-
import {REVENUE_REVIEW_STARTERS} from './revenue-review-starters.js';
|
|
2
1
|
import {CURRENT_BUILTIN_TYPES,WORKSPACE_BLOCKS} from './catalog.js';
|
|
3
2
|
|
|
4
|
-
//
|
|
5
|
-
// Motion Designer packages
|
|
6
|
-
//
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
export const MOTION_STARTER_IDS=Object.freeze(['motion-graphics','saas-launch','screenshot-motion','product-photo-ad']);
|
|
10
|
-
// The fixture Types (fixture-starters.js: the revenue-review Types, Product Ad Variants, the photo reels) embed exact
|
|
11
|
-
// Block releases too; they resolve the same way, by id, for the acceptance drivers.
|
|
12
|
-
export const FIXTURE_STARTER_IDS=Object.freeze([...REVENUE_REVIEW_STARTERS.map(item=>item.id),'product-ad-variants','property-listing-reel','product-promo-reel']);
|
|
13
|
-
export const ON_DEMAND_STARTER_IDS=Object.freeze([...MOTION_STARTER_IDS,...FIXTURE_STARTER_IDS]);
|
|
3
|
+
// November 4, 2026 (owner): the Motion starters (Motion Graphics, Product Launch Video, Screenshot to Motion, Product
|
|
4
|
+
// Photo Ad) and their Motion Designer packages were deleted. No starter loads Blocks on demand any more; the names
|
|
5
|
+
// stay so a later on-demand starter plugs in the same way.
|
|
6
|
+
export const MOTION_STARTER_IDS=Object.freeze([]);
|
|
7
|
+
export const ON_DEMAND_STARTER_IDS=Object.freeze([...MOTION_STARTER_IDS]);
|
|
14
8
|
|
|
15
9
|
// These are editable starting configurations of the existing production Blocks,
|
|
16
10
|
// not separate generators or new marketplace identities.
|
|
17
|
-
//
|
|
18
|
-
//
|
|
19
|
-
// resolves them by id for those drivers and for the creator experiments.
|
|
11
|
+
// November 4, 2026 (owner): the Guided-style video starters, the revenue-review, ad-variant and photo-reel
|
|
12
|
+
// fixtures and the Blocks they used (Script Writer, Shots, Blueprint and the rest) were deleted.
|
|
20
13
|
export const PROJECT_TYPE_STARTERS=Object.freeze([
|
|
21
|
-
{id:'faceless-youtube',name:'Faceless YouTube',description:'Write a narrated story, plan the visuals, and assemble a complete video.',blocks:['script','voiceover','shot-plan','blueprint','pipeline','editor'],brief:'Create a faceless YouTube video. Start with a clear hook, develop the story with concrete visual beats, and end with a useful conclusion. Ask for the topic, audience, target duration and sources. Do not invent factual claims.'},
|
|
22
|
-
{id:'short-form',name:'Short-form vertical',description:'Build a concise story with a strong opening and visuals for a vertical screen.',blocks:['script','voiceover','shot-plan','pipeline','editor'],brief:'Create a short-form vertical video. Ask for the subject and intended platform. Keep narration concise, place the hook immediately, and plan readable 9:16 compositions with room for captions. Confirm the target length before writing.'},
|
|
23
|
-
{id:'ai-commercial',name:'AI commercial',description:'Develop a campaign idea, maintain its visual direction, and edit the final spot.',blocks:['script','voiceover','shot-plan','blueprint','pipeline','editor'],brief:'Develop an AI commercial from the supplied campaign brief. Establish the audience, promise, tone, product proof and call to action. Ask for brand assets and target duration. Use only supported product claims; preserve a consistent visual direction.'},
|
|
24
|
-
{id:'anime-episode',name:'Anime episode',description:'Develop the episode, cast and locations, then produce its shots and final cut.',blocks:['script','voiceover','blueprint','shot-plan','pipeline','editor'],brief:'Develop an anime episode with clear scene progression and character motivations. Ask for the premise, cast, intended duration and visual references. Prepare dialogue that can be reviewed for voice production. Maintain existing character and location references in Blueprint and Canvas.'},
|
|
25
|
-
{id:'product-ad',name:'Product ad',description:'Show a product’s value with a focused script, visual proof and a clear call to action.',blocks:['script','voiceover','shot-plan','blueprint','pipeline','editor'],brief:'Create a product advertisement using supplied product facts and assets. Ask for the audience, channel, duration and call to action. Lead with a concrete customer problem, demonstrate verified features and benefits, and avoid invented testimonials, statistics or prices.'},
|
|
26
|
-
{id:'music-video',name:'Music video',description:'Bring your track, plan a visual sequence, and cut the images and clips to the music.',blocks:['blueprint','shot-plan','pipeline','editor']},
|
|
27
|
-
{id:'documentary',name:'Documentary',description:'Research and write the story, organize its visual references, and build the film.',blocks:['script','voiceover','blueprint','shot-plan','pipeline','editor'],brief:'Develop a documentary from the supplied subject and sources. Separate verified facts, attributed statements and open questions. Ask about the intended audience, length and available footage. Structure an evidence-based narrative and identify the visuals required for each section.'},
|
|
28
14
|
{id:'empty',name:'Empty',description:'Start with protected Chat and add the Blocks your workflow needs.',blocks:[]},
|
|
29
|
-
{id:'motion-graphics',name:'Motion Graphics',description:'Direct an idea, approve styleframes, and build editable coded motion scenes and a finished export.'},
|
|
30
|
-
{id:'saas-launch',name:'Product Launch Video',description:'Turn product evidence and real UI into approved styleframes, an editable coded launch video, and a finished export.'},
|
|
31
|
-
{id:'screenshot-motion',name:'Screenshot to Motion',description:'Turn exact product screenshots into an editable motion walkthrough without inventing product behavior.'},
|
|
32
|
-
{id:'product-photo-ad',name:'Product Photo Ad',description:'Turn rights-cleared product photos and verified offer facts into an editable short advertisement.'},
|
|
33
15
|
]);
|
|
34
16
|
|
|
35
|
-
//
|
|
36
|
-
// Selecting one prepares a private experiment draft; it never publishes,
|
|
37
|
-
// spends credits, or upgrades its demand evidence label.
|
|
38
|
-
export const REVENUE_LOOP_CANDIDATES=Object.freeze([
|
|
39
|
-
['captioned-business-clip','Service owners and consultants with an unposted recording','Finish a selected recording with accurate captions and personal first-project help.'],
|
|
40
|
-
['customer-story-clip','Businesses with an authorized customer interview','Preserve a real customer quote and finish a captioned excerpt.'],
|
|
41
|
-
['product-demonstration-clip','Small brands with real demonstration footage','Show the actual product in use with approved copy and a clear next step.'],
|
|
42
|
-
['farewell-story','Teams with already-collected farewell messages','Assemble supplied memories and messages into a reviewed farewell video.'],
|
|
43
|
-
['birthday-story','Gift buyers with collected photos and messages','Make a personal birthday story from their supplied memories.'],
|
|
44
|
-
['anniversary-story','Couples with supplied photos and messages','Arrange real memories and exact dedications into a short anniversary story.'],
|
|
45
|
-
['single-release-teaser','Artists with finished audio and cover artwork','Finish a short release visual using the original track and artwork.'],
|
|
46
|
-
['lyric-excerpt','Artists with approved lyrics and phrase timings','Create a short lyric visual with the exact supplied song and text.'],
|
|
47
|
-
].map(([id,buyer,job],index)=>{
|
|
48
|
-
const starter=REVENUE_REVIEW_STARTERS.find(item=>item.id===id);
|
|
49
|
-
return {id,starterId:id,rank:index+1,name:starter.name,buyer,job,promise:starter.description,evidence:'hypothesis',
|
|
50
|
-
hypothesis:'A reviewed output and bounded first-project help can earn a genuine external payment. Demand and acquisition cost remain unverified.',
|
|
51
|
-
primaryMetric:'Paid and delivered customer orders',
|
|
52
|
-
decisionRule:'Approve the representative result and verify payment and export before acquisition. Test one offer within the agreed budget. Gift and music purchases need an explicit decision on one-project versus recurring payment.'};
|
|
53
|
-
}));
|
|
54
|
-
|
|
55
|
-
// `onDemand` holds the loaded definitions of motion and fixture starters by id (MOTION_STARTERS, FIXTURE_STARTERS).
|
|
17
|
+
// `onDemand` holds the loaded definitions of on-demand starters by id.
|
|
56
18
|
export function newProjectTypeFromStarter(starter,id,onDemand=null){
|
|
57
19
|
const selected=PROJECT_TYPE_STARTERS.find(item=>item.id===starter);
|
|
58
20
|
if(ON_DEMAND_STARTER_IDS.includes(starter)){
|
|
@@ -61,23 +23,21 @@ export function newProjectTypeFromStarter(starter,id,onDemand=null){
|
|
|
61
23
|
return {...structuredClone(definition),id};
|
|
62
24
|
}
|
|
63
25
|
if(!selected){
|
|
64
|
-
const base=structuredClone(CURRENT_BUILTIN_TYPES.find(type=>type.legacyMode==='
|
|
26
|
+
const base=structuredClone(CURRENT_BUILTIN_TYPES.find(type=>type.legacyMode==='blank')||CURRENT_BUILTIN_TYPES[0]);
|
|
65
27
|
return {...base,id,name:'Untitled Project Type',version:'0.1.0',description:'A production workflow you can customize.'};
|
|
66
28
|
}
|
|
67
29
|
const stages=selected.blocks.map(key=>{
|
|
68
30
|
const block=WORKSPACE_BLOCKS.find(item=>item.manifest.id==='sm.'+key);
|
|
69
31
|
if(!block)throw Error('The '+key+' production Block is unavailable.');
|
|
70
|
-
return {id:key,blockId:block.manifest.id,version:block.manifest.version,label:block.manifest.name
|
|
32
|
+
return {id:key,blockId:block.manifest.id,version:block.manifest.version,label:block.manifest.name};
|
|
71
33
|
});
|
|
72
34
|
return {schemaVersion:1,id,version:'0.1.0',name:selected.name,description:selected.description,license:'MIT',startingChat:'native',stages,
|
|
73
|
-
...(selected.id!=='empty'?{defaults:{aspectRatio:
|
|
74
|
-
connections:
|
|
35
|
+
...(selected.id!=='empty'?{defaults:{aspectRatio:'16:9'},onboarding:[{id:'audience',label:'Who is this for?',type:'text'},{id:'tone',label:'What tone fits?',type:'select',options:['Clear and direct','Playful','Cinematic','Documentary']}]}:{}),
|
|
36
|
+
connections:[],
|
|
75
37
|
summary:{text:selected.description,origin:'llm',generation:'build-time',generator:'Codex',status:'ready'}};
|
|
76
38
|
}
|
|
77
39
|
|
|
78
|
-
// Resolve any starter
|
|
40
|
+
// Resolve any starter.
|
|
79
41
|
export async function loadProjectTypeStarter(starter,id){
|
|
80
|
-
if(MOTION_STARTER_IDS.includes(starter))return newProjectTypeFromStarter(starter,id,(await import('./motion-starters.js')).MOTION_STARTERS);
|
|
81
|
-
if(FIXTURE_STARTER_IDS.includes(starter))return newProjectTypeFromStarter(starter,id,(await import('./fixture-starters.js')).FIXTURE_STARTERS);
|
|
82
42
|
return newProjectTypeFromStarter(starter,id);
|
|
83
43
|
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import {assert} from '../block-sdk/contracts.js';
|
|
2
|
-
import {isScriptWriterHandoff} from './script-writer.js';
|
|
3
2
|
import {packageForStage} from './stage-package.js';
|
|
4
3
|
|
|
5
4
|
const SDK_SCRIPT_RUNTIMES = new Set(['recipe', 'javascript', 'capability']);
|
|
@@ -14,14 +13,13 @@ export function resolveScriptHandoff(from, to, edge, pinnedManifest) {
|
|
|
14
13
|
to.blockId !== 'sm.voiceover' || !VOICEOVER_VERSIONS.has(to.version) ||
|
|
15
14
|
edge.to.port !== 'input' || Object.hasOwn(edge, 'adapter')) return null;
|
|
16
15
|
|
|
17
|
-
|
|
18
|
-
if (!builtin && (pinnedManifest?.id !== from.blockId || pinnedManifest.version !== from.version ||
|
|
16
|
+
if ((pinnedManifest?.id !== from.blockId || pinnedManifest.version !== from.version ||
|
|
19
17
|
!SDK_SCRIPT_RUNTIMES.has(pinnedManifest.runtime) ||
|
|
20
18
|
!Object.hasOwn(pinnedManifest.outputs || {}, edge.from.port) ||
|
|
21
19
|
pinnedManifest.outputs[edge.from.port]?.type !== 'script')) return null;
|
|
22
20
|
|
|
23
21
|
return {
|
|
24
|
-
kind:
|
|
22
|
+
kind: 'sdk',
|
|
25
23
|
sourceStageId: from.id, sourcePort: edge.from.port,
|
|
26
24
|
targetStageId: to.id, targetPort: edge.to.port,
|
|
27
25
|
blockId: from.blockId, version: from.version,
|
|
@@ -80,6 +80,8 @@ export async function compileTypeWorkspace(type,{experimentalBrowser,experimenta
|
|
|
80
80
|
});
|
|
81
81
|
return { definition, digest: await digest(definition), canvas: { nodes, edges }, activeStage: definition.stages.find(stage=>stage.enabled !== false)?.id || null };
|
|
82
82
|
}
|
|
83
|
+
// A test fixture many tests assert on (its stage ids and order), not a model Type: its Export video Step beside the
|
|
84
|
+
// Editor breaks the builder contract ("One job per Step"). The create-type scaffold (TYPE_SCAFFOLD) is the model.
|
|
83
85
|
export const RECIPE_TYPE_EXAMPLE = {
|
|
84
86
|
schemaVersion: 1, id: 'example.text-workflow', version: '1.0.0', name: 'Text workflow',
|
|
85
87
|
description: 'Clean text through two connected blocks, then use the shared editor to assemble media.',
|
|
@@ -10,7 +10,9 @@ export const APPEARANCE_TOKENS = Object.freeze([
|
|
|
10
10
|
'--signal','--signal-dim','--signal-glow','--accent','--accent-hover','--accent-dim','--accent-glow','--accent-contrast',
|
|
11
11
|
'--bg-primary','--bg-secondary','--bg-tertiary','--bg-elevated','--bg-hover','--border','--border-light',
|
|
12
12
|
'--text-primary','--text-secondary','--text-muted','--success','--warning','--danger','--shadow','--shadow-lg','--shadow-1','--shadow-2',
|
|
13
|
-
'--editor-standout-bg','--editor-standout-fg'
|
|
13
|
+
'--editor-standout-bg','--editor-standout-fg',
|
|
14
|
+
// The Block kit's see-through page background, for words over a photo (block-kit.css, November 3, 2026).
|
|
15
|
+
'--scrim'
|
|
14
16
|
]);
|
|
15
17
|
const tokens = new Set(APPEARANCE_TOKENS);
|
|
16
18
|
const colorProperty = /^(?:color|background(?:-color|-image)?|(?:border|outline)(?:-(?:top|right|bottom|left|inline|block|inline-start|inline-end|block-start|block-end))?(?:-color)?|(?:box|text)-shadow|fill|stroke|caret-color|accent-color|text-decoration(?:-color)?|column-rule(?:-color)?|-webkit-text-fill-color)$/;
|
|
@@ -3,12 +3,12 @@ import {EXAMPLE_PROVENANCE} from './example-license.js';
|
|
|
3
3
|
// prompt and a suggested length; the person running it chooses the length and
|
|
4
4
|
// pays with StillMade credits at the app's prices.
|
|
5
5
|
export const audioMusic={
|
|
6
|
-
manifest:{schemaVersion:1,sdkVersion:'0.1.0',id:'example.score-a-scene',version:'1.0.0',name:'Score a scene',description:'Generate a short music bed for a scene from a written mood brief.',kind:'task',runtime:'capability',entry:'src/capability.json',license:'MIT',provenance:EXAMPLE_PROVENANCE,inputs:{brief:{type:'brief',primary:true,semantic:'music_brief',required:true,description:'Mood, tempo and instruments for the music bed.'}},outputs:{music:{type:'audio',primary:true,semantic:'music_bed',description:'Generated music bed.'}},permissions:{project:[],capabilities:['audio.music'],network:[],filesystem:[],secrets:[]},ui:[]},
|
|
6
|
+
manifest:{schemaVersion:1,sdkVersion:'0.1.0',id:'example.score-a-scene',action:{label:'Generate music',running:'Generating music…'},version:'1.0.0',name:'Score a scene',description:'Generate a short music bed for a scene from a written mood brief.',kind:'task',runtime:'capability',entry:'src/capability.json',license:'MIT',provenance:EXAMPLE_PROVENANCE,inputs:{brief:{type:'brief',primary:true,semantic:'music_brief',required:true,description:'Mood, tempo and instruments for the music bed.'}},outputs:{music:{type:'audio',primary:true,semantic:'music_bed',description:'Generated music bed.'}},permissions:{project:[],capabilities:['audio.music'],network:[],filesystem:[],secrets:[]},ui:[]},
|
|
7
7
|
capability:{schemaVersion:1,operation:'audio.music',prompt:{$input:'brief'},output:'music',settings:{durationSec:30}},
|
|
8
8
|
tests:[{name:'Calm piano bed',input:{brief:{schemaVersion:1,text:'Calm solo piano, slow tempo, warm and hopeful.'}},expectations:{music:{kind:'audio',format:'any',minDuration:1,maxDuration:241,minBytes:45,maxBytes:134217728}}}],
|
|
9
9
|
};
|
|
10
10
|
export const audioSfx={
|
|
11
|
-
manifest:{schemaVersion:1,sdkVersion:'0.1.0',id:'example.foley-cue',version:'1.0.0',name:'Foley cue',description:'Generate a short sound effect from a written description.',kind:'task',runtime:'capability',entry:'src/capability.json',license:'MIT',provenance:EXAMPLE_PROVENANCE,inputs:{description:{type:'text',primary:true,semantic:'sound_description',required:true,description:'The sound to create.'}},outputs:{sound:{type:'audio',primary:true,semantic:'sound_effect',description:'Generated sound effect.'}},permissions:{project:[],capabilities:['audio.sfx'],network:[],filesystem:[],secrets:[]},ui:[]},
|
|
11
|
+
manifest:{schemaVersion:1,sdkVersion:'0.1.0',id:'example.foley-cue',action:{label:'Generate sound',running:'Generating sound…'},version:'1.0.0',name:'Foley cue',description:'Generate a short sound effect from a written description.',kind:'task',runtime:'capability',entry:'src/capability.json',license:'MIT',provenance:EXAMPLE_PROVENANCE,inputs:{description:{type:'text',primary:true,semantic:'sound_description',required:true,description:'The sound to create.'}},outputs:{sound:{type:'audio',primary:true,semantic:'sound_effect',description:'Generated sound effect.'}},permissions:{project:[],capabilities:['audio.sfx'],network:[],filesystem:[],secrets:[]},ui:[]},
|
|
12
12
|
capability:{schemaVersion:1,operation:'audio.sfx',prompt:{$input:'description'},output:'sound',settings:{durationSec:3}},
|
|
13
13
|
tests:[{name:'Door creak',input:{description:'A slow wooden door creak in a quiet room.'},expectations:{sound:{kind:'audio',format:'any',minDuration:.1,maxDuration:23,minBytes:45,maxBytes:134217728}}}],
|
|
14
14
|
};
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
// extension an Editor tool (editor-extension)
|
|
8
8
|
// glue the parts any project may use between Steps (When, Only new items, AI write, Import media)
|
|
9
9
|
export const BLOCK_TIERS=Object.freeze(['app','job','ingredient','extension','glue']);
|
|
10
|
-
const GLUE=new Set(['sm.when','sm.
|
|
10
|
+
const GLUE=new Set(['sm.when','sm.connect-app','sm.ai-write','sm.ai-decide','sm.write-summary','sm.import-media']);
|
|
11
11
|
const hostedOperations=manifest=>(manifest?.permissions?.capabilities||[]).filter(name=>name!=='connection.execute'&&name!=='comfyui.execute');
|
|
12
12
|
|
|
13
13
|
/** The tier of a Block, from its manifest. */
|