@milenyumai/film-kit 2.1.0 → 2.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/README.md +109 -35
  2. package/build/cli.js +17 -1
  3. package/build/index.d.ts +3 -1
  4. package/build/index.js +1 -0
  5. package/build/lib/cli.d.ts +3 -1
  6. package/build/lib/cli.js +321 -12
  7. package/build/lib/configure.js +6 -0
  8. package/build/lib/defaults.d.ts +3 -1
  9. package/build/lib/defaults.js +32 -0
  10. package/build/lib/film-kit.js +76 -4
  11. package/build/lib/storyboard-reference/adapters/base.d.ts +14 -0
  12. package/build/lib/storyboard-reference/adapters/base.js +61 -0
  13. package/build/lib/storyboard-reference/adapters/generic.d.ts +24 -0
  14. package/build/lib/storyboard-reference/adapters/generic.js +50 -0
  15. package/build/lib/storyboard-reference/adapters/kling30.d.ts +11 -0
  16. package/build/lib/storyboard-reference/adapters/kling30.js +102 -0
  17. package/build/lib/storyboard-reference/adapters/seedance20.d.ts +11 -0
  18. package/build/lib/storyboard-reference/adapters/seedance20.js +77 -0
  19. package/build/lib/storyboard-reference/adapters/veo31.d.ts +11 -0
  20. package/build/lib/storyboard-reference/adapters/veo31.js +75 -0
  21. package/build/lib/storyboard-reference/asset-role-resolver.d.ts +2 -0
  22. package/build/lib/storyboard-reference/asset-role-resolver.js +51 -0
  23. package/build/lib/storyboard-reference/defaults.d.ts +9 -0
  24. package/build/lib/storyboard-reference/defaults.js +30 -0
  25. package/build/lib/storyboard-reference/index.d.ts +7 -0
  26. package/build/lib/storyboard-reference/index.js +6 -0
  27. package/build/lib/storyboard-reference/output-writer.d.ts +3 -0
  28. package/build/lib/storyboard-reference/output-writer.js +143 -0
  29. package/build/lib/storyboard-reference/prompt-bundle-builder.d.ts +2 -0
  30. package/build/lib/storyboard-reference/prompt-bundle-builder.js +92 -0
  31. package/build/lib/storyboard-reference/request-normalizer.d.ts +2 -0
  32. package/build/lib/storyboard-reference/request-normalizer.js +70 -0
  33. package/build/lib/storyboard-reference/storyboard-interpreter.d.ts +2 -0
  34. package/build/lib/storyboard-reference/storyboard-interpreter.js +75 -0
  35. package/build/lib/storyboard-reference/types.d.ts +193 -0
  36. package/build/lib/storyboard-reference/types.js +1 -0
  37. package/build/lib/storyboard-reference/validators.d.ts +5 -0
  38. package/build/lib/storyboard-reference/validators.js +90 -0
  39. package/build/lib/storyboard-reference/visual-world-builder.d.ts +4 -0
  40. package/build/lib/storyboard-reference/visual-world-builder.js +42 -0
  41. package/build/lib/templates.js +41 -15
  42. package/build/lib/types.d.ts +23 -1
  43. package/build/postinstall.js +36 -0
  44. package/content/ARCHITECTURE.md +14 -9
  45. package/content/MASTER.md +5 -3
  46. package/content/RULES.md +17 -10
  47. package/content/agents/prompt-engineer.md +25 -23
  48. package/content/skills/prompt-structure/SKILL.md +17 -0
  49. package/content/skills/reference-locking/SKILL.md +19 -7
  50. package/content/skills/semantic-consistency/SKILL.md +2 -0
  51. package/content/skills/storyboard-reference/SKILL.md +79 -0
  52. package/content/workflows/generate-storyboard.md +75 -0
  53. package/package.json +6 -2
  54. package/packages/gpt-image-smart/LICENSE +21 -0
  55. package/packages/gpt-image-smart/README.md +69 -0
  56. package/packages/gpt-image-smart/build/cli.d.ts +2 -0
  57. package/packages/gpt-image-smart/build/cli.js +121 -0
  58. package/packages/gpt-image-smart/build/index.d.ts +2 -0
  59. package/packages/gpt-image-smart/build/index.js +1 -0
  60. package/packages/gpt-image-smart/build/lib/configure.d.ts +2 -0
  61. package/packages/gpt-image-smart/build/lib/configure.js +247 -0
  62. package/packages/gpt-image-smart/build/lib/defaults.d.ts +3 -0
  63. package/packages/gpt-image-smart/build/lib/defaults.js +75 -0
  64. package/packages/gpt-image-smart/build/lib/fs.d.ts +3 -0
  65. package/packages/gpt-image-smart/build/lib/fs.js +23 -0
  66. package/packages/gpt-image-smart/build/lib/templates.d.ts +2 -0
  67. package/packages/gpt-image-smart/build/lib/templates.js +862 -0
  68. package/packages/gpt-image-smart/build/lib/types.d.ts +54 -0
  69. package/packages/gpt-image-smart/build/lib/types.js +1 -0
  70. package/packages/gpt-image-smart/build/postinstall.d.ts +1 -0
  71. package/packages/gpt-image-smart/build/postinstall.js +34 -0
  72. package/packages/gpt-image-smart/content/GPT-IMAGE-SMART-OVERRIDES.md +119 -0
  73. package/packages/gpt-image-smart/content/skills/gpt-image-2-cinematic/SKILL.md +106 -0
  74. package/packages/gpt-image-smart/content/skills/prompt-structure/SKILL.md +288 -0
  75. package/packages/gpt-image-smart/content/skills/storyboard-reference/SKILL.md +28 -0
  76. package/packages/gpt-image-smart/content/workflows/generate-storyboard.md +19 -0
  77. package/packages/gpt-image-smart/content/workflows/generate.md +148 -0
  78. package/packages/hybrid/build/cli.js +38 -0
  79. package/packages/hybrid/build/index.d.ts +1 -1
  80. package/packages/hybrid/build/lib/configure.js +19 -0
  81. package/packages/hybrid/build/lib/defaults.d.ts +2 -1
  82. package/packages/hybrid/build/lib/defaults.js +43 -0
  83. package/packages/hybrid/build/lib/templates.js +48 -10
  84. package/packages/hybrid/build/lib/types.d.ts +11 -0
  85. package/packages/hybrid/build/postinstall.js +7 -1
  86. package/packages/hybrid/content/HYBRID-OVERRIDES.md +6 -0
  87. package/packages/hybrid/content/skills/nano-banana-pro-image/SKILL.md +10 -1
  88. package/packages/hybrid/content/skills/prompt-structure/SKILL.md +8 -2
  89. package/packages/hybrid/content/skills/storyboard-reference/SKILL.md +28 -0
  90. package/packages/hybrid/content/workflows/generate-storyboard.md +19 -0
  91. package/packages/hybrid/content/workflows/generate.md +8 -0
  92. package/packages/hybrid-smart/build/cli.js +38 -0
  93. package/packages/hybrid-smart/build/index.d.ts +1 -1
  94. package/packages/hybrid-smart/build/lib/configure.js +19 -0
  95. package/packages/hybrid-smart/build/lib/defaults.d.ts +2 -1
  96. package/packages/hybrid-smart/build/lib/defaults.js +43 -0
  97. package/packages/hybrid-smart/build/lib/templates.js +94 -37
  98. package/packages/hybrid-smart/build/lib/types.d.ts +11 -0
  99. package/packages/hybrid-smart/build/postinstall.js +7 -1
  100. package/packages/hybrid-smart/content/SMART-HYBRID-OVERRIDES.md +10 -4
  101. package/packages/hybrid-smart/content/skills/nano-banana-pro-image/SKILL.md +16 -4
  102. package/packages/hybrid-smart/content/skills/prompt-structure/SKILL.md +15 -6
  103. package/packages/hybrid-smart/content/skills/storyboard-reference/SKILL.md +28 -0
  104. package/packages/hybrid-smart/content/workflows/generate-storyboard.md +19 -0
  105. package/packages/hybrid-smart/content/workflows/generate.md +10 -1
  106. package/packages/multi/content/skills/storyboard-reference/SKILL.md +28 -0
  107. package/packages/multi/content/workflows/generate-storyboard.md +19 -0
  108. package/packages/studio/build/cli.js +34 -1
  109. package/packages/studio/build/index.d.ts +1 -1
  110. package/packages/studio/build/lib/configure.js +20 -1
  111. package/packages/studio/build/lib/defaults.d.ts +2 -1
  112. package/packages/studio/build/lib/defaults.js +48 -0
  113. package/packages/studio/build/lib/templates.js +59 -7
  114. package/packages/studio/build/lib/types.d.ts +11 -0
  115. package/packages/studio/build/postinstall.js +9 -0
  116. package/packages/studio/content/agents/render-supervisor.md +4 -0
  117. package/packages/studio/content/skills/fal-render/SKILL.md +11 -0
  118. package/packages/studio/content/skills/storyboard-reference/SKILL.md +28 -0
  119. package/packages/studio/content/workflows/generate-storyboard.md +19 -0
  120. package/packages/studio/content/workflows/render.md +4 -1
package/README.md CHANGED
@@ -44,24 +44,29 @@ Initialize a project with one of the supported presets:
44
44
  npx @milenyumai/film-kit init --preset single --model veo31
45
45
  npx @milenyumai/film-kit init --preset single --model seedance-2.0
46
46
  npx @milenyumai/film-kit init --preset multi --model kling-3.0 --kling-preset ultra-realism
47
- npx @milenyumai/film-kit init --preset hybrid --aspect 16:9 --nano-size 4K
48
- npx @milenyumai/film-kit init --preset hybrid-smart --kling-preset balanced
49
- npx @milenyumai/film-kit init --preset studio --model seedance-2.0 --refs-dir ./refs
47
+ npx @milenyumai/film-kit init --preset studio --model seedance-2.0 --reference-mode storyboard-reference --refs-dir ./refs
48
+ npx @milenyumai/film-kit init --preset hybrid --aspect 16:9 --nano-size 4K --gpt-image-size 2048x1152
49
+ npx @milenyumai/film-kit init --preset hybrid-smart --kling-preset balanced --gpt-image-quality medium
50
+ npx @milenyumai/film-kit init --preset gpt-image-smart --gpt-image-size 2048x1152 --gpt-image-quality medium
51
+ npx @milenyumai/film-kit init --preset studio --model seedance-2.0 --refs-dir ./refs --gpt-image-format png
50
52
  ```
51
53
 
52
54
  After the first run, Film-Kit writes `film-kit.config.json` and uses that file as the canonical project configuration.
53
55
 
54
56
  In Codex-enabled projects, all presets now include an optional `/codex-images` still phase after a successful `/generate`. It is always opt-in and never auto-starts.
55
57
 
58
+ Storyboard-reference prompt generation is also available when you have a character reference image, storyboard reference image, and brief. It produces model-specific prompt bundles without requiring start/end frames.
59
+
56
60
  ## Presets
57
61
 
58
62
  | Preset | Purpose | Supported video model surface | Default notes |
59
63
  |---|---|---|---|
60
64
  | `single` | Single-agent prompt runtime | `veo31`, `kling-3.0`, `seedance-2.0` | Defaults to all supported platforms |
61
65
  | `multi` | Lead-directed multi-agent shot generation | `veo31`, `kling-3.0`, `seedance-2.0` | Defaults to `maxTeammates=5`, `batchSize=4` |
62
- | `hybrid` | Nano Banana still generation + fixed Kling video runtime | fixed `kling-3.0` | No `--model` flag |
63
- | `hybrid-smart` | Nano Banana still generation + dialogue-aware Veo/Kling routing | fixed smart route | No `--model` flag |
64
- | `studio` | Scenario-to-render pipeline with render-stage configuration | `veo31`, `kling-3.0`, `seedance-2.0` | Includes refs dir and fal model configuration |
66
+ | `hybrid` | Nano Banana still generation + GPT Image 2 companion metadata + fixed Kling video runtime | fixed `kling-3.0` | No `--model` flag |
67
+ | `hybrid-smart` | Nano Banana still generation + GPT Image 2 companion metadata + dialogue-aware Veo/Kling routing | fixed smart route | No `--model` flag |
68
+ | `gpt-image-smart` | GPT Image 2 still generation + dialogue-aware Veo/Kling routing | fixed smart route | Defaults to `size=2048x1152`, `quality=medium`, `format=png` |
69
+ | `studio` | Scenario-to-render pipeline with fal.ai render-stage configuration plus GPT Image 2 companion metadata | `veo31`, `kling-3.0`, `seedance-2.0` | Includes refs dir and fal model configuration |
65
70
 
66
71
  ## Model Support
67
72
 
@@ -87,15 +92,25 @@ In Codex-enabled projects, all presets now include an optional `/codex-images` s
87
92
  - Supported in `single`, `multi`, and `studio`
88
93
  - Fixed inside `hybrid`
89
94
  - Part of the router inside `hybrid-smart`
95
+ - Part of the router inside `gpt-image-smart`
90
96
  - Uses Kling-specific Start+End / storyboard prompt structure
91
97
 
98
+ ### `gpt-image-2`
99
+
100
+ - Supported as the still-image engine in `gpt-image-smart`
101
+ - Supported as companion still prompt/API metadata in `hybrid`, `hybrid-smart`, and `studio`
102
+ - Used for `ILK/İLK FRAME`, `SON FRAME`, and still coverage prompt sections
103
+ - Default Image API metadata: `size=2048x1152`, `quality=medium`, `format=png`
104
+ - V1 emits prompt/API command metadata only; it does not execute OpenAI SDK calls
105
+ - Transparent backgrounds are not exposed because GPT Image 2 does not support them in these presets
106
+
92
107
  ### `kling-preset`
93
108
 
94
109
  `preset` and `kling-preset` are different things:
95
110
 
96
111
  - `preset` selects the Film-Kit product mode
97
112
  - `kling-preset` selects Kling quality behavior
98
- - `kling-preset` only applies when the active video model is `kling-3.0`
113
+ - `kling-preset` applies when the active video model is `kling-3.0`, including Kling-routed sections inside smart presets
99
114
 
100
115
  Supported `kling-preset` values:
101
116
 
@@ -105,12 +120,41 @@ Supported `kling-preset` values:
105
120
 
106
121
  When the active model is not Kling, generated runtime files intentionally render the Kling preset as `n/a (Kling-only)`.
107
122
 
123
+ ## Storyboard Reference Mode
124
+
125
+ Use this mode when the source material is a character reference image plus a storyboard image rather than explicit start/end frames.
126
+
127
+ ```bash
128
+ npx @milenyumai/film-kit generate-storyboard \
129
+ --character-ref ./refs/character.png \
130
+ --storyboard-ref ./refs/storyboard.png \
131
+ --brief ./scenario.md \
132
+ --models veo31,seedance-2.0,kling-3.0 \
133
+ --duration 8 \
134
+ --aspect 16:9 \
135
+ --output-dir ./outputs
136
+ ```
137
+
138
+ Outputs:
139
+
140
+ - `outputs/storyboard-reference-plan.json`
141
+ - `outputs/prompt-bundles/SHOTNN.bundle.json`
142
+ - `outputs/shots/SHOTNN.md`
143
+ - `outputs/reports/STORYBOARD-REFERENCE-QA.md`
144
+
145
+ Rules:
146
+
147
+ - `@character1` is the identity lock.
148
+ - `@storyboard1` controls composition, blocking, camera, timing, and editorial phase order only.
149
+ - 5+ storyboard phases are split into multiple `SHOTNN.md` files.
150
+ - Existing start/end workflows stay unchanged and remain the default.
151
+
108
152
  ## CLI
109
153
 
110
154
  Base command:
111
155
 
112
156
  ```bash
113
- npx @milenyumai/film-kit init --preset single|multi|hybrid|hybrid-smart|studio
157
+ npx @milenyumai/film-kit init --preset single|multi|hybrid|hybrid-smart|gpt-image-smart|studio
114
158
  ```
115
159
 
116
160
  Help:
@@ -124,10 +168,12 @@ Examples:
124
168
  ```bash
125
169
  npx @milenyumai/film-kit init --preset single --model veo31
126
170
  npx @milenyumai/film-kit init --preset single --model seedance-2.0 --platforms cursor,claude,codex
171
+ npx @milenyumai/film-kit init --preset studio --reference-mode storyboard-reference --max-storyboard-phases 4
127
172
  npx @milenyumai/film-kit init --preset multi --model seedance-2.0 --max-teammates 5 --batch-size 4
128
173
  npx @milenyumai/film-kit init --preset multi --model kling-3.0 --kling-preset balanced
129
174
  npx @milenyumai/film-kit init --preset hybrid --kling-preset ultra-realism --aspect 16:9 --nano-size 2K
130
175
  npx @milenyumai/film-kit init --preset hybrid-smart --aspect 9:16 --max-kling-custom-shots 4
176
+ npx @milenyumai/film-kit init --preset gpt-image-smart --aspect 16:9 --gpt-image-size 2048x1152 --gpt-image-quality high --gpt-image-format png
131
177
  npx @milenyumai/film-kit init --preset studio --model seedance-2.0 --refs-dir ./refs
132
178
  npx @milenyumai/film-kit init --preset studio --model kling-3.0 --fal-video-model fal-ai/kling-video/v3/pro/image-to-video
133
179
  npx @milenyumai/film-kit init --preset single --overwrite
@@ -142,27 +188,34 @@ npx @milenyumai/film-kit init --preset single --overwrite
142
188
  | `--scenario-hint` | Scenario file hint. Default: `scenario.md` |
143
189
  | `--scenario` | Alias of `--scenario-hint` |
144
190
  | `--overwrite`, `-f` | Overwrite existing runtime files |
191
+ | `--reference-mode` | `start-end`, `storyboard-reference`, or `hybrid`. Default: `start-end` |
192
+ | `--max-storyboard-phases` | Storyboard-reference phase cap per prompt. Default: `4` |
145
193
 
146
194
  ### Preset-Specific Flags
147
195
 
148
196
  | Preset | Allowed flags |
149
197
  |---|---|
150
- | `single` | `--model`, `--kling-preset`, `--platforms` |
151
- | `multi` | `--model`, `--kling-preset`, `--max-teammates`, `--batch-size` |
152
- | `hybrid` | `--kling-preset`, `--aspect`, `--nano-size`, `--platforms` |
153
- | `hybrid-smart` | `--kling-preset`, `--aspect`, `--nano-size`, `--max-kling-custom-shots`, `--platforms` |
154
- | `studio` | `--model`, `--kling-preset`, `--max-teammates`, `--batch-size`, `--refs-dir`, `--fal-image-model`, `--fal-video-model`, `--platforms` |
198
+ | `single` | `--model`, `--kling-preset`, `--platforms`, `--reference-mode`, `--max-storyboard-phases` |
199
+ | `multi` | `--model`, `--kling-preset`, `--max-teammates`, `--batch-size`, `--reference-mode`, `--max-storyboard-phases` |
200
+ | `hybrid` | `--kling-preset`, `--aspect`, `--nano-size`, `--gpt-image-size`, `--gpt-image-quality`, `--gpt-image-format`, `--platforms`, `--reference-mode`, `--max-storyboard-phases` |
201
+ | `hybrid-smart` | `--kling-preset`, `--aspect`, `--nano-size`, `--gpt-image-size`, `--gpt-image-quality`, `--gpt-image-format`, `--max-kling-custom-shots`, `--platforms`, `--reference-mode`, `--max-storyboard-phases` |
202
+ | `gpt-image-smart` | `--kling-preset`, `--aspect`, `--gpt-image-size`, `--gpt-image-quality`, `--gpt-image-format`, `--max-kling-custom-shots`, `--platforms`, `--reference-mode`, `--max-storyboard-phases` |
203
+ | `studio` | `--model`, `--kling-preset`, `--max-teammates`, `--batch-size`, `--refs-dir`, `--fal-image-model`, `--fal-video-model`, `--gpt-image-size`, `--gpt-image-quality`, `--gpt-image-format`, `--platforms`, `--reference-mode`, `--max-storyboard-phases` |
155
204
 
156
205
  ### Supported Flag Values
157
206
 
158
207
  | Flag | Supported values |
159
208
  |---|---|
160
- | `--preset` | `single`, `multi`, `hybrid`, `hybrid-smart`, `studio` |
209
+ | `--preset` | `single`, `multi`, `hybrid`, `hybrid-smart`, `gpt-image-smart`, `studio` |
161
210
  | `--model` | `veo31`, `kling-3.0`, `seedance-2.0` |
162
211
  | `--kling-preset` | `ultra-realism`, `balanced`, `custom` |
163
212
  | `--aspect` | `16:9`, `9:16`, `1:1` |
164
213
  | `--nano-size` | `1K`, `2K`, `4K` |
214
+ | `--gpt-image-size` | `auto` or `WIDTHxHEIGHT` where both edges are multiples of 16, max edge <= 3840, ratio <= 3:1, and total pixels stay within GPT Image 2 limits |
215
+ | `--gpt-image-quality` | `low`, `medium`, `high`, `auto` |
216
+ | `--gpt-image-format` | `png`, `jpeg`, `webp` |
165
217
  | `--platforms` | `cursor`, `claude`, `copilot`, `antigravity`, `codex` |
218
+ | `--reference-mode` | `start-end`, `storyboard-reference`, `hybrid` |
166
219
 
167
220
  ## Canonical Config
168
221
 
@@ -177,12 +230,23 @@ Example:
177
230
  "scenarioHint": "scenario.md",
178
231
  "platforms": ["cursor", "claude", "copilot", "antigravity", "codex"],
179
232
  "model": "seedance-2.0",
233
+ "referenceMode": "storyboard-reference",
234
+ "storyboardReferenceMode": {
235
+ "enabled": true,
236
+ "maxStoryboardPhases": 4,
237
+ "generateAllModelPrompts": true,
238
+ "strictReferenceLock": true,
239
+ "splitStoryboardOverload": true
240
+ },
180
241
  "klingPreset": "ultra-realism",
181
242
  "maxTeammates": 5,
182
243
  "batchSize": 4,
183
244
  "refsDir": "./refs",
184
245
  "falImageModel": "fal-ai/nano-banana-2/edit",
185
246
  "falVideoModel": "fal-ai/kling-video/v3/pro/image-to-video",
247
+ "gptImageSize": "2048x1152",
248
+ "gptImageQuality": "medium",
249
+ "gptImageFormat": "png",
186
250
  "includeAgentsMd": true,
187
251
  "copyContent": true
188
252
  }
@@ -190,24 +254,29 @@ Example:
190
254
 
191
255
  ### Config Field Support Matrix
192
256
 
193
- | Field | `single` | `multi` | `hybrid` | `hybrid-smart` | `studio` |
194
- |---|---|---|---|---|---|
195
- | `preset` | yes | yes | yes | yes | yes |
196
- | `outputDir` | yes | yes | yes | yes | yes |
197
- | `scenarioHint` | yes | yes | yes | yes | yes |
198
- | `platforms` | yes | no | yes | yes | yes |
199
- | `model` | yes | yes | no | no | yes |
200
- | `klingPreset` | yes | yes | yes | yes | yes |
201
- | `maxTeammates` | no | yes | no | no | yes |
202
- | `batchSize` | no | yes | no | no | yes |
203
- | `defaultAspectRatio` | no | no | yes | yes | no |
204
- | `nanoBananaImageSize` | no | no | yes | yes | no |
205
- | `maxKlingCustomShots` | no | no | no | yes | no |
206
- | `refsDir` | no | no | no | no | yes |
207
- | `falImageModel` | no | no | no | no | yes |
208
- | `falVideoModel` | no | no | no | no | yes |
209
- | `includeAgentsMd` | yes | yes | yes | yes | yes |
210
- | `copyContent` | yes | yes | yes | yes | yes |
257
+ | Field | `single` | `multi` | `hybrid` | `hybrid-smart` | `gpt-image-smart` | `studio` |
258
+ |---|---|---|---|---|---|---|
259
+ | `preset` | yes | yes | yes | yes | yes | yes |
260
+ | `outputDir` | yes | yes | yes | yes | yes | yes |
261
+ | `scenarioHint` | yes | yes | yes | yes | yes | yes |
262
+ | `platforms` | yes | no | yes | yes | yes | yes |
263
+ | `model` | yes | yes | no | no | no | yes |
264
+ | `referenceMode` | yes | yes | yes | yes | yes | yes |
265
+ | `storyboardReferenceMode` | yes | yes | yes | yes | yes | yes |
266
+ | `klingPreset` | yes | yes | yes | yes | yes | yes |
267
+ | `maxTeammates` | no | yes | no | no | no | yes |
268
+ | `batchSize` | no | yes | no | no | no | yes |
269
+ | `defaultAspectRatio` | no | no | yes | yes | yes | no |
270
+ | `nanoBananaImageSize` | no | no | yes | yes | no | no |
271
+ | `gptImageSize` | no | no | yes | yes | yes | yes |
272
+ | `gptImageQuality` | no | no | yes | yes | yes | yes |
273
+ | `gptImageFormat` | no | no | yes | yes | yes | yes |
274
+ | `maxKlingCustomShots` | no | no | no | yes | yes | no |
275
+ | `refsDir` | no | no | no | no | no | yes |
276
+ | `falImageModel` | no | no | no | no | no | yes |
277
+ | `falVideoModel` | no | no | no | no | no | yes |
278
+ | `includeAgentsMd` | yes | yes | yes | yes | yes | yes |
279
+ | `copyContent` | yes | yes | yes | yes | yes | yes |
211
280
 
212
281
  ## Legacy Config Migration
213
282
 
@@ -217,6 +286,7 @@ Film-Kit automatically detects and migrates one existing legacy config file on f
217
286
  - `film-kit-multi.config.json`
218
287
  - `film-kit-hybrid.config.json`
219
288
  - `film-kit-hybrid-smart.config.json`
289
+ - `film-kit-gpt-image-smart.config.json`
220
290
  - `film-kit-studio.config.json`
221
291
 
222
292
  Migration behavior:
@@ -240,7 +310,7 @@ Film-Kit writes repo-scoped runtime files for supported editors and agents. Depe
240
310
  - `.cursor/`
241
311
  - `.github/copilot-instructions.md`
242
312
  - `AGENTS.md`
243
- - runtime workflows such as `generate`, `codex-images`, `chain`, `safety-check`, `recover`, `finish`
313
+ - runtime workflows such as `generate`, `generate-storyboard`, `codex-images`, `chain`, `safety-check`, `recover`, `finish`
244
314
 
245
315
  Editorial/runtime contract shared across the package:
246
316
 
@@ -257,7 +327,7 @@ Editorial/runtime contract shared across the package:
257
327
 
258
328
  When a reference image exists, Film-Kit now treats it as an immutable source, not a loose style hint.
259
329
 
260
- Default behavior across `single`, `multi`, `hybrid`, `hybrid-smart`, and `studio`:
330
+ Default behavior across `single`, `multi`, `hybrid`, `hybrid-smart`, `gpt-image-smart`, and `studio`:
261
331
 
262
332
  - face, hair, skin tone, body proportions, wardrobe, accessories, props, materials, patterns, and logos are treated as locked invariants
263
333
  - generated prompts should not re-describe identity details already visible in the reference
@@ -289,7 +359,7 @@ This means:
289
359
  - old image-quality heuristics based on minimum word counts are no longer the primary control surface
290
360
  - detailed prose is still expected for video prompts, where motion, timing, audio, and camera language need richer direction
291
361
 
292
- `hybrid` and `hybrid-smart` keep their compact still-prompt behavior. `single`, `multi`, and `studio` keep richer video prompt behavior for Veo, Kling, and Seedance.
362
+ `hybrid`, `hybrid-smart`, and `gpt-image-smart` keep structured still-prompt behavior. `single`, `multi`, and `studio` keep richer video prompt behavior for Veo, Kling, and Seedance.
293
363
 
294
364
  ## Semantic QA And Render QA
295
365
 
@@ -386,6 +456,9 @@ Supported postinstall environment variables:
386
456
  - `FILM_KIT_KLING_PRESET`
387
457
  - `FILM_KIT_HYBRID_ASPECT`
388
458
  - `FILM_KIT_HYBRID_IMAGE_SIZE`
459
+ - `FILM_KIT_GPT_IMAGE_SIZE`
460
+ - `FILM_KIT_GPT_IMAGE_QUALITY`
461
+ - `FILM_KIT_GPT_IMAGE_FORMAT`
389
462
  - `FILM_KIT_MAX_TEAMMATES`
390
463
  - `FILM_KIT_BATCH_SIZE`
391
464
  - `FILM_KIT_MAX_KLING_CUSTOM_SHOTS`
@@ -406,6 +479,7 @@ Internal preset source layout:
406
479
  - `packages/multi`
407
480
  - `packages/hybrid`
408
481
  - `packages/hybrid-smart`
482
+ - `packages/gpt-image-smart`
409
483
  - `packages/studio`
410
484
 
411
485
  These subpackages are marked `private: true` and are bundled as internal sources for the root package build and tarball.
package/build/cli.js CHANGED
@@ -1,13 +1,29 @@
1
1
  #!/usr/bin/env node
2
2
  import { parseCliCommand, renderCliUsage } from "./lib/cli.js";
3
3
  import { configureFilmKit } from "./lib/film-kit.js";
4
+ import { buildStoryboardReferencePromptBundles, writeStoryboardReferenceOutputs } from "./lib/storyboard-reference/index.js";
4
5
  const args = process.argv.slice(2);
5
6
  try {
6
7
  const parsed = await parseCliCommand(args, process.cwd());
7
- if (parsed.command === "help" || !parsed.options) {
8
+ if (parsed.command === "help") {
8
9
  console.log(renderCliUsage());
9
10
  process.exit(0);
10
11
  }
12
+ if (parsed.command === "generate-storyboard") {
13
+ if (!parsed.storyboardRequest) {
14
+ throw new Error("Missing generate-storyboard request.");
15
+ }
16
+ console.log("šŸŽ¬ Film-Kit: Generating storyboard-reference prompt bundle...\n");
17
+ const buildResult = buildStoryboardReferencePromptBundles(parsed.storyboardRequest);
18
+ const writeResult = await writeStoryboardReferenceOutputs(buildResult, process.cwd());
19
+ console.log(`āœ… Files written: ${writeResult.written.length}`);
20
+ writeResult.written.forEach(file => console.log(` ${file}`));
21
+ console.log(`\nšŸŽ¬ Done! Storyboard-reference outputs are ready in ${writeResult.rootDir}\n`);
22
+ process.exit(0);
23
+ }
24
+ if (!parsed.options) {
25
+ throw new Error("Missing init options.");
26
+ }
11
27
  console.log(`šŸŽ¬ Film-Kit: Configuring '${parsed.options.preset}' preset...\n`);
12
28
  const result = await configureFilmKit(parsed.options);
13
29
  if (result.written.length > 0) {
package/build/index.d.ts CHANGED
@@ -1,3 +1,5 @@
1
1
  export { configureFilmKit, detectFilmKitPreset, FILM_KIT_CONFIG_FILE, FILM_KIT_PRESETS, LEGACY_CONFIG_FILES } from "./lib/film-kit.js";
2
2
  export { configureAgents } from "./lib/configure.js";
3
- export type { AgentConfigOptions, ConfigureFilmKitResult, ConfigureResult, FilmKitConfigFile, FilmKitConfigOptions, FilmKitPreset, HybridAspectRatio, KlingPreset, NanoBananaImageSize, SupportedModel, SupportedPlatform } from "./lib/types.js";
3
+ export { buildStoryboardReferencePromptBundles, normalizeVideoPromptRequest, renderShotMarkdown, writeStoryboardReferenceOutputs } from "./lib/storyboard-reference/index.js";
4
+ export type { AgentConfigOptions, ConfigureFilmKitResult, ConfigureResult, FilmKitConfigFile, FilmKitConfigOptions, FilmKitPreset, GptImageFormat, GptImageQuality, GptImageSize, HybridAspectRatio, KlingPreset, NanoBananaImageSize, ReferenceMode, StoryboardReferenceConfig, SupportedModel, SupportedPlatform } from "./lib/types.js";
5
+ export type { ModelPromptOutput, PromptBundle, ReferenceAsset, StoryboardReferenceBuildResult, StoryboardReferenceWriteResult, VideoPromptRequest } from "./lib/storyboard-reference/index.js";
package/build/index.js CHANGED
@@ -1,2 +1,3 @@
1
1
  export { configureFilmKit, detectFilmKitPreset, FILM_KIT_CONFIG_FILE, FILM_KIT_PRESETS, LEGACY_CONFIG_FILES } from "./lib/film-kit.js";
2
2
  export { configureAgents } from "./lib/configure.js";
3
+ export { buildStoryboardReferencePromptBundles, normalizeVideoPromptRequest, renderShotMarkdown, writeStoryboardReferenceOutputs } from "./lib/storyboard-reference/index.js";
@@ -1,7 +1,9 @@
1
+ import type { VideoPromptRequest } from "./storyboard-reference/index.js";
1
2
  import type { FilmKitConfigOptions } from "./types.js";
2
3
  export interface ParsedCliCommand {
3
- command: "init" | "help";
4
+ command: "init" | "generate-storyboard" | "help";
4
5
  options?: FilmKitConfigOptions;
6
+ storyboardRequest?: VideoPromptRequest;
5
7
  }
6
8
  export declare function parseCliCommand(args: string[], rootDir?: string): Promise<ParsedCliCommand>;
7
9
  export declare function renderCliUsage(): string;