@milenyumai/film-kit 2.0.1 → 2.2.0

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 (129) hide show
  1. package/README.md +112 -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 +134 -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 -22
  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/content/workflows/generate.md +5 -0
  54. package/package.json +7 -3
  55. package/packages/gpt-image-smart/LICENSE +21 -0
  56. package/packages/gpt-image-smart/README.md +69 -0
  57. package/packages/gpt-image-smart/build/cli.d.ts +2 -0
  58. package/packages/gpt-image-smart/build/cli.js +121 -0
  59. package/packages/gpt-image-smart/build/index.d.ts +2 -0
  60. package/packages/gpt-image-smart/build/index.js +1 -0
  61. package/packages/gpt-image-smart/build/lib/configure.d.ts +2 -0
  62. package/packages/gpt-image-smart/build/lib/configure.js +247 -0
  63. package/packages/gpt-image-smart/build/lib/defaults.d.ts +3 -0
  64. package/packages/gpt-image-smart/build/lib/defaults.js +75 -0
  65. package/packages/gpt-image-smart/build/lib/fs.d.ts +3 -0
  66. package/packages/gpt-image-smart/build/lib/fs.js +23 -0
  67. package/packages/gpt-image-smart/build/lib/templates.d.ts +2 -0
  68. package/packages/gpt-image-smart/build/lib/templates.js +862 -0
  69. package/packages/gpt-image-smart/build/lib/types.d.ts +54 -0
  70. package/packages/gpt-image-smart/build/lib/types.js +1 -0
  71. package/packages/gpt-image-smart/build/postinstall.d.ts +1 -0
  72. package/packages/gpt-image-smart/build/postinstall.js +34 -0
  73. package/packages/gpt-image-smart/content/GPT-IMAGE-SMART-OVERRIDES.md +119 -0
  74. package/packages/gpt-image-smart/content/skills/gpt-image-2-cinematic/SKILL.md +106 -0
  75. package/packages/gpt-image-smart/content/skills/prompt-structure/SKILL.md +288 -0
  76. package/packages/gpt-image-smart/content/skills/storyboard-reference/SKILL.md +28 -0
  77. package/packages/gpt-image-smart/content/workflows/generate-storyboard.md +19 -0
  78. package/packages/gpt-image-smart/content/workflows/generate.md +148 -0
  79. package/packages/hybrid/README.md +1 -0
  80. package/packages/hybrid/build/cli.js +38 -0
  81. package/packages/hybrid/build/index.d.ts +1 -1
  82. package/packages/hybrid/build/lib/configure.js +19 -0
  83. package/packages/hybrid/build/lib/defaults.d.ts +2 -1
  84. package/packages/hybrid/build/lib/defaults.js +43 -0
  85. package/packages/hybrid/build/lib/templates.js +142 -10
  86. package/packages/hybrid/build/lib/types.d.ts +11 -0
  87. package/packages/hybrid/build/postinstall.js +7 -1
  88. package/packages/hybrid/content/HYBRID-OVERRIDES.md +6 -0
  89. package/packages/hybrid/content/skills/nano-banana-pro-image/SKILL.md +10 -1
  90. package/packages/hybrid/content/skills/prompt-structure/SKILL.md +8 -2
  91. package/packages/hybrid/content/skills/storyboard-reference/SKILL.md +28 -0
  92. package/packages/hybrid/content/workflows/generate-storyboard.md +19 -0
  93. package/packages/hybrid/content/workflows/generate.md +11 -0
  94. package/packages/hybrid-smart/README.md +1 -0
  95. package/packages/hybrid-smart/build/cli.js +38 -0
  96. package/packages/hybrid-smart/build/index.d.ts +1 -1
  97. package/packages/hybrid-smart/build/lib/configure.js +19 -0
  98. package/packages/hybrid-smart/build/lib/defaults.d.ts +2 -1
  99. package/packages/hybrid-smart/build/lib/defaults.js +43 -0
  100. package/packages/hybrid-smart/build/lib/templates.js +188 -37
  101. package/packages/hybrid-smart/build/lib/types.d.ts +11 -0
  102. package/packages/hybrid-smart/build/postinstall.js +7 -1
  103. package/packages/hybrid-smart/content/SMART-HYBRID-OVERRIDES.md +10 -4
  104. package/packages/hybrid-smart/content/skills/nano-banana-pro-image/SKILL.md +16 -4
  105. package/packages/hybrid-smart/content/skills/prompt-structure/SKILL.md +15 -6
  106. package/packages/hybrid-smart/content/skills/storyboard-reference/SKILL.md +28 -0
  107. package/packages/hybrid-smart/content/workflows/generate-storyboard.md +19 -0
  108. package/packages/hybrid-smart/content/workflows/generate.md +13 -1
  109. package/packages/multi/README.md +2 -0
  110. package/packages/multi/build/lib/configure.js +3 -1
  111. package/packages/multi/build/lib/templates.js +102 -1
  112. package/packages/multi/content/agents/lead-director.md +1 -0
  113. package/packages/multi/content/skills/storyboard-reference/SKILL.md +28 -0
  114. package/packages/multi/content/workflows/generate-multi.md +1 -0
  115. package/packages/multi/content/workflows/generate-storyboard.md +19 -0
  116. package/packages/studio/README.md +2 -0
  117. package/packages/studio/build/cli.js +34 -1
  118. package/packages/studio/build/index.d.ts +1 -1
  119. package/packages/studio/build/lib/configure.js +23 -2
  120. package/packages/studio/build/lib/defaults.d.ts +2 -1
  121. package/packages/studio/build/lib/defaults.js +48 -0
  122. package/packages/studio/build/lib/templates.js +175 -8
  123. package/packages/studio/build/lib/types.d.ts +11 -0
  124. package/packages/studio/build/postinstall.js +9 -0
  125. package/packages/studio/content/agents/render-supervisor.md +5 -0
  126. package/packages/studio/content/skills/fal-render/SKILL.md +11 -0
  127. package/packages/studio/content/skills/storyboard-reference/SKILL.md +28 -0
  128. package/packages/studio/content/workflows/generate-storyboard.md +19 -0
  129. package/packages/studio/content/workflows/render.md +4 -1
package/README.md CHANGED
@@ -44,22 +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
 
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.
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
+
54
60
  ## Presets
55
61
 
56
62
  | Preset | Purpose | Supported video model surface | Default notes |
57
63
  |---|---|---|---|
58
64
  | `single` | Single-agent prompt runtime | `veo31`, `kling-3.0`, `seedance-2.0` | Defaults to all supported platforms |
59
65
  | `multi` | Lead-directed multi-agent shot generation | `veo31`, `kling-3.0`, `seedance-2.0` | Defaults to `maxTeammates=5`, `batchSize=4` |
60
- | `hybrid` | Nano Banana still generation + fixed Kling video runtime | fixed `kling-3.0` | No `--model` flag |
61
- | `hybrid-smart` | Nano Banana still generation + dialogue-aware Veo/Kling routing | fixed smart route | No `--model` flag |
62
- | `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 |
63
70
 
64
71
  ## Model Support
65
72
 
@@ -85,15 +92,25 @@ After the first run, Film-Kit writes `film-kit.config.json` and uses that file a
85
92
  - Supported in `single`, `multi`, and `studio`
86
93
  - Fixed inside `hybrid`
87
94
  - Part of the router inside `hybrid-smart`
95
+ - Part of the router inside `gpt-image-smart`
88
96
  - Uses Kling-specific Start+End / storyboard prompt structure
89
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
+
90
107
  ### `kling-preset`
91
108
 
92
109
  `preset` and `kling-preset` are different things:
93
110
 
94
111
  - `preset` selects the Film-Kit product mode
95
112
  - `kling-preset` selects Kling quality behavior
96
- - `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
97
114
 
98
115
  Supported `kling-preset` values:
99
116
 
@@ -103,12 +120,41 @@ Supported `kling-preset` values:
103
120
 
104
121
  When the active model is not Kling, generated runtime files intentionally render the Kling preset as `n/a (Kling-only)`.
105
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
+
106
152
  ## CLI
107
153
 
108
154
  Base command:
109
155
 
110
156
  ```bash
111
- 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
112
158
  ```
113
159
 
114
160
  Help:
@@ -122,10 +168,12 @@ Examples:
122
168
  ```bash
123
169
  npx @milenyumai/film-kit init --preset single --model veo31
124
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
125
172
  npx @milenyumai/film-kit init --preset multi --model seedance-2.0 --max-teammates 5 --batch-size 4
126
173
  npx @milenyumai/film-kit init --preset multi --model kling-3.0 --kling-preset balanced
127
174
  npx @milenyumai/film-kit init --preset hybrid --kling-preset ultra-realism --aspect 16:9 --nano-size 2K
128
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
129
177
  npx @milenyumai/film-kit init --preset studio --model seedance-2.0 --refs-dir ./refs
130
178
  npx @milenyumai/film-kit init --preset studio --model kling-3.0 --fal-video-model fal-ai/kling-video/v3/pro/image-to-video
131
179
  npx @milenyumai/film-kit init --preset single --overwrite
@@ -140,27 +188,34 @@ npx @milenyumai/film-kit init --preset single --overwrite
140
188
  | `--scenario-hint` | Scenario file hint. Default: `scenario.md` |
141
189
  | `--scenario` | Alias of `--scenario-hint` |
142
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` |
143
193
 
144
194
  ### Preset-Specific Flags
145
195
 
146
196
  | Preset | Allowed flags |
147
197
  |---|---|
148
- | `single` | `--model`, `--kling-preset`, `--platforms` |
149
- | `multi` | `--model`, `--kling-preset`, `--max-teammates`, `--batch-size` |
150
- | `hybrid` | `--kling-preset`, `--aspect`, `--nano-size`, `--platforms` |
151
- | `hybrid-smart` | `--kling-preset`, `--aspect`, `--nano-size`, `--max-kling-custom-shots`, `--platforms` |
152
- | `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` |
153
204
 
154
205
  ### Supported Flag Values
155
206
 
156
207
  | Flag | Supported values |
157
208
  |---|---|
158
- | `--preset` | `single`, `multi`, `hybrid`, `hybrid-smart`, `studio` |
209
+ | `--preset` | `single`, `multi`, `hybrid`, `hybrid-smart`, `gpt-image-smart`, `studio` |
159
210
  | `--model` | `veo31`, `kling-3.0`, `seedance-2.0` |
160
211
  | `--kling-preset` | `ultra-realism`, `balanced`, `custom` |
161
212
  | `--aspect` | `16:9`, `9:16`, `1:1` |
162
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` |
163
217
  | `--platforms` | `cursor`, `claude`, `copilot`, `antigravity`, `codex` |
218
+ | `--reference-mode` | `start-end`, `storyboard-reference`, `hybrid` |
164
219
 
165
220
  ## Canonical Config
166
221
 
@@ -175,12 +230,23 @@ Example:
175
230
  "scenarioHint": "scenario.md",
176
231
  "platforms": ["cursor", "claude", "copilot", "antigravity", "codex"],
177
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
+ },
178
241
  "klingPreset": "ultra-realism",
179
242
  "maxTeammates": 5,
180
243
  "batchSize": 4,
181
244
  "refsDir": "./refs",
182
245
  "falImageModel": "fal-ai/nano-banana-2/edit",
183
246
  "falVideoModel": "fal-ai/kling-video/v3/pro/image-to-video",
247
+ "gptImageSize": "2048x1152",
248
+ "gptImageQuality": "medium",
249
+ "gptImageFormat": "png",
184
250
  "includeAgentsMd": true,
185
251
  "copyContent": true
186
252
  }
@@ -188,24 +254,29 @@ Example:
188
254
 
189
255
  ### Config Field Support Matrix
190
256
 
191
- | Field | `single` | `multi` | `hybrid` | `hybrid-smart` | `studio` |
192
- |---|---|---|---|---|---|
193
- | `preset` | yes | yes | yes | yes | yes |
194
- | `outputDir` | yes | yes | yes | yes | yes |
195
- | `scenarioHint` | yes | yes | yes | yes | yes |
196
- | `platforms` | yes | no | yes | yes | yes |
197
- | `model` | yes | yes | no | no | yes |
198
- | `klingPreset` | yes | yes | yes | yes | yes |
199
- | `maxTeammates` | no | yes | no | no | yes |
200
- | `batchSize` | no | yes | no | no | yes |
201
- | `defaultAspectRatio` | no | no | yes | yes | no |
202
- | `nanoBananaImageSize` | no | no | yes | yes | no |
203
- | `maxKlingCustomShots` | no | no | no | yes | no |
204
- | `refsDir` | no | no | no | no | yes |
205
- | `falImageModel` | no | no | no | no | yes |
206
- | `falVideoModel` | no | no | no | no | yes |
207
- | `includeAgentsMd` | yes | yes | yes | yes | yes |
208
- | `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 |
209
280
 
210
281
  ## Legacy Config Migration
211
282
 
@@ -215,6 +286,7 @@ Film-Kit automatically detects and migrates one existing legacy config file on f
215
286
  - `film-kit-multi.config.json`
216
287
  - `film-kit-hybrid.config.json`
217
288
  - `film-kit-hybrid-smart.config.json`
289
+ - `film-kit-gpt-image-smart.config.json`
218
290
  - `film-kit-studio.config.json`
219
291
 
220
292
  Migration behavior:
@@ -238,13 +310,14 @@ Film-Kit writes repo-scoped runtime files for supported editors and agents. Depe
238
310
  - `.cursor/`
239
311
  - `.github/copilot-instructions.md`
240
312
  - `AGENTS.md`
241
- - runtime workflows such as `generate`, `chain`, `safety-check`, `recover`, `finish`
313
+ - runtime workflows such as `generate`, `generate-storyboard`, `codex-images`, `chain`, `safety-check`, `recover`, `finish`
242
314
 
243
315
  Editorial/runtime contract shared across the package:
244
316
 
245
317
  - one file per shot: `SHOTNN.md`
246
318
  - coverage lives inside the same shot file
247
319
  - report files live under `reports/`
320
+ - optional Codex still outputs live under `codex-images/` with `manifest.json` and `reports/CODEX-IMAGE-REPORT.md`
248
321
  - continuity and first-frame chaining are explicit
249
322
  - voice design uses top-level `voiceCast`
250
323
  - per-shot sound control uses `Audio Plan`
@@ -254,7 +327,7 @@ Editorial/runtime contract shared across the package:
254
327
 
255
328
  When a reference image exists, Film-Kit now treats it as an immutable source, not a loose style hint.
256
329
 
257
- Default behavior across `single`, `multi`, `hybrid`, `hybrid-smart`, and `studio`:
330
+ Default behavior across `single`, `multi`, `hybrid`, `hybrid-smart`, `gpt-image-smart`, and `studio`:
258
331
 
259
332
  - face, hair, skin tone, body proportions, wardrobe, accessories, props, materials, patterns, and logos are treated as locked invariants
260
333
  - generated prompts should not re-describe identity details already visible in the reference
@@ -286,7 +359,7 @@ This means:
286
359
  - old image-quality heuristics based on minimum word counts are no longer the primary control surface
287
360
  - detailed prose is still expected for video prompts, where motion, timing, audio, and camera language need richer direction
288
361
 
289
- `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.
290
363
 
291
364
  ## Semantic QA And Render QA
292
365
 
@@ -383,6 +456,9 @@ Supported postinstall environment variables:
383
456
  - `FILM_KIT_KLING_PRESET`
384
457
  - `FILM_KIT_HYBRID_ASPECT`
385
458
  - `FILM_KIT_HYBRID_IMAGE_SIZE`
459
+ - `FILM_KIT_GPT_IMAGE_SIZE`
460
+ - `FILM_KIT_GPT_IMAGE_QUALITY`
461
+ - `FILM_KIT_GPT_IMAGE_FORMAT`
386
462
  - `FILM_KIT_MAX_TEAMMATES`
387
463
  - `FILM_KIT_BATCH_SIZE`
388
464
  - `FILM_KIT_MAX_KLING_CUSTOM_SHOTS`
@@ -403,6 +479,7 @@ Internal preset source layout:
403
479
  - `packages/multi`
404
480
  - `packages/hybrid`
405
481
  - `packages/hybrid-smart`
482
+ - `packages/gpt-image-smart`
406
483
  - `packages/studio`
407
484
 
408
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;