stillmade-sdk 0.1.25 → 0.1.26
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/SDK.md
CHANGED
|
@@ -12192,7 +12192,6 @@ Music, sound effects and catalog voices are stored as the provider's measured MP
|
|
|
12192
12192
|
| `task` | A Project Type Step. Its primary input and output connect automatically to neighbouring Steps. Use this for almost every Block. |
|
|
12193
12193
|
| `workspace` | A complete project workspace that owns a project document (like Shots or the Editor). Never connected automatically: neighbours only reach it through project context or explicit connections. |
|
|
12194
12194
|
| `editor-extension` | Accepted by the validator; no host behaviour depends on it today. Use `task`. |
|
|
12195
|
-
| `composite` | Accepted by the validator; no host behaviour depends on it today. Use `task`. |
|
|
12196
12195
|
|
|
12197
12196
|
### Generated controls
|
|
12198
12197
|
`manifest.ui` binds generated controls to inputs. A custom view replaces them in the interface, but keep them as the fallback schema.
|
package/package.json
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
import {REVENUE_REVIEW_PROJECT_TYPES} from './revenue-review-project-types.js';
|
|
2
|
-
import {PRODUCT_AD_VARIANTS_PROJECT_TYPE,PRODUCT_AD_VARIANTS_PROJECT_TYPE_1_0_3,PRIOR_PRODUCT_AD_VARIANTS_PROJECT_TYPE,PREVIOUS_PRODUCT_AD_VARIANTS_PROJECT_TYPE} from './product-ad-variants-project-type.js';
|
|
3
1
|
import {FIRST_PARTY_SDK_PACKAGES} from '../block-sdk/first-party-packages.js';
|
|
4
|
-
import {FIRST_REVENUE_PROJECT_TYPES} from './first-revenue-project-types.js';
|
|
5
2
|
import {DEALER_INVENTORY_VIDEO_PROJECT_TYPE} from './dealer-inventory-video-project-type.js';
|
|
6
3
|
import { SDK_VERSION, ROOT_CHAT_ID } from '../block-sdk/contracts.js';
|
|
7
4
|
import {SCRIPT_WRITER_BLOCK} from './script-writer.js';
|
|
@@ -188,8 +185,19 @@ const PRIOR_CURRENT_TYPES = currentBuiltinTypes('1.13.0','2.2.3',SCRIPT_WRITER_B
|
|
|
188
185
|
const PREVIOUS_PORTABLE_TYPES=currentBuiltinTypes('1.14.0','2.2.4',SCRIPT_WRITER_BLOCK.manifest.version,{'blueprint':'2.1.8','panel-strip':'2.3.6','board-editor':'2.2.9','animated-scene':'2.3.7','editor':'2.2.8'});
|
|
189
186
|
// 1.16.0: every built-in type ends in the original Editor (1.0), the full video editor.
|
|
190
187
|
const PORTABLE_EDITOR_TYPES=currentBuiltinTypes('1.15.0','2.2.4','2.1.4',{'voiceover':'2.1.4','shot-plan':'2.1.3','blueprint':'2.1.9','panel-strip':'2.3.7','board-editor':'2.2.10','animated-scene':'2.3.8','editor':'2.2.9'});
|
|
191
|
-
export const CURRENT_BUILTIN_TYPES = [...currentBuiltinTypes('1.16.0','2.2.4','2.1.4',{'voiceover':'2.1.4','shot-plan':'2.1.3','blueprint':'2.1.9','panel-strip':'2.3.7','board-editor':'2.2.10','animated-scene':'2.3.8','editor':'1.0.0'})
|
|
192
|
-
const HISTORICAL_CURRENT_TYPES=[...PORTABLE_EDITOR_TYPES
|
|
188
|
+
export const CURRENT_BUILTIN_TYPES = [...currentBuiltinTypes('1.16.0','2.2.4','2.1.4',{'voiceover':'2.1.4','shot-plan':'2.1.3','blueprint':'2.1.9','panel-strip':'2.3.7','board-editor':'2.2.10','animated-scene':'2.3.8','editor':'1.0.0'}),DEALER_INVENTORY_VIDEO_PROJECT_TYPE];
|
|
189
|
+
const HISTORICAL_CURRENT_TYPES=[...PORTABLE_EDITOR_TYPES,...PREVIOUS_PORTABLE_TYPES,...PRIOR_CURRENT_TYPES,...SHARED_WORKSPACE_TYPES,...SHARED_CANVAS_TYPES,...SHARED_BLUEPRINT_TYPES,...PRIOR_SHARED_TYPES,...MEDIA_LIBRARY_TYPES,...EDITOR_AUDIO_TYPES,...PLAYABLE_EDITOR_TYPES,...ADVANCED_PORTABLE_TYPES,...PORTABLE_MVP_TYPES,...PRE_PROMOTION_CURRENT_TYPES,...PREVIOUS_BUILTIN_TYPES.filter(type=>flows[type.legacyMode].includes('shot-plan')),...currentBuiltinTypes('1.1.0','1.1.0','1.1.0',PRIOR_HOST_WORKSPACE_VERSIONS)];
|
|
193
190
|
export const BUILTIN_TYPES = [...CURRENT_BUILTIN_TYPES,...HISTORICAL_CURRENT_TYPES,...LEGACY_TYPES];
|
|
191
|
+
// Hidden from discovery (October 20, 2026, owner decision: keep only Guided, Image Panels, Blank
|
|
192
|
+
// Canvas and White Board Motion; the rest start again on the updated SDK). Animated Studio and the
|
|
193
|
+
// Dealer Type keep their releases here, so saved projects keep their pins and run and every lookup
|
|
194
|
+
// by id still resolves; the Type shelf, Chat's Types-first check, the marketplace, the sitemap,
|
|
195
|
+
// search and the catalog read DISCOVERABLE_TYPES. The eight revenue-review Types, Product Footage
|
|
196
|
+
// Ad Variants and the two photo reels are no longer built-in Types at all: their definitions stay
|
|
197
|
+
// in the repository only as acceptance fixtures (revenue-review-project-types.js and friends), a
|
|
198
|
+
// saved project carries its own copy of its Type, and the Blocks they used remain Blocks.
|
|
199
|
+
export const HIDDEN_TYPES=new Set(['sm.animated','stillmade.dealer-inventory-video']);
|
|
200
|
+
export const isHiddenType=type=>HIDDEN_TYPES.has((type?.manifest||type)?.id);
|
|
201
|
+
export const DISCOVERABLE_TYPES=Object.freeze(CURRENT_BUILTIN_TYPES.filter(type=>!isHiddenType(type)));
|
|
194
202
|
export const workspaceBlock = (id,version)=>DISCOVERABLE_BLOCKS.find(block=>block.manifest.id===id && (!version || block.manifest.version===version));
|
|
195
203
|
export const discoverableBuiltin = item=>!!workspaceBlock((item.manifest || item).id,(item.manifest || item).version);
|
|
@@ -7,11 +7,10 @@ import {PROPERTY_LISTING_REEL_PROJECT_TYPE,PRODUCT_PROMO_REEL_PROJECT_TYPE} from
|
|
|
7
7
|
|
|
8
8
|
// These are editable starting configurations of the existing production Blocks,
|
|
9
9
|
// not separate generators or new marketplace identities.
|
|
10
|
+
// October 20, 2026 (owner): the revenue-review, ad-variant and photo-reel starters are off the
|
|
11
|
+
// Create page; their definitions stay as acceptance fixtures, so newProjectTypeFromStarter still
|
|
12
|
+
// resolves them by id for those drivers and for the creator experiments.
|
|
10
13
|
export const PROJECT_TYPE_STARTERS=Object.freeze([
|
|
11
|
-
...REVENUE_REVIEW_STARTERS,
|
|
12
|
-
{id:'product-ad-variants',name:'Product Footage Ad Variants',description:'Make three distinct, editable opening variants from your real product demonstration and approved hooks.'},
|
|
13
|
-
{id:'property-listing-reel',name:'Property Listing Reel',description:'Turn 3–8 original property photos into an editable vertical listing reel with your approved facts and contact details.'},
|
|
14
|
-
{id:'product-promo-reel',name:'Product Promo Reel',description:'Turn original product photos and approved copy into an editable vertical promo, while preserving the real product.'},
|
|
15
14
|
{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.'},
|
|
16
15
|
{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.'},
|
|
17
16
|
{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.'},
|
|
@@ -50,9 +49,10 @@ export function newProjectTypeFromStarter(starter,id){
|
|
|
50
49
|
const selected=PROJECT_TYPE_STARTERS.find(item=>item.id===starter);
|
|
51
50
|
const reviewed=REVENUE_REVIEW_PROJECT_TYPES.find(type=>type.id==='stillmade.'+starter);
|
|
52
51
|
if(reviewed)return {...structuredClone(reviewed),id};
|
|
53
|
-
|
|
54
|
-
if(
|
|
55
|
-
if(
|
|
52
|
+
// Fixture Types (no longer on the Create page) still resolve by id for the acceptance drivers.
|
|
53
|
+
if(starter==='product-ad-variants')return {...structuredClone(PRODUCT_AD_VARIANTS_PROJECT_TYPE),id};
|
|
54
|
+
if(starter==='property-listing-reel')return {...structuredClone(PROPERTY_LISTING_REEL_PROJECT_TYPE),id};
|
|
55
|
+
if(starter==='product-promo-reel')return {...structuredClone(PRODUCT_PROMO_REEL_PROJECT_TYPE),id};
|
|
56
56
|
if(selected?.id==='saas-launch')return {...structuredClone(PRODUCT_LAUNCH_UPDATED),id};
|
|
57
57
|
if(selected?.id==='screenshot-motion')return {...structuredClone(SCREENSHOT_TO_MOTION_PROJECT_TYPE),id};
|
|
58
58
|
if(selected?.id==='product-photo-ad')return {...structuredClone(PRODUCT_PHOTO_AD_PROJECT_TYPE),id};
|
|
@@ -32,7 +32,10 @@ const networkValid=entries=>!networkProblem(entries);
|
|
|
32
32
|
export const ROOT_CHAT_ID = 'stillmade.starting-chat';
|
|
33
33
|
export const TYPES = Object.freeze(['text', 'number', 'integer', 'boolean', 'json', 'object', 'image', 'video', 'audio', 'asset', 'script', 'transcript', 'brief', 'bible', 'shot-plan', 'panel-document', 'board-document', 'scene-document', 'timeline', 'timeline-edit', 'file-bundle', 'workspace-edit', 'timeline-range', 'research', 'character', 'location', 'style', 'pipeline', 'approval', 'scene', 'shot', 'mask', 'depth', 'pose', 'metadata', 'project-context', 'file', 'document', 'table', 'url', 'date', 'color']);
|
|
34
34
|
export const PORTABLE_ACTIONS = Object.freeze(['final.render','stock.search','presenter.generate','quality.analyze','image.generate','image.generate.batch','media.generate','youtube.upload']);
|
|
35
|
-
|
|
35
|
+
// The composite kind (a Block made of other Blocks) is off for now (October 20, 2026, owner):
|
|
36
|
+
// a Block is one thing with its own compact interface. No built-in uses it; a package that
|
|
37
|
+
// declares it fails validation with 'Unsupported block kind'.
|
|
38
|
+
export const KINDS = ['task', 'workspace', 'editor-extension'];
|
|
36
39
|
// Generated manifest.ui controls (inputs) and output presentations; the docs list these.
|
|
37
40
|
export const UI_INPUT_CONTROLS = Object.freeze(['text', 'number', 'slider', 'checkbox', 'asset', 'select', 'multiselect', 'file', 'date', 'color', 'url', 'richtext', 'list', 'grid']);
|
|
38
41
|
export const UI_OUTPUT_PRESENTATIONS = Object.freeze(['gallery', 'before-after', 'table', 'document', 'chart', 'code', 'player', 'download']);
|