stillmade-sdk 0.1.13 → 0.1.15

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "stillmade-sdk",
3
- "version": "0.1.13",
3
+ "version": "0.1.15",
4
4
  "description": "StillMade Block SDK, CLI and examples",
5
5
  "license": "PolyForm-Shield-1.0.0",
6
6
  "type": "module",
@@ -131,7 +131,8 @@ const semverParts=version=>String(version).split(/[.-]/).slice(0,3).map(value=>N
131
131
  const newer=(left,right)=>{const a=semverParts(left),b=semverParts(right);for(let i=0;i<3;i++){if(a[i]!==b[i])return a[i]>b[i];}return false;};
132
132
  const currentPortableById=new Map();
133
133
  // An unset app connector is a project placeholder, not something to find or install.
134
- export const UNDISCOVERABLE_SDK_BLOCKS=new Set(['sm.connect-app']);
134
+ // Photo notes is the photo check inside Pick best photos, not a Step of its own.
135
+ export const UNDISCOVERABLE_SDK_BLOCKS=new Set(['sm.connect-app','sm.photo-notes']);
135
136
  // Export video is offered as the original Editor opened at its Export (1.0.0), so
136
137
  // people can still change the cut before rendering (the owner, Oct 15). The
137
138
  // render-only 2.0.0 stays in BUILTIN_BLOCKS for exact project pins and for
@@ -1,5 +1,5 @@
1
1
  import mediaImport from '../../blocks/native/sm.import-media/versions/2.0.2/package.js';
2
- import photoReelComposer from '../../blocks/photo-reel-composer/versions/1.0.1/package.js';
2
+ import photoReelComposer from '../../blocks/photo-reel-composer/versions/1.0.2/package.js';
3
3
  import editor from '../../blocks/native/sm.editor/versions/2.2.9/package.js';
4
4
 
5
5
  // Each Type carries its exact executable dependencies. The shared host supplies
@@ -8,7 +8,7 @@ import editor from '../../blocks/native/sm.editor/versions/2.2.9/package.js';
8
8
  // than collecting onboarding answers that the Block cannot consume.
9
9
  function photoReelType({id,name,description,brief,purpose,importLabel}) {
10
10
  return Object.freeze({
11
- schemaVersion:1,id,version:'1.0.2',name,description,license:'MIT',startingChat:'native',
11
+ schemaVersion:1,id,version:'1.0.3',name,description,license:'MIT',startingChat:'native',
12
12
  summary:{text:description,origin:'human',generation:'authored',status:'ready'},
13
13
  defaults:{aspectRatio:'9:16',brief},
14
14
  onboarding:[],
@@ -28,9 +28,9 @@ function photoReelType({id,name,description,brief,purpose,importLabel}) {
28
28
 
29
29
  export const PROPERTY_LISTING_REEL_PROJECT_TYPE=photoReelType({
30
30
  id:'stillmade.property-listing-reel',name:'Property Listing Reel',purpose:'property',
31
- importLabel:'Import 6–8 Property Photos',
32
- description:'Turn 6–8 approved original property photos, exact listing facts and your call to action into an editable 20–30 second vertical reel.',
33
- brief:'Import 6–8 approved original property photos in the order you want them shown. In Compose Reel, enter the approved title, one exact factual caption per photo when needed, call to action and contact details, then confirm your rights to the supplied media. Review the editable 24-second portrait reel in Editor before exporting. Preserve the photographed property; do not invent rooms, fixtures, views, listing facts or prices.',
31
+ importLabel:'Import 3–8 Property Photos',
32
+ description:'Turn 3–8 approved original property photos, exact listing facts and your call to action into an editable 20–30 second vertical reel.',
33
+ brief:'Import 3–8 approved original property photos in the order you want them shown. In Compose Reel, enter the approved title, one exact factual caption per photo when needed, call to action and contact details, then confirm your rights to the supplied media. Review the editable 24-second portrait reel in Editor before exporting. Preserve the photographed property; do not invent rooms, fixtures, views, listing facts or prices.',
34
34
  });
35
35
 
36
36
  export const PRODUCT_PROMO_REEL_PROJECT_TYPE=photoReelType({
@@ -33,6 +33,8 @@ export const PLAIN_BLOCK_DESCRIPTIONS=Object.freeze({
33
33
  'sm.transition':'Pick transitions between clips, with their timing and sounds, then apply them in the Editor.',
34
34
  'sm.quality-audit':'Check your images and clips for quality problems before you export.',
35
35
  'sm.compare':'Compare two images with a slider and keep the one you prefer.',
36
+ 'sm.pick-photos':'Keep only the best photos from an upload: sharp, well lit, clear faces, no near-duplicates, and true to your note.',
37
+ 'sm.photo-notes':'Rate up to four photos for sharpness, light, people and faces.',
36
38
  'sm.export-timeline':'Download your timeline to open in another editor, with or without its media.',
37
39
  'sm.captions':'Turn a transcript or text into captions with word highlighting, then add them to the timeline.',
38
40
  'sm.thumbnail':'Make a square thumbnail image from a short description.',
@@ -10,7 +10,7 @@ import {PROPERTY_LISTING_REEL_PROJECT_TYPE,PRODUCT_PROMO_REEL_PROJECT_TYPE} from
10
10
  export const PROJECT_TYPE_STARTERS=Object.freeze([
11
11
  ...REVENUE_REVIEW_STARTERS,
12
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 6–8 original property photos into an editable vertical listing reel with your approved facts and contact details.'},
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
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
15
  {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
16
  {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.'},
@@ -112,6 +112,8 @@ export const FIRST_PARTY_SDK_IDENTITIES=Object.freeze(new Set([
112
112
  "sm.panel-strip@2.3.7",
113
113
  "sm.panel-strip@2.4.0",
114
114
  "sm.panel-strip@2.4.1",
115
+ "sm.photo-notes@1.0.0",
116
+ "sm.pick-photos@1.0.0",
115
117
  "sm.pipeline@2.0.0",
116
118
  "sm.pipeline@2.1.0",
117
119
  "sm.pipeline@2.2.0",
@@ -178,6 +180,7 @@ export const FIRST_PARTY_SDK_IDENTITIES=Object.freeze(new Set([
178
180
  "stillmade.occasion-story@1.0.2",
179
181
  "stillmade.photo-reel-composer@1.0.0",
180
182
  "stillmade.photo-reel-composer@1.0.1",
183
+ "stillmade.photo-reel-composer@1.0.2",
181
184
  "stillmade.product-ad-variants@1.0.0",
182
185
  "stillmade.release-visuals@1.0.0",
183
186
  "stillmade.release-visuals@1.0.1",
@@ -10,7 +10,8 @@ import occasionStory from '../../blocks/occasion-story/package.js';
10
10
  import releaseVisuals from '../../blocks/release-visuals/package.js';
11
11
  import importMedia from '../../blocks/native/sm.import-media/versions/2.0.0/package.js';
12
12
  import photoReelComposerV100 from '../../blocks/photo-reel-composer/versions/1.0.0/package.js';
13
- import photoReelComposer from '../../blocks/photo-reel-composer/versions/1.0.1/package.js';
13
+ import photoReelComposerV101 from '../../blocks/photo-reel-composer/versions/1.0.1/package.js';
14
+ import photoReelComposer from '../../blocks/photo-reel-composer/versions/1.0.2/package.js';
14
15
  import productAdVariants from '../../blocks/product-ad-variants/versions/1.0.0/package.js';
15
16
  import importMediaV201 from '../../blocks/native/sm.import-media/versions/2.0.1/package.js';
16
17
  import importMediaV202 from '../../blocks/native/sm.import-media/versions/2.0.2/package.js';
@@ -182,9 +183,11 @@ import animatedSceneV236 from '../../blocks/native/sm.animated-scene/versions/2.
182
183
  import animatedSceneV237 from '../../blocks/native/sm.animated-scene/versions/2.3.7/package.js';
183
184
  import animatedSceneV238 from '../../blocks/native/sm.animated-scene/versions/2.3.8/package.js';
184
185
  import blueprintAssistant from '../../blocks/native/sm.blueprint-assistant/versions/1.0.0/package.js';
186
+ import photoNotes from '../../blocks/native/sm.photo-notes/versions/1.0.0/package.js';
187
+ import pickPhotos from '../../blocks/native/sm.pick-photos/versions/1.0.0/package.js';
185
188
 
186
189
  // Exact, independently executable first-party releases. Host workspaces do not
187
190
  // belong here. Changing implementation requires a new immutable version.
188
191
  const freeze=value=>{if(value&&typeof value==='object'&&!Object.isFrozen(value)){Object.values(value).forEach(freeze);Object.freeze(value);}return value;};
189
- export const FIRST_PARTY_SDK_PACKAGES = Object.freeze([freeze(productAdVariants),freeze(youtubePublication),freeze(stockSearch),freeze(exportVideoV210),freeze(exportVideo),freeze(exportAudio),freeze(motionGraphics),freeze(audioScore),freeze(shortFormFinish),freeze(shortFormFinishV102),freeze(shortFormFinishV101),freeze(shortFormFinishV100),freeze(occasionStory),freeze(occasionStoryV101),freeze(occasionStoryV100),freeze(releaseVisuals),freeze(releaseVisualsV101),freeze(releaseVisualsV100),freeze(photoReelComposer),freeze(photoReelComposerV100),freeze(importMediaV202),freeze(importMediaV201),freeze(editorV2212),freeze(editorV2211),freeze(editorV2210),freeze(editorV229),freeze(editorV228),freeze(panelStripV241),freeze(panelStripV240),freeze(panelStripV237),freeze(panelStripV236),freeze(boardEditorV2210),freeze(boardEditorV229),freeze(animatedSceneV238),freeze(animatedSceneV237),freeze(pipelineV225),freeze(pipelineV224),freeze(blueprintV219),freeze(blueprintV218),freeze(videoAssetsV214),freeze(videoAssetsV213),freeze(chatV203),freeze(chatV202),freeze(chatV201),freeze(shotPlanV221),freeze(shotPlanV220),freeze(shotPlanV213),freeze(shotPlanV212),freeze(voiceoverV216),freeze(voiceoverV215),freeze(voiceoverV214),freeze(voiceoverV213),freeze(scriptV215),freeze(scriptV214),freeze(scriptV213),freeze(roughCutV202),freeze(roughCutV201),freeze(finalEditV202),freeze(finalEditV201),freeze(editAssistantV202),freeze(editAssistantV201),freeze(gradeV202),freeze(gradeV201),freeze(transitionV202),freeze(transitionV201),freeze(qualityAuditV102),freeze(qualityAuditV101),freeze(compareV202),freeze(compareV201),freeze(compare),freeze(grade),freeze(transition),freeze(exportTimeline),freeze(captions),freeze(importMedia),freeze(generateImageV210),freeze(generateImage),freeze(thumbnailV201),freeze(thumbnail),freeze(writeSummary),freeze(automationWhen),freeze(automationNewItems),freeze(automationAiDecide),freeze(automationContinueIf),freeze(connectApp),freeze(automationContactFields),freeze(automationAiWrite),freeze(automationMetaCreative),freeze(voiceover),freeze(voiceoverV210),freeze(voiceoverV211),freeze(voiceoverV212),freeze(script),freeze(scriptV210),freeze(scriptV211),freeze(scriptV212),freeze(generateVideoV201),freeze(generateVideo),freeze(chat),freeze(characterV201),freeze(character),freeze(locationV201),freeze(location),freeze(styleV201),freeze(style),freeze(researchV202),freeze(researchV201),freeze(research),freeze(imageEditorV201),freeze(imageEditor),freeze(describeMediaV201),freeze(describeMedia),freeze(videoAssets),freeze(videoAssetsV210),freeze(videoAssetsV211),freeze(videoAssetsV212),freeze(roughCut),freeze(finalEdit),freeze(editAssistant),freeze(transcribeV201),freeze(transcribe),freeze(blueprint),freeze(blueprintV210),freeze(blueprintV211),freeze(blueprintV212),freeze(blueprintV213),freeze(blueprintV214),freeze(blueprintV215),freeze(blueprintV216),freeze(blueprintV217),freeze(shotPlan),freeze(shotPlanV210),freeze(shotPlanV211),freeze(boardEditor),freeze(boardEditorV210),freeze(boardEditorV220),freeze(boardEditorV221),freeze(boardEditorV222),freeze(boardEditorV223),freeze(boardEditorV224),freeze(boardEditorV225),freeze(boardEditorV226),freeze(boardEditorV227),freeze(boardEditorV228),freeze(panelStripV200),freeze(panelStrip),freeze(panelStripV220),freeze(panelStripV230),freeze(panelStripV231),freeze(panelStripV232),freeze(panelStripV233),freeze(panelStripV234),freeze(panelStripV235),freeze(animatedSceneV200),freeze(animatedScene),freeze(animatedSceneV220),freeze(animatedSceneV230),freeze(animatedSceneV231),freeze(animatedSceneV232),freeze(animatedSceneV233),freeze(animatedSceneV234),freeze(animatedSceneV235),freeze(animatedSceneV236),freeze(editor),freeze(editorV210),freeze(editorV220),freeze(editorV221),freeze(editorV222),freeze(editorV223),freeze(editorV224),freeze(editorV225),freeze(editorV226),freeze(editorV227),freeze(pipelineV200),freeze(pipeline),freeze(pipelineV220),freeze(pipelineV221),freeze(pipelineV223),freeze(pipelineV222),freeze(shotPlanAssistant),freeze(animatedSceneAssistant),freeze(blueprintAssistant),freeze(whiteboardAssistant),freeze(qualityAudit)]);
192
+ export const FIRST_PARTY_SDK_PACKAGES = Object.freeze([freeze(productAdVariants),freeze(pickPhotos),freeze(photoNotes),freeze(youtubePublication),freeze(stockSearch),freeze(exportVideoV210),freeze(exportVideo),freeze(exportAudio),freeze(motionGraphics),freeze(audioScore),freeze(shortFormFinish),freeze(shortFormFinishV102),freeze(shortFormFinishV101),freeze(shortFormFinishV100),freeze(occasionStory),freeze(occasionStoryV101),freeze(occasionStoryV100),freeze(releaseVisuals),freeze(releaseVisualsV101),freeze(releaseVisualsV100),freeze(photoReelComposer),freeze(photoReelComposerV101),freeze(photoReelComposerV100),freeze(importMediaV202),freeze(importMediaV201),freeze(editorV2212),freeze(editorV2211),freeze(editorV2210),freeze(editorV229),freeze(editorV228),freeze(panelStripV241),freeze(panelStripV240),freeze(panelStripV237),freeze(panelStripV236),freeze(boardEditorV2210),freeze(boardEditorV229),freeze(animatedSceneV238),freeze(animatedSceneV237),freeze(pipelineV225),freeze(pipelineV224),freeze(blueprintV219),freeze(blueprintV218),freeze(videoAssetsV214),freeze(videoAssetsV213),freeze(chatV203),freeze(chatV202),freeze(chatV201),freeze(shotPlanV221),freeze(shotPlanV220),freeze(shotPlanV213),freeze(shotPlanV212),freeze(voiceoverV216),freeze(voiceoverV215),freeze(voiceoverV214),freeze(voiceoverV213),freeze(scriptV215),freeze(scriptV214),freeze(scriptV213),freeze(roughCutV202),freeze(roughCutV201),freeze(finalEditV202),freeze(finalEditV201),freeze(editAssistantV202),freeze(editAssistantV201),freeze(gradeV202),freeze(gradeV201),freeze(transitionV202),freeze(transitionV201),freeze(qualityAuditV102),freeze(qualityAuditV101),freeze(compareV202),freeze(compareV201),freeze(compare),freeze(grade),freeze(transition),freeze(exportTimeline),freeze(captions),freeze(importMedia),freeze(generateImageV210),freeze(generateImage),freeze(thumbnailV201),freeze(thumbnail),freeze(writeSummary),freeze(automationWhen),freeze(automationNewItems),freeze(automationAiDecide),freeze(automationContinueIf),freeze(connectApp),freeze(automationContactFields),freeze(automationAiWrite),freeze(automationMetaCreative),freeze(voiceover),freeze(voiceoverV210),freeze(voiceoverV211),freeze(voiceoverV212),freeze(script),freeze(scriptV210),freeze(scriptV211),freeze(scriptV212),freeze(generateVideoV201),freeze(generateVideo),freeze(chat),freeze(characterV201),freeze(character),freeze(locationV201),freeze(location),freeze(styleV201),freeze(style),freeze(researchV202),freeze(researchV201),freeze(research),freeze(imageEditorV201),freeze(imageEditor),freeze(describeMediaV201),freeze(describeMedia),freeze(videoAssets),freeze(videoAssetsV210),freeze(videoAssetsV211),freeze(videoAssetsV212),freeze(roughCut),freeze(finalEdit),freeze(editAssistant),freeze(transcribeV201),freeze(transcribe),freeze(blueprint),freeze(blueprintV210),freeze(blueprintV211),freeze(blueprintV212),freeze(blueprintV213),freeze(blueprintV214),freeze(blueprintV215),freeze(blueprintV216),freeze(blueprintV217),freeze(shotPlan),freeze(shotPlanV210),freeze(shotPlanV211),freeze(boardEditor),freeze(boardEditorV210),freeze(boardEditorV220),freeze(boardEditorV221),freeze(boardEditorV222),freeze(boardEditorV223),freeze(boardEditorV224),freeze(boardEditorV225),freeze(boardEditorV226),freeze(boardEditorV227),freeze(boardEditorV228),freeze(panelStripV200),freeze(panelStrip),freeze(panelStripV220),freeze(panelStripV230),freeze(panelStripV231),freeze(panelStripV232),freeze(panelStripV233),freeze(panelStripV234),freeze(panelStripV235),freeze(animatedSceneV200),freeze(animatedScene),freeze(animatedSceneV220),freeze(animatedSceneV230),freeze(animatedSceneV231),freeze(animatedSceneV232),freeze(animatedSceneV233),freeze(animatedSceneV234),freeze(animatedSceneV235),freeze(animatedSceneV236),freeze(editor),freeze(editorV210),freeze(editorV220),freeze(editorV221),freeze(editorV222),freeze(editorV223),freeze(editorV224),freeze(editorV225),freeze(editorV226),freeze(editorV227),freeze(pipelineV200),freeze(pipeline),freeze(pipelineV220),freeze(pipelineV221),freeze(pipelineV223),freeze(pipelineV222),freeze(shotPlanAssistant),freeze(animatedSceneAssistant),freeze(blueprintAssistant),freeze(whiteboardAssistant),freeze(qualityAudit)]);
190
193
  export const firstPartySdkPackage = manifest => FIRST_PARTY_SDK_PACKAGES.find(pkg => pkg.manifest.id === manifest?.id && pkg.manifest.version === manifest?.version);