@mytechtoday/augment-extensions 2.2.0 → 2.3.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.
- package/README.md +121 -11
- package/augment-extensions/coding-standards/perl/README.md +173 -0
- package/cli/dist/commands/generate-shot-list/formatter/json-formatter.d.ts +1 -0
- package/cli/dist/commands/generate-shot-list/formatter/json-formatter.d.ts.map +1 -1
- package/cli/dist/commands/generate-shot-list/formatter/json-formatter.js +6 -0
- package/cli/dist/commands/generate-shot-list/formatter/json-formatter.js.map +1 -1
- package/cli/dist/commands/generate-shot-list/formatter/jsonl-formatter.d.ts +1 -0
- package/cli/dist/commands/generate-shot-list/formatter/jsonl-formatter.d.ts.map +1 -1
- package/cli/dist/commands/generate-shot-list/formatter/jsonl-formatter.js +6 -0
- package/cli/dist/commands/generate-shot-list/formatter/jsonl-formatter.js.map +1 -1
- package/cli/dist/commands/generate-shot-list/formatter/markdown-formatter.d.ts +14 -0
- package/cli/dist/commands/generate-shot-list/formatter/markdown-formatter.d.ts.map +1 -1
- package/cli/dist/commands/generate-shot-list/formatter/markdown-formatter.js +46 -3
- package/cli/dist/commands/generate-shot-list/formatter/markdown-formatter.js.map +1 -1
- package/cli/dist/commands/generate-shot-list/generator/context-builder.d.ts +29 -1
- package/cli/dist/commands/generate-shot-list/generator/context-builder.d.ts.map +1 -1
- package/cli/dist/commands/generate-shot-list/generator/context-builder.js +310 -27
- package/cli/dist/commands/generate-shot-list/generator/context-builder.js.map +1 -1
- package/cli/dist/commands/generate-shot-list/generator/index.d.ts +18 -0
- package/cli/dist/commands/generate-shot-list/generator/index.d.ts.map +1 -1
- package/cli/dist/commands/generate-shot-list/generator/index.js +146 -19
- package/cli/dist/commands/generate-shot-list/generator/index.js.map +1 -1
- package/cli/dist/commands/generate-shot-list/generator/metadata-extractor.d.ts.map +1 -1
- package/cli/dist/commands/generate-shot-list/generator/metadata-extractor.js +1 -0
- package/cli/dist/commands/generate-shot-list/generator/metadata-extractor.js.map +1 -1
- package/cli/dist/commands/generate-shot-list/generator/types.d.ts +10 -3
- package/cli/dist/commands/generate-shot-list/generator/types.d.ts.map +1 -1
- package/cli/dist/commands/generate-shot-list/schema/shot-list.schema.json +341 -0
- package/cli/dist/commands/generate-shot-list/schema/validator.d.ts +55 -0
- package/cli/dist/commands/generate-shot-list/schema/validator.d.ts.map +1 -0
- package/cli/dist/commands/generate-shot-list/schema/validator.js +180 -0
- package/cli/dist/commands/generate-shot-list/schema/validator.js.map +1 -0
- package/cli/dist/commands/generate-shot-list.d.ts.map +1 -1
- package/cli/dist/commands/generate-shot-list.js +35 -24
- package/cli/dist/commands/generate-shot-list.js.map +1 -1
- package/package.json +2 -1
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
* build complete set and character descriptions per shot.
|
|
7
7
|
*
|
|
8
8
|
* Task: bd-shot-list-3.3
|
|
9
|
+
* Requirement 10: Rich Character Descriptions (Character Bible)
|
|
10
|
+
* Requirement 11: Rich Set Descriptions (Set Bible)
|
|
9
11
|
*/
|
|
10
12
|
import { Scene, SceneElement } from '../parser/types';
|
|
11
13
|
import { SceneContext, CharacterState } from './types';
|
|
@@ -19,20 +21,44 @@ export interface ContextBuilderConfig {
|
|
|
19
21
|
}
|
|
20
22
|
/**
|
|
21
23
|
* Context Builder class
|
|
24
|
+
* Requirement 9: Track character blocking continuity across shots
|
|
25
|
+
* Requirement 10: Maintain Character Bible for consistent descriptions
|
|
26
|
+
* Requirement 11: Maintain Set Bible for consistent descriptions
|
|
22
27
|
*/
|
|
23
28
|
export declare class ContextBuilder {
|
|
24
29
|
private config;
|
|
30
|
+
private characterBlockingHistory;
|
|
31
|
+
private characterBible;
|
|
32
|
+
private setBible;
|
|
25
33
|
constructor(config: ContextBuilderConfig);
|
|
26
34
|
/**
|
|
27
35
|
* Build scene-level context from scene heading and elements
|
|
36
|
+
* Requirement 11: Use Set Bible to maintain rich, consistent set descriptions
|
|
28
37
|
*/
|
|
29
38
|
buildSceneContext(scene: Scene): SceneContext;
|
|
30
39
|
/**
|
|
31
40
|
* Build character states from scene elements
|
|
41
|
+
* Requirement 9: Maintain character blocking continuity across shots
|
|
42
|
+
* Requirement 10: Use Character Bible to maintain rich, consistent character descriptions
|
|
32
43
|
*/
|
|
33
44
|
buildCharacterStates(elements: SceneElement[], sceneContext: SceneContext): CharacterState[];
|
|
34
45
|
/**
|
|
35
|
-
* Extract
|
|
46
|
+
* Extract environment description from scene
|
|
47
|
+
* Requirement 11: Rich Set Descriptions
|
|
48
|
+
*/
|
|
49
|
+
private extractEnvironment;
|
|
50
|
+
/**
|
|
51
|
+
* Extract rich lighting description from scene elements
|
|
52
|
+
* Requirement 11: Rich Set Descriptions (lighting type, quality, direction, color temp)
|
|
53
|
+
*/
|
|
54
|
+
private extractRichLighting;
|
|
55
|
+
/**
|
|
56
|
+
* Extract set dressing elements from scene
|
|
57
|
+
* Requirement 11: Rich Set Descriptions
|
|
58
|
+
*/
|
|
59
|
+
private extractSetDressing;
|
|
60
|
+
/**
|
|
61
|
+
* Extract lighting from scene elements (legacy method, kept for compatibility)
|
|
36
62
|
*/
|
|
37
63
|
private extractLighting;
|
|
38
64
|
/**
|
|
@@ -49,6 +75,8 @@ export declare class ContextBuilder {
|
|
|
49
75
|
private extractEmotion;
|
|
50
76
|
/**
|
|
51
77
|
* Update character states from action line
|
|
78
|
+
* Requirement 9: Extract blocking, wardrobe, and physical appearance details
|
|
79
|
+
* Requirement 10: Extract props and accessories for Character Bible
|
|
52
80
|
*/
|
|
53
81
|
private updateCharacterStatesFromAction;
|
|
54
82
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-builder.d.ts","sourceRoot":"","sources":["../../../../src/commands/generate-shot-list/generator/context-builder.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"context-builder.d.ts","sourceRoot":"","sources":["../../../../src/commands/generate-shot-list/generator/context-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,KAAK,EAAE,YAAY,EAAkC,MAAM,iBAAiB,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,cAAc,EAAE,OAAO,CAAC;IACxB,sBAAsB,EAAE,OAAO,CAAC;CACjC;AA6BD;;;;;GAKG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,wBAAwB,CAA0C;IAC1E,OAAO,CAAC,cAAc,CAA+C;IACrE,OAAO,CAAC,QAAQ,CAAyC;gBAE7C,MAAM,EAAE,oBAAoB;IAIxC;;;OAGG;IACH,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,YAAY;IAuD7C;;;;OAIG;IACH,oBAAoB,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,YAAY,EAAE,YAAY,GAAG,cAAc,EAAE;IAoF5F;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IA8B1B;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAyD3B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAsB1B;;OAEG;IACH,OAAO,CAAC,eAAe;IAIvB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAsBzB;;OAEG;IACH,OAAO,CAAC,cAAc;IAgBtB;;OAEG;IACH,OAAO,CAAC,cAAc;IAStB;;;;OAIG;IACH,OAAO,CAAC,+BAA+B;CA+GxC"}
|
|
@@ -7,35 +7,79 @@
|
|
|
7
7
|
* build complete set and character descriptions per shot.
|
|
8
8
|
*
|
|
9
9
|
* Task: bd-shot-list-3.3
|
|
10
|
+
* Requirement 10: Rich Character Descriptions (Character Bible)
|
|
11
|
+
* Requirement 11: Rich Set Descriptions (Set Bible)
|
|
10
12
|
*/
|
|
11
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
14
|
exports.ContextBuilder = void 0;
|
|
13
15
|
/**
|
|
14
16
|
* Context Builder class
|
|
17
|
+
* Requirement 9: Track character blocking continuity across shots
|
|
18
|
+
* Requirement 10: Maintain Character Bible for consistent descriptions
|
|
19
|
+
* Requirement 11: Maintain Set Bible for consistent descriptions
|
|
15
20
|
*/
|
|
16
21
|
class ContextBuilder {
|
|
17
22
|
constructor(config) {
|
|
23
|
+
this.characterBlockingHistory = new Map();
|
|
24
|
+
this.characterBible = new Map(); // Requirement 10
|
|
25
|
+
this.setBible = new Map(); // Requirement 11
|
|
18
26
|
this.config = config;
|
|
19
27
|
}
|
|
20
28
|
/**
|
|
21
29
|
* Build scene-level context from scene heading and elements
|
|
30
|
+
* Requirement 11: Use Set Bible to maintain rich, consistent set descriptions
|
|
22
31
|
*/
|
|
23
32
|
buildSceneContext(scene) {
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
33
|
+
const location = scene.heading.location;
|
|
34
|
+
// Check if we have this set in the Set Bible
|
|
35
|
+
let setBibleEntry = this.setBible.get(location);
|
|
36
|
+
if (!setBibleEntry) {
|
|
37
|
+
// Create new Set Bible entry with rich description
|
|
38
|
+
setBibleEntry = {
|
|
39
|
+
location,
|
|
40
|
+
environment: this.extractEnvironment(scene),
|
|
41
|
+
lighting: this.extractRichLighting(scene),
|
|
42
|
+
atmosphere: this.extractAtmosphere(scene) || 'neutral',
|
|
43
|
+
weather: this.config.includeWeather ? this.extractWeather(scene) : undefined,
|
|
44
|
+
timeOfDay: scene.heading.timeOfDay,
|
|
45
|
+
setDressing: this.extractSetDressing(scene)
|
|
46
|
+
};
|
|
47
|
+
this.setBible.set(location, setBibleEntry);
|
|
31
48
|
}
|
|
32
|
-
|
|
33
|
-
|
|
49
|
+
else {
|
|
50
|
+
// Update Set Bible entry if new information is available
|
|
51
|
+
const newLighting = this.extractRichLighting(scene);
|
|
52
|
+
if (newLighting && newLighting !== 'natural') {
|
|
53
|
+
setBibleEntry.lighting = newLighting;
|
|
54
|
+
}
|
|
55
|
+
const newAtmosphere = this.extractAtmosphere(scene);
|
|
56
|
+
if (newAtmosphere) {
|
|
57
|
+
setBibleEntry.atmosphere = newAtmosphere;
|
|
58
|
+
}
|
|
59
|
+
const newWeather = this.extractWeather(scene);
|
|
60
|
+
if (newWeather) {
|
|
61
|
+
setBibleEntry.weather = newWeather;
|
|
62
|
+
}
|
|
63
|
+
setBibleEntry.timeOfDay = scene.heading.timeOfDay;
|
|
64
|
+
const newSetDressing = this.extractSetDressing(scene);
|
|
65
|
+
if (newSetDressing.length > 0) {
|
|
66
|
+
setBibleEntry.setDressing = [...new Set([...setBibleEntry.setDressing, ...newSetDressing])];
|
|
67
|
+
}
|
|
34
68
|
}
|
|
69
|
+
// Build rich context from Set Bible
|
|
70
|
+
const context = {
|
|
71
|
+
set: `${setBibleEntry.environment} - ${location}`,
|
|
72
|
+
lighting: setBibleEntry.lighting,
|
|
73
|
+
timeOfDay: setBibleEntry.timeOfDay,
|
|
74
|
+
atmosphere: setBibleEntry.atmosphere,
|
|
75
|
+
weather: setBibleEntry.weather
|
|
76
|
+
};
|
|
35
77
|
return context;
|
|
36
78
|
}
|
|
37
79
|
/**
|
|
38
80
|
* Build character states from scene elements
|
|
81
|
+
* Requirement 9: Maintain character blocking continuity across shots
|
|
82
|
+
* Requirement 10: Use Character Bible to maintain rich, consistent character descriptions
|
|
39
83
|
*/
|
|
40
84
|
buildCharacterStates(elements, sceneContext) {
|
|
41
85
|
const characterMap = new Map();
|
|
@@ -44,11 +88,41 @@ class ContextBuilder {
|
|
|
44
88
|
const dialogueElement = element;
|
|
45
89
|
const characterName = dialogueElement.dialogue.character.name;
|
|
46
90
|
if (!characterMap.has(characterName)) {
|
|
91
|
+
// Check Character Bible first, then blocking history
|
|
92
|
+
let bibleEntry = this.characterBible.get(characterName);
|
|
93
|
+
const previousState = this.characterBlockingHistory.get(characterName);
|
|
94
|
+
if (!bibleEntry && previousState) {
|
|
95
|
+
// Create Character Bible entry from previous state
|
|
96
|
+
bibleEntry = {
|
|
97
|
+
name: characterName,
|
|
98
|
+
wardrobe: previousState.wardrobe || 'casual attire',
|
|
99
|
+
physicalAppearance: previousState.physicalAppearance || 'average build',
|
|
100
|
+
props: [],
|
|
101
|
+
lastSeenPosition: previousState.position || 'in scene',
|
|
102
|
+
lastSeenEmotion: previousState.emotion
|
|
103
|
+
};
|
|
104
|
+
this.characterBible.set(characterName, bibleEntry);
|
|
105
|
+
}
|
|
106
|
+
else if (!bibleEntry) {
|
|
107
|
+
// Create default Character Bible entry
|
|
108
|
+
bibleEntry = {
|
|
109
|
+
name: characterName,
|
|
110
|
+
wardrobe: 'casual attire',
|
|
111
|
+
physicalAppearance: 'average build',
|
|
112
|
+
props: [],
|
|
113
|
+
lastSeenPosition: 'in scene',
|
|
114
|
+
lastSeenEmotion: undefined
|
|
115
|
+
};
|
|
116
|
+
this.characterBible.set(characterName, bibleEntry);
|
|
117
|
+
}
|
|
118
|
+
// Build rich character state from Bible
|
|
47
119
|
characterMap.set(characterName, {
|
|
48
120
|
name: characterName,
|
|
49
|
-
position:
|
|
50
|
-
appearance: '
|
|
51
|
-
|
|
121
|
+
position: bibleEntry.lastSeenPosition,
|
|
122
|
+
appearance: `${bibleEntry.physicalAppearance}${bibleEntry.props.length > 0 ? ', carrying ' + bibleEntry.props.join(', ') : ''}`,
|
|
123
|
+
wardrobe: bibleEntry.wardrobe,
|
|
124
|
+
physicalAppearance: bibleEntry.physicalAppearance,
|
|
125
|
+
emotion: this.config.trackCharacterEmotions ? this.extractEmotion(dialogueElement) : bibleEntry.lastSeenEmotion,
|
|
52
126
|
action: undefined
|
|
53
127
|
});
|
|
54
128
|
}
|
|
@@ -58,6 +132,11 @@ class ContextBuilder {
|
|
|
58
132
|
const emotion = this.extractEmotion(dialogueElement);
|
|
59
133
|
if (emotion) {
|
|
60
134
|
characterMap.get(characterName).emotion = emotion;
|
|
135
|
+
// Update Bible
|
|
136
|
+
const bibleEntry = this.characterBible.get(characterName);
|
|
137
|
+
if (bibleEntry) {
|
|
138
|
+
bibleEntry.lastSeenEmotion = emotion;
|
|
139
|
+
}
|
|
61
140
|
}
|
|
62
141
|
}
|
|
63
142
|
}
|
|
@@ -67,42 +146,155 @@ class ContextBuilder {
|
|
|
67
146
|
this.updateCharacterStatesFromAction(actionElement, characterMap);
|
|
68
147
|
}
|
|
69
148
|
}
|
|
149
|
+
// Update blocking history and Character Bible for continuity
|
|
150
|
+
for (const [name, state] of characterMap.entries()) {
|
|
151
|
+
this.characterBlockingHistory.set(name, { ...state });
|
|
152
|
+
// Update Character Bible with latest information
|
|
153
|
+
const bibleEntry = this.characterBible.get(name);
|
|
154
|
+
if (bibleEntry) {
|
|
155
|
+
if (state.position)
|
|
156
|
+
bibleEntry.lastSeenPosition = state.position;
|
|
157
|
+
if (state.wardrobe)
|
|
158
|
+
bibleEntry.wardrobe = state.wardrobe;
|
|
159
|
+
if (state.physicalAppearance)
|
|
160
|
+
bibleEntry.physicalAppearance = state.physicalAppearance;
|
|
161
|
+
if (state.emotion)
|
|
162
|
+
bibleEntry.lastSeenEmotion = state.emotion;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
70
165
|
return Array.from(characterMap.values());
|
|
71
166
|
}
|
|
72
167
|
/**
|
|
73
|
-
* Extract
|
|
168
|
+
* Extract environment description from scene
|
|
169
|
+
* Requirement 11: Rich Set Descriptions
|
|
74
170
|
*/
|
|
75
|
-
|
|
171
|
+
extractEnvironment(scene) {
|
|
172
|
+
const intExt = scene.heading.intExt;
|
|
173
|
+
const location = scene.heading.location.toLowerCase();
|
|
174
|
+
// Determine environment type
|
|
175
|
+
if (intExt === 'INT') {
|
|
176
|
+
if (location.includes('office') || location.includes('workplace')) {
|
|
177
|
+
return 'Professional interior space';
|
|
178
|
+
}
|
|
179
|
+
else if (location.includes('home') || location.includes('house') || location.includes('apartment')) {
|
|
180
|
+
return 'Residential interior';
|
|
181
|
+
}
|
|
182
|
+
else if (location.includes('restaurant') || location.includes('cafe') || location.includes('bar')) {
|
|
183
|
+
return 'Commercial dining space';
|
|
184
|
+
}
|
|
185
|
+
else if (location.includes('store') || location.includes('shop')) {
|
|
186
|
+
return 'Retail interior';
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
return 'Interior space';
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
if (location.includes('street') || location.includes('sidewalk')) {
|
|
194
|
+
return 'Urban exterior';
|
|
195
|
+
}
|
|
196
|
+
else if (location.includes('park') || location.includes('forest') || location.includes('field')) {
|
|
197
|
+
return 'Natural outdoor setting';
|
|
198
|
+
}
|
|
199
|
+
else if (location.includes('parking') || location.includes('lot')) {
|
|
200
|
+
return 'Paved exterior area';
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
return 'Exterior location';
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Extract rich lighting description from scene elements
|
|
209
|
+
* Requirement 11: Rich Set Descriptions (lighting type, quality, direction, color temp)
|
|
210
|
+
*/
|
|
211
|
+
extractRichLighting(scene) {
|
|
76
212
|
const timeOfDay = scene.heading.timeOfDay.toLowerCase();
|
|
77
|
-
|
|
213
|
+
const intExt = scene.heading.intExt;
|
|
214
|
+
// Build rich lighting description
|
|
215
|
+
let lightingType = '';
|
|
216
|
+
let lightingQuality = '';
|
|
217
|
+
let lightingDirection = '';
|
|
218
|
+
let colorTemp = '';
|
|
219
|
+
// Determine lighting type and color temperature based on time of day
|
|
78
220
|
if (timeOfDay.includes('night')) {
|
|
79
|
-
|
|
221
|
+
lightingType = intExt === 'INT' ? 'artificial overhead lighting' : 'moonlight and street lamps';
|
|
222
|
+
colorTemp = intExt === 'INT' ? 'warm tungsten (3200K)' : 'cool blue (5500K)';
|
|
223
|
+
lightingQuality = 'low-key, high contrast';
|
|
80
224
|
}
|
|
81
225
|
else if (timeOfDay.includes('day')) {
|
|
82
|
-
|
|
226
|
+
lightingType = intExt === 'INT' ? 'natural window light' : 'direct sunlight';
|
|
227
|
+
colorTemp = 'daylight balanced (5600K)';
|
|
228
|
+
lightingQuality = 'bright, even illumination';
|
|
229
|
+
lightingDirection = intExt === 'INT' ? 'from windows' : 'overhead sun';
|
|
83
230
|
}
|
|
84
231
|
else if (timeOfDay.includes('dawn') || timeOfDay.includes('dusk')) {
|
|
85
|
-
|
|
232
|
+
lightingType = 'golden hour natural light';
|
|
233
|
+
colorTemp = 'warm amber (3000K)';
|
|
234
|
+
lightingQuality = 'soft, diffused';
|
|
235
|
+
lightingDirection = 'low angle';
|
|
86
236
|
}
|
|
87
237
|
else if (timeOfDay.includes('evening')) {
|
|
88
|
-
|
|
238
|
+
lightingType = intExt === 'INT' ? 'mixed natural and artificial' : 'twilight ambient';
|
|
239
|
+
colorTemp = 'cool to warm transition (4500K)';
|
|
240
|
+
lightingQuality = 'moderate, transitional';
|
|
89
241
|
}
|
|
90
|
-
|
|
242
|
+
else {
|
|
243
|
+
lightingType = 'natural ambient';
|
|
244
|
+
colorTemp = 'neutral (5000K)';
|
|
245
|
+
lightingQuality = 'balanced';
|
|
246
|
+
}
|
|
247
|
+
// Check action lines for specific lighting details
|
|
91
248
|
for (const element of scene.elements) {
|
|
92
249
|
if (element.type === 'action') {
|
|
93
250
|
const text = element.text.toLowerCase();
|
|
94
251
|
if (text.includes('dark') || text.includes('shadows')) {
|
|
95
|
-
|
|
252
|
+
lightingQuality = 'low-key, dramatic shadows';
|
|
96
253
|
}
|
|
97
254
|
else if (text.includes('bright') || text.includes('sunlight')) {
|
|
98
|
-
|
|
255
|
+
lightingQuality = 'high-key, bright';
|
|
256
|
+
}
|
|
257
|
+
else if (text.includes('fluorescent')) {
|
|
258
|
+
lightingType = 'fluorescent overhead';
|
|
259
|
+
colorTemp = 'cool white (4000K)';
|
|
99
260
|
}
|
|
100
|
-
else if (text.includes('
|
|
101
|
-
|
|
261
|
+
else if (text.includes('candle') || text.includes('firelight')) {
|
|
262
|
+
lightingType = 'warm practical sources';
|
|
263
|
+
colorTemp = 'very warm (2000K)';
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
// Combine into rich description
|
|
268
|
+
return `${lightingType}, ${lightingQuality}${lightingDirection ? ', ' + lightingDirection : ''}, ${colorTemp}`;
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Extract set dressing elements from scene
|
|
272
|
+
* Requirement 11: Rich Set Descriptions
|
|
273
|
+
*/
|
|
274
|
+
extractSetDressing(scene) {
|
|
275
|
+
const dressing = [];
|
|
276
|
+
const dressingKeywords = [
|
|
277
|
+
'table', 'chair', 'desk', 'lamp', 'picture', 'painting', 'plant',
|
|
278
|
+
'couch', 'sofa', 'bed', 'curtain', 'window', 'door', 'shelf',
|
|
279
|
+
'book', 'computer', 'phone', 'clock', 'mirror', 'rug', 'carpet'
|
|
280
|
+
];
|
|
281
|
+
for (const element of scene.elements) {
|
|
282
|
+
if (element.type === 'action') {
|
|
283
|
+
const text = element.text.toLowerCase();
|
|
284
|
+
for (const keyword of dressingKeywords) {
|
|
285
|
+
if (text.includes(keyword) && !dressing.includes(keyword)) {
|
|
286
|
+
dressing.push(keyword);
|
|
287
|
+
}
|
|
102
288
|
}
|
|
103
289
|
}
|
|
104
290
|
}
|
|
105
|
-
return
|
|
291
|
+
return dressing;
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Extract lighting from scene elements (legacy method, kept for compatibility)
|
|
295
|
+
*/
|
|
296
|
+
extractLighting(scene) {
|
|
297
|
+
return this.extractRichLighting(scene);
|
|
106
298
|
}
|
|
107
299
|
/**
|
|
108
300
|
* Extract atmosphere from scene elements
|
|
@@ -152,14 +344,105 @@ class ContextBuilder {
|
|
|
152
344
|
}
|
|
153
345
|
/**
|
|
154
346
|
* Update character states from action line
|
|
347
|
+
* Requirement 9: Extract blocking, wardrobe, and physical appearance details
|
|
348
|
+
* Requirement 10: Extract props and accessories for Character Bible
|
|
155
349
|
*/
|
|
156
350
|
updateCharacterStatesFromAction(actionElement, characterMap) {
|
|
157
|
-
// Simple implementation: look for character names in action text
|
|
158
|
-
// and update their action field
|
|
159
351
|
const text = actionElement.text;
|
|
160
352
|
for (const [name, state] of characterMap.entries()) {
|
|
161
353
|
if (text.includes(name)) {
|
|
162
354
|
state.action = text;
|
|
355
|
+
// Extract position/blocking keywords
|
|
356
|
+
const positionKeywords = [
|
|
357
|
+
'stands', 'sits', 'walks', 'enters', 'exits', 'moves',
|
|
358
|
+
'left', 'right', 'center', 'foreground', 'background',
|
|
359
|
+
'door', 'window', 'table', 'chair', 'corner'
|
|
360
|
+
];
|
|
361
|
+
for (const keyword of positionKeywords) {
|
|
362
|
+
if (text.toLowerCase().includes(keyword)) {
|
|
363
|
+
// Extract sentence containing the keyword for position context
|
|
364
|
+
const sentences = text.split(/[.!?]/);
|
|
365
|
+
for (const sentence of sentences) {
|
|
366
|
+
if (sentence.toLowerCase().includes(keyword) && sentence.includes(name)) {
|
|
367
|
+
state.position = sentence.trim();
|
|
368
|
+
break;
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
break;
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
// Extract wardrobe keywords (Requirement 10: Rich character descriptions)
|
|
375
|
+
const wardrobeKeywords = [
|
|
376
|
+
'wearing', 'dressed in', 'suit', 'dress', 'shirt', 'jacket',
|
|
377
|
+
'coat', 'hat', 'uniform', 'costume', 'clothes', 'tie', 'shoes',
|
|
378
|
+
'jeans', 'pants', 'skirt', 'blouse', 'sweater', 'hoodie'
|
|
379
|
+
];
|
|
380
|
+
for (const keyword of wardrobeKeywords) {
|
|
381
|
+
if (text.toLowerCase().includes(keyword)) {
|
|
382
|
+
const sentences = text.split(/[.!?]/);
|
|
383
|
+
for (const sentence of sentences) {
|
|
384
|
+
if (sentence.toLowerCase().includes(keyword) && sentence.includes(name)) {
|
|
385
|
+
state.wardrobe = sentence.trim();
|
|
386
|
+
// Update Character Bible
|
|
387
|
+
const bibleEntry = this.characterBible.get(name);
|
|
388
|
+
if (bibleEntry) {
|
|
389
|
+
bibleEntry.wardrobe = sentence.trim();
|
|
390
|
+
}
|
|
391
|
+
break;
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
break;
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
// Extract physical appearance keywords (Requirement 10: Rich character descriptions)
|
|
398
|
+
const appearanceKeywords = [
|
|
399
|
+
'tall', 'short', 'thin', 'heavy', 'muscular', 'slender',
|
|
400
|
+
'hair', 'eyes', 'beard', 'glasses', 'scar', 'tattoo',
|
|
401
|
+
'young', 'old', 'middle-aged', 'athletic', 'stocky', 'petite'
|
|
402
|
+
];
|
|
403
|
+
for (const keyword of appearanceKeywords) {
|
|
404
|
+
if (text.toLowerCase().includes(keyword)) {
|
|
405
|
+
const sentences = text.split(/[.!?]/);
|
|
406
|
+
for (const sentence of sentences) {
|
|
407
|
+
if (sentence.toLowerCase().includes(keyword) && sentence.includes(name)) {
|
|
408
|
+
state.physicalAppearance = sentence.trim();
|
|
409
|
+
// Update Character Bible
|
|
410
|
+
const bibleEntry = this.characterBible.get(name);
|
|
411
|
+
if (bibleEntry) {
|
|
412
|
+
bibleEntry.physicalAppearance = sentence.trim();
|
|
413
|
+
}
|
|
414
|
+
break;
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
break;
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
// Extract props/accessories (Requirement 10: Rich character descriptions)
|
|
421
|
+
const propKeywords = [
|
|
422
|
+
'holding', 'carrying', 'grabs', 'picks up', 'puts down',
|
|
423
|
+
'briefcase', 'bag', 'purse', 'phone', 'keys', 'wallet',
|
|
424
|
+
'gun', 'knife', 'weapon', 'book', 'paper', 'document',
|
|
425
|
+
'coffee', 'drink', 'food', 'cigarette', 'lighter'
|
|
426
|
+
];
|
|
427
|
+
for (const keyword of propKeywords) {
|
|
428
|
+
if (text.toLowerCase().includes(keyword)) {
|
|
429
|
+
const sentences = text.split(/[.!?]/);
|
|
430
|
+
for (const sentence of sentences) {
|
|
431
|
+
if (sentence.toLowerCase().includes(keyword) && sentence.includes(name)) {
|
|
432
|
+
// Update Character Bible with prop
|
|
433
|
+
const bibleEntry = this.characterBible.get(name);
|
|
434
|
+
if (bibleEntry) {
|
|
435
|
+
const prop = sentence.trim();
|
|
436
|
+
if (!bibleEntry.props.includes(prop)) {
|
|
437
|
+
bibleEntry.props.push(prop);
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
break;
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
break;
|
|
444
|
+
}
|
|
445
|
+
}
|
|
163
446
|
}
|
|
164
447
|
}
|
|
165
448
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-builder.js","sourceRoot":"","sources":["../../../../src/commands/generate-shot-list/generator/context-builder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"context-builder.js","sourceRoot":"","sources":["../../../../src/commands/generate-shot-list/generator/context-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,14 +28,32 @@ export declare class ShotListGenerator implements Generator {
|
|
|
28
28
|
/**
|
|
29
29
|
* Segment scene into shots
|
|
30
30
|
* Implemented: bd-shot-list-3.2
|
|
31
|
+
* Enhanced: bd-2b68 (Requirement 2: Intelligent Shot Splitting)
|
|
31
32
|
*/
|
|
32
33
|
private segmentScene;
|
|
34
|
+
/**
|
|
35
|
+
* Split a long shot into intelligent sub-shots
|
|
36
|
+
* Requirement 2: Intelligent Shot Splitting for Long Durations
|
|
37
|
+
*/
|
|
38
|
+
private splitIntoSubShots;
|
|
39
|
+
/**
|
|
40
|
+
* Estimate duration for a sub-shot based on its elements
|
|
41
|
+
*/
|
|
42
|
+
private estimateSubShotDuration;
|
|
43
|
+
/**
|
|
44
|
+
* Extract dialogue from scene elements
|
|
45
|
+
* Requirement 7 & 8: Handle "No dialogue" and mandatory dialogue population
|
|
46
|
+
* Format dialogue in MPAA-style screenplay format
|
|
47
|
+
*/
|
|
48
|
+
private extractDialogue;
|
|
33
49
|
/**
|
|
34
50
|
* Apply style guidelines to shot metadata
|
|
35
51
|
*/
|
|
36
52
|
private applyStyleToMetadata;
|
|
37
53
|
/**
|
|
38
54
|
* Build shot description from elements, context, and characters
|
|
55
|
+
* Requirement 7: Include "No dialogue in this shot" when applicable
|
|
56
|
+
* Requirement 9: Include character blocking/positioning details
|
|
39
57
|
*/
|
|
40
58
|
private buildDescription;
|
|
41
59
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/generate-shot-list/generator/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EACL,QAAQ,EAER,OAAO,EACP,eAAe,EACf,SAAS,EAIV,MAAM,SAAS,CAAC;AAKjB,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAEvD;;GAEG;AACH,qBAAa,iBAAkB,YAAW,SAAS;IACjD,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,eAAe,CAAsC;gBAEjD,eAAe,CAAC,EAAE,qBAAqB,GAAG,IAAI;IAsB1D;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,eAAe,GAAG,QAAQ;IAoD5D;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,EAAE;IAIhE;;;OAGG;IACH,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/generate-shot-list/generator/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EACL,QAAQ,EAER,OAAO,EACP,eAAe,EACf,SAAS,EAIV,MAAM,SAAS,CAAC;AAKjB,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAEvD;;GAEG;AACH,qBAAa,iBAAkB,YAAW,SAAS;IACjD,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,eAAe,CAAsC;gBAEjD,eAAe,CAAC,EAAE,qBAAqB,GAAG,IAAI;IAsB1D;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,eAAe,GAAG,QAAQ;IAoD5D;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,EAAE;IAIhE;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAkEpB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IA8DzB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA+B/B;;;;OAIG;IACH,OAAO,CAAC,eAAe;IA0BvB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAQ5B;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;CA2DzB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,eAAe,CAAC,EAAE,qBAAqB,GAAG,IAAI,GAAG,SAAS,CAEzF"}
|