prompts.chat 0.0.1 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +856 -0
- package/dist/builder/index.d.mts +1067 -0
- package/dist/builder/index.d.ts +1067 -0
- package/dist/builder/index.js +2471 -0
- package/dist/builder/index.js.map +1 -0
- package/dist/builder/index.mjs +2432 -0
- package/dist/builder/index.mjs.map +1 -0
- package/dist/index-BEIO8LCd.d.mts +61 -0
- package/dist/index-BEIO8LCd.d.ts +61 -0
- package/dist/index-CSHEKYfQ.d.mts +64 -0
- package/dist/index-CSHEKYfQ.d.ts +64 -0
- package/dist/index-D41E6D9X.d.mts +77 -0
- package/dist/index-D41E6D9X.d.ts +77 -0
- package/dist/index-DOz8zcA0.d.mts +68 -0
- package/dist/index-DOz8zcA0.d.ts +68 -0
- package/dist/index.d.mts +5 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +3335 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +3276 -0
- package/dist/index.mjs.map +1 -0
- package/dist/parser/index.d.mts +1 -0
- package/dist/parser/index.d.ts +1 -0
- package/dist/parser/index.js +288 -0
- package/dist/parser/index.js.map +1 -0
- package/dist/parser/index.mjs +259 -0
- package/dist/parser/index.mjs.map +1 -0
- package/dist/quality/index.d.mts +1 -0
- package/dist/quality/index.d.ts +1 -0
- package/dist/quality/index.js +212 -0
- package/dist/quality/index.js.map +1 -0
- package/dist/quality/index.mjs +184 -0
- package/dist/quality/index.mjs.map +1 -0
- package/dist/similarity/index.d.mts +1 -0
- package/dist/similarity/index.d.ts +1 -0
- package/dist/similarity/index.js +123 -0
- package/dist/similarity/index.js.map +1 -0
- package/dist/similarity/index.mjs +91 -0
- package/dist/similarity/index.mjs.map +1 -0
- package/dist/variables/index.d.mts +1 -0
- package/dist/variables/index.d.ts +1 -0
- package/dist/variables/index.js +306 -0
- package/dist/variables/index.js.map +1 -0
- package/dist/variables/index.mjs +274 -0
- package/dist/variables/index.mjs.map +1 -0
- package/package.json +77 -6
|
@@ -0,0 +1,1067 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Media Prompt Builders - The D3.js of Prompt Building
|
|
3
|
+
*
|
|
4
|
+
* Comprehensive, structured builders for Image, Video, and Audio generation prompts.
|
|
5
|
+
* Every attribute a professional would consider is available as a chainable method.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* import { image, video, audio } from 'prompts.chat/builder';
|
|
10
|
+
*
|
|
11
|
+
* const imagePrompt = image()
|
|
12
|
+
* .subject("a lone samurai")
|
|
13
|
+
* .environment("bamboo forest at dawn")
|
|
14
|
+
* .camera({ angle: "low", shot: "wide", lens: "35mm" })
|
|
15
|
+
* .lighting({ type: "rim", time: "golden-hour" })
|
|
16
|
+
* .style({ artist: "Akira Kurosawa", medium: "cinematic" })
|
|
17
|
+
* .build();
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
type OutputFormat = 'text' | 'json' | 'yaml' | 'markdown';
|
|
21
|
+
type CameraBrand = 'sony' | 'canon' | 'nikon' | 'fujifilm' | 'leica' | 'hasselblad' | 'phase-one' | 'panasonic' | 'olympus' | 'pentax' | 'red' | 'arri' | 'blackmagic' | 'panavision';
|
|
22
|
+
type CameraModel = 'sony-a7iv' | 'sony-a7riv' | 'sony-a7siii' | 'sony-a1' | 'sony-fx3' | 'sony-fx6' | 'sony-venice' | 'sony-venice-2' | 'sony-a9ii' | 'sony-zv-e1' | 'canon-r5' | 'canon-r6' | 'canon-r3' | 'canon-r8' | 'canon-c70' | 'canon-c300-iii' | 'canon-c500-ii' | 'canon-5d-iv' | 'canon-1dx-iii' | 'canon-eos-r5c' | 'nikon-z9' | 'nikon-z8' | 'nikon-z6-iii' | 'nikon-z7-ii' | 'nikon-d850' | 'nikon-d6' | 'fujifilm-x-t5' | 'fujifilm-x-h2s' | 'fujifilm-x100vi' | 'fujifilm-gfx100s' | 'fujifilm-gfx100-ii' | 'fujifilm-x-pro3' | 'leica-m11' | 'leica-sl2' | 'leica-sl2-s' | 'leica-q3' | 'leica-m10-r' | 'hasselblad-x2d' | 'hasselblad-907x' | 'hasselblad-h6d-100c' | 'arri-alexa-35' | 'arri-alexa-mini-lf' | 'arri-alexa-65' | 'arri-amira' | 'red-v-raptor' | 'red-komodo' | 'red-gemini' | 'red-monstro' | 'blackmagic-ursa-mini-pro' | 'blackmagic-pocket-6k' | 'blackmagic-pocket-4k' | 'panavision-dxl2' | 'panavision-millennium-xl2';
|
|
23
|
+
type SensorFormat = 'full-frame' | 'aps-c' | 'micro-four-thirds' | 'medium-format' | 'large-format' | 'super-35' | 'vista-vision' | 'imax' | '65mm' | '35mm-film' | '16mm-film' | '8mm-film';
|
|
24
|
+
type FilmFormat = '35mm' | '120-medium-format' | '4x5-large-format' | '8x10-large-format' | '110-film' | 'instant-film' | 'super-8' | '16mm' | '65mm-imax';
|
|
25
|
+
type CameraAngle = 'eye-level' | 'low-angle' | 'high-angle' | 'dutch-angle' | 'birds-eye' | 'worms-eye' | 'over-the-shoulder' | 'point-of-view' | 'aerial' | 'drone' | 'canted' | 'oblique' | 'hip-level' | 'knee-level' | 'ground-level';
|
|
26
|
+
type ShotType = 'extreme-close-up' | 'close-up' | 'medium-close-up' | 'medium' | 'medium-wide' | 'wide' | 'extreme-wide' | 'establishing' | 'full-body' | 'portrait' | 'headshot';
|
|
27
|
+
type LensType = 'wide-angle' | 'ultra-wide' | 'standard' | 'telephoto' | 'macro' | 'fisheye' | '14mm' | '24mm' | '35mm' | '50mm' | '85mm' | '100mm' | '135mm' | '200mm' | '400mm' | '600mm' | '800mm' | 'tilt-shift' | 'anamorphic' | 'spherical' | 'prime' | 'zoom';
|
|
28
|
+
type LensBrand = 'zeiss' | 'leica' | 'canon' | 'nikon' | 'sony' | 'sigma' | 'tamron' | 'voigtlander' | 'fujifilm' | 'samyang' | 'rokinon' | 'tokina' | 'cooke' | 'arri' | 'panavision' | 'angenieux' | 'red' | 'atlas' | 'sirui';
|
|
29
|
+
type LensModel = 'zeiss-otus-55' | 'zeiss-batis-85' | 'zeiss-milvus-35' | 'zeiss-supreme-prime' | 'leica-summilux-50' | 'leica-summicron-35' | 'leica-noctilux-50' | 'leica-apo-summicron' | 'canon-rf-50-1.2' | 'canon-rf-85-1.2' | 'canon-rf-28-70-f2' | 'canon-rf-100-500' | 'sony-gm-24-70' | 'sony-gm-70-200' | 'sony-gm-50-1.2' | 'sony-gm-85-1.4' | 'sigma-art-35' | 'sigma-art-50' | 'sigma-art-85' | 'sigma-art-105-macro' | 'cooke-s7i' | 'cooke-anamorphic' | 'arri-signature-prime' | 'arri-ultra-prime' | 'panavision-primo' | 'panavision-anamorphic' | 'atlas-orion-anamorphic' | 'helios-44-2' | 'canon-fd-55' | 'minolta-rokkor-58' | 'pentax-takumar-50';
|
|
30
|
+
type FocusType = 'shallow' | 'deep' | 'soft-focus' | 'tilt-shift' | 'rack-focus' | 'split-diopter' | 'zone-focus' | 'hyperfocal' | 'selective' | 'bokeh-heavy' | 'tack-sharp';
|
|
31
|
+
type BokehStyle = 'smooth' | 'creamy' | 'swirly' | 'busy' | 'soap-bubble' | 'cat-eye' | 'oval-anamorphic';
|
|
32
|
+
type FilterType = 'uv' | 'polarizer' | 'nd' | 'nd-graduated' | 'black-pro-mist' | 'white-pro-mist' | 'glimmer-glass' | 'classic-soft' | 'streak' | 'starburst' | 'diffusion' | 'infrared' | 'color-gel' | 'warming' | 'cooling' | 'vintage-look';
|
|
33
|
+
type CameraMovement = 'static' | 'pan' | 'tilt' | 'dolly' | 'truck' | 'pedestal' | 'zoom' | 'handheld' | 'steadicam' | 'crane' | 'drone' | 'tracking' | 'arc' | 'whip-pan' | 'roll' | 'boom' | 'jib' | 'cable-cam' | 'motion-control' | 'snorricam' | 'dutch-roll' | 'vertigo-effect' | 'crash-zoom' | 'slow-push' | 'slow-pull';
|
|
34
|
+
type CameraRig = 'tripod' | 'monopod' | 'gimbal' | 'steadicam' | 'easyrig' | 'shoulder-rig' | 'slider' | 'dolly' | 'jib' | 'crane' | 'technocrane' | 'russian-arm' | 'cable-cam' | 'drone' | 'fpv-drone' | 'motion-control' | 'handheld';
|
|
35
|
+
type GimbalModel = 'dji-ronin-4d' | 'dji-ronin-rs3-pro' | 'dji-ronin-rs4' | 'moza-air-2' | 'zhiyun-crane-3s' | 'freefly-movi-pro' | 'tilta-gravity-g2x';
|
|
36
|
+
type LightingType = 'natural' | 'studio' | 'dramatic' | 'soft' | 'hard' | 'diffused' | 'key' | 'fill' | 'rim' | 'backlit' | 'silhouette' | 'rembrandt' | 'split' | 'butterfly' | 'loop' | 'broad' | 'short' | 'chiaroscuro' | 'high-key' | 'low-key' | 'three-point' | 'practical' | 'motivated';
|
|
37
|
+
type TimeOfDay = 'dawn' | 'sunrise' | 'golden-hour' | 'morning' | 'midday' | 'afternoon' | 'blue-hour' | 'sunset' | 'dusk' | 'twilight' | 'night' | 'midnight';
|
|
38
|
+
type WeatherLighting = 'sunny' | 'cloudy' | 'overcast' | 'foggy' | 'misty' | 'rainy' | 'stormy' | 'snowy' | 'hazy';
|
|
39
|
+
type ArtStyle = 'photorealistic' | 'hyperrealistic' | 'cinematic' | 'documentary' | 'editorial' | 'fashion' | 'portrait' | 'landscape' | 'street' | 'fine-art' | 'conceptual' | 'surreal' | 'abstract' | 'minimalist' | 'maximalist' | 'vintage' | 'retro' | 'noir' | 'gothic' | 'romantic' | 'impressionist' | 'expressionist' | 'pop-art' | 'art-nouveau' | 'art-deco' | 'cyberpunk' | 'steampunk' | 'fantasy' | 'sci-fi' | 'anime' | 'manga' | 'comic-book' | 'illustration' | 'digital-art' | 'oil-painting' | 'watercolor' | 'sketch' | 'pencil-drawing' | 'charcoal' | 'pastel' | '3d-render';
|
|
40
|
+
type FilmStock = 'kodak-portra-160' | 'kodak-portra-400' | 'kodak-portra-800' | 'kodak-ektar-100' | 'kodak-gold-200' | 'kodak-ultramax-400' | 'kodak-colorplus-200' | 'kodak-tri-x-400' | 'kodak-tmax-100' | 'kodak-tmax-400' | 'kodak-tmax-3200' | 'kodak-ektachrome-e100' | 'kodachrome-64' | 'kodachrome-200' | 'kodak-vision3-50d' | 'kodak-vision3-200t' | 'kodak-vision3-250d' | 'kodak-vision3-500t' | 'fujifilm-pro-400h' | 'fujifilm-superia-400' | 'fujifilm-c200' | 'fujifilm-velvia-50' | 'fujifilm-velvia-100' | 'fujifilm-provia-100f' | 'fujifilm-acros-100' | 'fujifilm-neopan-400' | 'fujifilm-eterna-500t' | 'ilford-hp5-plus' | 'ilford-delta-100' | 'ilford-delta-400' | 'ilford-delta-3200' | 'ilford-fp4-plus' | 'ilford-pan-f-plus' | 'ilford-xp2-super' | 'cinestill-50d' | 'cinestill-800t' | 'cinestill-400d' | 'cinestill-bwxx' | 'lomography-100' | 'lomography-400' | 'lomography-800' | 'lomochrome-purple' | 'lomochrome-metropolis' | 'lomochrome-turquoise' | 'polaroid-sx-70' | 'polaroid-600' | 'polaroid-i-type' | 'polaroid-spectra' | 'instax-mini' | 'instax-wide' | 'instax-square' | 'agfa-vista-400' | 'agfa-apx-100' | 'fomapan-100' | 'fomapan-400' | 'bergger-pancro-400' | 'jch-streetpan-400';
|
|
41
|
+
type AspectRatio = '1:1' | '4:3' | '3:2' | '16:9' | '21:9' | '9:16' | '2:3' | '4:5' | '5:4';
|
|
42
|
+
type ColorPalette = 'warm' | 'cool' | 'neutral' | 'vibrant' | 'muted' | 'pastel' | 'neon' | 'monochrome' | 'sepia' | 'desaturated' | 'high-contrast' | 'low-contrast' | 'earthy' | 'oceanic' | 'forest' | 'sunset' | 'midnight' | 'golden';
|
|
43
|
+
type Mood = 'serene' | 'peaceful' | 'melancholic' | 'dramatic' | 'tense' | 'mysterious' | 'romantic' | 'nostalgic' | 'hopeful' | 'joyful' | 'energetic' | 'chaotic' | 'ethereal' | 'dark' | 'light' | 'whimsical' | 'eerie' | 'epic' | 'intimate';
|
|
44
|
+
type VideoTransition = 'cut' | 'fade' | 'dissolve' | 'wipe' | 'morph' | 'match-cut' | 'jump-cut' | 'cross-dissolve' | 'iris' | 'push' | 'slide';
|
|
45
|
+
type VideoPacing = 'slow' | 'medium' | 'fast' | 'variable' | 'building' | 'frenetic' | 'contemplative';
|
|
46
|
+
interface ImageSubject {
|
|
47
|
+
main: string;
|
|
48
|
+
details?: string[];
|
|
49
|
+
expression?: string;
|
|
50
|
+
pose?: string;
|
|
51
|
+
action?: string;
|
|
52
|
+
clothing?: string;
|
|
53
|
+
accessories?: string[];
|
|
54
|
+
age?: string;
|
|
55
|
+
ethnicity?: string;
|
|
56
|
+
gender?: string;
|
|
57
|
+
count?: number | 'single' | 'couple' | 'group' | 'crowd';
|
|
58
|
+
}
|
|
59
|
+
interface ImageCamera {
|
|
60
|
+
angle?: CameraAngle;
|
|
61
|
+
shot?: ShotType;
|
|
62
|
+
brand?: CameraBrand;
|
|
63
|
+
model?: CameraModel;
|
|
64
|
+
sensor?: SensorFormat;
|
|
65
|
+
lens?: LensType;
|
|
66
|
+
lensModel?: LensModel;
|
|
67
|
+
lensBrand?: LensBrand;
|
|
68
|
+
focalLength?: string;
|
|
69
|
+
focus?: FocusType;
|
|
70
|
+
aperture?: string;
|
|
71
|
+
bokeh?: BokehStyle;
|
|
72
|
+
focusDistance?: string;
|
|
73
|
+
iso?: number;
|
|
74
|
+
shutterSpeed?: string;
|
|
75
|
+
exposureCompensation?: string;
|
|
76
|
+
filmStock?: FilmStock;
|
|
77
|
+
filmFormat?: FilmFormat;
|
|
78
|
+
filter?: FilterType | FilterType[];
|
|
79
|
+
whiteBalance?: 'daylight' | 'cloudy' | 'tungsten' | 'fluorescent' | 'flash' | 'custom';
|
|
80
|
+
colorProfile?: string;
|
|
81
|
+
pictureProfile?: string;
|
|
82
|
+
}
|
|
83
|
+
interface ImageLighting {
|
|
84
|
+
type?: LightingType | LightingType[];
|
|
85
|
+
time?: TimeOfDay;
|
|
86
|
+
weather?: WeatherLighting;
|
|
87
|
+
direction?: 'front' | 'side' | 'back' | 'top' | 'bottom' | 'three-quarter';
|
|
88
|
+
intensity?: 'soft' | 'medium' | 'hard' | 'dramatic';
|
|
89
|
+
color?: string;
|
|
90
|
+
sources?: string[];
|
|
91
|
+
}
|
|
92
|
+
interface ImageComposition {
|
|
93
|
+
ruleOfThirds?: boolean;
|
|
94
|
+
goldenRatio?: boolean;
|
|
95
|
+
symmetry?: 'none' | 'horizontal' | 'vertical' | 'radial';
|
|
96
|
+
leadingLines?: boolean;
|
|
97
|
+
framing?: string;
|
|
98
|
+
negativeSpace?: boolean;
|
|
99
|
+
layers?: string[];
|
|
100
|
+
foreground?: string;
|
|
101
|
+
midground?: string;
|
|
102
|
+
background?: string;
|
|
103
|
+
}
|
|
104
|
+
interface ImageStyle {
|
|
105
|
+
medium?: ArtStyle | ArtStyle[];
|
|
106
|
+
artist?: string | string[];
|
|
107
|
+
era?: string;
|
|
108
|
+
influence?: string[];
|
|
109
|
+
quality?: string[];
|
|
110
|
+
render?: string;
|
|
111
|
+
}
|
|
112
|
+
interface ImageColor {
|
|
113
|
+
palette?: ColorPalette | ColorPalette[];
|
|
114
|
+
primary?: string[];
|
|
115
|
+
accent?: string[];
|
|
116
|
+
grade?: string;
|
|
117
|
+
temperature?: 'warm' | 'neutral' | 'cool';
|
|
118
|
+
saturation?: 'desaturated' | 'natural' | 'vibrant' | 'hyper-saturated';
|
|
119
|
+
contrast?: 'low' | 'medium' | 'high';
|
|
120
|
+
}
|
|
121
|
+
interface ImageEnvironment {
|
|
122
|
+
setting: string;
|
|
123
|
+
location?: string;
|
|
124
|
+
terrain?: string;
|
|
125
|
+
architecture?: string;
|
|
126
|
+
props?: string[];
|
|
127
|
+
atmosphere?: string;
|
|
128
|
+
season?: 'spring' | 'summer' | 'autumn' | 'winter';
|
|
129
|
+
era?: string;
|
|
130
|
+
}
|
|
131
|
+
interface ImageTechnical {
|
|
132
|
+
aspectRatio?: AspectRatio;
|
|
133
|
+
resolution?: string;
|
|
134
|
+
quality?: 'draft' | 'standard' | 'high' | 'ultra' | 'masterpiece';
|
|
135
|
+
detail?: 'low' | 'medium' | 'high' | 'extreme';
|
|
136
|
+
noise?: 'none' | 'subtle' | 'filmic' | 'grainy';
|
|
137
|
+
sharpness?: 'soft' | 'natural' | 'sharp' | 'crisp';
|
|
138
|
+
}
|
|
139
|
+
interface BuiltImagePrompt {
|
|
140
|
+
prompt: string;
|
|
141
|
+
structure: {
|
|
142
|
+
subject?: ImageSubject;
|
|
143
|
+
camera?: ImageCamera;
|
|
144
|
+
lighting?: ImageLighting;
|
|
145
|
+
composition?: ImageComposition;
|
|
146
|
+
style?: ImageStyle;
|
|
147
|
+
color?: ImageColor;
|
|
148
|
+
environment?: ImageEnvironment;
|
|
149
|
+
technical?: ImageTechnical;
|
|
150
|
+
mood?: Mood | Mood[];
|
|
151
|
+
negative?: string[];
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
declare class ImagePromptBuilder {
|
|
155
|
+
private _subject?;
|
|
156
|
+
private _camera?;
|
|
157
|
+
private _lighting?;
|
|
158
|
+
private _composition?;
|
|
159
|
+
private _style?;
|
|
160
|
+
private _color?;
|
|
161
|
+
private _environment?;
|
|
162
|
+
private _technical?;
|
|
163
|
+
private _mood?;
|
|
164
|
+
private _negative;
|
|
165
|
+
private _custom;
|
|
166
|
+
subject(main: string | ImageSubject): this;
|
|
167
|
+
subjectDetails(details: string[]): this;
|
|
168
|
+
expression(expression: string): this;
|
|
169
|
+
pose(pose: string): this;
|
|
170
|
+
action(action: string): this;
|
|
171
|
+
clothing(clothing: string): this;
|
|
172
|
+
accessories(accessories: string[]): this;
|
|
173
|
+
subjectCount(count: ImageSubject['count']): this;
|
|
174
|
+
camera(settings: ImageCamera): this;
|
|
175
|
+
angle(angle: CameraAngle): this;
|
|
176
|
+
shot(shot: ShotType): this;
|
|
177
|
+
lens(lens: LensType): this;
|
|
178
|
+
focus(focus: FocusType): this;
|
|
179
|
+
aperture(aperture: string): this;
|
|
180
|
+
filmStock(filmStock: FilmStock): this;
|
|
181
|
+
filmFormat(format: FilmFormat): this;
|
|
182
|
+
cameraBrand(brand: CameraBrand): this;
|
|
183
|
+
cameraModel(model: CameraModel): this;
|
|
184
|
+
sensor(sensor: SensorFormat): this;
|
|
185
|
+
lensModel(model: LensModel): this;
|
|
186
|
+
lensBrand(brand: LensBrand): this;
|
|
187
|
+
focalLength(length: string): this;
|
|
188
|
+
bokeh(style: BokehStyle): this;
|
|
189
|
+
filter(filter: FilterType | FilterType[]): this;
|
|
190
|
+
iso(iso: number): this;
|
|
191
|
+
shutterSpeed(speed: string): this;
|
|
192
|
+
whiteBalance(wb: ImageCamera['whiteBalance']): this;
|
|
193
|
+
colorProfile(profile: string): this;
|
|
194
|
+
lighting(settings: ImageLighting): this;
|
|
195
|
+
lightingType(type: LightingType | LightingType[]): this;
|
|
196
|
+
timeOfDay(time: TimeOfDay): this;
|
|
197
|
+
weather(weather: WeatherLighting): this;
|
|
198
|
+
lightDirection(direction: ImageLighting['direction']): this;
|
|
199
|
+
lightIntensity(intensity: ImageLighting['intensity']): this;
|
|
200
|
+
composition(settings: ImageComposition): this;
|
|
201
|
+
ruleOfThirds(): this;
|
|
202
|
+
goldenRatio(): this;
|
|
203
|
+
symmetry(type: ImageComposition['symmetry']): this;
|
|
204
|
+
foreground(fg: string): this;
|
|
205
|
+
midground(mg: string): this;
|
|
206
|
+
background(bg: string): this;
|
|
207
|
+
environment(setting: string | ImageEnvironment): this;
|
|
208
|
+
location(location: string): this;
|
|
209
|
+
props(props: string[]): this;
|
|
210
|
+
atmosphere(atmosphere: string): this;
|
|
211
|
+
season(season: ImageEnvironment['season']): this;
|
|
212
|
+
style(settings: ImageStyle): this;
|
|
213
|
+
medium(medium: ArtStyle | ArtStyle[]): this;
|
|
214
|
+
artist(artist: string | string[]): this;
|
|
215
|
+
influence(influences: string[]): this;
|
|
216
|
+
color(settings: ImageColor): this;
|
|
217
|
+
palette(palette: ColorPalette | ColorPalette[]): this;
|
|
218
|
+
primaryColors(colors: string[]): this;
|
|
219
|
+
accentColors(colors: string[]): this;
|
|
220
|
+
colorGrade(grade: string): this;
|
|
221
|
+
technical(settings: ImageTechnical): this;
|
|
222
|
+
aspectRatio(ratio: AspectRatio): this;
|
|
223
|
+
resolution(resolution: string): this;
|
|
224
|
+
quality(quality: ImageTechnical['quality']): this;
|
|
225
|
+
mood(mood: Mood | Mood[]): this;
|
|
226
|
+
negative(items: string[]): this;
|
|
227
|
+
custom(text: string): this;
|
|
228
|
+
private buildPromptText;
|
|
229
|
+
build(): BuiltImagePrompt;
|
|
230
|
+
toString(): string;
|
|
231
|
+
toJSON(): string;
|
|
232
|
+
toYAML(): string;
|
|
233
|
+
toMarkdown(): string;
|
|
234
|
+
format(fmt: OutputFormat): string;
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Create a new image prompt builder
|
|
238
|
+
*/
|
|
239
|
+
declare function image(): ImagePromptBuilder;
|
|
240
|
+
|
|
241
|
+
/**
|
|
242
|
+
* Video Prompt Builder - Comprehensive video generation prompt builder
|
|
243
|
+
*
|
|
244
|
+
* Based on OpenAI Sora, Runway, and other video generation best practices.
|
|
245
|
+
*
|
|
246
|
+
* @example
|
|
247
|
+
* ```ts
|
|
248
|
+
* import { video } from 'prompts.chat/builder';
|
|
249
|
+
*
|
|
250
|
+
* const prompt = video()
|
|
251
|
+
* .scene("A samurai walks through a bamboo forest")
|
|
252
|
+
* .camera({ movement: "tracking", angle: "low" })
|
|
253
|
+
* .lighting({ time: "golden-hour", type: "natural" })
|
|
254
|
+
* .duration(5)
|
|
255
|
+
* .build();
|
|
256
|
+
* ```
|
|
257
|
+
*/
|
|
258
|
+
|
|
259
|
+
interface VideoScene {
|
|
260
|
+
description: string;
|
|
261
|
+
setting?: string;
|
|
262
|
+
timeOfDay?: TimeOfDay;
|
|
263
|
+
weather?: WeatherLighting;
|
|
264
|
+
atmosphere?: string;
|
|
265
|
+
}
|
|
266
|
+
interface VideoSubject {
|
|
267
|
+
main: string;
|
|
268
|
+
appearance?: string;
|
|
269
|
+
clothing?: string;
|
|
270
|
+
age?: string;
|
|
271
|
+
gender?: string;
|
|
272
|
+
count?: number | 'single' | 'couple' | 'group' | 'crowd';
|
|
273
|
+
}
|
|
274
|
+
interface VideoCamera {
|
|
275
|
+
shot?: ShotType;
|
|
276
|
+
angle?: CameraAngle;
|
|
277
|
+
brand?: CameraBrand;
|
|
278
|
+
model?: CameraModel;
|
|
279
|
+
sensor?: SensorFormat;
|
|
280
|
+
lens?: LensType;
|
|
281
|
+
lensModel?: LensModel;
|
|
282
|
+
lensBrand?: LensBrand;
|
|
283
|
+
focalLength?: string;
|
|
284
|
+
anamorphic?: boolean;
|
|
285
|
+
anamorphicRatio?: '1.33x' | '1.5x' | '1.8x' | '2x';
|
|
286
|
+
focus?: 'shallow' | 'deep' | 'rack-focus' | 'pull-focus' | 'split-diopter';
|
|
287
|
+
aperture?: string;
|
|
288
|
+
bokeh?: BokehStyle;
|
|
289
|
+
movement?: CameraMovement;
|
|
290
|
+
movementSpeed?: 'slow' | 'medium' | 'fast';
|
|
291
|
+
movementDirection?: 'left' | 'right' | 'forward' | 'backward' | 'up' | 'down' | 'arc-left' | 'arc-right';
|
|
292
|
+
rig?: CameraRig;
|
|
293
|
+
gimbal?: GimbalModel;
|
|
294
|
+
platform?: 'handheld' | 'steadicam' | 'tripod' | 'drone' | 'crane' | 'gimbal' | 'slider' | 'dolly' | 'technocrane' | 'russian-arm' | 'fpv-drone';
|
|
295
|
+
shutterAngle?: number;
|
|
296
|
+
frameRate?: 24 | 25 | 30 | 48 | 60 | 120 | 240;
|
|
297
|
+
slowMotion?: boolean;
|
|
298
|
+
filter?: FilterType | FilterType[];
|
|
299
|
+
filmStock?: FilmStock;
|
|
300
|
+
filmGrain?: 'none' | 'subtle' | 'moderate' | 'heavy';
|
|
301
|
+
halation?: boolean;
|
|
302
|
+
}
|
|
303
|
+
interface VideoLighting {
|
|
304
|
+
type?: LightingType | LightingType[];
|
|
305
|
+
time?: TimeOfDay;
|
|
306
|
+
weather?: WeatherLighting;
|
|
307
|
+
direction?: 'front' | 'side' | 'back' | 'top' | 'three-quarter';
|
|
308
|
+
intensity?: 'soft' | 'medium' | 'hard' | 'dramatic';
|
|
309
|
+
sources?: string[];
|
|
310
|
+
color?: string;
|
|
311
|
+
}
|
|
312
|
+
interface VideoAction {
|
|
313
|
+
beat: number;
|
|
314
|
+
action: string;
|
|
315
|
+
duration?: number;
|
|
316
|
+
timing?: 'start' | 'middle' | 'end';
|
|
317
|
+
}
|
|
318
|
+
interface VideoMotion {
|
|
319
|
+
subject?: string;
|
|
320
|
+
type?: 'walk' | 'run' | 'gesture' | 'turn' | 'look' | 'reach' | 'sit' | 'stand' | 'custom';
|
|
321
|
+
direction?: 'left' | 'right' | 'forward' | 'backward' | 'up' | 'down';
|
|
322
|
+
speed?: 'slow' | 'normal' | 'fast';
|
|
323
|
+
beats?: string[];
|
|
324
|
+
}
|
|
325
|
+
interface VideoStyle {
|
|
326
|
+
format?: string;
|
|
327
|
+
era?: string;
|
|
328
|
+
filmStock?: string;
|
|
329
|
+
look?: ArtStyle | ArtStyle[];
|
|
330
|
+
grade?: string;
|
|
331
|
+
reference?: string[];
|
|
332
|
+
}
|
|
333
|
+
interface VideoColor {
|
|
334
|
+
palette?: ColorPalette | ColorPalette[];
|
|
335
|
+
anchors?: string[];
|
|
336
|
+
temperature?: 'warm' | 'neutral' | 'cool';
|
|
337
|
+
grade?: string;
|
|
338
|
+
}
|
|
339
|
+
interface VideoAudio {
|
|
340
|
+
diegetic?: string[];
|
|
341
|
+
ambient?: string;
|
|
342
|
+
dialogue?: string;
|
|
343
|
+
music?: string;
|
|
344
|
+
soundEffects?: string[];
|
|
345
|
+
mix?: string;
|
|
346
|
+
}
|
|
347
|
+
interface VideoTechnical {
|
|
348
|
+
duration?: number;
|
|
349
|
+
resolution?: '480p' | '720p' | '1080p' | '4K';
|
|
350
|
+
fps?: 24 | 30 | 60;
|
|
351
|
+
aspectRatio?: '16:9' | '9:16' | '1:1' | '4:3' | '21:9';
|
|
352
|
+
shutterAngle?: number;
|
|
353
|
+
}
|
|
354
|
+
interface VideoShot {
|
|
355
|
+
timestamp?: string;
|
|
356
|
+
name?: string;
|
|
357
|
+
camera: VideoCamera;
|
|
358
|
+
action?: string;
|
|
359
|
+
purpose?: string;
|
|
360
|
+
}
|
|
361
|
+
interface BuiltVideoPrompt {
|
|
362
|
+
prompt: string;
|
|
363
|
+
structure: {
|
|
364
|
+
scene?: VideoScene;
|
|
365
|
+
subject?: VideoSubject;
|
|
366
|
+
camera?: VideoCamera;
|
|
367
|
+
lighting?: VideoLighting;
|
|
368
|
+
actions?: VideoAction[];
|
|
369
|
+
motion?: VideoMotion;
|
|
370
|
+
style?: VideoStyle;
|
|
371
|
+
color?: VideoColor;
|
|
372
|
+
audio?: VideoAudio;
|
|
373
|
+
technical?: VideoTechnical;
|
|
374
|
+
shots?: VideoShot[];
|
|
375
|
+
mood?: Mood | Mood[];
|
|
376
|
+
pacing?: VideoPacing;
|
|
377
|
+
transitions?: VideoTransition[];
|
|
378
|
+
};
|
|
379
|
+
}
|
|
380
|
+
declare class VideoPromptBuilder {
|
|
381
|
+
private _scene?;
|
|
382
|
+
private _subject?;
|
|
383
|
+
private _camera?;
|
|
384
|
+
private _lighting?;
|
|
385
|
+
private _actions;
|
|
386
|
+
private _motion?;
|
|
387
|
+
private _style?;
|
|
388
|
+
private _color?;
|
|
389
|
+
private _audio?;
|
|
390
|
+
private _technical?;
|
|
391
|
+
private _shots;
|
|
392
|
+
private _mood?;
|
|
393
|
+
private _pacing?;
|
|
394
|
+
private _transitions;
|
|
395
|
+
private _custom;
|
|
396
|
+
scene(description: string | VideoScene): this;
|
|
397
|
+
setting(setting: string): this;
|
|
398
|
+
subject(main: string | VideoSubject): this;
|
|
399
|
+
appearance(appearance: string): this;
|
|
400
|
+
clothing(clothing: string): this;
|
|
401
|
+
camera(settings: VideoCamera): this;
|
|
402
|
+
shot(shot: ShotType): this;
|
|
403
|
+
angle(angle: CameraAngle): this;
|
|
404
|
+
movement(movement: CameraMovement): this;
|
|
405
|
+
lens(lens: LensType): this;
|
|
406
|
+
platform(platform: VideoCamera['platform']): this;
|
|
407
|
+
cameraSpeed(speed: VideoCamera['movementSpeed']): this;
|
|
408
|
+
movementDirection(direction: VideoCamera['movementDirection']): this;
|
|
409
|
+
rig(rig: CameraRig): this;
|
|
410
|
+
gimbal(gimbal: GimbalModel): this;
|
|
411
|
+
cameraBrand(brand: CameraBrand): this;
|
|
412
|
+
cameraModel(model: CameraModel): this;
|
|
413
|
+
sensor(sensor: SensorFormat): this;
|
|
414
|
+
lensModel(model: LensModel): this;
|
|
415
|
+
lensBrand(brand: LensBrand): this;
|
|
416
|
+
focalLength(length: string): this;
|
|
417
|
+
anamorphic(ratio?: VideoCamera['anamorphicRatio']): this;
|
|
418
|
+
aperture(aperture: string): this;
|
|
419
|
+
frameRate(fps: VideoCamera['frameRate']): this;
|
|
420
|
+
slowMotion(enabled?: boolean): this;
|
|
421
|
+
shutterAngle(angle: number): this;
|
|
422
|
+
filter(filter: FilterType | FilterType[]): this;
|
|
423
|
+
filmStock(stock: FilmStock): this;
|
|
424
|
+
filmGrain(grain: VideoCamera['filmGrain']): this;
|
|
425
|
+
halation(enabled?: boolean): this;
|
|
426
|
+
lighting(settings: VideoLighting): this;
|
|
427
|
+
lightingType(type: LightingType | LightingType[]): this;
|
|
428
|
+
timeOfDay(time: TimeOfDay): this;
|
|
429
|
+
weather(weather: WeatherLighting): this;
|
|
430
|
+
action(action: string, options?: Partial<Omit<VideoAction, 'action'>>): this;
|
|
431
|
+
actions(actions: string[]): this;
|
|
432
|
+
motion(settings: VideoMotion): this;
|
|
433
|
+
motionBeats(beats: string[]): this;
|
|
434
|
+
style(settings: VideoStyle): this;
|
|
435
|
+
format(format: string): this;
|
|
436
|
+
era(era: string): this;
|
|
437
|
+
styleFilmStock(stock: string): this;
|
|
438
|
+
look(look: ArtStyle | ArtStyle[]): this;
|
|
439
|
+
reference(references: string[]): this;
|
|
440
|
+
color(settings: VideoColor): this;
|
|
441
|
+
palette(palette: ColorPalette | ColorPalette[]): this;
|
|
442
|
+
colorAnchors(anchors: string[]): this;
|
|
443
|
+
colorGrade(grade: string): this;
|
|
444
|
+
audio(settings: VideoAudio): this;
|
|
445
|
+
dialogue(dialogue: string): this;
|
|
446
|
+
ambient(ambient: string): this;
|
|
447
|
+
diegetic(sounds: string[]): this;
|
|
448
|
+
soundEffects(effects: string[]): this;
|
|
449
|
+
music(music: string): this;
|
|
450
|
+
technical(settings: VideoTechnical): this;
|
|
451
|
+
duration(seconds: number): this;
|
|
452
|
+
resolution(res: VideoTechnical['resolution']): this;
|
|
453
|
+
fps(fps: VideoTechnical['fps']): this;
|
|
454
|
+
aspectRatio(ratio: VideoTechnical['aspectRatio']): this;
|
|
455
|
+
addShot(shot: VideoShot): this;
|
|
456
|
+
shotList(shots: VideoShot[]): this;
|
|
457
|
+
mood(mood: Mood | Mood[]): this;
|
|
458
|
+
pacing(pacing: VideoPacing): this;
|
|
459
|
+
transition(transition: VideoTransition): this;
|
|
460
|
+
transitions(transitions: VideoTransition[]): this;
|
|
461
|
+
custom(text: string): this;
|
|
462
|
+
private buildPromptText;
|
|
463
|
+
build(): BuiltVideoPrompt;
|
|
464
|
+
toString(): string;
|
|
465
|
+
toJSON(): string;
|
|
466
|
+
toYAML(): string;
|
|
467
|
+
toMarkdown(): string;
|
|
468
|
+
outputFormat(fmt: OutputFormat): string;
|
|
469
|
+
}
|
|
470
|
+
/**
|
|
471
|
+
* Create a new video prompt builder
|
|
472
|
+
*/
|
|
473
|
+
declare function video(): VideoPromptBuilder;
|
|
474
|
+
|
|
475
|
+
/**
|
|
476
|
+
* Audio/Music Prompt Builder - Comprehensive music generation prompt builder
|
|
477
|
+
*
|
|
478
|
+
* Based on Suno, Udio, and other music generation best practices.
|
|
479
|
+
*
|
|
480
|
+
* @example
|
|
481
|
+
* ```ts
|
|
482
|
+
* import { audio } from 'prompts.chat/builder';
|
|
483
|
+
*
|
|
484
|
+
* const prompt = audio()
|
|
485
|
+
* .genre("synthwave")
|
|
486
|
+
* .mood("nostalgic", "dreamy")
|
|
487
|
+
* .tempo(110)
|
|
488
|
+
* .instruments(["synthesizer", "drums", "bass"])
|
|
489
|
+
* .structure({ intro: 8, verse: 16, chorus: 16 })
|
|
490
|
+
* .build();
|
|
491
|
+
* ```
|
|
492
|
+
*/
|
|
493
|
+
|
|
494
|
+
type MusicGenre = 'pop' | 'rock' | 'jazz' | 'classical' | 'electronic' | 'hip-hop' | 'r&b' | 'country' | 'folk' | 'blues' | 'metal' | 'punk' | 'indie' | 'alternative' | 'ambient' | 'lo-fi' | 'synthwave' | 'orchestral' | 'cinematic' | 'world' | 'latin' | 'reggae' | 'soul' | 'funk' | 'disco' | 'house' | 'techno' | 'edm' | 'trap' | 'drill' | 'k-pop' | 'j-pop' | 'bossa-nova' | 'gospel' | 'grunge' | 'shoegaze' | 'post-rock' | 'prog-rock' | 'psychedelic' | 'chillwave' | 'vaporwave' | 'drum-and-bass' | 'dubstep' | 'trance' | 'hardcore';
|
|
495
|
+
type Instrument = 'piano' | 'guitar' | 'acoustic-guitar' | 'electric-guitar' | 'bass' | 'drums' | 'violin' | 'cello' | 'viola' | 'flute' | 'saxophone' | 'trumpet' | 'trombone' | 'synthesizer' | 'organ' | 'harp' | 'percussion' | 'strings' | 'brass' | 'woodwinds' | 'choir' | 'vocals' | 'beatbox' | 'turntables' | 'harmonica' | 'banjo' | 'ukulele' | 'mandolin' | 'accordion' | 'marimba' | 'vibraphone' | 'xylophone' | 'timpani' | 'congas' | 'bongos' | 'djembe' | 'tabla' | 'sitar' | 'erhu' | 'koto' | '808' | '909' | 'moog' | 'rhodes' | 'wurlitzer' | 'mellotron' | 'theremin';
|
|
496
|
+
type VocalStyle = 'male' | 'female' | 'duet' | 'choir' | 'a-cappella' | 'spoken-word' | 'rap' | 'falsetto' | 'belting' | 'whisper' | 'growl' | 'melodic' | 'harmonized' | 'auto-tuned' | 'operatic' | 'soul' | 'breathy' | 'nasal' | 'raspy' | 'clear';
|
|
497
|
+
type VocalLanguage = 'english' | 'spanish' | 'french' | 'german' | 'italian' | 'portuguese' | 'japanese' | 'korean' | 'chinese' | 'arabic' | 'hindi' | 'russian' | 'turkish' | 'instrumental';
|
|
498
|
+
type TempoMarking = 'largo' | 'adagio' | 'andante' | 'moderato' | 'allegro' | 'vivace' | 'presto';
|
|
499
|
+
type TimeSignature = '4/4' | '3/4' | '6/8' | '2/4' | '5/4' | '7/8' | '12/8';
|
|
500
|
+
type MusicalKey = 'C' | 'C#' | 'Db' | 'D' | 'D#' | 'Eb' | 'E' | 'F' | 'F#' | 'Gb' | 'G' | 'G#' | 'Ab' | 'A' | 'A#' | 'Bb' | 'B' | 'Cm' | 'C#m' | 'Dm' | 'D#m' | 'Ebm' | 'Em' | 'Fm' | 'F#m' | 'Gm' | 'G#m' | 'Am' | 'A#m' | 'Bbm' | 'Bm';
|
|
501
|
+
type SongSection = 'intro' | 'verse' | 'pre-chorus' | 'chorus' | 'bridge' | 'breakdown' | 'drop' | 'build-up' | 'outro' | 'solo' | 'interlude' | 'hook';
|
|
502
|
+
type ProductionStyle = 'lo-fi' | 'hi-fi' | 'vintage' | 'modern' | 'polished' | 'raw' | 'organic' | 'synthetic' | 'acoustic' | 'electric' | 'hybrid' | 'minimalist' | 'maximalist' | 'layered' | 'sparse' | 'dense' | 'atmospheric' | 'punchy' | 'warm' | 'bright';
|
|
503
|
+
type Era = '1950s' | '1960s' | '1970s' | '1980s' | '1990s' | '2000s' | '2010s' | '2020s' | 'retro' | 'vintage' | 'classic' | 'modern' | 'futuristic';
|
|
504
|
+
interface AudioGenre {
|
|
505
|
+
primary: MusicGenre;
|
|
506
|
+
secondary?: MusicGenre[];
|
|
507
|
+
subgenre?: string;
|
|
508
|
+
fusion?: string[];
|
|
509
|
+
}
|
|
510
|
+
interface AudioMood {
|
|
511
|
+
primary: Mood | string;
|
|
512
|
+
secondary?: (Mood | string)[];
|
|
513
|
+
energy?: 'low' | 'medium' | 'high' | 'building' | 'fluctuating';
|
|
514
|
+
emotion?: string;
|
|
515
|
+
}
|
|
516
|
+
interface AudioTempo {
|
|
517
|
+
bpm?: number;
|
|
518
|
+
marking?: TempoMarking;
|
|
519
|
+
feel?: 'steady' | 'swung' | 'shuffled' | 'syncopated' | 'rubato' | 'driving';
|
|
520
|
+
variation?: boolean;
|
|
521
|
+
}
|
|
522
|
+
interface AudioVocals {
|
|
523
|
+
style?: VocalStyle | VocalStyle[];
|
|
524
|
+
language?: VocalLanguage;
|
|
525
|
+
lyrics?: string;
|
|
526
|
+
theme?: string;
|
|
527
|
+
delivery?: string;
|
|
528
|
+
harmonies?: boolean;
|
|
529
|
+
adlibs?: boolean;
|
|
530
|
+
}
|
|
531
|
+
interface AudioInstrumentation {
|
|
532
|
+
lead?: Instrument | Instrument[];
|
|
533
|
+
rhythm?: Instrument | Instrument[];
|
|
534
|
+
bass?: Instrument;
|
|
535
|
+
percussion?: Instrument | Instrument[];
|
|
536
|
+
pads?: Instrument | Instrument[];
|
|
537
|
+
effects?: string[];
|
|
538
|
+
featured?: Instrument;
|
|
539
|
+
}
|
|
540
|
+
interface AudioStructure {
|
|
541
|
+
sections?: Array<{
|
|
542
|
+
type: SongSection;
|
|
543
|
+
bars?: number;
|
|
544
|
+
description?: string;
|
|
545
|
+
}>;
|
|
546
|
+
intro?: number;
|
|
547
|
+
verse?: number;
|
|
548
|
+
chorus?: number;
|
|
549
|
+
bridge?: number;
|
|
550
|
+
outro?: number;
|
|
551
|
+
form?: string;
|
|
552
|
+
duration?: number;
|
|
553
|
+
}
|
|
554
|
+
interface AudioProduction {
|
|
555
|
+
style?: ProductionStyle | ProductionStyle[];
|
|
556
|
+
era?: Era;
|
|
557
|
+
reference?: string[];
|
|
558
|
+
mix?: string;
|
|
559
|
+
mastering?: string;
|
|
560
|
+
effects?: string[];
|
|
561
|
+
texture?: string;
|
|
562
|
+
}
|
|
563
|
+
interface AudioTechnical {
|
|
564
|
+
key?: MusicalKey;
|
|
565
|
+
timeSignature?: TimeSignature;
|
|
566
|
+
duration?: number;
|
|
567
|
+
format?: 'song' | 'instrumental' | 'jingle' | 'loop' | 'soundtrack';
|
|
568
|
+
}
|
|
569
|
+
interface BuiltAudioPrompt {
|
|
570
|
+
prompt: string;
|
|
571
|
+
stylePrompt: string;
|
|
572
|
+
lyricsPrompt?: string;
|
|
573
|
+
structure: {
|
|
574
|
+
genre?: AudioGenre;
|
|
575
|
+
mood?: AudioMood;
|
|
576
|
+
tempo?: AudioTempo;
|
|
577
|
+
vocals?: AudioVocals;
|
|
578
|
+
instrumentation?: AudioInstrumentation;
|
|
579
|
+
structure?: AudioStructure;
|
|
580
|
+
production?: AudioProduction;
|
|
581
|
+
technical?: AudioTechnical;
|
|
582
|
+
tags?: string[];
|
|
583
|
+
};
|
|
584
|
+
}
|
|
585
|
+
declare class AudioPromptBuilder {
|
|
586
|
+
private _genre?;
|
|
587
|
+
private _mood?;
|
|
588
|
+
private _tempo?;
|
|
589
|
+
private _vocals?;
|
|
590
|
+
private _instrumentation?;
|
|
591
|
+
private _structure?;
|
|
592
|
+
private _production?;
|
|
593
|
+
private _technical?;
|
|
594
|
+
private _tags;
|
|
595
|
+
private _custom;
|
|
596
|
+
genre(primary: MusicGenre | AudioGenre): this;
|
|
597
|
+
subgenre(subgenre: string): this;
|
|
598
|
+
fusion(genres: MusicGenre[]): this;
|
|
599
|
+
mood(primary: Mood | string, ...secondary: (Mood | string)[]): this;
|
|
600
|
+
energy(level: AudioMood['energy']): this;
|
|
601
|
+
emotion(emotion: string): this;
|
|
602
|
+
tempo(bpmOrSettings: number | AudioTempo): this;
|
|
603
|
+
bpm(bpm: number): this;
|
|
604
|
+
tempoMarking(marking: TempoMarking): this;
|
|
605
|
+
tempoFeel(feel: AudioTempo['feel']): this;
|
|
606
|
+
vocals(settings: AudioVocals): this;
|
|
607
|
+
vocalStyle(style: VocalStyle | VocalStyle[]): this;
|
|
608
|
+
language(language: VocalLanguage): this;
|
|
609
|
+
lyrics(lyrics: string): this;
|
|
610
|
+
lyricsTheme(theme: string): this;
|
|
611
|
+
delivery(delivery: string): this;
|
|
612
|
+
instrumental(): this;
|
|
613
|
+
instruments(instruments: Instrument[]): this;
|
|
614
|
+
instrumentation(settings: AudioInstrumentation): this;
|
|
615
|
+
leadInstrument(instrument: Instrument | Instrument[]): this;
|
|
616
|
+
rhythmSection(instruments: Instrument[]): this;
|
|
617
|
+
bassInstrument(instrument: Instrument): this;
|
|
618
|
+
percussion(instruments: Instrument | Instrument[]): this;
|
|
619
|
+
pads(instruments: Instrument | Instrument[]): this;
|
|
620
|
+
featuredInstrument(instrument: Instrument): this;
|
|
621
|
+
structure(settings: AudioStructure | {
|
|
622
|
+
[key in SongSection]?: number;
|
|
623
|
+
}): this;
|
|
624
|
+
section(type: SongSection, bars?: number, description?: string): this;
|
|
625
|
+
form(form: string): this;
|
|
626
|
+
duration(seconds: number): this;
|
|
627
|
+
production(settings: AudioProduction): this;
|
|
628
|
+
productionStyle(style: ProductionStyle | ProductionStyle[]): this;
|
|
629
|
+
era(era: Era): this;
|
|
630
|
+
reference(artists: string[]): this;
|
|
631
|
+
texture(texture: string): this;
|
|
632
|
+
effects(effects: string[]): this;
|
|
633
|
+
technical(settings: AudioTechnical): this;
|
|
634
|
+
key(key: MusicalKey): this;
|
|
635
|
+
timeSignature(sig: TimeSignature): this;
|
|
636
|
+
formatType(format: AudioTechnical['format']): this;
|
|
637
|
+
tag(tag: string): this;
|
|
638
|
+
tags(tags: string[]): this;
|
|
639
|
+
custom(text: string): this;
|
|
640
|
+
private buildStylePrompt;
|
|
641
|
+
private buildLyricsPrompt;
|
|
642
|
+
private buildFullPrompt;
|
|
643
|
+
build(): BuiltAudioPrompt;
|
|
644
|
+
toString(): string;
|
|
645
|
+
toStyleString(): string;
|
|
646
|
+
toJSON(): string;
|
|
647
|
+
toYAML(): string;
|
|
648
|
+
toMarkdown(): string;
|
|
649
|
+
outputFormat(fmt: OutputFormat): string;
|
|
650
|
+
}
|
|
651
|
+
/**
|
|
652
|
+
* Create a new audio/music prompt builder
|
|
653
|
+
*/
|
|
654
|
+
declare function audio(): AudioPromptBuilder;
|
|
655
|
+
|
|
656
|
+
/**
|
|
657
|
+
* Chat Prompt Builder - Model-Agnostic Conversation Prompt Builder
|
|
658
|
+
*
|
|
659
|
+
* Build structured prompts for any chat/conversation model.
|
|
660
|
+
* Focus on prompt engineering, not model-specific features.
|
|
661
|
+
*
|
|
662
|
+
* @example
|
|
663
|
+
* ```ts
|
|
664
|
+
* import { chat } from 'prompts.chat/builder';
|
|
665
|
+
*
|
|
666
|
+
* const prompt = chat()
|
|
667
|
+
* .role("helpful coding assistant")
|
|
668
|
+
* .context("Building a React application")
|
|
669
|
+
* .task("Explain async/await in JavaScript")
|
|
670
|
+
* .stepByStep()
|
|
671
|
+
* .detailed()
|
|
672
|
+
* .build();
|
|
673
|
+
* ```
|
|
674
|
+
*/
|
|
675
|
+
type MessageRole = 'system' | 'user' | 'assistant';
|
|
676
|
+
interface ChatMessage {
|
|
677
|
+
role: MessageRole;
|
|
678
|
+
content: string;
|
|
679
|
+
name?: string;
|
|
680
|
+
}
|
|
681
|
+
type ResponseFormatType = 'text' | 'json' | 'markdown' | 'code' | 'table';
|
|
682
|
+
interface JsonSchema {
|
|
683
|
+
name: string;
|
|
684
|
+
description?: string;
|
|
685
|
+
schema: Record<string, unknown>;
|
|
686
|
+
}
|
|
687
|
+
interface ResponseFormat {
|
|
688
|
+
type: ResponseFormatType;
|
|
689
|
+
jsonSchema?: JsonSchema;
|
|
690
|
+
language?: string;
|
|
691
|
+
}
|
|
692
|
+
type PersonaTone = 'professional' | 'casual' | 'formal' | 'friendly' | 'academic' | 'technical' | 'creative' | 'empathetic' | 'authoritative' | 'playful' | 'concise' | 'detailed' | 'socratic' | 'coaching' | 'analytical' | 'encouraging' | 'neutral' | 'humorous' | 'serious';
|
|
693
|
+
type PersonaExpertise = 'general' | 'coding' | 'writing' | 'analysis' | 'research' | 'teaching' | 'counseling' | 'creative' | 'legal' | 'medical' | 'financial' | 'scientific' | 'engineering' | 'design' | 'marketing' | 'business' | 'philosophy' | 'history' | 'languages' | 'mathematics';
|
|
694
|
+
type ReasoningStyle = 'step-by-step' | 'chain-of-thought' | 'tree-of-thought' | 'direct' | 'analytical' | 'comparative' | 'deductive' | 'inductive' | 'first-principles' | 'analogical' | 'devil-advocate';
|
|
695
|
+
type OutputLength = 'brief' | 'moderate' | 'detailed' | 'comprehensive' | 'exhaustive';
|
|
696
|
+
type OutputStyle = 'prose' | 'bullet-points' | 'numbered-list' | 'table' | 'code' | 'mixed' | 'qa' | 'dialogue';
|
|
697
|
+
interface ChatPersona {
|
|
698
|
+
name?: string;
|
|
699
|
+
role?: string;
|
|
700
|
+
tone?: PersonaTone | PersonaTone[];
|
|
701
|
+
expertise?: PersonaExpertise | PersonaExpertise[];
|
|
702
|
+
personality?: string[];
|
|
703
|
+
background?: string;
|
|
704
|
+
language?: string;
|
|
705
|
+
verbosity?: OutputLength;
|
|
706
|
+
}
|
|
707
|
+
interface ChatContext {
|
|
708
|
+
background?: string;
|
|
709
|
+
domain?: string;
|
|
710
|
+
audience?: string;
|
|
711
|
+
purpose?: string;
|
|
712
|
+
constraints?: string[];
|
|
713
|
+
assumptions?: string[];
|
|
714
|
+
knowledge?: string[];
|
|
715
|
+
}
|
|
716
|
+
interface ChatTask {
|
|
717
|
+
instruction: string;
|
|
718
|
+
steps?: string[];
|
|
719
|
+
deliverables?: string[];
|
|
720
|
+
criteria?: string[];
|
|
721
|
+
antiPatterns?: string[];
|
|
722
|
+
priority?: 'accuracy' | 'speed' | 'creativity' | 'thoroughness';
|
|
723
|
+
}
|
|
724
|
+
interface ChatOutput {
|
|
725
|
+
format?: ResponseFormat;
|
|
726
|
+
length?: OutputLength;
|
|
727
|
+
style?: OutputStyle;
|
|
728
|
+
language?: string;
|
|
729
|
+
includeExplanation?: boolean;
|
|
730
|
+
includeExamples?: boolean;
|
|
731
|
+
includeSources?: boolean;
|
|
732
|
+
includeConfidence?: boolean;
|
|
733
|
+
}
|
|
734
|
+
interface ChatReasoning {
|
|
735
|
+
style?: ReasoningStyle;
|
|
736
|
+
showWork?: boolean;
|
|
737
|
+
verifyAnswer?: boolean;
|
|
738
|
+
considerAlternatives?: boolean;
|
|
739
|
+
explainAssumptions?: boolean;
|
|
740
|
+
}
|
|
741
|
+
interface ChatExample {
|
|
742
|
+
input: string;
|
|
743
|
+
output: string;
|
|
744
|
+
explanation?: string;
|
|
745
|
+
}
|
|
746
|
+
interface ChatMemory {
|
|
747
|
+
summary?: string;
|
|
748
|
+
facts?: string[];
|
|
749
|
+
preferences?: string[];
|
|
750
|
+
history?: ChatMessage[];
|
|
751
|
+
}
|
|
752
|
+
interface BuiltChatPrompt {
|
|
753
|
+
messages: ChatMessage[];
|
|
754
|
+
systemPrompt: string;
|
|
755
|
+
userPrompt?: string;
|
|
756
|
+
metadata: {
|
|
757
|
+
persona?: ChatPersona;
|
|
758
|
+
context?: ChatContext;
|
|
759
|
+
task?: ChatTask;
|
|
760
|
+
output?: ChatOutput;
|
|
761
|
+
reasoning?: ChatReasoning;
|
|
762
|
+
examples?: ChatExample[];
|
|
763
|
+
};
|
|
764
|
+
}
|
|
765
|
+
declare class ChatPromptBuilder {
|
|
766
|
+
private _messages;
|
|
767
|
+
private _persona?;
|
|
768
|
+
private _context?;
|
|
769
|
+
private _task?;
|
|
770
|
+
private _output?;
|
|
771
|
+
private _reasoning?;
|
|
772
|
+
private _examples;
|
|
773
|
+
private _memory?;
|
|
774
|
+
private _customSystemParts;
|
|
775
|
+
system(content: string): this;
|
|
776
|
+
user(content: string, name?: string): this;
|
|
777
|
+
assistant(content: string): this;
|
|
778
|
+
message(role: MessageRole, content: string, name?: string): this;
|
|
779
|
+
messages(messages: ChatMessage[]): this;
|
|
780
|
+
conversation(turns: Array<{
|
|
781
|
+
user: string;
|
|
782
|
+
assistant?: string;
|
|
783
|
+
}>): this;
|
|
784
|
+
persona(settings: ChatPersona | string): this;
|
|
785
|
+
role(role: string): this;
|
|
786
|
+
tone(tone: PersonaTone | PersonaTone[]): this;
|
|
787
|
+
expertise(expertise: PersonaExpertise | PersonaExpertise[]): this;
|
|
788
|
+
personality(traits: string[]): this;
|
|
789
|
+
background(background: string): this;
|
|
790
|
+
speakAs(name: string): this;
|
|
791
|
+
responseLanguage(language: string): this;
|
|
792
|
+
context(settings: ChatContext | string): this;
|
|
793
|
+
domain(domain: string): this;
|
|
794
|
+
audience(audience: string): this;
|
|
795
|
+
purpose(purpose: string): this;
|
|
796
|
+
constraints(constraints: string[]): this;
|
|
797
|
+
constraint(constraint: string): this;
|
|
798
|
+
assumptions(assumptions: string[]): this;
|
|
799
|
+
knowledge(facts: string[]): this;
|
|
800
|
+
task(instruction: string | ChatTask): this;
|
|
801
|
+
instruction(instruction: string): this;
|
|
802
|
+
steps(steps: string[]): this;
|
|
803
|
+
deliverables(deliverables: string[]): this;
|
|
804
|
+
criteria(criteria: string[]): this;
|
|
805
|
+
avoid(antiPatterns: string[]): this;
|
|
806
|
+
priority(priority: ChatTask['priority']): this;
|
|
807
|
+
example(input: string, output: string, explanation?: string): this;
|
|
808
|
+
examples(examples: ChatExample[]): this;
|
|
809
|
+
fewShot(examples: Array<{
|
|
810
|
+
input: string;
|
|
811
|
+
output: string;
|
|
812
|
+
}>): this;
|
|
813
|
+
output(settings: ChatOutput): this;
|
|
814
|
+
outputFormat(format: ResponseFormatType): this;
|
|
815
|
+
json(schema?: JsonSchema): this;
|
|
816
|
+
jsonSchema(name: string, schema: Record<string, unknown>, description?: string): this;
|
|
817
|
+
markdown(): this;
|
|
818
|
+
code(language?: string): this;
|
|
819
|
+
table(): this;
|
|
820
|
+
length(length: OutputLength): this;
|
|
821
|
+
style(style: OutputStyle): this;
|
|
822
|
+
brief(): this;
|
|
823
|
+
moderate(): this;
|
|
824
|
+
detailed(): this;
|
|
825
|
+
comprehensive(): this;
|
|
826
|
+
exhaustive(): this;
|
|
827
|
+
withExamples(): this;
|
|
828
|
+
withExplanation(): this;
|
|
829
|
+
withSources(): this;
|
|
830
|
+
withConfidence(): this;
|
|
831
|
+
reasoning(settings: ChatReasoning): this;
|
|
832
|
+
reasoningStyle(style: ReasoningStyle): this;
|
|
833
|
+
stepByStep(): this;
|
|
834
|
+
chainOfThought(): this;
|
|
835
|
+
treeOfThought(): this;
|
|
836
|
+
firstPrinciples(): this;
|
|
837
|
+
devilsAdvocate(): this;
|
|
838
|
+
showWork(show?: boolean): this;
|
|
839
|
+
verifyAnswer(verify?: boolean): this;
|
|
840
|
+
considerAlternatives(consider?: boolean): this;
|
|
841
|
+
explainAssumptions(explain?: boolean): this;
|
|
842
|
+
memory(memory: ChatMemory): this;
|
|
843
|
+
remember(facts: string[]): this;
|
|
844
|
+
preferences(prefs: string[]): this;
|
|
845
|
+
history(messages: ChatMessage[]): this;
|
|
846
|
+
summarizeHistory(summary: string): this;
|
|
847
|
+
addSystemPart(part: string): this;
|
|
848
|
+
raw(content: string): this;
|
|
849
|
+
private buildSystemPrompt;
|
|
850
|
+
build(): BuiltChatPrompt;
|
|
851
|
+
toString(): string;
|
|
852
|
+
toSystemPrompt(): string;
|
|
853
|
+
toMessages(): ChatMessage[];
|
|
854
|
+
toJSON(): string;
|
|
855
|
+
toYAML(): string;
|
|
856
|
+
toMarkdown(): string;
|
|
857
|
+
}
|
|
858
|
+
/**
|
|
859
|
+
* Create a new chat prompt builder
|
|
860
|
+
*/
|
|
861
|
+
declare function chat(): ChatPromptBuilder;
|
|
862
|
+
declare const chatPresets: {
|
|
863
|
+
/**
|
|
864
|
+
* Code assistant preset
|
|
865
|
+
*/
|
|
866
|
+
coder: (language?: string) => ChatPromptBuilder;
|
|
867
|
+
/**
|
|
868
|
+
* Writing assistant preset
|
|
869
|
+
*/
|
|
870
|
+
writer: (style?: "creative" | "professional" | "academic") => ChatPromptBuilder;
|
|
871
|
+
/**
|
|
872
|
+
* Teacher/tutor preset
|
|
873
|
+
*/
|
|
874
|
+
tutor: (subject?: string) => ChatPromptBuilder;
|
|
875
|
+
/**
|
|
876
|
+
* Analyst preset
|
|
877
|
+
*/
|
|
878
|
+
analyst: () => ChatPromptBuilder;
|
|
879
|
+
/**
|
|
880
|
+
* Socratic dialogue preset
|
|
881
|
+
*/
|
|
882
|
+
socratic: () => ChatPromptBuilder;
|
|
883
|
+
/**
|
|
884
|
+
* Critic preset
|
|
885
|
+
*/
|
|
886
|
+
critic: () => ChatPromptBuilder;
|
|
887
|
+
/**
|
|
888
|
+
* Brainstormer preset
|
|
889
|
+
*/
|
|
890
|
+
brainstormer: () => ChatPromptBuilder;
|
|
891
|
+
/**
|
|
892
|
+
* JSON response preset
|
|
893
|
+
*/
|
|
894
|
+
jsonResponder: (schemaName: string, schema: Record<string, unknown>) => ChatPromptBuilder;
|
|
895
|
+
/**
|
|
896
|
+
* Summarizer preset
|
|
897
|
+
*/
|
|
898
|
+
summarizer: (length?: OutputLength) => ChatPromptBuilder;
|
|
899
|
+
/**
|
|
900
|
+
* Translator preset
|
|
901
|
+
*/
|
|
902
|
+
translator: (targetLanguage: string) => ChatPromptBuilder;
|
|
903
|
+
};
|
|
904
|
+
|
|
905
|
+
/**
|
|
906
|
+
* Prompt Builder - A fluent DSL for creating structured prompts
|
|
907
|
+
*
|
|
908
|
+
* @example
|
|
909
|
+
* ```ts
|
|
910
|
+
* import { builder } from 'prompts.chat';
|
|
911
|
+
*
|
|
912
|
+
* const prompt = builder()
|
|
913
|
+
* .role("Senior TypeScript Developer")
|
|
914
|
+
* .context("You are helping review code")
|
|
915
|
+
* .task("Analyze the following code for bugs")
|
|
916
|
+
* .constraints(["Be concise", "Focus on critical issues"])
|
|
917
|
+
* .output("JSON with { bugs: [], suggestions: [] }")
|
|
918
|
+
* .variable("code", { required: true })
|
|
919
|
+
* .build();
|
|
920
|
+
* ```
|
|
921
|
+
*/
|
|
922
|
+
interface PromptVariable {
|
|
923
|
+
name: string;
|
|
924
|
+
description?: string;
|
|
925
|
+
required?: boolean;
|
|
926
|
+
defaultValue?: string;
|
|
927
|
+
}
|
|
928
|
+
interface BuiltPrompt {
|
|
929
|
+
content: string;
|
|
930
|
+
variables: PromptVariable[];
|
|
931
|
+
metadata: {
|
|
932
|
+
role?: string;
|
|
933
|
+
context?: string;
|
|
934
|
+
task?: string;
|
|
935
|
+
constraints?: string[];
|
|
936
|
+
outputFormat?: string;
|
|
937
|
+
examples?: Array<{
|
|
938
|
+
input: string;
|
|
939
|
+
output: string;
|
|
940
|
+
}>;
|
|
941
|
+
};
|
|
942
|
+
}
|
|
943
|
+
declare class PromptBuilder {
|
|
944
|
+
private _role?;
|
|
945
|
+
private _context?;
|
|
946
|
+
private _task?;
|
|
947
|
+
private _constraints;
|
|
948
|
+
private _outputFormat?;
|
|
949
|
+
private _examples;
|
|
950
|
+
private _variables;
|
|
951
|
+
private _customSections;
|
|
952
|
+
private _rawContent?;
|
|
953
|
+
/**
|
|
954
|
+
* Set the role/persona for the AI
|
|
955
|
+
*/
|
|
956
|
+
role(role: string): this;
|
|
957
|
+
/**
|
|
958
|
+
* Alias for role()
|
|
959
|
+
*/
|
|
960
|
+
persona(persona: string): this;
|
|
961
|
+
/**
|
|
962
|
+
* Set the context/background information
|
|
963
|
+
*/
|
|
964
|
+
context(context: string): this;
|
|
965
|
+
/**
|
|
966
|
+
* Alias for context()
|
|
967
|
+
*/
|
|
968
|
+
background(background: string): this;
|
|
969
|
+
/**
|
|
970
|
+
* Set the main task/instruction
|
|
971
|
+
*/
|
|
972
|
+
task(task: string): this;
|
|
973
|
+
/**
|
|
974
|
+
* Alias for task()
|
|
975
|
+
*/
|
|
976
|
+
instruction(instruction: string): this;
|
|
977
|
+
/**
|
|
978
|
+
* Add constraints/rules the AI should follow
|
|
979
|
+
*/
|
|
980
|
+
constraints(constraints: string[]): this;
|
|
981
|
+
/**
|
|
982
|
+
* Add a single constraint
|
|
983
|
+
*/
|
|
984
|
+
constraint(constraint: string): this;
|
|
985
|
+
/**
|
|
986
|
+
* Alias for constraints()
|
|
987
|
+
*/
|
|
988
|
+
rules(rules: string[]): this;
|
|
989
|
+
/**
|
|
990
|
+
* Set the expected output format
|
|
991
|
+
*/
|
|
992
|
+
output(format: string): this;
|
|
993
|
+
/**
|
|
994
|
+
* Alias for output()
|
|
995
|
+
*/
|
|
996
|
+
format(format: string): this;
|
|
997
|
+
/**
|
|
998
|
+
* Add an example input/output pair
|
|
999
|
+
*/
|
|
1000
|
+
example(input: string, output: string): this;
|
|
1001
|
+
/**
|
|
1002
|
+
* Add multiple examples
|
|
1003
|
+
*/
|
|
1004
|
+
examples(examples: Array<{
|
|
1005
|
+
input: string;
|
|
1006
|
+
output: string;
|
|
1007
|
+
}>): this;
|
|
1008
|
+
/**
|
|
1009
|
+
* Define a variable placeholder
|
|
1010
|
+
*/
|
|
1011
|
+
variable(name: string, options?: {
|
|
1012
|
+
description?: string;
|
|
1013
|
+
required?: boolean;
|
|
1014
|
+
defaultValue?: string;
|
|
1015
|
+
}): this;
|
|
1016
|
+
/**
|
|
1017
|
+
* Add a custom section
|
|
1018
|
+
*/
|
|
1019
|
+
section(title: string, content: string): this;
|
|
1020
|
+
/**
|
|
1021
|
+
* Set raw content (bypasses structured building)
|
|
1022
|
+
*/
|
|
1023
|
+
raw(content: string): this;
|
|
1024
|
+
/**
|
|
1025
|
+
* Build the final prompt
|
|
1026
|
+
*/
|
|
1027
|
+
build(): BuiltPrompt;
|
|
1028
|
+
/**
|
|
1029
|
+
* Build and return only the content string
|
|
1030
|
+
*/
|
|
1031
|
+
toString(): string;
|
|
1032
|
+
}
|
|
1033
|
+
/**
|
|
1034
|
+
* Create a new prompt builder
|
|
1035
|
+
*/
|
|
1036
|
+
declare function builder(): PromptBuilder;
|
|
1037
|
+
/**
|
|
1038
|
+
* Create a prompt builder from an existing prompt
|
|
1039
|
+
*/
|
|
1040
|
+
declare function fromPrompt(content: string): PromptBuilder;
|
|
1041
|
+
|
|
1042
|
+
declare const templates: {
|
|
1043
|
+
/**
|
|
1044
|
+
* Create a code review prompt
|
|
1045
|
+
*/
|
|
1046
|
+
codeReview: (options?: {
|
|
1047
|
+
language?: string;
|
|
1048
|
+
focus?: string[];
|
|
1049
|
+
}) => PromptBuilder;
|
|
1050
|
+
/**
|
|
1051
|
+
* Create a translation prompt
|
|
1052
|
+
*/
|
|
1053
|
+
translation: (from: string, to: string) => PromptBuilder;
|
|
1054
|
+
/**
|
|
1055
|
+
* Create a summarization prompt
|
|
1056
|
+
*/
|
|
1057
|
+
summarize: (options?: {
|
|
1058
|
+
maxLength?: number;
|
|
1059
|
+
style?: "bullet" | "paragraph";
|
|
1060
|
+
}) => PromptBuilder;
|
|
1061
|
+
/**
|
|
1062
|
+
* Create a Q&A prompt
|
|
1063
|
+
*/
|
|
1064
|
+
qa: (context?: string) => PromptBuilder;
|
|
1065
|
+
};
|
|
1066
|
+
|
|
1067
|
+
export { type ArtStyle, type AspectRatio, type AudioGenre, type AudioInstrumentation, type AudioMood, type AudioProduction, AudioPromptBuilder, type AudioStructure, type AudioTechnical, type AudioTempo, type AudioVocals, type BuiltAudioPrompt, type BuiltChatPrompt, type BuiltImagePrompt, type BuiltPrompt, type BuiltVideoPrompt, type CameraAngle, type ChatContext, type ChatExample, type ChatMemory, type ChatMessage, type ChatOutput, type ChatPersona, ChatPromptBuilder, type ChatReasoning, type ChatTask, type ColorPalette, type ImageCamera, type ImageColor, type ImageComposition, type ImageEnvironment, type ImageLighting, ImagePromptBuilder, type ImageStyle, type ImageSubject, type ImageTechnical, type Instrument, type JsonSchema, type LensType, type LightingType, type MessageRole, type Mood, type MusicGenre, type MusicalKey, type OutputFormat, type OutputLength, type OutputStyle, type PersonaExpertise, type PersonaTone, type ProductionStyle, PromptBuilder, type PromptVariable, type ReasoningStyle, type ResponseFormat, type ResponseFormatType, type ShotType, type SongSection, type TempoMarking, type TimeOfDay, type TimeSignature, type VideoAction, type VideoAudio, type VideoCamera, type VideoColor, type VideoLighting, type VideoMotion, VideoPromptBuilder, type VideoScene, type VideoShot, type VideoStyle, type VideoSubject, type VideoTechnical, type VocalStyle, audio, builder, chat, chatPresets, fromPrompt, image, templates, video };
|