@nodaro/prompts 1.42.1 → 1.46.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 (108) hide show
  1. package/dist/{chunk-PHFOKGYS.js → chunk-2HJJBXGA.js} +6 -6
  2. package/dist/{chunk-PHFOKGYS.js.map → chunk-2HJJBXGA.js.map} +1 -1
  3. package/dist/{chunk-HL6PZ4A6.js → chunk-2OIKQ4WB.js} +5 -5
  4. package/dist/{chunk-HL6PZ4A6.js.map → chunk-2OIKQ4WB.js.map} +1 -1
  5. package/dist/{chunk-ZFOXGNLK.js → chunk-57PTYJJX.js} +4 -4
  6. package/dist/{chunk-ZFOXGNLK.js.map → chunk-57PTYJJX.js.map} +1 -1
  7. package/dist/{chunk-ZGA72NCT.cjs → chunk-C4FDHCEZ.cjs} +125 -125
  8. package/dist/{chunk-ZGA72NCT.cjs.map → chunk-C4FDHCEZ.cjs.map} +1 -1
  9. package/dist/{chunk-QJACEKMZ.js → chunk-CPKYIVWP.js} +3 -3
  10. package/dist/{chunk-QJACEKMZ.js.map → chunk-CPKYIVWP.js.map} +1 -1
  11. package/dist/{chunk-JDNHMVEV.cjs → chunk-FCTK7RGO.cjs} +35 -35
  12. package/dist/{chunk-JDNHMVEV.cjs.map → chunk-FCTK7RGO.cjs.map} +1 -1
  13. package/dist/{chunk-IFRFYBGE.js → chunk-IKHRZ5UQ.js} +3 -3
  14. package/dist/{chunk-IFRFYBGE.js.map → chunk-IKHRZ5UQ.js.map} +1 -1
  15. package/dist/{chunk-5NIKPMLU.cjs → chunk-IWX3Q7NH.cjs} +5 -3
  16. package/dist/chunk-IWX3Q7NH.cjs.map +1 -0
  17. package/dist/{chunk-SB7AYE6S.cjs → chunk-JHEZJKTX.cjs} +250 -6
  18. package/dist/chunk-JHEZJKTX.cjs.map +1 -0
  19. package/dist/{chunk-XMFWHTQB.js → chunk-LJ5WW6KK.js} +5 -3
  20. package/dist/chunk-LJ5WW6KK.js.map +1 -0
  21. package/dist/{chunk-GIO77YH5.js → chunk-NN4FL7SB.js} +4 -4
  22. package/dist/{chunk-GIO77YH5.js.map → chunk-NN4FL7SB.js.map} +1 -1
  23. package/dist/{chunk-I3QS7BSY.cjs → chunk-OSKABA64.cjs} +8 -8
  24. package/dist/{chunk-I3QS7BSY.cjs.map → chunk-OSKABA64.cjs.map} +1 -1
  25. package/dist/{chunk-AXQK7UH7.cjs → chunk-OY7XOPDG.cjs} +49 -49
  26. package/dist/{chunk-AXQK7UH7.cjs.map → chunk-OY7XOPDG.cjs.map} +1 -1
  27. package/dist/{chunk-ZLRB5BVT.cjs → chunk-PHR4UETI.cjs} +18 -18
  28. package/dist/{chunk-ZLRB5BVT.cjs.map → chunk-PHR4UETI.cjs.map} +1 -1
  29. package/dist/chunk-PUWJ2ZBG.js +11217 -0
  30. package/dist/chunk-PUWJ2ZBG.js.map +1 -0
  31. package/dist/chunk-QKD2KUZW.cjs +11252 -0
  32. package/dist/chunk-QKD2KUZW.cjs.map +1 -0
  33. package/dist/{chunk-6JABZ5OC.js → chunk-SMKIVT7P.js} +4 -4
  34. package/dist/{chunk-6JABZ5OC.js.map → chunk-SMKIVT7P.js.map} +1 -1
  35. package/dist/{chunk-CYMIXKFT.js → chunk-TXHFL725.js} +247 -3
  36. package/dist/chunk-TXHFL725.js.map +1 -0
  37. package/dist/{chunk-WARNUGXT.cjs → chunk-UNR34GYU.cjs} +191 -2
  38. package/dist/chunk-UNR34GYU.cjs.map +1 -0
  39. package/dist/{chunk-4YUXR23B.cjs → chunk-VAK4RUNU.cjs} +13 -13
  40. package/dist/{chunk-4YUXR23B.cjs.map → chunk-VAK4RUNU.cjs.map} +1 -1
  41. package/dist/{chunk-JCYK7NSR.js → chunk-XZXUU3YH.js} +191 -2
  42. package/dist/chunk-XZXUU3YH.js.map +1 -0
  43. package/dist/{chunk-H4JMZWOE.cjs → chunk-YCCQXX3U.cjs} +39 -39
  44. package/dist/{chunk-H4JMZWOE.cjs.map → chunk-YCCQXX3U.cjs.map} +1 -1
  45. package/dist/entries/assembly.cjs +29 -29
  46. package/dist/entries/assembly.js +6 -6
  47. package/dist/entries/doctrine.cjs +46 -46
  48. package/dist/entries/doctrine.d.cts +7 -0
  49. package/dist/entries/doctrine.d.ts +7 -0
  50. package/dist/entries/doctrine.js +1 -1
  51. package/dist/entries/picker-art.cjs +19 -19
  52. package/dist/entries/picker-art.d.cts +188 -0
  53. package/dist/entries/picker-art.d.ts +188 -0
  54. package/dist/entries/picker-art.js +1 -1
  55. package/dist/entries/picker-catalogs.cjs +57 -57
  56. package/dist/entries/picker-catalogs.js +5 -5
  57. package/dist/entries/pickers.cjs +374 -374
  58. package/dist/entries/pickers.d.cts +1 -1
  59. package/dist/entries/pickers.d.ts +1 -1
  60. package/dist/entries/pickers.js +3 -3
  61. package/dist/entries/presets.cjs +47 -31
  62. package/dist/entries/presets.d.cts +37 -1
  63. package/dist/entries/presets.d.ts +37 -1
  64. package/dist/entries/presets.js +1 -1
  65. package/dist/entries/prompt-builder.cjs +76 -76
  66. package/dist/entries/prompt-builder.js +5 -5
  67. package/dist/index.cjs +637 -621
  68. package/dist/index.d.cts +1 -1
  69. package/dist/index.d.ts +1 -1
  70. package/dist/index.js +11 -11
  71. package/package.json +2 -2
  72. package/src/__tests__/entity-prompts.test.ts +28 -1
  73. package/src/__tests__/factory-preset-previews.test.ts +98 -25
  74. package/src/__tests__/factory-preset-references.test.ts +4 -0
  75. package/src/__tests__/fixtures/parameter-hint-golden.json +6 -6
  76. package/src/__tests__/preset-tiles-generated.test.ts +88 -0
  77. package/src/entity-prompts.ts +10 -1
  78. package/src/factory-presets/generate-image.ts +8 -0
  79. package/src/factory-presets/index.ts +10 -1
  80. package/src/factory-presets/preview-files.generated.ts +943 -1
  81. package/src/factory-presets/previews.ts +34 -2
  82. package/src/factory-presets/tiles/business-and-marketing.generated.ts +426 -0
  83. package/src/factory-presets/tiles/business.generated.ts +261 -0
  84. package/src/factory-presets/tiles/content-and-creative.generated.ts +286 -0
  85. package/src/factory-presets/tiles/family-and-events.generated.ts +222 -0
  86. package/src/factory-presets/tiles/home-and-spaces.generated.ts +231 -0
  87. package/src/factory-presets/tiles/index.generated.ts +32 -0
  88. package/src/factory-presets/tiles/layout.generated.ts +110 -0
  89. package/src/factory-presets/tiles/life-and-events.generated.ts +246 -0
  90. package/src/factory-presets/tiles/personal-photos.generated.ts +306 -0
  91. package/src/factory-presets/tiles/products-and-fashion.generated.ts +303 -0
  92. package/src/factory-presets/tiles/shorts-tiktok.generated.ts +156 -0
  93. package/src/factory-presets/tiles/social-and-ads.generated.ts +606 -0
  94. package/src/factory-presets/tiles/text.generated.ts +591 -0
  95. package/src/factory-presets/tiles/youtube.generated.ts +906 -0
  96. package/src/factory-presets/types.ts +14 -0
  97. package/src/photographer.ts +277 -0
  98. package/src/picker-art/look-preview-sets.ts +189 -0
  99. package/dist/chunk-5NIKPMLU.cjs.map +0 -1
  100. package/dist/chunk-CYMIXKFT.js.map +0 -1
  101. package/dist/chunk-JCYK7NSR.js.map +0 -1
  102. package/dist/chunk-LZ53F5BN.cjs +0 -5652
  103. package/dist/chunk-LZ53F5BN.cjs.map +0 -1
  104. package/dist/chunk-RB2F5JQF.js +0 -5621
  105. package/dist/chunk-RB2F5JQF.js.map +0 -1
  106. package/dist/chunk-SB7AYE6S.cjs.map +0 -1
  107. package/dist/chunk-WARNUGXT.cjs.map +0 -1
  108. package/dist/chunk-XMFWHTQB.js.map +0 -1
package/dist/index.d.cts CHANGED
@@ -10,7 +10,7 @@ export { P as PickerImageOptions, a as PickerOptionImage, R as RENDER_WIDTH_LADD
10
10
  export { ADULT_AGE_IDS, ADULT_ONLY_FLAG, ADULT_SWEPT_CATALOG_IDS, ALL_PICKER_WIRING, ANALYZABLE_PICKER_TYPES, AdultOnlyEntry, FLOORED_PICKER_KEYS, ForeignCatalogId, GAPS_SCHEMA, MINOR_IMPLYING_TYPE_IDS, MULTI_PICKER_WIRING, MultiDimPickerWiring, MultiPickerAnalyzerSpec, PICKER_ANALYZER_FAMILIES, PICKER_ANALYZER_REGISTRY, PICKER_TYPES, PickerAnalyzer, PickerAnalyzerDescriptor, PickerAnalyzerSpec, PickerApplyMode, PickerDimensionSpec, PickerGaps, PickerType, PickerWiring, PickerWiringEntry, RETIRED_ADULT_ONLY_HINT_STRINGS, SINGLE_PICKER_WIRING, SingleDimPickerWiring, __resetCatalogIdGuardForTests, applyMinorAgeFloorToPickerValues, applyPickerJson, buildMultiPickerAnalyzerSpec, buildNeedleAlternationSource, buildPickerAnalyzerSpec, buildPickerLegend, buildPickerZodSchema, catalogGuardActive, composedHas, composedOption, composedOptionIndex, containsMinorAgeHint, curateEntries, curatedAnimalPromptHint, curatedAnimalTerm, curatedFurnitureText, curatedVehicleText, curatedWeaponText, findForeignCatalogIds, findForeignCatalogIdsInBody, foreignCatalogIdMessage, getAdultOnlyEntries, getAdultOnlyHintStrings, getAdultOnlyIds, getCharacterMotionBindings, getMinorAgeHintStrings, getParameterPromptHint, getPickerAnalyzer, getPickerWiring, isAnalyzablePicker, isMinorAge, overlayEntry, pickerFanoutTargets, setComposedCatalogResolver } from './entries/picker-catalogs.cjs';
11
11
  export { ACTION_FX, ACTION_FX_CATEGORY_LABELS, ACTION_FX_CATEGORY_ORDER, ACTION_FX_IDS, AESTHETICS, AESTHETIC_CATEGORY_LABELS, AESTHETIC_CATEGORY_ORDER, AESTHETIC_IDS, ATMOSPHERES, ATMOSPHERE_IDS, ActionFx, ActionFxCategory, Aesthetic, AestheticCategory, Atmosphere, BACKDROPS, BACKDROP_CATEGORY_LABELS, BACKDROP_CATEGORY_ORDER, BACKDROP_IDS, Backdrop, BackdropCategory, CAMERA_FORMATS, CAMERA_FORMAT_IDS, CAMERA_MOTIONS, CAMERA_MOTION_CATEGORY_LABELS, CAMERA_MOTION_CATEGORY_ORDER, CAMERA_MOTION_IDS, CHARACTER_FX, CHARACTER_FX_CATEGORY_LABELS, CHARACTER_FX_CATEGORY_ORDER, CHARACTER_FX_DURATIONS, CHARACTER_FX_IDS, CHARACTER_FX_INTENSITIES, CHARACTER_FX_POSITIONS, CHARACTER_MOTIONS, CHARACTER_MOTION_CATEGORY_LABELS, CHARACTER_MOTION_CATEGORY_ORDER, CHARACTER_MOTION_IDS, CHARACTER_MOTION_MAX_PICKS, CHARACTER_MOTION_PACES, CHARACTER_MOTION_POSITIONS, COLOR_LOOKS, COLOR_LOOK_CATEGORY_LABELS, COLOR_LOOK_CATEGORY_ORDER, COLOR_LOOK_IDS, COMPOSITION_EFFECTS, COMPOSITION_EFFECT_IDS, CameraFormat, CameraMotion, CameraMotionCategory, CategorizedInstrument, CharacterFx, CharacterFxCategory, CharacterFxDuration, CharacterFxIntensity, CharacterFxPosition, CharacterFxTiming, CharacterFxTimingOption, CharacterMotion, CharacterMotionBindings, CharacterMotionCategory, CharacterMotionDiagnostic, CharacterMotionFloor, CharacterMotionPace, CharacterMotionPosition, CharacterMotionTiming, CharacterMotionTimingOption, ColorLook, ColorLookCategory, CompositionEffect, ERAS, ERA_CATEGORY_LABELS, ERA_CATEGORY_ORDER, ERA_IDS, EXPOSURE_CATEGORY_LABELS, EXPOSURE_CATEGORY_ORDER, EXPOSURE_FIELD_BY_CATEGORY, EXPOSURE_IDS, EXPOSURE_SETTINGS, Era, EraCategory, ExposureCategory, ExposureSettings, ExposureValue, FRAMINGS, FRAMING_CATEGORY_LABELS, FRAMING_CATEGORY_ORDER, FRAMING_FIELD_BY_CATEGORY, FRAMING_IDS, Framing, FramingCategory, FramingValue, HELD_PROPS, HELD_PROP_CATEGORY_LABELS, HELD_PROP_CATEGORY_ORDER, HELD_PROP_IDS, HeldProp, HeldPropCategory, INSTRUMENTATION_DEFAULT_DATA, INSTRUMENTS, INSTRUMENT_CATEGORY_LABELS, INSTRUMENT_CATEGORY_ORDER, InstrumentCategory, InstrumentationEntry, LENSES, LENS_IDS, LIGHTINGS, LIGHTING_CATEGORY_LABELS, LIGHTING_CATEGORY_ORDER, LIGHTING_FIELD_BY_CATEGORY, LIGHTING_IDS, LOOP_SUBJECTS, LOOP_SUBJECT_CATEGORY_LABELS, LOOP_SUBJECT_CATEGORY_ORDER, Lens, Lighting, LightingCategory, LightingValue, LoopSubject, LoopSubjectCategory, MATERIALS, MATERIAL_CATEGORY_LABELS, MATERIAL_CATEGORY_ORDER, MATERIAL_IDS, MAX_SELECTED_BY_FRAMING_CATEGORY, MAX_SELECTED_BY_STYLING_DIMENSION, MOODS, MOOD_CATEGORY_LABELS, MOOD_CATEGORY_ORDER, MOOD_IDS, MUSIC_EMOTIONS, MUSIC_ENERGIES, MUSIC_ERAS, MUSIC_GENRES, MUSIC_GENRE_CATEGORY_LABELS, MUSIC_GENRE_CATEGORY_ORDER, MUSIC_GENRE_DEFAULT_DATA, MUSIC_MOOD_DEFAULT_DATA, MUSIC_VIBES, Material, MaterialCategory, Mood, MoodCategory, MoodValue, MusicEra, MusicGenre, MusicGenreCategory, MusicMoodData, MusicMoodEntry, MusicSubgenre, PHOTOGRAPHERS, PHOTOGRAPHER_CATEGORY_LABELS, PHOTOGRAPHER_CATEGORY_ORDER, PHOTOGRAPHER_IDS, PHOTO_GENRES, PHOTO_GENRE_CATEGORY_LABELS, PHOTO_GENRE_CATEGORY_ORDER, PHOTO_GENRE_IDS, POSES, POSE_CATEGORY_LABELS, POSE_CATEGORY_ORDER, POSE_IDS, POST_PROCESS_EFFECTS, POST_PROCESS_EFFECT_IDS, PRODUCTION_STYLES, PhotoGenre, PhotoGenreCategory, Photographer, PhotographerCategory, Pose, PoseCategory, PoseValue, PostProcessEffect, RENDER_QUALITIES, RENDER_QUALITY_IDS, RenderQuality, SETTINGS, SETTING_CATEGORY_LABELS, SETTING_IDS, SINGING_STYLES, STYLES, STYLE_IDS, STYLINGS, STYLING_DIMENSION_LABELS, STYLING_DIMENSION_ORDER, STYLING_DIMENSION_SECTIONS, STYLING_FIELD_BY_DIMENSION, STYLING_IDS, Setting, SettingCategory, Style, Styling, StylingDimension, StylingDimensionSection, StylingValue, TEMPORALS, TEMPORAL_CATEGORY_LABELS, TEMPORAL_CATEGORY_ORDER, TEMPORAL_FIELD_BY_CATEGORY, TEMPORAL_IDS, Temporal, TemporalCategory, TemporalValue, VOCAL_PRESENCE, VOCAL_PRESENCE_INSTRUMENTAL_ID, VOICE_ACCENTS, VOICE_AGES, VOICE_ARCHETYPES, VOICE_CHARACTER_DEFAULT_DATA, VOICE_DELIVERY_DEFAULT_DATA, VOICE_EMOTIONS, VOICE_GENDERS, VOICE_LANGUAGES, VOICE_PACES, VOICE_TIMBRES, VoiceCharacterEntry, VoiceDeliveryEntry, WARDROBE, WARDROBE_CATEGORY_LABELS, WARDROBE_DIMENSION_ORDER, WARDROBE_FIELD_BY_DIMENSION, WardrobeDimension, WardrobeEntry, WardrobeValue, buildActionFxHints, buildActionFxTerms, buildAestheticHints, buildAestheticTerms, buildAtmosphereHints, buildAtmosphereTerms, buildExposureHints, buildExposureTerms, buildFramingHints, buildFramingTerms, buildHeldPropHints, buildHeldPropTerms, buildInstrumentationHints, buildInstrumentationTerms, buildLightingHints, buildLightingTerms, buildMaterialHints, buildMaterialTerms, buildMoodHints, buildMoodTerms, buildMusicGenreHints, buildMusicGenreTerms, buildMusicMoodHints, buildMusicMoodTerms, buildPhotographerHints, buildPhotographerTerms, buildPoseHints, buildPoseTerms, buildPostProcessHints, buildPostProcessTerms, buildStylingHints, buildStylingTerms, buildTemporalHints, buildTemporalTerms, buildVoiceCharacterHints, buildVoiceCharacterTerms, buildVoiceDeliveryHints, buildVoiceDeliveryTerms, buildWardrobeHints, composeCameraMotionHintFromConnections, composeCameraMotionTermFromConnections, composeCharacterFxHintFromConnections, composeCharacterMotionHintFromConnections, getActionFx, getActionFxLabel, getActionFxPromptHint, getActionFxTerm, getAesthetic, getAestheticLabel, getAestheticPromptHint, getAestheticTerm, getAtmosphere, getAtmosphereLabel, getAtmospherePromptHint, getAtmosphereTerm, getBackdrop, getBackdropLabel, getBackdropPromptHint, getBackdropTerm, getCameraFormat, getCameraFormatLabel, getCameraFormatPromptHint, getCameraFormatTerm, getCameraMotion, getCameraMotionLabel, getCameraMotionPromptHint, getCameraMotionTerm, getCharacterFx, getCharacterFxLabel, getCharacterFxPromptHint, getCharacterFxTerm, getCharacterMotion, getCharacterMotionDiagnostics, getCharacterMotionLabel, getCharacterMotionPromptHint, getCharacterMotionTerm, getColorLook, getColorLookLabel, getColorLookPromptHint, getColorLookTerm, getCompositionEffect, getCompositionEffectLabel, getCompositionEffectPromptHint, getCompositionEffectTerm, getEra, getEraLabel, getEraPromptHint, getEraTerm, getExposure, getExposureLabel, getExposurePromptHint, getExposureTerm, getFraming, getFramingCategoryLimit, getFramingLabel, getFramingPromptHint, getFramingTerm, getHeldProp, getHeldPropLabel, getHeldPropPromptHint, getHeldPropTerm, getInstrument, getInstrumentTerm, getLens, getLensLabel, getLensPromptHint, getLensTerm, getLighting, getLightingLabel, getLightingPromptHint, getLightingTerm, getLoopSubject, getLoopSubjectLabel, getLoopSubjectPromptHint, getLoopSubjectTerm, getMaterial, getMaterialLabel, getMaterialPromptHint, getMaterialTerm, getMood, getMoodLabel, getMoodPromptHint, getMoodTerm, getMusicEmotion, getMusicEmotionTerm, getMusicEnergy, getMusicEnergyTerm, getMusicEra, getMusicEraTerm, getMusicGenre, getMusicGenreLabel, getMusicGenreTerm, getMusicSubgenre, getMusicSubgenreTerm, getMusicVibe, getMusicVibeTerm, getPhotoGenre, getPhotoGenreLabel, getPhotoGenrePromptHint, getPhotoGenreTerm, getPhotographer, getPhotographerLabel, getPhotographerPromptHint, getPhotographerTerm, getPose, getPoseLabel, getPosePromptHint, getPoseTerm, getPostProcessEffect, getPostProcessEffectLabel, getPostProcessEffectPromptHint, getPostProcessEffectTerm, getProductionStyle, getProductionStyleTerm, getRenderQuality, getRenderQualityLabel, getRenderQualityPromptHint, getRenderQualityTerm, getSetting, getSettingLabel, getSettingPromptHint, getSettingTerm, getSingingStyle, getSingingStyleTerm, getStyle, getStyleLabel, getStylePromptHint, getStyleTerm, getStyling, getStylingDimensionLimit, getStylingLabel, getStylingPromptHint, getStylingTerm, getTemporal, getTemporalLabel, getTemporalPromptHint, getTemporalTerm, getVocalPresence, getVocalPresenceTerm, getVoiceAccent, getVoiceAccentTerm, getVoiceAge, getVoiceAgeTerm, getVoiceArchetype, getVoiceArchetypeTerm, getVoiceEmotion, getVoiceEmotionTerm, getVoiceGender, getVoiceGenderTerm, getVoiceLanguage, getVoiceLanguageTerm, getVoicePace, getVoicePaceTerm, getVoiceTimbre, getVoiceTimbreTerm, getWardrobeEntriesByDimension, getWardrobeEntry, getWardrobePromptHint, isDeniedStyleId, isInstrumentalVocal, isVantageFraming } from './entries/pickers.cjs';
12
12
  export { A as AURORA_SWEEP_STYLE, D as DEBRIS_SHOWER_STYLE, G as GARDEN_BLOOM_STYLE, I as INSTANT_CUT_CLAUSE, S as SAKURA_PETALS_STYLE, a as SAND_STORM_STYLE, b as SMOKE_PUFF_STYLE, T as TRANSITIONS, c as TRANSITION_CATEGORY_LABELS, d as TRANSITION_CATEGORY_ORDER, e as TRANSITION_DURATIONS, f as TRANSITION_IDS, g as TRANSITION_INTENSITIES, h as TRANSITION_OPTION_FIELDS, i as TRANSITION_POSITIONS, j as TRANSITION_STYLE_FIELD, k as Transition, l as TransitionCategory, m as TransitionDuration, n as TransitionHintOptions, o as TransitionHintScope, p as TransitionIntensity, q as TransitionOption, r as TransitionOptionChoice, s as TransitionOptionValues, t as TransitionPosition, u as TransitionTiming, v as TransitionTimingOption, W as WHITE_FLASH_STYLE, w as WIPE_DIRECTION, x as blendedCutClause, y as composeTransitionHintFromConnections, z as getTransition, B as getTransitionLabel, C as getTransitionOptions, E as getTransitionPromptHint, F as getTransitionTerm, H as isBlendableTransition, J as isInstantTransition, K as readTransitionOptionValues, L as renderTransitionBases } from './transitions-BLFfAJUH.cjs';
13
- export { BODY_CAPTIONS_PRESET_ID, BRAND_PRESETS, BRAND_PRESET_IDS, BRAND_PRESET_META, BrandCasing, BrandFonts, BrandLogo, BrandPalette, BrandPresetId, BrandPresetMeta, BrandTokens, BrandTypeSpec, CAPTION_LEVERS_BY_LANGUAGE, CAPTION_SEGMENT_LEVER_KEYS, CaptionLanguageLevers, CaptionSegmentRole, FACTORY_PRESETS, FACTORY_PRESET_PREVIEW_FILES, FACTORY_SNIPPETS, FactoryPreset, FactoryPresetGroup, HOOK_PLATE_PRESET_ID, HookPlateSegmentsOptions, HookPlateSegmentsResult, MAX_PRESET_REFERENCES, OBJECT_ANGLE_PRESETS, OBJECT_ANGLE_PROMPTS, OBJECT_ASSET_PRESETS, OBJECT_ASSET_PROMPTS, OBJECT_MATERIAL_PRESETS, OBJECT_MATERIAL_PROMPTS, OBJECT_VARIATION_PRESETS, OBJECT_VARIATION_PROMPTS, ObjectPresetAssetType, PRESET_PREVIEW_PATH, STYLE_PRESETS, StylePreset, factoryPresetPreviewUrl, getFactoryPresets, getFactorySnippets, getStylePreset, groupFactoryPresets, hookPlateCaptionSegments, presetMinReferences, resolveBrandInput } from './entries/presets.cjs';
13
+ export { BODY_CAPTIONS_PRESET_ID, BRAND_PRESETS, BRAND_PRESET_IDS, BRAND_PRESET_META, BrandCasing, BrandFonts, BrandLogo, BrandPalette, BrandPresetId, BrandPresetMeta, BrandTokens, BrandTypeSpec, CAPTION_LEVERS_BY_LANGUAGE, CAPTION_SEGMENT_LEVER_KEYS, CaptionLanguageLevers, CaptionSegmentRole, FACTORY_PRESETS, FACTORY_PRESET_PREVIEW_FILES, FACTORY_PRESET_PREVIEW_LARGE_FILES, FACTORY_SNIPPETS, FactoryPreset, FactoryPresetGroup, HOOK_PLATE_PRESET_ID, HookPlateSegmentsOptions, HookPlateSegmentsResult, MAX_PRESET_REFERENCES, OBJECT_ANGLE_PRESETS, OBJECT_ANGLE_PROMPTS, OBJECT_ASSET_PRESETS, OBJECT_ASSET_PROMPTS, OBJECT_MATERIAL_PRESETS, OBJECT_MATERIAL_PROMPTS, OBJECT_VARIATION_PRESETS, OBJECT_VARIATION_PROMPTS, ObjectPresetAssetType, PRESET_PREVIEW_LARGE_WIDTH, PRESET_PREVIEW_PATH, PRESET_PREVIEW_WIDTH, PresetPreviewLargeFile, STYLE_PRESETS, StylePreset, factoryPresetPreviewSrcSet, factoryPresetPreviewUrl, getFactoryPresets, getFactorySnippets, getStylePreset, groupFactoryPresets, hookPlateCaptionSegments, presetMinReferences, resolveBrandInput } from './entries/presets.cjs';
14
14
  export { PromptClauseSlot, ReferenceLineFormat, STYLE_SECTION_GAP, STYLE_SECTION_HEADER, SlottedPromptClause, appendReferenceLines, asBodyClauses, composeSectionedPrompt, endsInsideStyleSection, insertBeforeStyleSection, nearestColorName, partitionStyleClauses, readDirectionFields, readStructuredFields, readSubjectFields, referenceDescriptionLine, renderDescribedReferenceLines, renderReferenceCaptionLines, renderStyleSection, sectionedClauseCosts, splitStyleSection, styleSectionFromClauses, styleSlotFor } from './entries/prompt-builder.cjs';
15
15
  export { A as ANGLE_LABELS, a as ASPECT_RATIO_LABELS, B as BuildImagePromptConfig, b as BuildImagePromptOverflowResult, c as BuildImagePromptResult, d as BuildImagePromptSegmentsResult, D as DIRECTION_ARRAY_CEILING, e as DIRECTION_FIELDS, f as DIRECTION_ID_MAX_CHARS, g as DIRECTION_KEYS, h as DirectionFamily, i as DirectionFieldRow, j as DirectionFieldSpec, k as DirectionFields, l as DirectionHintClause, m as DirectionHintMode, n as DirectionKey, o as DirectionRenderOptions, p as DirectionStyleGroup, q as DirectionSurface, F as FILM_STYLE_KEYS, I as IMAGE_HINT_MODE_DEFAULT, r as ImageDirectionKey, M as MAX_SUBJECT_KEYS, s as MOVEMENT_LABELS, P as PromptSegment, t as PromptSegmentOrigin, R as ResolveCharacterMentionsResult, u as ResolveLocationMentionsResult, S as SCENE_PROMPT_MAX_LENGTH, v as SHOT_LABELS, w as SUBJECT_ARRAY_CEILING, x as SUBJECT_CUSTOM_AGE_KEY, y as SUBJECT_FIELDS, z as SUBJECT_FOLD_KEYS, C as SUBJECT_ID_MAX_CHARS, E as SUBJECT_IMAGE_HINT_MODE_DEFAULT, G as SUBJECT_KEYS, H as SUBJECT_KEY_MAX_CHARS, J as SUBJECT_VIDEO_HINT_MODE_DEFAULT, K as StructuredPromptFields, L as StyleReferenceInput, N as SubjectFieldRow, O as SubjectFieldSpec, Q as SubjectFields, T as SubjectGroupFieldSpec, U as SubjectHintMode, V as SubjectIdsFieldSpec, W as SubjectSurface, X as USER_DIRECTION_REF_KINDS, Y as UserDirectionRef, Z as UserDirectionRefKind, _ as VIDEO_HINT_MODE_DEFAULT, $ as VideoDirectionKey, a0 as applyReferenceOrderToVideo, a1 as buildIdentityDirectives, a2 as buildImagePrompt, a3 as buildImagePromptSegments, a4 as buildImagePromptWithOverflow, a5 as buildReferenceBlocks, a6 as buildScenePrompt, a7 as directionFieldsForSurface, a8 as directionKeyForUserRef, a9 as expandImagePositionRefs, aa as expandImageRefTokens, ab as getRegisteredSubjectKeys, ac as modeForFamily, ad as normalizeSubjectFields, ae as parseUserDirectionRef, af as renderDirectionHintClauses, ag as renderDirectionHints, ah as renderMoodboardClause, ai as renderPaletteClause, aj as renderStructuredFields, ak as renderSubjectHints, al as resolveCharacterMentions, am as resolveLocationMentions, an as styleReferenceDescription, ao as subjectFieldsForSurface, ap as truncateText, aq as userDirectionRefValue, ar as userRefKindOfDirectionKey } from './subject-registry-CQi_CZfJ.cjs';
16
16
  export { ComputeNodePromptArgs, LlmChatFieldArgs, NODE_PROMPT_CANDIDATE_FIELDS, NODE_PROMPT_FIELDS, NodeSendTextArgs, PROMPT_AFFIX_CORE_FIELD_OVERRIDES, PROMPT_AFFIX_NODE_TYPES, PROMPT_HINT_SEPARATOR, PromptFieldSpec, PromptIconKind, ResolvePromptArgs, TEXT_REQUIRED_NODE_TYPES, WIRED_OUTPUT_NODE_TYPES, appendPromptHints, applyPromptAffixes, composeNegative, computeAiWriterInput, computeLlmChatFields, computeNodePrompt, computeNodeSendText, computeScriptTopic, getPromptFields, getSnippetMedia, joinHintFragments, joinPromptHints, joinPromptParts, joinSentences, keepableDirectionHints, nodeHasInlinePrompt, nodeHasPromptField, nodeSupportsPromptAffixes, promptAffixCoreField, promptFieldCarriesAffixes, promptPartSeparator, resolvePrompt, stripAudioTags } from './entries/prompt-fields.cjs';
package/dist/index.d.ts CHANGED
@@ -10,7 +10,7 @@ export { P as PickerImageOptions, a as PickerOptionImage, R as RENDER_WIDTH_LADD
10
10
  export { ADULT_AGE_IDS, ADULT_ONLY_FLAG, ADULT_SWEPT_CATALOG_IDS, ALL_PICKER_WIRING, ANALYZABLE_PICKER_TYPES, AdultOnlyEntry, FLOORED_PICKER_KEYS, ForeignCatalogId, GAPS_SCHEMA, MINOR_IMPLYING_TYPE_IDS, MULTI_PICKER_WIRING, MultiDimPickerWiring, MultiPickerAnalyzerSpec, PICKER_ANALYZER_FAMILIES, PICKER_ANALYZER_REGISTRY, PICKER_TYPES, PickerAnalyzer, PickerAnalyzerDescriptor, PickerAnalyzerSpec, PickerApplyMode, PickerDimensionSpec, PickerGaps, PickerType, PickerWiring, PickerWiringEntry, RETIRED_ADULT_ONLY_HINT_STRINGS, SINGLE_PICKER_WIRING, SingleDimPickerWiring, __resetCatalogIdGuardForTests, applyMinorAgeFloorToPickerValues, applyPickerJson, buildMultiPickerAnalyzerSpec, buildNeedleAlternationSource, buildPickerAnalyzerSpec, buildPickerLegend, buildPickerZodSchema, catalogGuardActive, composedHas, composedOption, composedOptionIndex, containsMinorAgeHint, curateEntries, curatedAnimalPromptHint, curatedAnimalTerm, curatedFurnitureText, curatedVehicleText, curatedWeaponText, findForeignCatalogIds, findForeignCatalogIdsInBody, foreignCatalogIdMessage, getAdultOnlyEntries, getAdultOnlyHintStrings, getAdultOnlyIds, getCharacterMotionBindings, getMinorAgeHintStrings, getParameterPromptHint, getPickerAnalyzer, getPickerWiring, isAnalyzablePicker, isMinorAge, overlayEntry, pickerFanoutTargets, setComposedCatalogResolver } from './entries/picker-catalogs.js';
11
11
  export { ACTION_FX, ACTION_FX_CATEGORY_LABELS, ACTION_FX_CATEGORY_ORDER, ACTION_FX_IDS, AESTHETICS, AESTHETIC_CATEGORY_LABELS, AESTHETIC_CATEGORY_ORDER, AESTHETIC_IDS, ATMOSPHERES, ATMOSPHERE_IDS, ActionFx, ActionFxCategory, Aesthetic, AestheticCategory, Atmosphere, BACKDROPS, BACKDROP_CATEGORY_LABELS, BACKDROP_CATEGORY_ORDER, BACKDROP_IDS, Backdrop, BackdropCategory, CAMERA_FORMATS, CAMERA_FORMAT_IDS, CAMERA_MOTIONS, CAMERA_MOTION_CATEGORY_LABELS, CAMERA_MOTION_CATEGORY_ORDER, CAMERA_MOTION_IDS, CHARACTER_FX, CHARACTER_FX_CATEGORY_LABELS, CHARACTER_FX_CATEGORY_ORDER, CHARACTER_FX_DURATIONS, CHARACTER_FX_IDS, CHARACTER_FX_INTENSITIES, CHARACTER_FX_POSITIONS, CHARACTER_MOTIONS, CHARACTER_MOTION_CATEGORY_LABELS, CHARACTER_MOTION_CATEGORY_ORDER, CHARACTER_MOTION_IDS, CHARACTER_MOTION_MAX_PICKS, CHARACTER_MOTION_PACES, CHARACTER_MOTION_POSITIONS, COLOR_LOOKS, COLOR_LOOK_CATEGORY_LABELS, COLOR_LOOK_CATEGORY_ORDER, COLOR_LOOK_IDS, COMPOSITION_EFFECTS, COMPOSITION_EFFECT_IDS, CameraFormat, CameraMotion, CameraMotionCategory, CategorizedInstrument, CharacterFx, CharacterFxCategory, CharacterFxDuration, CharacterFxIntensity, CharacterFxPosition, CharacterFxTiming, CharacterFxTimingOption, CharacterMotion, CharacterMotionBindings, CharacterMotionCategory, CharacterMotionDiagnostic, CharacterMotionFloor, CharacterMotionPace, CharacterMotionPosition, CharacterMotionTiming, CharacterMotionTimingOption, ColorLook, ColorLookCategory, CompositionEffect, ERAS, ERA_CATEGORY_LABELS, ERA_CATEGORY_ORDER, ERA_IDS, EXPOSURE_CATEGORY_LABELS, EXPOSURE_CATEGORY_ORDER, EXPOSURE_FIELD_BY_CATEGORY, EXPOSURE_IDS, EXPOSURE_SETTINGS, Era, EraCategory, ExposureCategory, ExposureSettings, ExposureValue, FRAMINGS, FRAMING_CATEGORY_LABELS, FRAMING_CATEGORY_ORDER, FRAMING_FIELD_BY_CATEGORY, FRAMING_IDS, Framing, FramingCategory, FramingValue, HELD_PROPS, HELD_PROP_CATEGORY_LABELS, HELD_PROP_CATEGORY_ORDER, HELD_PROP_IDS, HeldProp, HeldPropCategory, INSTRUMENTATION_DEFAULT_DATA, INSTRUMENTS, INSTRUMENT_CATEGORY_LABELS, INSTRUMENT_CATEGORY_ORDER, InstrumentCategory, InstrumentationEntry, LENSES, LENS_IDS, LIGHTINGS, LIGHTING_CATEGORY_LABELS, LIGHTING_CATEGORY_ORDER, LIGHTING_FIELD_BY_CATEGORY, LIGHTING_IDS, LOOP_SUBJECTS, LOOP_SUBJECT_CATEGORY_LABELS, LOOP_SUBJECT_CATEGORY_ORDER, Lens, Lighting, LightingCategory, LightingValue, LoopSubject, LoopSubjectCategory, MATERIALS, MATERIAL_CATEGORY_LABELS, MATERIAL_CATEGORY_ORDER, MATERIAL_IDS, MAX_SELECTED_BY_FRAMING_CATEGORY, MAX_SELECTED_BY_STYLING_DIMENSION, MOODS, MOOD_CATEGORY_LABELS, MOOD_CATEGORY_ORDER, MOOD_IDS, MUSIC_EMOTIONS, MUSIC_ENERGIES, MUSIC_ERAS, MUSIC_GENRES, MUSIC_GENRE_CATEGORY_LABELS, MUSIC_GENRE_CATEGORY_ORDER, MUSIC_GENRE_DEFAULT_DATA, MUSIC_MOOD_DEFAULT_DATA, MUSIC_VIBES, Material, MaterialCategory, Mood, MoodCategory, MoodValue, MusicEra, MusicGenre, MusicGenreCategory, MusicMoodData, MusicMoodEntry, MusicSubgenre, PHOTOGRAPHERS, PHOTOGRAPHER_CATEGORY_LABELS, PHOTOGRAPHER_CATEGORY_ORDER, PHOTOGRAPHER_IDS, PHOTO_GENRES, PHOTO_GENRE_CATEGORY_LABELS, PHOTO_GENRE_CATEGORY_ORDER, PHOTO_GENRE_IDS, POSES, POSE_CATEGORY_LABELS, POSE_CATEGORY_ORDER, POSE_IDS, POST_PROCESS_EFFECTS, POST_PROCESS_EFFECT_IDS, PRODUCTION_STYLES, PhotoGenre, PhotoGenreCategory, Photographer, PhotographerCategory, Pose, PoseCategory, PoseValue, PostProcessEffect, RENDER_QUALITIES, RENDER_QUALITY_IDS, RenderQuality, SETTINGS, SETTING_CATEGORY_LABELS, SETTING_IDS, SINGING_STYLES, STYLES, STYLE_IDS, STYLINGS, STYLING_DIMENSION_LABELS, STYLING_DIMENSION_ORDER, STYLING_DIMENSION_SECTIONS, STYLING_FIELD_BY_DIMENSION, STYLING_IDS, Setting, SettingCategory, Style, Styling, StylingDimension, StylingDimensionSection, StylingValue, TEMPORALS, TEMPORAL_CATEGORY_LABELS, TEMPORAL_CATEGORY_ORDER, TEMPORAL_FIELD_BY_CATEGORY, TEMPORAL_IDS, Temporal, TemporalCategory, TemporalValue, VOCAL_PRESENCE, VOCAL_PRESENCE_INSTRUMENTAL_ID, VOICE_ACCENTS, VOICE_AGES, VOICE_ARCHETYPES, VOICE_CHARACTER_DEFAULT_DATA, VOICE_DELIVERY_DEFAULT_DATA, VOICE_EMOTIONS, VOICE_GENDERS, VOICE_LANGUAGES, VOICE_PACES, VOICE_TIMBRES, VoiceCharacterEntry, VoiceDeliveryEntry, WARDROBE, WARDROBE_CATEGORY_LABELS, WARDROBE_DIMENSION_ORDER, WARDROBE_FIELD_BY_DIMENSION, WardrobeDimension, WardrobeEntry, WardrobeValue, buildActionFxHints, buildActionFxTerms, buildAestheticHints, buildAestheticTerms, buildAtmosphereHints, buildAtmosphereTerms, buildExposureHints, buildExposureTerms, buildFramingHints, buildFramingTerms, buildHeldPropHints, buildHeldPropTerms, buildInstrumentationHints, buildInstrumentationTerms, buildLightingHints, buildLightingTerms, buildMaterialHints, buildMaterialTerms, buildMoodHints, buildMoodTerms, buildMusicGenreHints, buildMusicGenreTerms, buildMusicMoodHints, buildMusicMoodTerms, buildPhotographerHints, buildPhotographerTerms, buildPoseHints, buildPoseTerms, buildPostProcessHints, buildPostProcessTerms, buildStylingHints, buildStylingTerms, buildTemporalHints, buildTemporalTerms, buildVoiceCharacterHints, buildVoiceCharacterTerms, buildVoiceDeliveryHints, buildVoiceDeliveryTerms, buildWardrobeHints, composeCameraMotionHintFromConnections, composeCameraMotionTermFromConnections, composeCharacterFxHintFromConnections, composeCharacterMotionHintFromConnections, getActionFx, getActionFxLabel, getActionFxPromptHint, getActionFxTerm, getAesthetic, getAestheticLabel, getAestheticPromptHint, getAestheticTerm, getAtmosphere, getAtmosphereLabel, getAtmospherePromptHint, getAtmosphereTerm, getBackdrop, getBackdropLabel, getBackdropPromptHint, getBackdropTerm, getCameraFormat, getCameraFormatLabel, getCameraFormatPromptHint, getCameraFormatTerm, getCameraMotion, getCameraMotionLabel, getCameraMotionPromptHint, getCameraMotionTerm, getCharacterFx, getCharacterFxLabel, getCharacterFxPromptHint, getCharacterFxTerm, getCharacterMotion, getCharacterMotionDiagnostics, getCharacterMotionLabel, getCharacterMotionPromptHint, getCharacterMotionTerm, getColorLook, getColorLookLabel, getColorLookPromptHint, getColorLookTerm, getCompositionEffect, getCompositionEffectLabel, getCompositionEffectPromptHint, getCompositionEffectTerm, getEra, getEraLabel, getEraPromptHint, getEraTerm, getExposure, getExposureLabel, getExposurePromptHint, getExposureTerm, getFraming, getFramingCategoryLimit, getFramingLabel, getFramingPromptHint, getFramingTerm, getHeldProp, getHeldPropLabel, getHeldPropPromptHint, getHeldPropTerm, getInstrument, getInstrumentTerm, getLens, getLensLabel, getLensPromptHint, getLensTerm, getLighting, getLightingLabel, getLightingPromptHint, getLightingTerm, getLoopSubject, getLoopSubjectLabel, getLoopSubjectPromptHint, getLoopSubjectTerm, getMaterial, getMaterialLabel, getMaterialPromptHint, getMaterialTerm, getMood, getMoodLabel, getMoodPromptHint, getMoodTerm, getMusicEmotion, getMusicEmotionTerm, getMusicEnergy, getMusicEnergyTerm, getMusicEra, getMusicEraTerm, getMusicGenre, getMusicGenreLabel, getMusicGenreTerm, getMusicSubgenre, getMusicSubgenreTerm, getMusicVibe, getMusicVibeTerm, getPhotoGenre, getPhotoGenreLabel, getPhotoGenrePromptHint, getPhotoGenreTerm, getPhotographer, getPhotographerLabel, getPhotographerPromptHint, getPhotographerTerm, getPose, getPoseLabel, getPosePromptHint, getPoseTerm, getPostProcessEffect, getPostProcessEffectLabel, getPostProcessEffectPromptHint, getPostProcessEffectTerm, getProductionStyle, getProductionStyleTerm, getRenderQuality, getRenderQualityLabel, getRenderQualityPromptHint, getRenderQualityTerm, getSetting, getSettingLabel, getSettingPromptHint, getSettingTerm, getSingingStyle, getSingingStyleTerm, getStyle, getStyleLabel, getStylePromptHint, getStyleTerm, getStyling, getStylingDimensionLimit, getStylingLabel, getStylingPromptHint, getStylingTerm, getTemporal, getTemporalLabel, getTemporalPromptHint, getTemporalTerm, getVocalPresence, getVocalPresenceTerm, getVoiceAccent, getVoiceAccentTerm, getVoiceAge, getVoiceAgeTerm, getVoiceArchetype, getVoiceArchetypeTerm, getVoiceEmotion, getVoiceEmotionTerm, getVoiceGender, getVoiceGenderTerm, getVoiceLanguage, getVoiceLanguageTerm, getVoicePace, getVoicePaceTerm, getVoiceTimbre, getVoiceTimbreTerm, getWardrobeEntriesByDimension, getWardrobeEntry, getWardrobePromptHint, isDeniedStyleId, isInstrumentalVocal, isVantageFraming } from './entries/pickers.js';
12
12
  export { A as AURORA_SWEEP_STYLE, D as DEBRIS_SHOWER_STYLE, G as GARDEN_BLOOM_STYLE, I as INSTANT_CUT_CLAUSE, S as SAKURA_PETALS_STYLE, a as SAND_STORM_STYLE, b as SMOKE_PUFF_STYLE, T as TRANSITIONS, c as TRANSITION_CATEGORY_LABELS, d as TRANSITION_CATEGORY_ORDER, e as TRANSITION_DURATIONS, f as TRANSITION_IDS, g as TRANSITION_INTENSITIES, h as TRANSITION_OPTION_FIELDS, i as TRANSITION_POSITIONS, j as TRANSITION_STYLE_FIELD, k as Transition, l as TransitionCategory, m as TransitionDuration, n as TransitionHintOptions, o as TransitionHintScope, p as TransitionIntensity, q as TransitionOption, r as TransitionOptionChoice, s as TransitionOptionValues, t as TransitionPosition, u as TransitionTiming, v as TransitionTimingOption, W as WHITE_FLASH_STYLE, w as WIPE_DIRECTION, x as blendedCutClause, y as composeTransitionHintFromConnections, z as getTransition, B as getTransitionLabel, C as getTransitionOptions, E as getTransitionPromptHint, F as getTransitionTerm, H as isBlendableTransition, J as isInstantTransition, K as readTransitionOptionValues, L as renderTransitionBases } from './transitions-BgwWM37i.js';
13
- export { BODY_CAPTIONS_PRESET_ID, BRAND_PRESETS, BRAND_PRESET_IDS, BRAND_PRESET_META, BrandCasing, BrandFonts, BrandLogo, BrandPalette, BrandPresetId, BrandPresetMeta, BrandTokens, BrandTypeSpec, CAPTION_LEVERS_BY_LANGUAGE, CAPTION_SEGMENT_LEVER_KEYS, CaptionLanguageLevers, CaptionSegmentRole, FACTORY_PRESETS, FACTORY_PRESET_PREVIEW_FILES, FACTORY_SNIPPETS, FactoryPreset, FactoryPresetGroup, HOOK_PLATE_PRESET_ID, HookPlateSegmentsOptions, HookPlateSegmentsResult, MAX_PRESET_REFERENCES, OBJECT_ANGLE_PRESETS, OBJECT_ANGLE_PROMPTS, OBJECT_ASSET_PRESETS, OBJECT_ASSET_PROMPTS, OBJECT_MATERIAL_PRESETS, OBJECT_MATERIAL_PROMPTS, OBJECT_VARIATION_PRESETS, OBJECT_VARIATION_PROMPTS, ObjectPresetAssetType, PRESET_PREVIEW_PATH, STYLE_PRESETS, StylePreset, factoryPresetPreviewUrl, getFactoryPresets, getFactorySnippets, getStylePreset, groupFactoryPresets, hookPlateCaptionSegments, presetMinReferences, resolveBrandInput } from './entries/presets.js';
13
+ export { BODY_CAPTIONS_PRESET_ID, BRAND_PRESETS, BRAND_PRESET_IDS, BRAND_PRESET_META, BrandCasing, BrandFonts, BrandLogo, BrandPalette, BrandPresetId, BrandPresetMeta, BrandTokens, BrandTypeSpec, CAPTION_LEVERS_BY_LANGUAGE, CAPTION_SEGMENT_LEVER_KEYS, CaptionLanguageLevers, CaptionSegmentRole, FACTORY_PRESETS, FACTORY_PRESET_PREVIEW_FILES, FACTORY_PRESET_PREVIEW_LARGE_FILES, FACTORY_SNIPPETS, FactoryPreset, FactoryPresetGroup, HOOK_PLATE_PRESET_ID, HookPlateSegmentsOptions, HookPlateSegmentsResult, MAX_PRESET_REFERENCES, OBJECT_ANGLE_PRESETS, OBJECT_ANGLE_PROMPTS, OBJECT_ASSET_PRESETS, OBJECT_ASSET_PROMPTS, OBJECT_MATERIAL_PRESETS, OBJECT_MATERIAL_PROMPTS, OBJECT_VARIATION_PRESETS, OBJECT_VARIATION_PROMPTS, ObjectPresetAssetType, PRESET_PREVIEW_LARGE_WIDTH, PRESET_PREVIEW_PATH, PRESET_PREVIEW_WIDTH, PresetPreviewLargeFile, STYLE_PRESETS, StylePreset, factoryPresetPreviewSrcSet, factoryPresetPreviewUrl, getFactoryPresets, getFactorySnippets, getStylePreset, groupFactoryPresets, hookPlateCaptionSegments, presetMinReferences, resolveBrandInput } from './entries/presets.js';
14
14
  export { PromptClauseSlot, ReferenceLineFormat, STYLE_SECTION_GAP, STYLE_SECTION_HEADER, SlottedPromptClause, appendReferenceLines, asBodyClauses, composeSectionedPrompt, endsInsideStyleSection, insertBeforeStyleSection, nearestColorName, partitionStyleClauses, readDirectionFields, readStructuredFields, readSubjectFields, referenceDescriptionLine, renderDescribedReferenceLines, renderReferenceCaptionLines, renderStyleSection, sectionedClauseCosts, splitStyleSection, styleSectionFromClauses, styleSlotFor } from './entries/prompt-builder.js';
15
15
  export { A as ANGLE_LABELS, a as ASPECT_RATIO_LABELS, B as BuildImagePromptConfig, b as BuildImagePromptOverflowResult, c as BuildImagePromptResult, d as BuildImagePromptSegmentsResult, D as DIRECTION_ARRAY_CEILING, e as DIRECTION_FIELDS, f as DIRECTION_ID_MAX_CHARS, g as DIRECTION_KEYS, h as DirectionFamily, i as DirectionFieldRow, j as DirectionFieldSpec, k as DirectionFields, l as DirectionHintClause, m as DirectionHintMode, n as DirectionKey, o as DirectionRenderOptions, p as DirectionStyleGroup, q as DirectionSurface, F as FILM_STYLE_KEYS, I as IMAGE_HINT_MODE_DEFAULT, r as ImageDirectionKey, M as MAX_SUBJECT_KEYS, s as MOVEMENT_LABELS, P as PromptSegment, t as PromptSegmentOrigin, R as ResolveCharacterMentionsResult, u as ResolveLocationMentionsResult, S as SCENE_PROMPT_MAX_LENGTH, v as SHOT_LABELS, w as SUBJECT_ARRAY_CEILING, x as SUBJECT_CUSTOM_AGE_KEY, y as SUBJECT_FIELDS, z as SUBJECT_FOLD_KEYS, C as SUBJECT_ID_MAX_CHARS, E as SUBJECT_IMAGE_HINT_MODE_DEFAULT, G as SUBJECT_KEYS, H as SUBJECT_KEY_MAX_CHARS, J as SUBJECT_VIDEO_HINT_MODE_DEFAULT, K as StructuredPromptFields, L as StyleReferenceInput, N as SubjectFieldRow, O as SubjectFieldSpec, Q as SubjectFields, T as SubjectGroupFieldSpec, U as SubjectHintMode, V as SubjectIdsFieldSpec, W as SubjectSurface, X as USER_DIRECTION_REF_KINDS, Y as UserDirectionRef, Z as UserDirectionRefKind, _ as VIDEO_HINT_MODE_DEFAULT, $ as VideoDirectionKey, a0 as applyReferenceOrderToVideo, a1 as buildIdentityDirectives, a2 as buildImagePrompt, a3 as buildImagePromptSegments, a4 as buildImagePromptWithOverflow, a5 as buildReferenceBlocks, a6 as buildScenePrompt, a7 as directionFieldsForSurface, a8 as directionKeyForUserRef, a9 as expandImagePositionRefs, aa as expandImageRefTokens, ab as getRegisteredSubjectKeys, ac as modeForFamily, ad as normalizeSubjectFields, ae as parseUserDirectionRef, af as renderDirectionHintClauses, ag as renderDirectionHints, ah as renderMoodboardClause, ai as renderPaletteClause, aj as renderStructuredFields, ak as renderSubjectHints, al as resolveCharacterMentions, am as resolveLocationMentions, an as styleReferenceDescription, ao as subjectFieldsForSurface, ap as truncateText, aq as userDirectionRefValue, ar as userRefKindOfDirectionKey } from './subject-registry-DFiGx49v.js';
16
16
  export { ComputeNodePromptArgs, LlmChatFieldArgs, NODE_PROMPT_CANDIDATE_FIELDS, NODE_PROMPT_FIELDS, NodeSendTextArgs, PROMPT_AFFIX_CORE_FIELD_OVERRIDES, PROMPT_AFFIX_NODE_TYPES, PROMPT_HINT_SEPARATOR, PromptFieldSpec, PromptIconKind, ResolvePromptArgs, TEXT_REQUIRED_NODE_TYPES, WIRED_OUTPUT_NODE_TYPES, appendPromptHints, applyPromptAffixes, composeNegative, computeAiWriterInput, computeLlmChatFields, computeNodePrompt, computeNodeSendText, computeScriptTopic, getPromptFields, getSnippetMedia, joinHintFragments, joinPromptHints, joinPromptParts, joinSentences, keepableDirectionHints, nodeHasInlinePrompt, nodeHasPromptField, nodeSupportsPromptAffixes, promptAffixCoreField, promptFieldCarriesAffixes, promptPartSeparator, resolvePrompt, stripAudioTags } from './entries/prompt-fields.js';
package/dist/index.js CHANGED
@@ -1,27 +1,27 @@
1
- export { BODY_CAPTIONS_PRESET_ID, BRAND_PRESETS, BRAND_PRESET_IDS, BRAND_PRESET_META, CAPTION_LEVERS_BY_LANGUAGE, CAPTION_SEGMENT_LEVER_KEYS, FACTORY_PRESETS, FACTORY_PRESET_PREVIEW_FILES, FACTORY_SNIPPETS, HOOK_PLATE_PRESET_ID, MAX_PRESET_REFERENCES, OBJECT_ANGLE_PRESETS, OBJECT_ANGLE_PROMPTS, OBJECT_ASSET_PRESETS, OBJECT_ASSET_PROMPTS, OBJECT_MATERIAL_PRESETS, OBJECT_MATERIAL_PROMPTS, OBJECT_VARIATION_PRESETS, OBJECT_VARIATION_PROMPTS, PRESET_PREVIEW_PATH, SNIPPET_MEDIA_VALUES, STYLE_PRESETS, factoryPresetPreviewUrl, getFactoryPresets, getFactorySnippets, getStylePreset, groupFactoryPresets, hookPlateCaptionSegments, presetMinReferences, resolveBrandInput } from './chunk-RB2F5JQF.js';
2
- export { readDirectionFields, readStructuredFields, readSubjectFields } from './chunk-GIO77YH5.js';
1
+ export { BODY_CAPTIONS_PRESET_ID, BRAND_PRESETS, BRAND_PRESET_IDS, BRAND_PRESET_META, CAPTION_LEVERS_BY_LANGUAGE, CAPTION_SEGMENT_LEVER_KEYS, FACTORY_PRESETS, FACTORY_PRESET_PREVIEW_FILES, FACTORY_PRESET_PREVIEW_LARGE_FILES, FACTORY_SNIPPETS, HOOK_PLATE_PRESET_ID, MAX_PRESET_REFERENCES, OBJECT_ANGLE_PRESETS, OBJECT_ANGLE_PROMPTS, OBJECT_ASSET_PRESETS, OBJECT_ASSET_PROMPTS, OBJECT_MATERIAL_PRESETS, OBJECT_MATERIAL_PROMPTS, OBJECT_VARIATION_PRESETS, OBJECT_VARIATION_PROMPTS, PRESET_PREVIEW_LARGE_WIDTH, PRESET_PREVIEW_PATH, PRESET_PREVIEW_WIDTH, SNIPPET_MEDIA_VALUES, STYLE_PRESETS, factoryPresetPreviewSrcSet, factoryPresetPreviewUrl, getFactoryPresets, getFactorySnippets, getStylePreset, groupFactoryPresets, hookPlateCaptionSegments, presetMinReferences, resolveBrandInput } from './chunk-PUWJ2ZBG.js';
2
+ export { readDirectionFields, readStructuredFields, readSubjectFields } from './chunk-NN4FL7SB.js';
3
3
  export { TEXT_REQUIRED_NODE_TYPES, WIRED_OUTPUT_NODE_TYPES, computeAiWriterInput, computeNodeSendText, stripAudioTags } from './chunk-YS6HOWMW.js';
4
4
  export { NODE_PROMPT_CANDIDATE_FIELDS, NODE_PROMPT_FIELDS, PROMPT_AFFIX_CORE_FIELD_OVERRIDES, PROMPT_AFFIX_NODE_TYPES, applyPromptAffixes, composeNegative, computeLlmChatFields, computeNodePrompt, computeScriptTopic, getPromptFields, getSnippetMedia, joinPromptParts, nodeHasInlinePrompt, nodeHasPromptField, nodeSupportsPromptAffixes, promptAffixCoreField, promptFieldCarriesAffixes, promptPartSeparator, resolvePrompt } from './chunk-N6VMPG5S.js';
5
- export { REF_BINDING, SEEDANCE_VIDEO_EDIT_PREFIX, appendField, appendMusicMeta, assembleImageInput, assembleSunoInput, buildSeedanceVideoEditPrompt, buildSurroundFillPrompt, composeSoundHintFromConnections, composeVideoPromptText, getEffectiveSunoCustomMode, identityRefsSentence, imageBindingFor, placeFramesAfterReferences, planFrameDelivery, promptBindsFirstFrame, resolveGeminiOmniI2vInputs, resolveRefIdTokens, resolveReferenceTokens, resolveSeedance2Inputs, resolveVeoI2vInputs, resolveVideoReferenceCore, truncateForField } from './chunk-PHFOKGYS.js';
6
- export { ANGLE_LABELS, ASPECT_RATIO_LABELS, MAX_SUBJECT_KEYS, MOVEMENT_LABELS, SCENE_PROMPT_MAX_LENGTH, SHOT_LABELS, STYLE_SECTION_GAP, STYLE_SECTION_HEADER, SUBJECT_ARRAY_CEILING, SUBJECT_CUSTOM_AGE_KEY, SUBJECT_FIELDS, SUBJECT_FOLD_KEYS, SUBJECT_ID_MAX_CHARS, SUBJECT_IMAGE_HINT_MODE_DEFAULT, SUBJECT_KEYS, SUBJECT_KEY_MAX_CHARS, SUBJECT_VIDEO_HINT_MODE_DEFAULT, appendReferenceLines, applyReferenceOrderToVideo, asBodyClauses, buildIdentityDirectives, buildImagePrompt, buildImagePromptSegments, buildImagePromptWithOverflow, buildReferenceBlocks, buildScenePrompt, composeSectionedPrompt, endsInsideStyleSection, expandImagePositionRefs, expandImageRefTokens, getRegisteredSubjectKeys, insertBeforeStyleSection, normalizeSubjectFields, partitionStyleClauses, referenceDescriptionLine, renderDescribedReferenceLines, renderReferenceCaptionLines, renderStructuredFields, renderStyleSection, renderSubjectHints, resolveCharacterMentions, resolveLocationMentions, sectionedClauseCosts, splitStyleSection, styleSectionFromClauses, styleSlotFor, subjectFieldsForSurface, truncateText } from './chunk-6JABZ5OC.js';
5
+ export { REF_BINDING, SEEDANCE_VIDEO_EDIT_PREFIX, appendField, appendMusicMeta, assembleImageInput, assembleSunoInput, buildSeedanceVideoEditPrompt, buildSurroundFillPrompt, composeSoundHintFromConnections, composeVideoPromptText, getEffectiveSunoCustomMode, identityRefsSentence, imageBindingFor, placeFramesAfterReferences, planFrameDelivery, promptBindsFirstFrame, resolveGeminiOmniI2vInputs, resolveRefIdTokens, resolveReferenceTokens, resolveSeedance2Inputs, resolveVeoI2vInputs, resolveVideoReferenceCore, truncateForField } from './chunk-2HJJBXGA.js';
6
+ export { ANGLE_LABELS, ASPECT_RATIO_LABELS, MAX_SUBJECT_KEYS, MOVEMENT_LABELS, SCENE_PROMPT_MAX_LENGTH, SHOT_LABELS, STYLE_SECTION_GAP, STYLE_SECTION_HEADER, SUBJECT_ARRAY_CEILING, SUBJECT_CUSTOM_AGE_KEY, SUBJECT_FIELDS, SUBJECT_FOLD_KEYS, SUBJECT_ID_MAX_CHARS, SUBJECT_IMAGE_HINT_MODE_DEFAULT, SUBJECT_KEYS, SUBJECT_KEY_MAX_CHARS, SUBJECT_VIDEO_HINT_MODE_DEFAULT, appendReferenceLines, applyReferenceOrderToVideo, asBodyClauses, buildIdentityDirectives, buildImagePrompt, buildImagePromptSegments, buildImagePromptWithOverflow, buildReferenceBlocks, buildScenePrompt, composeSectionedPrompt, endsInsideStyleSection, expandImagePositionRefs, expandImageRefTokens, getRegisteredSubjectKeys, insertBeforeStyleSection, normalizeSubjectFields, partitionStyleClauses, referenceDescriptionLine, renderDescribedReferenceLines, renderReferenceCaptionLines, renderStructuredFields, renderStyleSection, renderSubjectHints, resolveCharacterMentions, resolveLocationMentions, sectionedClauseCosts, splitStyleSection, styleSectionFromClauses, styleSlotFor, subjectFieldsForSurface, truncateText } from './chunk-SMKIVT7P.js';
7
7
  import './chunk-GILUVQQJ.js';
8
8
  export { keepableDirectionHints } from './chunk-JZOPMVGY.js';
9
9
  export { PROMPT_HINT_SEPARATOR, joinPromptHints } from './chunk-35UHMDGS.js';
10
10
  export { computePackSidecarCoverage } from './chunk-FDOG7BNB.js';
11
- export { AD_CREATIVE_ANALYSIS_FIELDS, AD_CREATIVE_ANALYSIS_SYSTEM_PROMPT, AUDIO_WIZARD_CATEGORIES, DEFAULT_OWN_MOTION, IMAGE_REFERENCE_PROMPT_DOCTRINE, IMAGE_WIZARD_CATEGORIES, LLM_CHAT_WIZARD_CATEGORIES, MUSIC_WIZARD_CATEGORIES, OWN_MOTION_NODE_TYPES, POST_CONTENT_ANALYSIS_SYSTEM_PROMPT, PROVIDER_CAPABILITIES, PROVIDER_PROMPT_DOCTRINES, REFERENCE_IMAGE_ROLES, SCENE3D_FIGURE_REFERENCE_RULE, SCENE3D_FREE_PLATE_SLOTS, SCENE3D_LAYOUT_REFERENCE_SCOPING_FIXTURE, SCENE3D_LAYOUT_REFERENCE_SCOPING_LINE, SCENE3D_LAYOUT_SCOPING_FOR, SCENE3D_LAYOUT_SCOPING_IGNORE, SCENE3D_LAYOUT_SCOPING_LOOK_SOURCE, SCENE3D_LAYOUT_SCOPING_MARKER, SCENE3D_UNREFERENCED_FIGURES_WARNING_CODE, TEXT_WIZARD_CATEGORIES, VIDEO_WIZARD_CATEGORIES, appendScene3DStillScopingLines, buildAdCreativeAnalysisUserText, buildCharacterPrompt, buildCreaturePrompt, buildFaceTemplateInputs, buildLocationMotionPrompt, buildLocationPrompt, buildLocationRefinePrompt, buildMotionPrompt, buildObjectMotionPrompt, buildObjectPrompt, buildScene3DLayoutScopingLine, buildScene3DUnreferencedFiguresWarning, getCategoriesForNodeType, getPromptDoctrine, getPromptTips, hasScene3DLayoutScopingLine, isWizardSupported, ownMotionHint, renderScene3DLayoutScopingLine, scene3DLayoutVideoCaptions } from './chunk-XMFWHTQB.js';
11
+ export { AD_CREATIVE_ANALYSIS_FIELDS, AD_CREATIVE_ANALYSIS_SYSTEM_PROMPT, AUDIO_WIZARD_CATEGORIES, DEFAULT_OWN_MOTION, IMAGE_REFERENCE_PROMPT_DOCTRINE, IMAGE_WIZARD_CATEGORIES, LLM_CHAT_WIZARD_CATEGORIES, MUSIC_WIZARD_CATEGORIES, OWN_MOTION_NODE_TYPES, POST_CONTENT_ANALYSIS_SYSTEM_PROMPT, PROVIDER_CAPABILITIES, PROVIDER_PROMPT_DOCTRINES, REFERENCE_IMAGE_ROLES, SCENE3D_FIGURE_REFERENCE_RULE, SCENE3D_FREE_PLATE_SLOTS, SCENE3D_LAYOUT_REFERENCE_SCOPING_FIXTURE, SCENE3D_LAYOUT_REFERENCE_SCOPING_LINE, SCENE3D_LAYOUT_SCOPING_FOR, SCENE3D_LAYOUT_SCOPING_IGNORE, SCENE3D_LAYOUT_SCOPING_LOOK_SOURCE, SCENE3D_LAYOUT_SCOPING_MARKER, SCENE3D_UNREFERENCED_FIGURES_WARNING_CODE, TEXT_WIZARD_CATEGORIES, VIDEO_WIZARD_CATEGORIES, appendScene3DStillScopingLines, buildAdCreativeAnalysisUserText, buildCharacterPrompt, buildCreaturePrompt, buildFaceTemplateInputs, buildLocationMotionPrompt, buildLocationPrompt, buildLocationRefinePrompt, buildMotionPrompt, buildObjectMotionPrompt, buildObjectPrompt, buildScene3DLayoutScopingLine, buildScene3DUnreferencedFiguresWarning, getCategoriesForNodeType, getPromptDoctrine, getPromptTips, hasScene3DLayoutScopingLine, isWizardSupported, ownMotionHint, renderScene3DLayoutScopingLine, scene3DLayoutVideoCaptions } from './chunk-LJ5WW6KK.js';
12
12
  export { CINEMATIC_LOOK_TAIL, FILM_STILL_PREFIX, NEUTRAL_PERSON, REALISM_FINISH, REALISM_PASS_INSTRUCTION, REALISM_SKIN, REFERENCE_RULES, REFERENCE_RULES_MULTI_PERSON, SCENE_FRAME_RULE, filmStillPrefix, realismEmptyHands, realismViewpoint, referenceRulesBlock } from './chunk-T64D26P4.js';
13
13
  export { DEFAULT_IDENTITY_LOCK, DEFAULT_TEMPLATES, applyTemplate, buildIdentityLockLine, characterLockToRefLock, collectIdentityLockClause, getIdentityLockClause, hasUpstreamCharacter, resolveTemplate, toIdentityLockMode, withForcedIdentityLock } from './chunk-BQWIPLLR.js';
14
14
  import './chunk-ADMHDFHB.js';
15
15
  import './chunk-HOMR5XFP.js';
16
- export { ALL_PICKER_WIRING, ANALYZABLE_PICKER_TYPES, GAPS_SCHEMA, MULTI_PICKER_WIRING, PICKER_ANALYZER_FAMILIES, PICKER_ANALYZER_REGISTRY, PICKER_TYPES, SINGLE_PICKER_WIRING, __resetCatalogIdGuardForTests, applyPickerJson, buildMultiPickerAnalyzerSpec, buildPickerAnalyzerSpec, buildPickerLegend, buildPickerZodSchema, catalogGuardActive, findForeignCatalogIds, findForeignCatalogIdsInBody, foreignCatalogIdMessage, getPickerAnalyzer, getPickerWiring, isAnalyzablePicker, pickerFanoutTargets } from './chunk-HL6PZ4A6.js';
17
- export { ADULT_SWEPT_CATALOG_IDS, FLOORED_PICKER_KEYS, RETIRED_ADULT_ONLY_HINT_STRINGS, applyMinorAgeFloorToPickerValues, buildNeedleAlternationSource, containsMinorAgeHint, getAdultOnlyEntries, getAdultOnlyHintStrings, getAdultOnlyIds, getCharacterMotionBindings, getMinorAgeHintStrings, getParameterPromptHint } from './chunk-ZFOXGNLK.js';
18
- export { DIRECTION_ARRAY_CEILING, DIRECTION_FIELDS, DIRECTION_ID_MAX_CHARS, DIRECTION_KEYS, FILM_STYLE_KEYS, IMAGE_HINT_MODE_DEFAULT, USER_DIRECTION_REF_KINDS, VIDEO_HINT_MODE_DEFAULT, curatedAnimalPromptHint, curatedAnimalTerm, curatedFurnitureText, curatedVehicleText, curatedWeaponText, directionFieldsForSurface, directionKeyForUserRef, modeForFamily, nearestColorName, parseUserDirectionRef, renderDirectionHintClauses, renderDirectionHints, renderMoodboardClause, renderPaletteClause, styleReferenceDescription, userDirectionRefValue, userRefKindOfDirectionKey } from './chunk-QJACEKMZ.js';
19
- export { WARDROBE, WARDROBE_CATEGORY_LABELS, WARDROBE_DIMENSION_ORDER, WARDROBE_FIELD_BY_DIMENSION, buildWardrobeHints, getCharacterMotionDiagnostics, getWardrobeEntriesByDimension, getWardrobeEntry, getWardrobePromptHint } from './chunk-IFRFYBGE.js';
20
- export { ACTION_FX, ACTION_FX_CATEGORY_LABELS, ACTION_FX_CATEGORY_ORDER, ACTION_FX_IDS, AESTHETICS, AESTHETIC_CATEGORY_LABELS, AESTHETIC_CATEGORY_ORDER, AESTHETIC_IDS, ATMOSPHERES, ATMOSPHERE_IDS, AURORA_SWEEP_STYLE, BACKDROPS, BACKDROP_CATEGORY_LABELS, BACKDROP_CATEGORY_ORDER, BACKDROP_IDS, CAMERA_FORMATS, CAMERA_FORMAT_IDS, CAMERA_MOTIONS, CAMERA_MOTION_CATEGORY_LABELS, CAMERA_MOTION_CATEGORY_ORDER, CAMERA_MOTION_IDS, CHARACTER_FX, CHARACTER_FX_CATEGORY_LABELS, CHARACTER_FX_CATEGORY_ORDER, CHARACTER_FX_DURATIONS, CHARACTER_FX_IDS, CHARACTER_FX_INTENSITIES, CHARACTER_FX_POSITIONS, CHARACTER_MOTIONS, CHARACTER_MOTION_CATEGORY_LABELS, CHARACTER_MOTION_CATEGORY_ORDER, CHARACTER_MOTION_IDS, CHARACTER_MOTION_MAX_PICKS, CHARACTER_MOTION_PACES, CHARACTER_MOTION_POSITIONS, COLOR_LOOKS, COLOR_LOOK_CATEGORY_LABELS, COLOR_LOOK_CATEGORY_ORDER, COLOR_LOOK_IDS, COMPOSITION_EFFECTS, COMPOSITION_EFFECT_IDS, DEBRIS_SHOWER_STYLE, ERAS, ERA_CATEGORY_LABELS, ERA_CATEGORY_ORDER, ERA_IDS, EXPOSURE_CATEGORY_LABELS, EXPOSURE_CATEGORY_ORDER, EXPOSURE_FIELD_BY_CATEGORY, EXPOSURE_IDS, EXPOSURE_SETTINGS, FRAMINGS, FRAMING_CATEGORY_LABELS, FRAMING_CATEGORY_ORDER, FRAMING_FIELD_BY_CATEGORY, FRAMING_IDS, GARDEN_BLOOM_STYLE, HELD_PROPS, HELD_PROP_CATEGORY_LABELS, HELD_PROP_CATEGORY_ORDER, HELD_PROP_IDS, INSTANT_CUT_CLAUSE, INSTRUMENTATION_DEFAULT_DATA, INSTRUMENTS, INSTRUMENT_CATEGORY_LABELS, INSTRUMENT_CATEGORY_ORDER, LENSES, LENS_IDS, LIGHTINGS, LIGHTING_CATEGORY_LABELS, LIGHTING_CATEGORY_ORDER, LIGHTING_FIELD_BY_CATEGORY, LIGHTING_IDS, LOOP_SUBJECTS, LOOP_SUBJECT_CATEGORY_LABELS, LOOP_SUBJECT_CATEGORY_ORDER, MATERIALS, MATERIAL_CATEGORY_LABELS, MATERIAL_CATEGORY_ORDER, MATERIAL_IDS, MAX_SELECTED_BY_FRAMING_CATEGORY, MAX_SELECTED_BY_STYLING_DIMENSION, MOODS, MOOD_CATEGORY_LABELS, MOOD_CATEGORY_ORDER, MOOD_IDS, MUSIC_EMOTIONS, MUSIC_ENERGIES, MUSIC_ERAS, MUSIC_GENRES, MUSIC_GENRE_CATEGORY_LABELS, MUSIC_GENRE_CATEGORY_ORDER, MUSIC_GENRE_DEFAULT_DATA, MUSIC_MOOD_DEFAULT_DATA, MUSIC_VIBES, PHOTOGRAPHERS, PHOTOGRAPHER_CATEGORY_LABELS, PHOTOGRAPHER_CATEGORY_ORDER, PHOTOGRAPHER_IDS, PHOTO_GENRES, PHOTO_GENRE_CATEGORY_LABELS, PHOTO_GENRE_CATEGORY_ORDER, PHOTO_GENRE_IDS, PICKER_CATALOGS, POSES, POSE_CATEGORY_LABELS, POSE_CATEGORY_ORDER, POSE_IDS, POST_PROCESS_EFFECTS, POST_PROCESS_EFFECT_IDS, PRODUCTION_STYLES, RENDER_QUALITIES, RENDER_QUALITY_IDS, SAKURA_PETALS_STYLE, SAND_STORM_STYLE, SETTINGS, SETTING_CATEGORY_LABELS, SETTING_IDS, SINGING_STYLES, SMOKE_PUFF_STYLE, STYLES, STYLE_IDS, STYLINGS, STYLING_DIMENSION_LABELS, STYLING_DIMENSION_ORDER, STYLING_DIMENSION_SECTIONS, STYLING_FIELD_BY_DIMENSION, STYLING_IDS, TEMPORALS, TEMPORAL_CATEGORY_LABELS, TEMPORAL_CATEGORY_ORDER, TEMPORAL_FIELD_BY_CATEGORY, TEMPORAL_IDS, TRANSITIONS, TRANSITION_CATEGORY_LABELS, TRANSITION_CATEGORY_ORDER, TRANSITION_DURATIONS, TRANSITION_IDS, TRANSITION_INTENSITIES, TRANSITION_OPTION_FIELDS, TRANSITION_POSITIONS, TRANSITION_STYLE_FIELD, VOCAL_PRESENCE, VOCAL_PRESENCE_INSTRUMENTAL_ID, VOICE_ACCENTS, VOICE_AGES, VOICE_ARCHETYPES, VOICE_CHARACTER_DEFAULT_DATA, VOICE_DELIVERY_DEFAULT_DATA, VOICE_EMOTIONS, VOICE_GENDERS, VOICE_LANGUAGES, VOICE_PACES, VOICE_TIMBRES, WHITE_FLASH_STYLE, WIPE_DIRECTION, blendedCutClause, buildActionFxHints, buildActionFxTerms, buildAestheticHints, buildAestheticTerms, buildAtmosphereHints, buildAtmosphereTerms, buildExposureHints, buildExposureTerms, buildFramingHints, buildFramingTerms, buildHeldPropHints, buildHeldPropTerms, buildInstrumentationHints, buildInstrumentationTerms, buildLightingHints, buildLightingTerms, buildMaterialHints, buildMaterialTerms, buildMoodHints, buildMoodTerms, buildMusicGenreHints, buildMusicGenreTerms, buildMusicMoodHints, buildMusicMoodTerms, buildPhotographerHints, buildPhotographerTerms, buildPoseHints, buildPoseTerms, buildPostProcessHints, buildPostProcessTerms, buildStylingHints, buildStylingTerms, buildTemporalHints, buildTemporalTerms, buildVoiceCharacterHints, buildVoiceCharacterTerms, buildVoiceDeliveryHints, buildVoiceDeliveryTerms, composeCameraMotionHintFromConnections, composeCameraMotionTermFromConnections, composeCharacterFxHintFromConnections, composeCharacterMotionHintFromConnections, composeTransitionHintFromConnections, composedHas, composedOption, composedOptionIndex, curateEntries, getActionFx, getActionFxLabel, getActionFxPromptHint, getActionFxTerm, getAesthetic, getAestheticLabel, getAestheticPromptHint, getAestheticTerm, getAtmosphere, getAtmosphereLabel, getAtmospherePromptHint, getAtmosphereTerm, getBackdrop, getBackdropLabel, getBackdropPromptHint, getBackdropTerm, getCameraFormat, getCameraFormatLabel, getCameraFormatPromptHint, getCameraFormatTerm, getCameraMotion, getCameraMotionLabel, getCameraMotionPromptHint, getCameraMotionTerm, getCharacterFx, getCharacterFxLabel, getCharacterFxPromptHint, getCharacterFxTerm, getCharacterMotion, getCharacterMotionLabel, getCharacterMotionPromptHint, getCharacterMotionTerm, getColorLook, getColorLookLabel, getColorLookPromptHint, getColorLookTerm, getCompositionEffect, getCompositionEffectLabel, getCompositionEffectPromptHint, getCompositionEffectTerm, getEra, getEraLabel, getEraPromptHint, getEraTerm, getExposure, getExposureLabel, getExposurePromptHint, getExposureTerm, getFraming, getFramingCategoryLimit, getFramingLabel, getFramingPromptHint, getFramingTerm, getHeldProp, getHeldPropLabel, getHeldPropPromptHint, getHeldPropTerm, getInstrument, getInstrumentTerm, getLens, getLensLabel, getLensPromptHint, getLensTerm, getLighting, getLightingLabel, getLightingPromptHint, getLightingTerm, getLoopSubject, getLoopSubjectLabel, getLoopSubjectPromptHint, getLoopSubjectTerm, getMaterial, getMaterialLabel, getMaterialPromptHint, getMaterialTerm, getMood, getMoodLabel, getMoodPromptHint, getMoodTerm, getMusicEmotion, getMusicEmotionTerm, getMusicEnergy, getMusicEnergyTerm, getMusicEra, getMusicEraTerm, getMusicGenre, getMusicGenreLabel, getMusicGenreTerm, getMusicSubgenre, getMusicSubgenreTerm, getMusicVibe, getMusicVibeTerm, getPhotoGenre, getPhotoGenreLabel, getPhotoGenrePromptHint, getPhotoGenreTerm, getPhotographer, getPhotographerLabel, getPhotographerPromptHint, getPhotographerTerm, getPickerCatalog, getPose, getPoseLabel, getPosePromptHint, getPoseTerm, getPostProcessEffect, getPostProcessEffectLabel, getPostProcessEffectPromptHint, getPostProcessEffectTerm, getProductionStyle, getProductionStyleTerm, getRegisteredPickerCatalogs, getRenderQuality, getRenderQualityLabel, getRenderQualityPromptHint, getRenderQualityTerm, getSetting, getSettingLabel, getSettingPromptHint, getSettingTerm, getSingingStyle, getSingingStyleTerm, getStyle, getStyleLabel, getStylePromptHint, getStyleTerm, getStyling, getStylingDimensionLimit, getStylingLabel, getStylingPromptHint, getStylingTerm, getTemporal, getTemporalLabel, getTemporalPromptHint, getTemporalTerm, getTransition, getTransitionLabel, getTransitionOptions, getTransitionPromptHint, getTransitionTerm, getVocalPresence, getVocalPresenceTerm, getVoiceAccent, getVoiceAccentTerm, getVoiceAge, getVoiceAgeTerm, getVoiceArchetype, getVoiceArchetypeTerm, getVoiceEmotion, getVoiceEmotionTerm, getVoiceGender, getVoiceGenderTerm, getVoiceLanguage, getVoiceLanguageTerm, getVoicePace, getVoicePaceTerm, getVoiceTimbre, getVoiceTimbreTerm, isBlendableTransition, isDeniedStyleId, isInstantTransition, isInstrumentalVocal, isVantageFraming, listPickerCatalogs, overlayEntry, projectAllCatalogs, projectPickerCatalog, readTransitionOptionValues, renderTransitionBases, setComposedCatalogResolver, summarizePickerCatalogs } from './chunk-CYMIXKFT.js';
16
+ export { ALL_PICKER_WIRING, ANALYZABLE_PICKER_TYPES, GAPS_SCHEMA, MULTI_PICKER_WIRING, PICKER_ANALYZER_FAMILIES, PICKER_ANALYZER_REGISTRY, PICKER_TYPES, SINGLE_PICKER_WIRING, __resetCatalogIdGuardForTests, applyPickerJson, buildMultiPickerAnalyzerSpec, buildPickerAnalyzerSpec, buildPickerLegend, buildPickerZodSchema, catalogGuardActive, findForeignCatalogIds, findForeignCatalogIdsInBody, foreignCatalogIdMessage, getPickerAnalyzer, getPickerWiring, isAnalyzablePicker, pickerFanoutTargets } from './chunk-2OIKQ4WB.js';
17
+ export { ADULT_SWEPT_CATALOG_IDS, FLOORED_PICKER_KEYS, RETIRED_ADULT_ONLY_HINT_STRINGS, applyMinorAgeFloorToPickerValues, buildNeedleAlternationSource, containsMinorAgeHint, getAdultOnlyEntries, getAdultOnlyHintStrings, getAdultOnlyIds, getCharacterMotionBindings, getMinorAgeHintStrings, getParameterPromptHint } from './chunk-57PTYJJX.js';
18
+ export { DIRECTION_ARRAY_CEILING, DIRECTION_FIELDS, DIRECTION_ID_MAX_CHARS, DIRECTION_KEYS, FILM_STYLE_KEYS, IMAGE_HINT_MODE_DEFAULT, USER_DIRECTION_REF_KINDS, VIDEO_HINT_MODE_DEFAULT, curatedAnimalPromptHint, curatedAnimalTerm, curatedFurnitureText, curatedVehicleText, curatedWeaponText, directionFieldsForSurface, directionKeyForUserRef, modeForFamily, nearestColorName, parseUserDirectionRef, renderDirectionHintClauses, renderDirectionHints, renderMoodboardClause, renderPaletteClause, styleReferenceDescription, userDirectionRefValue, userRefKindOfDirectionKey } from './chunk-CPKYIVWP.js';
19
+ export { WARDROBE, WARDROBE_CATEGORY_LABELS, WARDROBE_DIMENSION_ORDER, WARDROBE_FIELD_BY_DIMENSION, buildWardrobeHints, getCharacterMotionDiagnostics, getWardrobeEntriesByDimension, getWardrobeEntry, getWardrobePromptHint } from './chunk-IKHRZ5UQ.js';
20
+ export { ACTION_FX, ACTION_FX_CATEGORY_LABELS, ACTION_FX_CATEGORY_ORDER, ACTION_FX_IDS, AESTHETICS, AESTHETIC_CATEGORY_LABELS, AESTHETIC_CATEGORY_ORDER, AESTHETIC_IDS, ATMOSPHERES, ATMOSPHERE_IDS, AURORA_SWEEP_STYLE, BACKDROPS, BACKDROP_CATEGORY_LABELS, BACKDROP_CATEGORY_ORDER, BACKDROP_IDS, CAMERA_FORMATS, CAMERA_FORMAT_IDS, CAMERA_MOTIONS, CAMERA_MOTION_CATEGORY_LABELS, CAMERA_MOTION_CATEGORY_ORDER, CAMERA_MOTION_IDS, CHARACTER_FX, CHARACTER_FX_CATEGORY_LABELS, CHARACTER_FX_CATEGORY_ORDER, CHARACTER_FX_DURATIONS, CHARACTER_FX_IDS, CHARACTER_FX_INTENSITIES, CHARACTER_FX_POSITIONS, CHARACTER_MOTIONS, CHARACTER_MOTION_CATEGORY_LABELS, CHARACTER_MOTION_CATEGORY_ORDER, CHARACTER_MOTION_IDS, CHARACTER_MOTION_MAX_PICKS, CHARACTER_MOTION_PACES, CHARACTER_MOTION_POSITIONS, COLOR_LOOKS, COLOR_LOOK_CATEGORY_LABELS, COLOR_LOOK_CATEGORY_ORDER, COLOR_LOOK_IDS, COMPOSITION_EFFECTS, COMPOSITION_EFFECT_IDS, DEBRIS_SHOWER_STYLE, ERAS, ERA_CATEGORY_LABELS, ERA_CATEGORY_ORDER, ERA_IDS, EXPOSURE_CATEGORY_LABELS, EXPOSURE_CATEGORY_ORDER, EXPOSURE_FIELD_BY_CATEGORY, EXPOSURE_IDS, EXPOSURE_SETTINGS, FRAMINGS, FRAMING_CATEGORY_LABELS, FRAMING_CATEGORY_ORDER, FRAMING_FIELD_BY_CATEGORY, FRAMING_IDS, GARDEN_BLOOM_STYLE, HELD_PROPS, HELD_PROP_CATEGORY_LABELS, HELD_PROP_CATEGORY_ORDER, HELD_PROP_IDS, INSTANT_CUT_CLAUSE, INSTRUMENTATION_DEFAULT_DATA, INSTRUMENTS, INSTRUMENT_CATEGORY_LABELS, INSTRUMENT_CATEGORY_ORDER, LENSES, LENS_IDS, LIGHTINGS, LIGHTING_CATEGORY_LABELS, LIGHTING_CATEGORY_ORDER, LIGHTING_FIELD_BY_CATEGORY, LIGHTING_IDS, LOOP_SUBJECTS, LOOP_SUBJECT_CATEGORY_LABELS, LOOP_SUBJECT_CATEGORY_ORDER, MATERIALS, MATERIAL_CATEGORY_LABELS, MATERIAL_CATEGORY_ORDER, MATERIAL_IDS, MAX_SELECTED_BY_FRAMING_CATEGORY, MAX_SELECTED_BY_STYLING_DIMENSION, MOODS, MOOD_CATEGORY_LABELS, MOOD_CATEGORY_ORDER, MOOD_IDS, MUSIC_EMOTIONS, MUSIC_ENERGIES, MUSIC_ERAS, MUSIC_GENRES, MUSIC_GENRE_CATEGORY_LABELS, MUSIC_GENRE_CATEGORY_ORDER, MUSIC_GENRE_DEFAULT_DATA, MUSIC_MOOD_DEFAULT_DATA, MUSIC_VIBES, PHOTOGRAPHERS, PHOTOGRAPHER_CATEGORY_LABELS, PHOTOGRAPHER_CATEGORY_ORDER, PHOTOGRAPHER_IDS, PHOTO_GENRES, PHOTO_GENRE_CATEGORY_LABELS, PHOTO_GENRE_CATEGORY_ORDER, PHOTO_GENRE_IDS, PICKER_CATALOGS, POSES, POSE_CATEGORY_LABELS, POSE_CATEGORY_ORDER, POSE_IDS, POST_PROCESS_EFFECTS, POST_PROCESS_EFFECT_IDS, PRODUCTION_STYLES, RENDER_QUALITIES, RENDER_QUALITY_IDS, SAKURA_PETALS_STYLE, SAND_STORM_STYLE, SETTINGS, SETTING_CATEGORY_LABELS, SETTING_IDS, SINGING_STYLES, SMOKE_PUFF_STYLE, STYLES, STYLE_IDS, STYLINGS, STYLING_DIMENSION_LABELS, STYLING_DIMENSION_ORDER, STYLING_DIMENSION_SECTIONS, STYLING_FIELD_BY_DIMENSION, STYLING_IDS, TEMPORALS, TEMPORAL_CATEGORY_LABELS, TEMPORAL_CATEGORY_ORDER, TEMPORAL_FIELD_BY_CATEGORY, TEMPORAL_IDS, TRANSITIONS, TRANSITION_CATEGORY_LABELS, TRANSITION_CATEGORY_ORDER, TRANSITION_DURATIONS, TRANSITION_IDS, TRANSITION_INTENSITIES, TRANSITION_OPTION_FIELDS, TRANSITION_POSITIONS, TRANSITION_STYLE_FIELD, VOCAL_PRESENCE, VOCAL_PRESENCE_INSTRUMENTAL_ID, VOICE_ACCENTS, VOICE_AGES, VOICE_ARCHETYPES, VOICE_CHARACTER_DEFAULT_DATA, VOICE_DELIVERY_DEFAULT_DATA, VOICE_EMOTIONS, VOICE_GENDERS, VOICE_LANGUAGES, VOICE_PACES, VOICE_TIMBRES, WHITE_FLASH_STYLE, WIPE_DIRECTION, blendedCutClause, buildActionFxHints, buildActionFxTerms, buildAestheticHints, buildAestheticTerms, buildAtmosphereHints, buildAtmosphereTerms, buildExposureHints, buildExposureTerms, buildFramingHints, buildFramingTerms, buildHeldPropHints, buildHeldPropTerms, buildInstrumentationHints, buildInstrumentationTerms, buildLightingHints, buildLightingTerms, buildMaterialHints, buildMaterialTerms, buildMoodHints, buildMoodTerms, buildMusicGenreHints, buildMusicGenreTerms, buildMusicMoodHints, buildMusicMoodTerms, buildPhotographerHints, buildPhotographerTerms, buildPoseHints, buildPoseTerms, buildPostProcessHints, buildPostProcessTerms, buildStylingHints, buildStylingTerms, buildTemporalHints, buildTemporalTerms, buildVoiceCharacterHints, buildVoiceCharacterTerms, buildVoiceDeliveryHints, buildVoiceDeliveryTerms, composeCameraMotionHintFromConnections, composeCameraMotionTermFromConnections, composeCharacterFxHintFromConnections, composeCharacterMotionHintFromConnections, composeTransitionHintFromConnections, composedHas, composedOption, composedOptionIndex, curateEntries, getActionFx, getActionFxLabel, getActionFxPromptHint, getActionFxTerm, getAesthetic, getAestheticLabel, getAestheticPromptHint, getAestheticTerm, getAtmosphere, getAtmosphereLabel, getAtmospherePromptHint, getAtmosphereTerm, getBackdrop, getBackdropLabel, getBackdropPromptHint, getBackdropTerm, getCameraFormat, getCameraFormatLabel, getCameraFormatPromptHint, getCameraFormatTerm, getCameraMotion, getCameraMotionLabel, getCameraMotionPromptHint, getCameraMotionTerm, getCharacterFx, getCharacterFxLabel, getCharacterFxPromptHint, getCharacterFxTerm, getCharacterMotion, getCharacterMotionLabel, getCharacterMotionPromptHint, getCharacterMotionTerm, getColorLook, getColorLookLabel, getColorLookPromptHint, getColorLookTerm, getCompositionEffect, getCompositionEffectLabel, getCompositionEffectPromptHint, getCompositionEffectTerm, getEra, getEraLabel, getEraPromptHint, getEraTerm, getExposure, getExposureLabel, getExposurePromptHint, getExposureTerm, getFraming, getFramingCategoryLimit, getFramingLabel, getFramingPromptHint, getFramingTerm, getHeldProp, getHeldPropLabel, getHeldPropPromptHint, getHeldPropTerm, getInstrument, getInstrumentTerm, getLens, getLensLabel, getLensPromptHint, getLensTerm, getLighting, getLightingLabel, getLightingPromptHint, getLightingTerm, getLoopSubject, getLoopSubjectLabel, getLoopSubjectPromptHint, getLoopSubjectTerm, getMaterial, getMaterialLabel, getMaterialPromptHint, getMaterialTerm, getMood, getMoodLabel, getMoodPromptHint, getMoodTerm, getMusicEmotion, getMusicEmotionTerm, getMusicEnergy, getMusicEnergyTerm, getMusicEra, getMusicEraTerm, getMusicGenre, getMusicGenreLabel, getMusicGenreTerm, getMusicSubgenre, getMusicSubgenreTerm, getMusicVibe, getMusicVibeTerm, getPhotoGenre, getPhotoGenreLabel, getPhotoGenrePromptHint, getPhotoGenreTerm, getPhotographer, getPhotographerLabel, getPhotographerPromptHint, getPhotographerTerm, getPickerCatalog, getPose, getPoseLabel, getPosePromptHint, getPoseTerm, getPostProcessEffect, getPostProcessEffectLabel, getPostProcessEffectPromptHint, getPostProcessEffectTerm, getProductionStyle, getProductionStyleTerm, getRegisteredPickerCatalogs, getRenderQuality, getRenderQualityLabel, getRenderQualityPromptHint, getRenderQualityTerm, getSetting, getSettingLabel, getSettingPromptHint, getSettingTerm, getSingingStyle, getSingingStyleTerm, getStyle, getStyleLabel, getStylePromptHint, getStyleTerm, getStyling, getStylingDimensionLimit, getStylingLabel, getStylingPromptHint, getStylingTerm, getTemporal, getTemporalLabel, getTemporalPromptHint, getTemporalTerm, getTransition, getTransitionLabel, getTransitionOptions, getTransitionPromptHint, getTransitionTerm, getVocalPresence, getVocalPresenceTerm, getVoiceAccent, getVoiceAccentTerm, getVoiceAge, getVoiceAgeTerm, getVoiceArchetype, getVoiceArchetypeTerm, getVoiceEmotion, getVoiceEmotionTerm, getVoiceGender, getVoiceGenderTerm, getVoiceLanguage, getVoiceLanguageTerm, getVoicePace, getVoicePaceTerm, getVoiceTimbre, getVoiceTimbreTerm, isBlendableTransition, isDeniedStyleId, isInstantTransition, isInstrumentalVocal, isVantageFraming, listPickerCatalogs, overlayEntry, projectAllCatalogs, projectPickerCatalog, readTransitionOptionValues, renderTransitionBases, setComposedCatalogResolver, summarizePickerCatalogs } from './chunk-TXHFL725.js';
21
21
  export { appendPromptHints, joinHintFragments, joinSentences } from './chunk-DVP6ILDR.js';
22
22
  export { ADULT_AGE_IDS, ADULT_ONLY_FLAG, MAX_SELECTED_BY_DIMENSION, MINOR_IMPLYING_TYPE_IDS, PEOPLE, PERSON_DIMENSION_LABELS, PERSON_DIMENSION_ORDER, PERSON_DIMENSION_SECTIONS, PERSON_FIELD_BY_DIMENSION, PERSON_IDS, buildAgeHint, buildPersonHints, buildPersonTerms, getPerson, getPersonDimensionLimit, getPersonLabel, getPersonPromptHint, getPersonTerm, getRegisteredPeople, getRegisteredPersonDimensionLabels, getRegisteredPersonDimensionOrder, getRegisteredPersonFieldByDimension, isMinorAge, migratePersonValue, personPacksVersion, registerPersonPack, resetPersonPacks } from './chunk-TDZFXOTE.js';
23
23
  export { TERM_MAX_CHARS, catalogPacksVersion, composePickerCatalogs, deriveTerm, getRegisteredCatalogPacks, hasCatalogPacksFor, isSuspiciousDerivedTerm, registerCatalogPack, resetCatalogPacks, resolveTerm, subscribeCatalogPacks } from './chunk-XAMHEW76.js';
24
- export { CHARACTER_ART_FAMILIES, CHARACTER_ART_FILES, CHARACTER_ART_PATH, LOOK_PREVIEW_SETS, PICKER_ART_PATH, RENDER_WIDTH_LADDER, SOUND_ART, SOUND_ART_FILES, SOUND_RENDER_SETS, characterArtPath, characterSectionArtPath, characterSectionSlug, lookPreviewStillUrl, pickerOptionImage, pickerOptionImageUrl, pickerSectionImageUrl, soundArtFilePath, soundArtPath } from './chunk-JCYK7NSR.js';
24
+ export { CHARACTER_ART_FAMILIES, CHARACTER_ART_FILES, CHARACTER_ART_PATH, LOOK_PREVIEW_SETS, PICKER_ART_PATH, RENDER_WIDTH_LADDER, SOUND_ART, SOUND_ART_FILES, SOUND_RENDER_SETS, characterArtPath, characterSectionArtPath, characterSectionSlug, lookPreviewStillUrl, pickerOptionImage, pickerOptionImageUrl, pickerSectionImageUrl, soundArtFilePath, soundArtPath } from './chunk-XZXUU3YH.js';
25
25
  import './chunk-PZ5AY32C.js';
26
26
  //# sourceMappingURL=index.js.map
27
27
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nodaro/prompts",
3
- "version": "1.42.1",
3
+ "version": "1.46.0",
4
4
  "description": "Nodaro's prompt-engineering layer — person/picker catalogs with prompt hints, identity-lock clauses, entity prompt builders, brand presets, and prompt/reference assembly shared by the Nodaro platform and SDK.",
5
5
  "type": "module",
6
6
  "license": "FSL-1.1-Apache-2.0",
@@ -70,7 +70,7 @@
70
70
  "test": "vitest run"
71
71
  },
72
72
  "dependencies": {
73
- "@nodaro/shared": "^3.42.0"
73
+ "@nodaro/shared": "^3.47.0"
74
74
  },
75
75
  "devDependencies": {
76
76
  "tsup": "^8.5.0",
@@ -1,6 +1,6 @@
1
1
  import { describe, it, expect } from "vitest"
2
2
  import { PLACEHOLDER_CHARACTER_NAME, LOCATION_REFERENCE_PHOTO_KINDS, LOCATION_REFERENCE_PHOTO_KIND_LABELS, locationReferencePhotoKindLabel, OBJECT_ASSET_TYPES, OBJECT_ATTACH_COLUMNS } from "@nodaro/shared/entities"
3
- import { buildCharacterPrompt, buildObjectPrompt, buildLocationPrompt, buildFaceTemplateInputs, buildMotionPrompt, buildObjectMotionPrompt } from "../entity-prompts.js"
3
+ import { buildCharacterPrompt, buildCreaturePrompt, buildObjectPrompt, buildLocationPrompt, buildFaceTemplateInputs, buildMotionPrompt, buildObjectMotionPrompt } from "../entity-prompts.js"
4
4
 
5
5
  describe("buildCharacterPrompt", () => {
6
6
  it("combines name, gender, description with outfit and style", () => {
@@ -67,6 +67,33 @@ describe("buildObjectPrompt", () => {
67
67
  })
68
68
  })
69
69
 
70
+ describe("buildCreaturePrompt", () => {
71
+ it("leads with the species, then the name and description, then the style line", () => {
72
+ const prompt = buildCreaturePrompt({ name: "Fang", species: "wolf", description: "scarred muzzle", style: "anime" })
73
+ expect(prompt).toContain("Single wolf, Fang, scarred muzzle,")
74
+ expect(prompt).toContain("anime art style, full body, front view,")
75
+ })
76
+
77
+ it("subjectHints (the request's `subject` ids, rendered by the route) read after the prose, before the style line, each once", () => {
78
+ const prompt = buildCreaturePrompt({
79
+ name: "Fang",
80
+ species: "wolf",
81
+ description: "scarred muzzle",
82
+ subjectHints: ["featuring a wolf, lean grey coat", "featuring a wolf, lean grey coat", ""],
83
+ })
84
+ expect(prompt).toContain("Single wolf, Fang, scarred muzzle, featuring a wolf, lean grey coat,")
85
+ expect(prompt.split("featuring a wolf").length - 1).toBe(1)
86
+ expect(prompt.indexOf("featuring a wolf")).toBeLessThan(prompt.indexOf("art style"))
87
+ })
88
+
89
+ it("is byte-identical without subjectHints, or with an empty list", () => {
90
+ const base = buildCreaturePrompt({ name: "Fang", species: "wolf" })
91
+ expect(buildCreaturePrompt({ name: "Fang", species: "wolf", subjectHints: [] })).toBe(base)
92
+ expect(buildCreaturePrompt({ name: "Fang", species: "wolf", subjectHints: [""] })).toBe(base)
93
+ expect(base).toContain("Single wolf, Fang, realistic art style")
94
+ })
95
+ })
96
+
70
97
  describe("buildLocationPrompt", () => {
71
98
  it("uses scene framing with establishing-shot suffix", () => {
72
99
  const prompt = buildLocationPrompt({
@@ -1,18 +1,21 @@
1
1
  // @test-watches frontend/public/preset-previews/**
2
2
  /**
3
- * Factory preset previews: one small example picture per preset, committed
4
- * under frontend/public/preset-previews/<nodeType>/<slug>.<hash8>.webp and
5
- * served by the app at /preset-previews/… (cached as immutable, so the name
6
- * must carry the file's own content hash). The generated map
7
- * (preview-files.generated.ts, written by tools/preset-previews/build.mts) is
8
- * what the API reads to hand out `previewUrl`.
3
+ * Factory preset previews: two example pictures per preset, committed under
4
+ * frontend/public/preset-previews/ — the tile picture at
5
+ * <nodeType>/<slug>.<hash8>.webp (at most 512px wide) and the full-screen one
6
+ * at 1024/<nodeType>/<slug>.<hash8>.webp (1024px wide) — and served by the app
7
+ * at /preset-previews/… (cached as immutable, so the name must carry the
8
+ * file's own content hash). The generated maps (preview-files.generated.ts,
9
+ * written by tools/preset-previews/build.mts) are what the API reads to hand
10
+ * out `previewUrl` and `previewSrcSet`.
9
11
  *
10
12
  * The API must never point at a file that does not exist — the CDN in front
11
- * keeps a 404 for a long time — so the map and the folder must agree exactly:
13
+ * keeps a 404 for a long time — so the maps and the folder must agree exactly:
12
14
  * - every mapped file exists, is non-empty and carries its own hash;
13
15
  * - every mapped id is a factory preset, and the file sits under its node
14
- * type with its slug as the name;
15
- * - no file in the folder is missing from the map (a dropped-in file that
16
+ * type (the large one under 1024/ first) with its slug as the name;
17
+ * - a preset with a large picture also has the small one;
18
+ * - no file in the folder is missing from the maps (a dropped-in file that
16
19
  * was never built, or a stale one).
17
20
  * With no previews at all (the folder absent) every check holds and every
18
21
  * `previewUrl` is null.
@@ -25,37 +28,55 @@ import { describe, expect, it } from "vitest"
25
28
  import {
26
29
  FACTORY_PRESETS,
27
30
  FACTORY_PRESET_PREVIEW_FILES,
31
+ FACTORY_PRESET_PREVIEW_LARGE_FILES,
32
+ PRESET_PREVIEW_LARGE_WIDTH,
28
33
  PRESET_PREVIEW_PATH,
34
+ PRESET_PREVIEW_WIDTH,
35
+ factoryPresetPreviewSrcSet,
29
36
  factoryPresetPreviewUrl,
30
37
  } from "../factory-presets.js"
31
38
 
32
39
  const REPO_ROOT = join(dirname(fileURLToPath(import.meta.url)), "..", "..", "..", "..")
33
40
  const PREVIEW_DIR = join(REPO_ROOT, "frontend", "public", "preset-previews")
41
+ const LARGE_DIR = String(PRESET_PREVIEW_LARGE_WIDTH)
34
42
  const FILE_NAME = /^([a-z0-9]+(?:-[a-z0-9]+)*)\.([0-9a-f]{8})\.webp$/
35
43
 
36
- /** Every file under the folder, as `<nodeType>/<name>` (dotfiles skipped). */
37
- function filesOnDisk(): string[] {
38
- if (!existsSync(PREVIEW_DIR)) return []
39
- return readdirSync(PREVIEW_DIR, { withFileTypes: true }).flatMap((entry) => {
40
- if (entry.name.startsWith(".")) return []
44
+ /** Every file under a node-type folder of `root`, as `<nodeType>/<name>` (dotfiles skipped). */
45
+ function filesIn(root: string): string[] {
46
+ if (!existsSync(root)) return []
47
+ return readdirSync(root, { withFileTypes: true }).flatMap((entry) => {
48
+ if (entry.name.startsWith(".") || entry.name === LARGE_DIR) return []
41
49
  if (!entry.isDirectory()) return [entry.name]
42
- return readdirSync(join(PREVIEW_DIR, entry.name))
50
+ return readdirSync(join(root, entry.name))
43
51
  .filter((name) => !name.startsWith("."))
44
52
  .map((name) => `${entry.name}/${name}`)
45
53
  })
46
54
  }
47
55
 
56
+ /** Every file under the folder: the small ones as `<nodeType>/<name>`, the large ones as `1024/<nodeType>/<name>`. */
57
+ function filesOnDisk(): string[] {
58
+ return [...filesIn(PREVIEW_DIR), ...filesIn(join(PREVIEW_DIR, LARGE_DIR)).map((f) => `${LARGE_DIR}/${f}`)]
59
+ }
60
+
48
61
  const factoryIds = new Set(Object.values(FACTORY_PRESETS).flatMap((list) => list.map((p) => p.id)))
49
62
 
50
- describe("factory preset previews — the map and the folder agree", () => {
63
+ /** The file's path split as the map states it: the large prefix (or none), the node type and the name. */
64
+ function parts(file: string, large: boolean): { prefix: string; nodeType: string; name: string } {
65
+ const segments = file.split("/")
66
+ const prefix = large ? segments.shift() ?? "" : ""
67
+ return { prefix, nodeType: segments[0] ?? "", name: segments[1] ?? "" }
68
+ }
69
+
70
+ function checkMap(map: Readonly<Record<string, string>>, large: boolean): void {
51
71
  it("every mapped id is a factory preset, filed under its node type and slug", () => {
52
72
  const wrong: string[] = []
53
- for (const [id, file] of Object.entries(FACTORY_PRESET_PREVIEW_FILES)) {
73
+ for (const [id, file] of Object.entries(map)) {
74
+ if (file !== file.toLowerCase() || file.includes("\\")) wrong.push(`${id}: ${file} is not a plain forward-slash path`)
54
75
  if (!factoryIds.has(id)) wrong.push(`${id}: not a factory preset`)
55
- const [nodeType, name] = file.split("/")
56
- const match = FILE_NAME.exec(name ?? "")
76
+ const { prefix, nodeType, name } = parts(file, large)
77
+ const match = FILE_NAME.exec(name)
57
78
  const slug = id.slice(id.indexOf("/") + 1)
58
- if (`${nodeType}/${match?.[1]}` !== `${id.slice(0, id.indexOf("/"))}/${slug}`) {
79
+ if (prefix !== (large ? LARGE_DIR : "") || `${nodeType}/${match?.[1]}` !== `${id.slice(0, id.indexOf("/"))}/${slug}`) {
59
80
  wrong.push(`${id}: filed as ${file}`)
60
81
  }
61
82
  }
@@ -64,7 +85,7 @@ describe("factory preset previews — the map and the folder agree", () => {
64
85
 
65
86
  it("every mapped file exists, is non-empty and is named by its own content hash", () => {
66
87
  const wrong: string[] = []
67
- for (const [id, file] of Object.entries(FACTORY_PRESET_PREVIEW_FILES)) {
88
+ for (const [id, file] of Object.entries(map)) {
68
89
  const path = join(PREVIEW_DIR, file)
69
90
  if (!existsSync(path) || !statSync(path).isFile()) {
70
91
  wrong.push(`${id}: ${file} is missing`)
@@ -73,18 +94,39 @@ describe("factory preset previews — the map and the folder agree", () => {
73
94
  const bytes = readFileSync(path)
74
95
  if (bytes.length === 0) wrong.push(`${id}: ${file} is empty`)
75
96
  const hash = createHash("sha256").update(bytes).digest("hex").slice(0, 8)
76
- if (FILE_NAME.exec(file.split("/")[1] ?? "")?.[2] !== hash) wrong.push(`${id}: ${file} does not carry its hash ${hash}`)
97
+ if (FILE_NAME.exec(parts(file, large).name)?.[2] !== hash) wrong.push(`${id}: ${file} does not carry its hash ${hash}`)
77
98
  }
78
99
  expect(wrong).toEqual([])
79
100
  })
101
+ }
102
+
103
+ const LARGE_FILES: Readonly<Record<string, string>> = Object.fromEntries(
104
+ Object.entries(FACTORY_PRESET_PREVIEW_LARGE_FILES).map(([id, { file }]) => [id, file]),
105
+ )
106
+
107
+ describe("factory preset previews — the maps and the folder agree", () => {
108
+ describe("the tile pictures", () => checkMap(FACTORY_PRESET_PREVIEW_FILES, false))
109
+ describe("the full-screen pictures", () => checkMap(LARGE_FILES, true))
110
+
111
+ it("a preset with a full-screen picture also has its tile picture", () => {
112
+ const small = new Set(Object.keys(FACTORY_PRESET_PREVIEW_FILES))
113
+ expect(Object.keys(FACTORY_PRESET_PREVIEW_LARGE_FILES).filter((id) => !small.has(id))).toEqual([])
114
+ })
115
+
116
+ it("every full-screen picture's recorded width is wider than the tile and at most the large width", () => {
117
+ const wrong = Object.entries(FACTORY_PRESET_PREVIEW_LARGE_FILES)
118
+ .filter(([, { width }]) => !Number.isInteger(width) || width <= PRESET_PREVIEW_WIDTH || width > PRESET_PREVIEW_LARGE_WIDTH)
119
+ .map(([id, { width }]) => `${id}: ${width}`)
120
+ expect(wrong).toEqual([])
121
+ })
80
122
 
81
- it("no file in the folder is missing from the map (run tools/preset-previews/build.mts)", () => {
82
- const mapped = new Set(Object.values(FACTORY_PRESET_PREVIEW_FILES))
123
+ it("no file in the folder is missing from the maps (run tools/preset-previews/build.mts)", () => {
124
+ const mapped = new Set([...Object.values(FACTORY_PRESET_PREVIEW_FILES), ...Object.values(LARGE_FILES)])
83
125
  expect(filesOnDisk().filter((f) => !mapped.has(f))).toEqual([])
84
126
  })
85
127
 
86
128
  it("each file is mapped from exactly one preset", () => {
87
- const files = Object.values(FACTORY_PRESET_PREVIEW_FILES)
129
+ const files = [...Object.values(FACTORY_PRESET_PREVIEW_FILES), ...Object.values(LARGE_FILES)]
88
130
  expect(files.length).toBe(new Set(files).size)
89
131
  })
90
132
  })
@@ -121,3 +163,34 @@ describe("factoryPresetPreviewUrl", () => {
121
163
  expect(factoryPresetPreviewUrl("not-a/preset", "https://app.nodaro.ai")).toBeNull()
122
164
  })
123
165
  })
166
+
167
+ describe("factoryPresetPreviewSrcSet", () => {
168
+ const FILES = { "generate-image/character-board": "generate-image/character-board.1a2b3c4d.webp" }
169
+ const LARGE = { "generate-image/character-board": { file: "1024/generate-image/character-board.5e6f7a8b.webp", width: 1024 } }
170
+
171
+ it("names the tile picture at 512w and the full-screen one at its recorded width", () => {
172
+ expect(factoryPresetPreviewSrcSet("generate-image/character-board", "https://app.nodaro.ai", FILES, LARGE)).toBe(
173
+ "https://app.nodaro.ai/preset-previews/generate-image/character-board.1a2b3c4d.webp 512w, " +
174
+ "https://app.nodaro.ai/preset-previews/1024/generate-image/character-board.5e6f7a8b.webp 1024w",
175
+ )
176
+ const portrait = { "generate-image/character-board": { file: "1024/generate-image/character-board.5e6f7a8b.webp", width: 768 } }
177
+ expect(factoryPresetPreviewSrcSet("generate-image/character-board", "https://app.nodaro.ai", FILES, portrait)).toMatch(/ 768w$/)
178
+ expect(PRESET_PREVIEW_WIDTH).toBe(512)
179
+ expect(PRESET_PREVIEW_LARGE_WIDTH).toBe(1024)
180
+ })
181
+
182
+ it("is null when either size is missing, or the base URL is unusable", () => {
183
+ expect(factoryPresetPreviewSrcSet("generate-image/character-board", "https://app.nodaro.ai", FILES, {})).toBeNull()
184
+ expect(factoryPresetPreviewSrcSet("generate-image/character-board", "https://app.nodaro.ai", {}, LARGE)).toBeNull()
185
+ expect(factoryPresetPreviewSrcSet("generate-image/pose-board", "https://app.nodaro.ai", FILES, LARGE)).toBeNull()
186
+ expect(factoryPresetPreviewSrcSet("generate-image/character-board", "not a url", FILES, LARGE)).toBeNull()
187
+ })
188
+
189
+ it("reads the committed maps by default, and every committed large picture has a srcset", () => {
190
+ for (const id of Object.keys(FACTORY_PRESET_PREVIEW_LARGE_FILES)) {
191
+ expect(factoryPresetPreviewSrcSet(id, "https://app.nodaro.ai")).toMatch(
192
+ new RegExp(`^https://app\\.nodaro\\.ai${PRESET_PREVIEW_PATH}[a-z0-9-]+/[a-z0-9-]+\\.[0-9a-f]{8}\\.webp 512w, https://app\\.nodaro\\.ai${PRESET_PREVIEW_PATH}1024/[a-z0-9-]+/[a-z0-9-]+\\.[0-9a-f]{8}\\.webp [0-9]+w$`),
193
+ )
194
+ }
195
+ })
196
+ })
@@ -147,6 +147,10 @@ describe("factory presets — declared reference counts", () => {
147
147
  const MIXED_GROUPS: Readonly<Record<string, string>> = {
148
148
  "generate-image/Realism & Authentic":
149
149
  "text-only realism shots beside two that put the user's own photo in the frame ({image:1:person}, {image:1:product})",
150
+ "generate-image/Products & Fashion":
151
+ "Create Image use cases: most restage the person's own product photo (minReferences 1), three design from words (coffee packaging, flat lay, food package)",
152
+ "generate-image/Family & Events":
153
+ "Create Image use cases: invitations and greetings from words beside six cards made from the person's own photo (minReferences 1)",
150
154
  }
151
155
 
152
156
  it("every group is all photo-based or all text-only, except the listed mixed groups", () => {
@@ -2281,30 +2281,30 @@
2281
2281
  "expected": "shot on location, shot as a high-fashion magazine editorial, polished studio lighting, deliberate posing, designer wardrobe, full-bleed composition with strong color blocking and a glossy print-ready finish, no text overlays"
2282
2282
  },
2283
2283
  {
2284
- "key": "photographer/id:guido-van-helten",
2284
+ "key": "photographer/id:ruan-jia",
2285
2285
  "note": "single-dim catalog id",
2286
2286
  "node": {
2287
2287
  "id": "n1",
2288
2288
  "type": "photographer",
2289
2289
  "data": {
2290
- "photographer": "guido-van-helten"
2290
+ "photographer": "ruan-jia"
2291
2291
  }
2292
2292
  },
2293
2293
  "ctx": null,
2294
- "expected": "in the style of Guido van Helten, monumental muralist portraiture with weathered concrete texture and quiet grayscale tonality"
2294
+ "expected": "in the style of Ruan Jia, lush painterly fantasy portraiture with rich fabrics, gilded accents and warm directional light"
2295
2295
  },
2296
2296
  {
2297
- "key": "photographer/id:henri-cartier-bresson",
2297
+ "key": "photographer/id:sofia-coppola",
2298
2298
  "note": "single-dim catalog id",
2299
2299
  "node": {
2300
2300
  "id": "n1",
2301
2301
  "type": "photographer",
2302
2302
  "data": {
2303
- "photographer": "henri-cartier-bresson"
2303
+ "photographer": "sofia-coppola"
2304
2304
  }
2305
2305
  },
2306
2306
  "ctx": null,
2307
- "expected": "in the style of Henri Cartier-Bresson, decisive-moment black-and-white street photography with geometric framing and natural light"
2307
+ "expected": "in the style of Sofia Coppola, soft hazy pastel light, dreamy feminine melancholy, shallow focus, gentle film grain, a lonely contemplative mood, muted pinks and creams and quiet intimacy"
2308
2308
  },
2309
2309
  {
2310
2310
  "key": "photographer/id:tim-walker",
@@ -0,0 +1,88 @@
1
+ // @test-watches tools/preset-tiles/** packages/prompts/src/factory-presets/tiles/** frontend/src/lib/i18n/preset-content-tiles.*.generated.ts
2
+ import { readFileSync, readdirSync } from "node:fs"
3
+ import { join } from "node:path"
4
+ import { describe, expect, it } from "vitest"
5
+ import { COPY_LOCALES, LEDGER_PATHS, mergeLedgers, quotedPhrases, renderModules, slotLabel, slotPhrases, templatePrompt, TILES_DIR_PATH, type TileLedger } from "../../../../tools/preset-tiles/render.js"
6
+ import { GENERATE_IMAGE_TILE_PRESETS } from "../factory-presets/tiles/index.generated.js"
7
+ import { getFactoryPresets } from "../factory-presets.js"
8
+
9
+ const ROOT = join(__dirname, "..", "..", "..", "..")
10
+ const TILES_DIR = join(ROOT, TILES_DIR_PATH)
11
+ const ledger = mergeLedgers(LEDGER_PATHS.map((p) => JSON.parse(readFileSync(join(ROOT, p), "utf8")) as TileLedger))
12
+ /** A checkout with core.autocrlf rewrites the committed modules to CRLF; the comparison is on content, not line endings. */
13
+ const lf = (text: string) => text.replace(/\r\n/g, "\n")
14
+
15
+ describe("Create Image tiles — the generated modules match the ledger", () => {
16
+ const rendered = renderModules(ledger)
17
+
18
+ it("every committed module — presets and the app's preset copy per language — is exactly what the ledger renders (run tools/preset-tiles/build.mts)", () => {
19
+ for (const [name, source] of Object.entries(rendered)) {
20
+ expect(lf(readFileSync(join(ROOT, name), "utf8")), name).toBe(source)
21
+ }
22
+ })
23
+
24
+ it("no stale generated module is left behind", () => {
25
+ const onDisk = readdirSync(TILES_DIR).filter((f) => f.endsWith(".generated.ts")).map((f) => `${TILES_DIR_PATH}/${f}`)
26
+ const expected = Object.keys(rendered).filter((name) => name.startsWith(TILES_DIR_PATH))
27
+ expect(onDisk.sort()).toEqual(expected.sort())
28
+ })
29
+
30
+ it("every tile carries a name in every interface language", () => {
31
+ for (const t of ledger.templates) {
32
+ for (const locale of COPY_LOCALES) expect(t.copy?.[locale]?.name?.trim(), `${t.id}: ${locale}`).toBeTruthy()
33
+ }
34
+ })
35
+
36
+ it("the catalog carries one preset per ledger template, in ledger order", () => {
37
+ expect(GENERATE_IMAGE_TILE_PRESETS.map((p) => p.id)).toEqual(ledger.templates.map((t) => `generate-image/${t.id}`))
38
+ const all = getFactoryPresets("generate-image").map((p) => p.id)
39
+ for (const p of GENERATE_IMAGE_TILE_PRESETS) expect(all).toContain(p.id)
40
+ })
41
+ })
42
+
43
+ describe("Create Image tiles — what each preset promises", () => {
44
+ it("renders with the model and size the tile picture was made with, and says when it works from the person's photo", () => {
45
+ for (const t of ledger.templates) {
46
+ const p = GENERATE_IMAGE_TILE_PRESETS.find((x) => x.id === `generate-image/${t.id}`)!
47
+ expect(p.data.provider, t.id).toBe(t.model ?? ledger.model)
48
+ expect(p.data.resolution, t.id).toBe(ledger.resolution)
49
+ expect(typeof p.data.aspectRatio, t.id).toBe("string")
50
+ expect(p.minReferences ?? 0, t.id).toBe(t.minReferences ?? 0)
51
+ }
52
+ })
53
+
54
+ it("opens one slot per named headline phrase, TEXT then TEXT2…, each defaulting to the phrase the tile shows, and nothing else", () => {
55
+ for (const t of ledger.templates) {
56
+ const phrases = slotPhrases(t)
57
+ const prompt = templatePrompt(t)
58
+ const opened = [...prompt.matchAll(/\{([^}|]+)\|\|([^}]*)\}/g)].map((m) => [m[1].trim(), m[2].trim()])
59
+ expect(opened, t.id).toEqual(phrases.map((phrase, at) => [slotLabel(at + 1), phrase]))
60
+ expect(t.sampleText ?? "", `${t.id}: sampleText is what the slots show`).toBe(phrases.join(" "))
61
+ // Every other quoted phrase stays as it was: a label, a button, a badge.
62
+ for (const phrase of quotedPhrases(t.prompt)) if (!phrases.includes(phrase)) expect(prompt, t.id).toContain(`"${phrase}"`)
63
+ }
64
+ })
65
+
66
+ it("names its slots on every prompt that quotes more than one phrase (the headline, not a label or a button; an empty list opens none)", () => {
67
+ for (const t of ledger.templates) {
68
+ if (t.textDefault === undefined && quotedPhrases(t.prompt).length > 1) expect(Array.isArray(t.slots), `${t.id}: needs slots`).toBe(true)
69
+ }
70
+ })
71
+
72
+ it("files every tile under a tab, with a section where the tab has them, and a non-empty platform list only where one applies", () => {
73
+ for (const p of GENERATE_IMAGE_TILE_PRESETS) {
74
+ expect(p.group, p.id).toBeTruthy()
75
+ if (p.section !== undefined) expect(p.section.length, p.id).toBeGreaterThan(0)
76
+ if (p.platforms !== undefined) expect(p.platforms.length, p.id).toBeGreaterThan(0)
77
+ }
78
+ const youtube = GENERATE_IMAGE_TILE_PRESETS.filter((p) => p.group === "YouTube")
79
+ expect(youtube.every((p) => p.section && p.platforms?.[0] === "YouTube")).toBe(true)
80
+ })
81
+
82
+ it("every tile has a description a person can act on (who uses it), except layouts and type styles", () => {
83
+ for (const p of GENERATE_IMAGE_TILE_PRESETS) {
84
+ if (p.group === "Layout" || p.group === "Text") continue
85
+ expect(p.description, p.id).toBeTruthy()
86
+ }
87
+ })
88
+ })
@@ -50,6 +50,13 @@ export interface CreaturePromptInput {
50
50
  species?: string
51
51
  category?: string
52
52
  style?: EntityStyle | string
53
+ /**
54
+ * Already-rendered clauses of the request's `subject` catalog ids (the
55
+ * platform's `renderSubjectHints`, image surface) — the route renders, this
56
+ * builder only places them: after the prose, before the style line, each
57
+ * once. Absent/empty → byte-identical output.
58
+ */
59
+ subjectHints?: readonly string[]
53
60
  }
54
61
 
55
62
  /**
@@ -61,9 +68,11 @@ export interface CreaturePromptInput {
61
68
  export function buildCreaturePrompt(input: CreaturePromptInput): string {
62
69
  const subject = input.species?.trim() || "creature"
63
70
  const descPart = input.description ? `, ${input.description}` : ""
71
+ const hints = [...new Set((input.subjectHints ?? []).filter((h) => h.length > 0))]
72
+ const hintPart = hints.length > 0 ? `, ${hints.join(", ")}` : ""
64
73
  const styleDesc = input.style ?? "realistic"
65
74
  return [
66
- `Single ${subject}, ${input.name}${descPart},`,
75
+ `Single ${subject}, ${input.name}${descPart}${hintPart},`,
67
76
  `${styleDesc} art style, full body, front view,`,
68
77
  "4k, highly detailed, plain background, no text, no labels, no watermarks.",
69
78
  ].join(" ")