@nodaro/prompts 1.45.0 → 1.47.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkS3H4TI6N_cjs = require('./chunk-S3H4TI6N.cjs');
3
+ var chunkMGK6SFTV_cjs = require('./chunk-MGK6SFTV.cjs');
4
4
  var chunkVAK4RUNU_cjs = require('./chunk-VAK4RUNU.cjs');
5
5
  var chunk2EW5B7ZV_cjs = require('./chunk-2EW5B7ZV.cjs');
6
6
  var chunkLXPKTI2K_cjs = require('./chunk-LXPKTI2K.cjs');
@@ -10,7 +10,7 @@ require('./chunk-4GKTOVFM.cjs');
10
10
  var chunkXUZXBY75_cjs = require('./chunk-XUZXBY75.cjs');
11
11
  var chunkUXDKZVNN_cjs = require('./chunk-UXDKZVNN.cjs');
12
12
  var chunkSZU4MZ36_cjs = require('./chunk-SZU4MZ36.cjs');
13
- var chunk5NIKPMLU_cjs = require('./chunk-5NIKPMLU.cjs');
13
+ var chunkIWX3Q7NH_cjs = require('./chunk-IWX3Q7NH.cjs');
14
14
  var chunkNAFD6MGH_cjs = require('./chunk-NAFD6MGH.cjs');
15
15
  var chunk2NJTFCKQ_cjs = require('./chunk-2NJTFCKQ.cjs');
16
16
  require('./chunk-TUHVGM6V.cjs');
@@ -30,139 +30,139 @@ require('./chunk-Q7SFCCGT.cjs');
30
30
 
31
31
  Object.defineProperty(exports, "BODY_CAPTIONS_PRESET_ID", {
32
32
  enumerable: true,
33
- get: function () { return chunkS3H4TI6N_cjs.BODY_CAPTIONS_PRESET_ID; }
33
+ get: function () { return chunkMGK6SFTV_cjs.BODY_CAPTIONS_PRESET_ID; }
34
34
  });
35
35
  Object.defineProperty(exports, "BRAND_PRESETS", {
36
36
  enumerable: true,
37
- get: function () { return chunkS3H4TI6N_cjs.BRAND_PRESETS; }
37
+ get: function () { return chunkMGK6SFTV_cjs.BRAND_PRESETS; }
38
38
  });
39
39
  Object.defineProperty(exports, "BRAND_PRESET_IDS", {
40
40
  enumerable: true,
41
- get: function () { return chunkS3H4TI6N_cjs.BRAND_PRESET_IDS; }
41
+ get: function () { return chunkMGK6SFTV_cjs.BRAND_PRESET_IDS; }
42
42
  });
43
43
  Object.defineProperty(exports, "BRAND_PRESET_META", {
44
44
  enumerable: true,
45
- get: function () { return chunkS3H4TI6N_cjs.BRAND_PRESET_META; }
45
+ get: function () { return chunkMGK6SFTV_cjs.BRAND_PRESET_META; }
46
46
  });
47
47
  Object.defineProperty(exports, "CAPTION_LEVERS_BY_LANGUAGE", {
48
48
  enumerable: true,
49
- get: function () { return chunkS3H4TI6N_cjs.CAPTION_LEVERS_BY_LANGUAGE; }
49
+ get: function () { return chunkMGK6SFTV_cjs.CAPTION_LEVERS_BY_LANGUAGE; }
50
50
  });
51
51
  Object.defineProperty(exports, "CAPTION_SEGMENT_LEVER_KEYS", {
52
52
  enumerable: true,
53
- get: function () { return chunkS3H4TI6N_cjs.CAPTION_SEGMENT_LEVER_KEYS; }
53
+ get: function () { return chunkMGK6SFTV_cjs.CAPTION_SEGMENT_LEVER_KEYS; }
54
54
  });
55
55
  Object.defineProperty(exports, "FACTORY_PRESETS", {
56
56
  enumerable: true,
57
- get: function () { return chunkS3H4TI6N_cjs.FACTORY_PRESETS; }
57
+ get: function () { return chunkMGK6SFTV_cjs.FACTORY_PRESETS; }
58
58
  });
59
59
  Object.defineProperty(exports, "FACTORY_PRESET_PREVIEW_FILES", {
60
60
  enumerable: true,
61
- get: function () { return chunkS3H4TI6N_cjs.FACTORY_PRESET_PREVIEW_FILES; }
61
+ get: function () { return chunkMGK6SFTV_cjs.FACTORY_PRESET_PREVIEW_FILES; }
62
62
  });
63
63
  Object.defineProperty(exports, "FACTORY_PRESET_PREVIEW_LARGE_FILES", {
64
64
  enumerable: true,
65
- get: function () { return chunkS3H4TI6N_cjs.FACTORY_PRESET_PREVIEW_LARGE_FILES; }
65
+ get: function () { return chunkMGK6SFTV_cjs.FACTORY_PRESET_PREVIEW_LARGE_FILES; }
66
66
  });
67
67
  Object.defineProperty(exports, "FACTORY_SNIPPETS", {
68
68
  enumerable: true,
69
- get: function () { return chunkS3H4TI6N_cjs.FACTORY_SNIPPETS; }
69
+ get: function () { return chunkMGK6SFTV_cjs.FACTORY_SNIPPETS; }
70
70
  });
71
71
  Object.defineProperty(exports, "HOOK_PLATE_PRESET_ID", {
72
72
  enumerable: true,
73
- get: function () { return chunkS3H4TI6N_cjs.HOOK_PLATE_PRESET_ID; }
73
+ get: function () { return chunkMGK6SFTV_cjs.HOOK_PLATE_PRESET_ID; }
74
74
  });
75
75
  Object.defineProperty(exports, "MAX_PRESET_REFERENCES", {
76
76
  enumerable: true,
77
- get: function () { return chunkS3H4TI6N_cjs.MAX_PRESET_REFERENCES; }
77
+ get: function () { return chunkMGK6SFTV_cjs.MAX_PRESET_REFERENCES; }
78
78
  });
79
79
  Object.defineProperty(exports, "OBJECT_ANGLE_PRESETS", {
80
80
  enumerable: true,
81
- get: function () { return chunkS3H4TI6N_cjs.OBJECT_ANGLE_PRESETS; }
81
+ get: function () { return chunkMGK6SFTV_cjs.OBJECT_ANGLE_PRESETS; }
82
82
  });
83
83
  Object.defineProperty(exports, "OBJECT_ANGLE_PROMPTS", {
84
84
  enumerable: true,
85
- get: function () { return chunkS3H4TI6N_cjs.OBJECT_ANGLE_PROMPTS; }
85
+ get: function () { return chunkMGK6SFTV_cjs.OBJECT_ANGLE_PROMPTS; }
86
86
  });
87
87
  Object.defineProperty(exports, "OBJECT_ASSET_PRESETS", {
88
88
  enumerable: true,
89
- get: function () { return chunkS3H4TI6N_cjs.OBJECT_ASSET_PRESETS; }
89
+ get: function () { return chunkMGK6SFTV_cjs.OBJECT_ASSET_PRESETS; }
90
90
  });
91
91
  Object.defineProperty(exports, "OBJECT_ASSET_PROMPTS", {
92
92
  enumerable: true,
93
- get: function () { return chunkS3H4TI6N_cjs.OBJECT_ASSET_PROMPTS; }
93
+ get: function () { return chunkMGK6SFTV_cjs.OBJECT_ASSET_PROMPTS; }
94
94
  });
95
95
  Object.defineProperty(exports, "OBJECT_MATERIAL_PRESETS", {
96
96
  enumerable: true,
97
- get: function () { return chunkS3H4TI6N_cjs.OBJECT_MATERIAL_PRESETS; }
97
+ get: function () { return chunkMGK6SFTV_cjs.OBJECT_MATERIAL_PRESETS; }
98
98
  });
99
99
  Object.defineProperty(exports, "OBJECT_MATERIAL_PROMPTS", {
100
100
  enumerable: true,
101
- get: function () { return chunkS3H4TI6N_cjs.OBJECT_MATERIAL_PROMPTS; }
101
+ get: function () { return chunkMGK6SFTV_cjs.OBJECT_MATERIAL_PROMPTS; }
102
102
  });
103
103
  Object.defineProperty(exports, "OBJECT_VARIATION_PRESETS", {
104
104
  enumerable: true,
105
- get: function () { return chunkS3H4TI6N_cjs.OBJECT_VARIATION_PRESETS; }
105
+ get: function () { return chunkMGK6SFTV_cjs.OBJECT_VARIATION_PRESETS; }
106
106
  });
107
107
  Object.defineProperty(exports, "OBJECT_VARIATION_PROMPTS", {
108
108
  enumerable: true,
109
- get: function () { return chunkS3H4TI6N_cjs.OBJECT_VARIATION_PROMPTS; }
109
+ get: function () { return chunkMGK6SFTV_cjs.OBJECT_VARIATION_PROMPTS; }
110
110
  });
111
111
  Object.defineProperty(exports, "PRESET_PREVIEW_LARGE_WIDTH", {
112
112
  enumerable: true,
113
- get: function () { return chunkS3H4TI6N_cjs.PRESET_PREVIEW_LARGE_WIDTH; }
113
+ get: function () { return chunkMGK6SFTV_cjs.PRESET_PREVIEW_LARGE_WIDTH; }
114
114
  });
115
115
  Object.defineProperty(exports, "PRESET_PREVIEW_PATH", {
116
116
  enumerable: true,
117
- get: function () { return chunkS3H4TI6N_cjs.PRESET_PREVIEW_PATH; }
117
+ get: function () { return chunkMGK6SFTV_cjs.PRESET_PREVIEW_PATH; }
118
118
  });
119
119
  Object.defineProperty(exports, "PRESET_PREVIEW_WIDTH", {
120
120
  enumerable: true,
121
- get: function () { return chunkS3H4TI6N_cjs.PRESET_PREVIEW_WIDTH; }
121
+ get: function () { return chunkMGK6SFTV_cjs.PRESET_PREVIEW_WIDTH; }
122
122
  });
123
123
  Object.defineProperty(exports, "SNIPPET_MEDIA_VALUES", {
124
124
  enumerable: true,
125
- get: function () { return chunkS3H4TI6N_cjs.SNIPPET_MEDIA_VALUES; }
125
+ get: function () { return chunkMGK6SFTV_cjs.SNIPPET_MEDIA_VALUES; }
126
126
  });
127
127
  Object.defineProperty(exports, "STYLE_PRESETS", {
128
128
  enumerable: true,
129
- get: function () { return chunkS3H4TI6N_cjs.STYLE_PRESETS; }
129
+ get: function () { return chunkMGK6SFTV_cjs.STYLE_PRESETS; }
130
130
  });
131
131
  Object.defineProperty(exports, "factoryPresetPreviewSrcSet", {
132
132
  enumerable: true,
133
- get: function () { return chunkS3H4TI6N_cjs.factoryPresetPreviewSrcSet; }
133
+ get: function () { return chunkMGK6SFTV_cjs.factoryPresetPreviewSrcSet; }
134
134
  });
135
135
  Object.defineProperty(exports, "factoryPresetPreviewUrl", {
136
136
  enumerable: true,
137
- get: function () { return chunkS3H4TI6N_cjs.factoryPresetPreviewUrl; }
137
+ get: function () { return chunkMGK6SFTV_cjs.factoryPresetPreviewUrl; }
138
138
  });
139
139
  Object.defineProperty(exports, "getFactoryPresets", {
140
140
  enumerable: true,
141
- get: function () { return chunkS3H4TI6N_cjs.getFactoryPresets; }
141
+ get: function () { return chunkMGK6SFTV_cjs.getFactoryPresets; }
142
142
  });
143
143
  Object.defineProperty(exports, "getFactorySnippets", {
144
144
  enumerable: true,
145
- get: function () { return chunkS3H4TI6N_cjs.getFactorySnippets; }
145
+ get: function () { return chunkMGK6SFTV_cjs.getFactorySnippets; }
146
146
  });
147
147
  Object.defineProperty(exports, "getStylePreset", {
148
148
  enumerable: true,
149
- get: function () { return chunkS3H4TI6N_cjs.getStylePreset; }
149
+ get: function () { return chunkMGK6SFTV_cjs.getStylePreset; }
150
150
  });
151
151
  Object.defineProperty(exports, "groupFactoryPresets", {
152
152
  enumerable: true,
153
- get: function () { return chunkS3H4TI6N_cjs.groupFactoryPresets; }
153
+ get: function () { return chunkMGK6SFTV_cjs.groupFactoryPresets; }
154
154
  });
155
155
  Object.defineProperty(exports, "hookPlateCaptionSegments", {
156
156
  enumerable: true,
157
- get: function () { return chunkS3H4TI6N_cjs.hookPlateCaptionSegments; }
157
+ get: function () { return chunkMGK6SFTV_cjs.hookPlateCaptionSegments; }
158
158
  });
159
159
  Object.defineProperty(exports, "presetMinReferences", {
160
160
  enumerable: true,
161
- get: function () { return chunkS3H4TI6N_cjs.presetMinReferences; }
161
+ get: function () { return chunkMGK6SFTV_cjs.presetMinReferences; }
162
162
  });
163
163
  Object.defineProperty(exports, "resolveBrandInput", {
164
164
  enumerable: true,
165
- get: function () { return chunkS3H4TI6N_cjs.resolveBrandInput; }
165
+ get: function () { return chunkMGK6SFTV_cjs.resolveBrandInput; }
166
166
  });
167
167
  Object.defineProperty(exports, "readDirectionFields", {
168
168
  enumerable: true,
@@ -574,183 +574,183 @@ Object.defineProperty(exports, "computePackSidecarCoverage", {
574
574
  });
575
575
  Object.defineProperty(exports, "AD_CREATIVE_ANALYSIS_FIELDS", {
576
576
  enumerable: true,
577
- get: function () { return chunk5NIKPMLU_cjs.AD_CREATIVE_ANALYSIS_FIELDS; }
577
+ get: function () { return chunkIWX3Q7NH_cjs.AD_CREATIVE_ANALYSIS_FIELDS; }
578
578
  });
579
579
  Object.defineProperty(exports, "AD_CREATIVE_ANALYSIS_SYSTEM_PROMPT", {
580
580
  enumerable: true,
581
- get: function () { return chunk5NIKPMLU_cjs.AD_CREATIVE_ANALYSIS_SYSTEM_PROMPT; }
581
+ get: function () { return chunkIWX3Q7NH_cjs.AD_CREATIVE_ANALYSIS_SYSTEM_PROMPT; }
582
582
  });
583
583
  Object.defineProperty(exports, "AUDIO_WIZARD_CATEGORIES", {
584
584
  enumerable: true,
585
- get: function () { return chunk5NIKPMLU_cjs.AUDIO_WIZARD_CATEGORIES; }
585
+ get: function () { return chunkIWX3Q7NH_cjs.AUDIO_WIZARD_CATEGORIES; }
586
586
  });
587
587
  Object.defineProperty(exports, "DEFAULT_OWN_MOTION", {
588
588
  enumerable: true,
589
- get: function () { return chunk5NIKPMLU_cjs.DEFAULT_OWN_MOTION; }
589
+ get: function () { return chunkIWX3Q7NH_cjs.DEFAULT_OWN_MOTION; }
590
590
  });
591
591
  Object.defineProperty(exports, "IMAGE_REFERENCE_PROMPT_DOCTRINE", {
592
592
  enumerable: true,
593
- get: function () { return chunk5NIKPMLU_cjs.IMAGE_REFERENCE_PROMPT_DOCTRINE; }
593
+ get: function () { return chunkIWX3Q7NH_cjs.IMAGE_REFERENCE_PROMPT_DOCTRINE; }
594
594
  });
595
595
  Object.defineProperty(exports, "IMAGE_WIZARD_CATEGORIES", {
596
596
  enumerable: true,
597
- get: function () { return chunk5NIKPMLU_cjs.IMAGE_WIZARD_CATEGORIES; }
597
+ get: function () { return chunkIWX3Q7NH_cjs.IMAGE_WIZARD_CATEGORIES; }
598
598
  });
599
599
  Object.defineProperty(exports, "LLM_CHAT_WIZARD_CATEGORIES", {
600
600
  enumerable: true,
601
- get: function () { return chunk5NIKPMLU_cjs.LLM_CHAT_WIZARD_CATEGORIES; }
601
+ get: function () { return chunkIWX3Q7NH_cjs.LLM_CHAT_WIZARD_CATEGORIES; }
602
602
  });
603
603
  Object.defineProperty(exports, "MUSIC_WIZARD_CATEGORIES", {
604
604
  enumerable: true,
605
- get: function () { return chunk5NIKPMLU_cjs.MUSIC_WIZARD_CATEGORIES; }
605
+ get: function () { return chunkIWX3Q7NH_cjs.MUSIC_WIZARD_CATEGORIES; }
606
606
  });
607
607
  Object.defineProperty(exports, "OWN_MOTION_NODE_TYPES", {
608
608
  enumerable: true,
609
- get: function () { return chunk5NIKPMLU_cjs.OWN_MOTION_NODE_TYPES; }
609
+ get: function () { return chunkIWX3Q7NH_cjs.OWN_MOTION_NODE_TYPES; }
610
610
  });
611
611
  Object.defineProperty(exports, "POST_CONTENT_ANALYSIS_SYSTEM_PROMPT", {
612
612
  enumerable: true,
613
- get: function () { return chunk5NIKPMLU_cjs.POST_CONTENT_ANALYSIS_SYSTEM_PROMPT; }
613
+ get: function () { return chunkIWX3Q7NH_cjs.POST_CONTENT_ANALYSIS_SYSTEM_PROMPT; }
614
614
  });
615
615
  Object.defineProperty(exports, "PROVIDER_CAPABILITIES", {
616
616
  enumerable: true,
617
- get: function () { return chunk5NIKPMLU_cjs.PROVIDER_CAPABILITIES; }
617
+ get: function () { return chunkIWX3Q7NH_cjs.PROVIDER_CAPABILITIES; }
618
618
  });
619
619
  Object.defineProperty(exports, "PROVIDER_PROMPT_DOCTRINES", {
620
620
  enumerable: true,
621
- get: function () { return chunk5NIKPMLU_cjs.PROVIDER_PROMPT_DOCTRINES; }
621
+ get: function () { return chunkIWX3Q7NH_cjs.PROVIDER_PROMPT_DOCTRINES; }
622
622
  });
623
623
  Object.defineProperty(exports, "REFERENCE_IMAGE_ROLES", {
624
624
  enumerable: true,
625
- get: function () { return chunk5NIKPMLU_cjs.REFERENCE_IMAGE_ROLES; }
625
+ get: function () { return chunkIWX3Q7NH_cjs.REFERENCE_IMAGE_ROLES; }
626
626
  });
627
627
  Object.defineProperty(exports, "SCENE3D_FIGURE_REFERENCE_RULE", {
628
628
  enumerable: true,
629
- get: function () { return chunk5NIKPMLU_cjs.SCENE3D_FIGURE_REFERENCE_RULE; }
629
+ get: function () { return chunkIWX3Q7NH_cjs.SCENE3D_FIGURE_REFERENCE_RULE; }
630
630
  });
631
631
  Object.defineProperty(exports, "SCENE3D_FREE_PLATE_SLOTS", {
632
632
  enumerable: true,
633
- get: function () { return chunk5NIKPMLU_cjs.SCENE3D_FREE_PLATE_SLOTS; }
633
+ get: function () { return chunkIWX3Q7NH_cjs.SCENE3D_FREE_PLATE_SLOTS; }
634
634
  });
635
635
  Object.defineProperty(exports, "SCENE3D_LAYOUT_REFERENCE_SCOPING_FIXTURE", {
636
636
  enumerable: true,
637
- get: function () { return chunk5NIKPMLU_cjs.SCENE3D_LAYOUT_REFERENCE_SCOPING_FIXTURE; }
637
+ get: function () { return chunkIWX3Q7NH_cjs.SCENE3D_LAYOUT_REFERENCE_SCOPING_FIXTURE; }
638
638
  });
639
639
  Object.defineProperty(exports, "SCENE3D_LAYOUT_REFERENCE_SCOPING_LINE", {
640
640
  enumerable: true,
641
- get: function () { return chunk5NIKPMLU_cjs.SCENE3D_LAYOUT_REFERENCE_SCOPING_LINE; }
641
+ get: function () { return chunkIWX3Q7NH_cjs.SCENE3D_LAYOUT_REFERENCE_SCOPING_LINE; }
642
642
  });
643
643
  Object.defineProperty(exports, "SCENE3D_LAYOUT_SCOPING_FOR", {
644
644
  enumerable: true,
645
- get: function () { return chunk5NIKPMLU_cjs.SCENE3D_LAYOUT_SCOPING_FOR; }
645
+ get: function () { return chunkIWX3Q7NH_cjs.SCENE3D_LAYOUT_SCOPING_FOR; }
646
646
  });
647
647
  Object.defineProperty(exports, "SCENE3D_LAYOUT_SCOPING_IGNORE", {
648
648
  enumerable: true,
649
- get: function () { return chunk5NIKPMLU_cjs.SCENE3D_LAYOUT_SCOPING_IGNORE; }
649
+ get: function () { return chunkIWX3Q7NH_cjs.SCENE3D_LAYOUT_SCOPING_IGNORE; }
650
650
  });
651
651
  Object.defineProperty(exports, "SCENE3D_LAYOUT_SCOPING_LOOK_SOURCE", {
652
652
  enumerable: true,
653
- get: function () { return chunk5NIKPMLU_cjs.SCENE3D_LAYOUT_SCOPING_LOOK_SOURCE; }
653
+ get: function () { return chunkIWX3Q7NH_cjs.SCENE3D_LAYOUT_SCOPING_LOOK_SOURCE; }
654
654
  });
655
655
  Object.defineProperty(exports, "SCENE3D_LAYOUT_SCOPING_MARKER", {
656
656
  enumerable: true,
657
- get: function () { return chunk5NIKPMLU_cjs.SCENE3D_LAYOUT_SCOPING_MARKER; }
657
+ get: function () { return chunkIWX3Q7NH_cjs.SCENE3D_LAYOUT_SCOPING_MARKER; }
658
658
  });
659
659
  Object.defineProperty(exports, "SCENE3D_UNREFERENCED_FIGURES_WARNING_CODE", {
660
660
  enumerable: true,
661
- get: function () { return chunk5NIKPMLU_cjs.SCENE3D_UNREFERENCED_FIGURES_WARNING_CODE; }
661
+ get: function () { return chunkIWX3Q7NH_cjs.SCENE3D_UNREFERENCED_FIGURES_WARNING_CODE; }
662
662
  });
663
663
  Object.defineProperty(exports, "TEXT_WIZARD_CATEGORIES", {
664
664
  enumerable: true,
665
- get: function () { return chunk5NIKPMLU_cjs.TEXT_WIZARD_CATEGORIES; }
665
+ get: function () { return chunkIWX3Q7NH_cjs.TEXT_WIZARD_CATEGORIES; }
666
666
  });
667
667
  Object.defineProperty(exports, "VIDEO_WIZARD_CATEGORIES", {
668
668
  enumerable: true,
669
- get: function () { return chunk5NIKPMLU_cjs.VIDEO_WIZARD_CATEGORIES; }
669
+ get: function () { return chunkIWX3Q7NH_cjs.VIDEO_WIZARD_CATEGORIES; }
670
670
  });
671
671
  Object.defineProperty(exports, "appendScene3DStillScopingLines", {
672
672
  enumerable: true,
673
- get: function () { return chunk5NIKPMLU_cjs.appendScene3DStillScopingLines; }
673
+ get: function () { return chunkIWX3Q7NH_cjs.appendScene3DStillScopingLines; }
674
674
  });
675
675
  Object.defineProperty(exports, "buildAdCreativeAnalysisUserText", {
676
676
  enumerable: true,
677
- get: function () { return chunk5NIKPMLU_cjs.buildAdCreativeAnalysisUserText; }
677
+ get: function () { return chunkIWX3Q7NH_cjs.buildAdCreativeAnalysisUserText; }
678
678
  });
679
679
  Object.defineProperty(exports, "buildCharacterPrompt", {
680
680
  enumerable: true,
681
- get: function () { return chunk5NIKPMLU_cjs.buildCharacterPrompt; }
681
+ get: function () { return chunkIWX3Q7NH_cjs.buildCharacterPrompt; }
682
682
  });
683
683
  Object.defineProperty(exports, "buildCreaturePrompt", {
684
684
  enumerable: true,
685
- get: function () { return chunk5NIKPMLU_cjs.buildCreaturePrompt; }
685
+ get: function () { return chunkIWX3Q7NH_cjs.buildCreaturePrompt; }
686
686
  });
687
687
  Object.defineProperty(exports, "buildFaceTemplateInputs", {
688
688
  enumerable: true,
689
- get: function () { return chunk5NIKPMLU_cjs.buildFaceTemplateInputs; }
689
+ get: function () { return chunkIWX3Q7NH_cjs.buildFaceTemplateInputs; }
690
690
  });
691
691
  Object.defineProperty(exports, "buildLocationMotionPrompt", {
692
692
  enumerable: true,
693
- get: function () { return chunk5NIKPMLU_cjs.buildLocationMotionPrompt; }
693
+ get: function () { return chunkIWX3Q7NH_cjs.buildLocationMotionPrompt; }
694
694
  });
695
695
  Object.defineProperty(exports, "buildLocationPrompt", {
696
696
  enumerable: true,
697
- get: function () { return chunk5NIKPMLU_cjs.buildLocationPrompt; }
697
+ get: function () { return chunkIWX3Q7NH_cjs.buildLocationPrompt; }
698
698
  });
699
699
  Object.defineProperty(exports, "buildLocationRefinePrompt", {
700
700
  enumerable: true,
701
- get: function () { return chunk5NIKPMLU_cjs.buildLocationRefinePrompt; }
701
+ get: function () { return chunkIWX3Q7NH_cjs.buildLocationRefinePrompt; }
702
702
  });
703
703
  Object.defineProperty(exports, "buildMotionPrompt", {
704
704
  enumerable: true,
705
- get: function () { return chunk5NIKPMLU_cjs.buildMotionPrompt; }
705
+ get: function () { return chunkIWX3Q7NH_cjs.buildMotionPrompt; }
706
706
  });
707
707
  Object.defineProperty(exports, "buildObjectMotionPrompt", {
708
708
  enumerable: true,
709
- get: function () { return chunk5NIKPMLU_cjs.buildObjectMotionPrompt; }
709
+ get: function () { return chunkIWX3Q7NH_cjs.buildObjectMotionPrompt; }
710
710
  });
711
711
  Object.defineProperty(exports, "buildObjectPrompt", {
712
712
  enumerable: true,
713
- get: function () { return chunk5NIKPMLU_cjs.buildObjectPrompt; }
713
+ get: function () { return chunkIWX3Q7NH_cjs.buildObjectPrompt; }
714
714
  });
715
715
  Object.defineProperty(exports, "buildScene3DLayoutScopingLine", {
716
716
  enumerable: true,
717
- get: function () { return chunk5NIKPMLU_cjs.buildScene3DLayoutScopingLine; }
717
+ get: function () { return chunkIWX3Q7NH_cjs.buildScene3DLayoutScopingLine; }
718
718
  });
719
719
  Object.defineProperty(exports, "buildScene3DUnreferencedFiguresWarning", {
720
720
  enumerable: true,
721
- get: function () { return chunk5NIKPMLU_cjs.buildScene3DUnreferencedFiguresWarning; }
721
+ get: function () { return chunkIWX3Q7NH_cjs.buildScene3DUnreferencedFiguresWarning; }
722
722
  });
723
723
  Object.defineProperty(exports, "getCategoriesForNodeType", {
724
724
  enumerable: true,
725
- get: function () { return chunk5NIKPMLU_cjs.getCategoriesForNodeType; }
725
+ get: function () { return chunkIWX3Q7NH_cjs.getCategoriesForNodeType; }
726
726
  });
727
727
  Object.defineProperty(exports, "getPromptDoctrine", {
728
728
  enumerable: true,
729
- get: function () { return chunk5NIKPMLU_cjs.getPromptDoctrine; }
729
+ get: function () { return chunkIWX3Q7NH_cjs.getPromptDoctrine; }
730
730
  });
731
731
  Object.defineProperty(exports, "getPromptTips", {
732
732
  enumerable: true,
733
- get: function () { return chunk5NIKPMLU_cjs.getPromptTips; }
733
+ get: function () { return chunkIWX3Q7NH_cjs.getPromptTips; }
734
734
  });
735
735
  Object.defineProperty(exports, "hasScene3DLayoutScopingLine", {
736
736
  enumerable: true,
737
- get: function () { return chunk5NIKPMLU_cjs.hasScene3DLayoutScopingLine; }
737
+ get: function () { return chunkIWX3Q7NH_cjs.hasScene3DLayoutScopingLine; }
738
738
  });
739
739
  Object.defineProperty(exports, "isWizardSupported", {
740
740
  enumerable: true,
741
- get: function () { return chunk5NIKPMLU_cjs.isWizardSupported; }
741
+ get: function () { return chunkIWX3Q7NH_cjs.isWizardSupported; }
742
742
  });
743
743
  Object.defineProperty(exports, "ownMotionHint", {
744
744
  enumerable: true,
745
- get: function () { return chunk5NIKPMLU_cjs.ownMotionHint; }
745
+ get: function () { return chunkIWX3Q7NH_cjs.ownMotionHint; }
746
746
  });
747
747
  Object.defineProperty(exports, "renderScene3DLayoutScopingLine", {
748
748
  enumerable: true,
749
- get: function () { return chunk5NIKPMLU_cjs.renderScene3DLayoutScopingLine; }
749
+ get: function () { return chunkIWX3Q7NH_cjs.renderScene3DLayoutScopingLine; }
750
750
  });
751
751
  Object.defineProperty(exports, "scene3DLayoutVideoCaptions", {
752
752
  enumerable: true,
753
- get: function () { return chunk5NIKPMLU_cjs.scene3DLayoutVideoCaptions; }
753
+ get: function () { return chunkIWX3Q7NH_cjs.scene3DLayoutVideoCaptions; }
754
754
  });
755
755
  Object.defineProperty(exports, "CINEMATIC_LOOK_TAIL", {
756
756
  enumerable: true,
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
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-CLHIPYTC.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-RRHU6MD5.js';
2
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';
@@ -8,7 +8,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';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nodaro/prompts",
3
- "version": "1.45.0",
3
+ "version": "1.47.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.45.0"
73
+ "@nodaro/shared": "^3.48.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,6 +1,7 @@
1
1
  import { describe, it, expect } from "vitest"
2
2
  import { FACTORY_PRESETS, getFactoryPresets, groupFactoryPresets } from "../factory-presets.js"
3
- import { extractPresetData, PRESET_APPLY_CLEAR_KEYS } from "@nodaro/shared/nodes"
3
+ import { extractPresetData, normalizeNodeModelParams, PRESET_APPLY_CLEAR_KEYS } from "@nodaro/shared/nodes"
4
+ import { normalizeModelInput } from "@nodaro/shared/model-catalog"
4
5
  import { LLM_MODEL_IDS } from "@nodaro/shared/llm-models"
5
6
  import {
6
7
  COMPOSER_PLAN_MAP,
@@ -211,6 +212,29 @@ describe("generate-image factory preset data validity", () => {
211
212
  }
212
213
  })
213
214
 
215
+ // Remove People keeps the photo's shape AND renders 2K. That pair is only
216
+ // possible on GPT Image 2.5 Flare: GPT Image 2 drops "auto" to 1K. Pinned on
217
+ // the write boundary and on both models a run can send it to (the i2i
218
+ // sibling once the photo is connected).
219
+ it("Remove People keeps auto + 2K through normalization", () => {
220
+ const p = presets.find((x) => x.id === "generate-image/remove-people")
221
+ expect(p?.group).toBe("Face Privacy")
222
+ expect(p?.minReferences).toBeUndefined()
223
+ expect(p?.data).toMatchObject({ provider: "gpt-image-2-5-flare", aspectRatio: "auto", resolution: "2K" })
224
+ expect(p?.data.promptPrefix).toBe("remove all people from {image:1}\nkeep background exactly the same")
225
+
226
+ const written = normalizeNodeModelParams([{ id: "n", type: "generate-image", data: { ...p!.data } }])
227
+ expect(written.adjustments).toEqual([])
228
+ expect(written.nodes[0]!.data).toMatchObject({ aspectRatio: "auto", resolution: "2K" })
229
+
230
+ for (const modelId of ["gpt-image-2-5-flare", "gpt-image-2-5-flare-i2i"]) {
231
+ const out = normalizeModelInput(modelId, { aspectRatio: "auto", resolution: "2K" })
232
+ expect(out.adjustments, modelId).toEqual([])
233
+ expect(out.aspectRatio, modelId).toBe("auto")
234
+ expect(out.resolution, modelId).toBe("2K")
235
+ }
236
+ })
237
+
214
238
  it("includes the Reference Sheet group with Character + Location boards", () => {
215
239
  const char = presets.find((p) => p.id === "generate-image/character-board")
216
240
  const loc = presets.find((p) => p.id === "generate-image/location-board")
@@ -316,7 +340,7 @@ describe("generate-image factory preset data validity", () => {
316
340
  "generate-image/mirror-selfie", "generate-image/creator-at-home", "generate-image/video-call-frame",
317
341
  "generate-image/macro-skin-study", "generate-image/product-in-hand", "generate-image/skin-detail-sheet",
318
342
  "generate-image/add-skin-realism", "generate-image/natural-photo-finish", "generate-image/phone-camera-look",
319
- "generate-image/undo-beauty-filter",
343
+ "generate-image/undo-beauty-filter", "generate-image/remove-people",
320
344
  ])
321
345
 
322
346
  it("every generate-image preset has a non-empty negativePrompt (except the exempt ones, which carry none)", () => {
@@ -258,13 +258,14 @@ describe("unwired {image:N} — the Face Privacy presets' prefix", () => {
258
258
  "generate-image/faceless-3d-head",
259
259
  "generate-image/remove-faces",
260
260
  "generate-image/transparent-faces",
261
+ "generate-image/remove-people",
261
262
  ])
262
263
  for (const { data } of presets) {
263
264
  const prompt = prefixed(data)
264
265
  expect(prompt).toContain("{image:1}")
265
266
  const provider = data.provider as string
266
- const negativePrompt = data.negativePrompt as string
267
- const avoid = `\nAvoid: ${negativePrompt}`
267
+ const negativePrompt = data.negativePrompt as string | undefined
268
+ const avoid = negativePrompt ? `\nAvoid: ${negativePrompt}` : ""
268
269
 
269
270
  const unwired = buildImagePrompt({ prompt, provider, negativePrompt, connectedReferences: [] })
270
271
  expect(unwired.prompt).toBe(`${resolveReferenceTokens(prompt, ZERO)}${avoid}`)
@@ -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(" ")
@@ -293,10 +293,10 @@ export const GENERATE_IMAGE_PRESETS: readonly FactoryPreset[] = [
293
293
  },
294
294
  },
295
295
  // ── Face Privacy (connect the photo → {image:1}) ─────────────────────────
296
- // gpt-image-2 + aspectRatio "auto" so the output keeps the input photo's
297
- // shape. NOTE: KIE's gpt-image-2 spec forces resolution 1K when aspect is
298
- // "auto" (the config panel's fail-safe snaps any other value back), so
299
- // these pin 1K explicitly rather than shipping a self-contradicting 2K.
296
+ // aspectRatio "auto" so the output keeps the input photo's shape. NOTE:
297
+ // KIE's gpt-image-2 spec forces resolution 1K when aspect is "auto" (the
298
+ // config panel's fail-safe snaps any other value back), so the gpt-image-2
299
+ // presets pin 1K explicitly rather than shipping a self-contradicting 2K.
300
300
  {
301
301
  id: "generate-image/faceless-3d-head",
302
302
  name: "Faceless · 3D Blank Head",
@@ -340,6 +340,20 @@ export const GENERATE_IMAGE_PRESETS: readonly FactoryPreset[] = [
340
340
  "opaque faces, visible facial features, eyes, nose, mouth, changing the background, altering clothing, hair or body, restyling the scene, relighting, changing pose or framing, distorted anatomy, watermark, blurry",
341
341
  },
342
342
  },
343
+ // GPT Image 2.5 Flare has no auto x resolution restriction, so this one keeps
344
+ // the photo's shape AND renders 2K.
345
+ {
346
+ id: "generate-image/remove-people",
347
+ name: "Remove People",
348
+ description: "Remove every person from the photo; the background stays exactly the same.",
349
+ group: "Face Privacy",
350
+ data: {
351
+ provider: "gpt-image-2-5-flare",
352
+ aspectRatio: "auto",
353
+ resolution: "2K",
354
+ promptPrefix: "remove all people from {image:1}\nkeep background exactly the same",
355
+ },
356
+ },
343
357
  // ── Photography & Cinematic ──────────────────────────────────────────────
344
358
  {
345
359
  id: "generate-image/cinematic-portrait",