@@ -92,6 +92,10 @@ export class MetadataProcessor {
9292 metadata . normalize_reference_strength_multiple ?? true ;
9393 metadata . reference_image_multiple = metadata . reference_image_multiple ?? undefined ;
9494 metadata . reference_strength_multiple = metadata . reference_strength_multiple ?? undefined ;
95+
96+ // Handle director reference defaults
97+ this . applyDirectorReferenceDefaults ( metadata ) ;
98+
9599 metadata . stream = undefined ;
96100 }
97101
@@ -461,6 +465,62 @@ export class MetadataProcessor {
461465 } ;
462466 }
463467
468+ /**
469+ * Apply default values for director reference fields
470+ * Ensures arrays have consistent lengths when director_reference_images is provided
471+ * Removes all director reference parameters if no images are provided
472+ *
473+ * @param metadata - Metadata to update
474+ * @private
475+ */
476+ private applyDirectorReferenceDefaults ( metadata : Metadata ) : void {
477+ // If no director reference images provided, remove all director reference parameters
478+ if ( ! metadata . director_reference_images ?. length ) {
479+ delete metadata . director_reference_descriptions ;
480+ delete metadata . director_reference_images ;
481+ delete metadata . director_reference_information_extracted ;
482+ delete metadata . director_reference_strength_values ;
483+ return ;
484+ }
485+
486+ const imageCount = metadata . director_reference_images . length ;
487+
488+ // Initialize arrays if not provided
489+ metadata . director_reference_descriptions = metadata . director_reference_descriptions ?? [ ] ;
490+ metadata . director_reference_information_extracted = metadata . director_reference_information_extracted ?? [ ] ;
491+ metadata . director_reference_strength_values = metadata . director_reference_strength_values ?? [ ] ;
492+
493+ // Ensure all arrays have the same length as director_reference_images
494+ while ( metadata . director_reference_descriptions . length < imageCount ) {
495+ metadata . director_reference_descriptions . push ( {
496+ caption : {
497+ base_caption : "character" ,
498+ char_captions : [ ]
499+ } ,
500+ legacy_uc : false
501+ } ) ;
502+ }
503+
504+ while ( metadata . director_reference_information_extracted . length < imageCount ) {
505+ metadata . director_reference_information_extracted . push ( 1 ) ;
506+ }
507+
508+ while ( metadata . director_reference_strength_values . length < imageCount ) {
509+ metadata . director_reference_strength_values . push ( 1 ) ;
510+ }
511+
512+ // Trim arrays if they're longer than the image count
513+ if ( metadata . director_reference_descriptions . length > imageCount ) {
514+ metadata . director_reference_descriptions = metadata . director_reference_descriptions . slice ( 0 , imageCount ) ;
515+ }
516+ if ( metadata . director_reference_information_extracted . length > imageCount ) {
517+ metadata . director_reference_information_extracted = metadata . director_reference_information_extracted . slice ( 0 , imageCount ) ;
518+ }
519+ if ( metadata . director_reference_strength_values . length > imageCount ) {
520+ metadata . director_reference_strength_values = metadata . director_reference_strength_values . slice ( 0 , imageCount ) ;
521+ }
522+ }
523+
464524 /**
465525 * Get width and height from a resolution preset
466526 *
0 commit comments