@gptmarket/temporal-types 0.0.31 → 0.0.33

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gptmarket/temporal-types",
3
- "version": "0.0.31",
3
+ "version": "0.0.33",
4
4
  "description": "TypeScript types and workflow registry for GPTMarket Temporal workflows",
5
5
  "main": "index.ts",
6
6
  "types": "index.ts",
package/registry.ts CHANGED
@@ -133,6 +133,15 @@ export const inspirations_pinterest: WorkflowDefinition<
133
133
  required: true,
134
134
  default: null,
135
135
  },
136
+ {
137
+ name: "num_images",
138
+ type: "number",
139
+ label: "Num Images",
140
+ description: "Number of inspiration images to return",
141
+ required: false,
142
+ default: 50,
143
+ validation: { min: 1, max: 100 },
144
+ },
136
145
  ],
137
146
  };
138
147
 
@@ -959,6 +968,233 @@ export const saa_s_video: WorkflowDefinition<
959
968
  ],
960
969
  };
961
970
 
971
+ export const screenshot_generator: WorkflowDefinition<
972
+ Types.ScreenshotGeneratorInput,
973
+ Types.ScreenshotGeneratorOutput
974
+ > = {
975
+ id: "screenshot_generator",
976
+ name: "Screenshot Generator",
977
+ description: "Screenshot Generator Workflow.",
978
+ workflowClass: "ScreenshotGeneratorWorkflow",
979
+ inputType: "ScreenshotGeneratorInput",
980
+ outputType: "ScreenshotGeneratorOutput",
981
+ fields: [
982
+ {
983
+ name: "secret_key",
984
+ type: "text",
985
+ label: "Secret Key",
986
+ description:
987
+ "Secret key for authentication (required when WORKFLOW_SECRET_ENABLED=True)",
988
+ required: false,
989
+ default: null,
990
+ },
991
+ {
992
+ name: "rewrite_enabled",
993
+ type: "checkbox",
994
+ label: "Rewrite Enabled",
995
+ description:
996
+ "Make your content appear as fresh, original uploads. Bypasses duplicate detection and AI content filters on social platforms.",
997
+ required: false,
998
+ default: false,
999
+ },
1000
+ {
1001
+ name: "rewrite_device",
1002
+ type: "select",
1003
+ label: "Rewrite Device",
1004
+ description:
1005
+ "Make media appear as if created on this device. Adds authenticity and helps bypass platform detection. Random device if not specified.",
1006
+ required: false,
1007
+ default: null,
1008
+ options: [
1009
+ { value: "iPhone 17 Pro Max", label: "Iphone 17 Pro Max" },
1010
+ { value: "iPhone 17 Pro", label: "Iphone 17 Pro" },
1011
+ { value: "iPhone 17 Plus", label: "Iphone 17 Plus" },
1012
+ { value: "iPhone 17", label: "Iphone 17" },
1013
+ { value: "iPhone 16 Pro Max", label: "Iphone 16 Pro Max" },
1014
+ { value: "iPhone 16 Pro", label: "Iphone 16 Pro" },
1015
+ { value: "iPhone 16 Plus", label: "Iphone 16 Plus" },
1016
+ { value: "iPhone 16", label: "Iphone 16" },
1017
+ { value: "iPhone 15 Pro Max", label: "Iphone 15 Pro Max" },
1018
+ { value: "iPhone 15 Pro", label: "Iphone 15 Pro" },
1019
+ { value: "iPhone 15 Plus", label: "Iphone 15 Plus" },
1020
+ { value: "iPhone 15", label: "Iphone 15" },
1021
+ { value: "iPhone 14 Pro Max", label: "Iphone 14 Pro Max" },
1022
+ { value: "iPhone 14 Pro", label: "Iphone 14 Pro" },
1023
+ { value: "iPhone 14 Plus", label: "Iphone 14 Plus" },
1024
+ { value: "iPhone 14", label: "Iphone 14" },
1025
+ { value: "iPhone 13 Pro Max", label: "Iphone 13 Pro Max" },
1026
+ { value: "iPhone 13 Pro", label: "Iphone 13 Pro" },
1027
+ { value: "iPhone 13", label: "Iphone 13" },
1028
+ { value: "iPhone 13 mini", label: "Iphone 13 Mini" },
1029
+ {
1030
+ value: "Ray-Ban Meta Smart Glasses",
1031
+ label: "Ray-Ban Meta Smart Glasses",
1032
+ },
1033
+ ],
1034
+ },
1035
+ {
1036
+ name: "app_url",
1037
+ type: "text",
1038
+ label: "App Url",
1039
+ description: "App Store URL",
1040
+ required: false,
1041
+ default: null,
1042
+ },
1043
+ {
1044
+ name: "app_id",
1045
+ type: "text",
1046
+ label: "App Id",
1047
+ description: "Numeric App Store ID",
1048
+ required: false,
1049
+ default: null,
1050
+ },
1051
+ {
1052
+ name: "country",
1053
+ type: "text",
1054
+ label: "Country",
1055
+ description: "Country code for App Store lookup",
1056
+ required: false,
1057
+ default: "us",
1058
+ },
1059
+ {
1060
+ name: "app_title",
1061
+ type: "text",
1062
+ label: "App Title",
1063
+ description: "App title (overrides fetched)",
1064
+ required: false,
1065
+ default: null,
1066
+ },
1067
+ {
1068
+ name: "app_subtitle",
1069
+ type: "text",
1070
+ label: "App Subtitle",
1071
+ description: "App subtitle / tagline",
1072
+ required: false,
1073
+ default: null,
1074
+ },
1075
+ {
1076
+ name: "app_description",
1077
+ type: "textarea",
1078
+ label: "App Description",
1079
+ description: "App description (overrides fetched)",
1080
+ required: false,
1081
+ default: null,
1082
+ },
1083
+ {
1084
+ name: "primary_color",
1085
+ type: "text",
1086
+ label: "Primary Color",
1087
+ description: 'Primary brand color hex (e.g. "#4A90D9")',
1088
+ required: false,
1089
+ default: null,
1090
+ },
1091
+ {
1092
+ name: "secondary_color",
1093
+ type: "text",
1094
+ label: "Secondary Color",
1095
+ description: "Secondary brand color hex",
1096
+ required: false,
1097
+ default: null,
1098
+ },
1099
+ {
1100
+ name: "accent_color",
1101
+ type: "text",
1102
+ label: "Accent Color",
1103
+ description: "Accent color hex",
1104
+ required: false,
1105
+ default: null,
1106
+ },
1107
+ {
1108
+ name: "background_style",
1109
+ type: "text",
1110
+ label: "Background Style",
1111
+ description:
1112
+ "Background style: gradient, solid, abstract, blurred, minimal, dark, light",
1113
+ required: false,
1114
+ default: null,
1115
+ },
1116
+ {
1117
+ name: "design_style",
1118
+ type: "text",
1119
+ label: "Design Style",
1120
+ description:
1121
+ "Overall design style: modern, bold, playful, corporate, elegant, minimal, vibrant",
1122
+ required: false,
1123
+ default: null,
1124
+ },
1125
+ {
1126
+ name: "brand_keywords",
1127
+ type: "json",
1128
+ label: "Brand Keywords",
1129
+ description:
1130
+ 'Keywords describing the brand aesthetic (e.g. ["clean", "premium"])',
1131
+ required: false,
1132
+ default: null,
1133
+ },
1134
+ {
1135
+ name: "target_audience",
1136
+ type: "text",
1137
+ label: "Target Audience",
1138
+ description: 'Target audience (e.g. "young professionals", "parents")',
1139
+ required: false,
1140
+ default: null,
1141
+ },
1142
+ {
1143
+ name: "app_screenshots",
1144
+ type: "json",
1145
+ label: "App Screenshots",
1146
+ description:
1147
+ "The app's own existing screenshots (MUST be provided to be placed inside the device mockup)",
1148
+ required: true,
1149
+ default: null,
1150
+ validation: { minLength: 1 },
1151
+ },
1152
+ {
1153
+ name: "batches",
1154
+ type: "json",
1155
+ label: "Batches",
1156
+ description: "Reference screenshot batches — one per screenshot position",
1157
+ required: false,
1158
+ default: null,
1159
+ },
1160
+ {
1161
+ name: "num_screenshots",
1162
+ type: "number",
1163
+ label: "Num Screenshots",
1164
+ description: "",
1165
+ required: false,
1166
+ default: 6,
1167
+ validation: { min: 1, max: 10 },
1168
+ },
1169
+ {
1170
+ name: "aspect_ratio",
1171
+ type: "text",
1172
+ label: "Aspect Ratio",
1173
+ description: "Aspect ratio (9:16 for iPhone)",
1174
+ required: false,
1175
+ default: "9:16",
1176
+ },
1177
+ {
1178
+ name: "image_model",
1179
+ type: "text",
1180
+ label: "Image Model",
1181
+ description: "Image model ID from registry",
1182
+ required: false,
1183
+ default: "nano-banana-2",
1184
+ hidden: true,
1185
+ },
1186
+ {
1187
+ name: "image_model_params",
1188
+ type: "json",
1189
+ label: "Image Model Params",
1190
+ description: "",
1191
+ required: false,
1192
+ default: null,
1193
+ hidden: true,
1194
+ },
1195
+ ],
1196
+ };
1197
+
962
1198
  export const slideshow_to_video: WorkflowDefinition<
963
1199
  Types.SlideshowToVideoInput,
964
1200
  Types.SlideshowToVideoOutput
@@ -2263,6 +2499,7 @@ export const workflowRegistry = {
2263
2499
  ruby,
2264
2500
  saa_s_loom,
2265
2501
  saa_s_video,
2502
+ screenshot_generator,
2266
2503
  slideshow_to_video,
2267
2504
  slideshows_pinterest,
2268
2505
  speaking_doctor,
@@ -2296,6 +2533,7 @@ export type WorkflowInputMap = {
2296
2533
  ruby: Types.RubyInput;
2297
2534
  saa_s_loom: Types.SaaSLoomInput;
2298
2535
  saa_s_video: Types.SaaSVideoInput;
2536
+ screenshot_generator: Types.ScreenshotGeneratorInput;
2299
2537
  slideshow_to_video: Types.SlideshowToVideoInput;
2300
2538
  slideshows_pinterest: Types.SlideshowsPinterestInput;
2301
2539
  speaking_doctor: Types.SpeakingDoctorInput;
@@ -2308,6 +2546,7 @@ export type WorkflowOutputMap = {
2308
2546
  ruby: Types.RubyOutput;
2309
2547
  saa_s_loom: Types.SaaSLoomOutput;
2310
2548
  saa_s_video: Types.SaaSVideoOutput;
2549
+ screenshot_generator: Types.ScreenshotGeneratorOutput;
2311
2550
  slideshow_to_video: Types.SlideshowToVideoOutput;
2312
2551
  slideshows_pinterest: Types.SlideshowsPinterestOutput;
2313
2552
  speaking_doctor: Types.SpeakingDoctorOutput;
@@ -60,6 +60,14 @@
60
60
  "description": "What kind of inspiration the user wants (e.g., \"landing page design\")",
61
61
  "title": "Prompt",
62
62
  "type": "string"
63
+ },
64
+ "num_images": {
65
+ "default": 50,
66
+ "description": "Number of inspiration images to return",
67
+ "maximum": 100,
68
+ "minimum": 1,
69
+ "title": "Num Images",
70
+ "type": "integer"
63
71
  }
64
72
  },
65
73
  "required": [
@@ -0,0 +1,329 @@
1
+ {
2
+ "$defs": {
3
+ "ScreenshotBatch": {
4
+ "description": "Reference screenshots for a single screenshot position.",
5
+ "properties": {
6
+ "position": {
7
+ "description": "Screenshot position (1-based)",
8
+ "maximum": 10,
9
+ "minimum": 1,
10
+ "title": "Position",
11
+ "type": "integer"
12
+ },
13
+ "headline": {
14
+ "anyOf": [
15
+ {
16
+ "type": "string"
17
+ },
18
+ {
19
+ "type": "null"
20
+ }
21
+ ],
22
+ "default": null,
23
+ "description": "Headline text to display on this screenshot",
24
+ "title": "Headline"
25
+ },
26
+ "sub_headline": {
27
+ "anyOf": [
28
+ {
29
+ "type": "string"
30
+ },
31
+ {
32
+ "type": "null"
33
+ }
34
+ ],
35
+ "default": null,
36
+ "description": "Supporting text below the headline",
37
+ "title": "Sub Headline"
38
+ },
39
+ "feature_description": {
40
+ "anyOf": [
41
+ {
42
+ "type": "string"
43
+ },
44
+ {
45
+ "type": "null"
46
+ }
47
+ ],
48
+ "default": null,
49
+ "description": "What feature or benefit this screenshot should highlight",
50
+ "title": "Feature Description"
51
+ },
52
+ "reference_urls": {
53
+ "description": "Reference screenshot URLs from similar apps for this position",
54
+ "items": {
55
+ "type": "string"
56
+ },
57
+ "title": "Reference Urls",
58
+ "type": "array"
59
+ }
60
+ },
61
+ "required": [
62
+ "position"
63
+ ],
64
+ "title": "ScreenshotBatch",
65
+ "type": "object"
66
+ }
67
+ },
68
+ "description": "Input for App Store screenshot generation.",
69
+ "properties": {
70
+ "secret_key": {
71
+ "anyOf": [
72
+ {
73
+ "type": "string"
74
+ },
75
+ {
76
+ "type": "null"
77
+ }
78
+ ],
79
+ "default": null,
80
+ "description": "Secret key for authentication (required when WORKFLOW_SECRET_ENABLED=True)",
81
+ "title": "Secret Key"
82
+ },
83
+ "rewrite_enabled": {
84
+ "default": false,
85
+ "description": "Make your content appear as fresh, original uploads. Bypasses duplicate detection and AI content filters on social platforms.",
86
+ "title": "Rewrite Enabled",
87
+ "type": "boolean"
88
+ },
89
+ "rewrite_device": {
90
+ "anyOf": [
91
+ {
92
+ "enum": [
93
+ "iPhone 17 Pro Max",
94
+ "iPhone 17 Pro",
95
+ "iPhone 17 Plus",
96
+ "iPhone 17",
97
+ "iPhone 16 Pro Max",
98
+ "iPhone 16 Pro",
99
+ "iPhone 16 Plus",
100
+ "iPhone 16",
101
+ "iPhone 15 Pro Max",
102
+ "iPhone 15 Pro",
103
+ "iPhone 15 Plus",
104
+ "iPhone 15",
105
+ "iPhone 14 Pro Max",
106
+ "iPhone 14 Pro",
107
+ "iPhone 14 Plus",
108
+ "iPhone 14",
109
+ "iPhone 13 Pro Max",
110
+ "iPhone 13 Pro",
111
+ "iPhone 13",
112
+ "iPhone 13 mini",
113
+ "Ray-Ban Meta Smart Glasses"
114
+ ],
115
+ "type": "string"
116
+ },
117
+ {
118
+ "type": "null"
119
+ }
120
+ ],
121
+ "default": null,
122
+ "description": "Make media appear as if created on this device. Adds authenticity and helps bypass platform detection. Random device if not specified.",
123
+ "title": "Rewrite Device"
124
+ },
125
+ "app_url": {
126
+ "anyOf": [
127
+ {
128
+ "type": "string"
129
+ },
130
+ {
131
+ "type": "null"
132
+ }
133
+ ],
134
+ "default": null,
135
+ "description": "App Store URL",
136
+ "title": "App Url"
137
+ },
138
+ "app_id": {
139
+ "anyOf": [
140
+ {
141
+ "type": "string"
142
+ },
143
+ {
144
+ "type": "null"
145
+ }
146
+ ],
147
+ "default": null,
148
+ "description": "Numeric App Store ID",
149
+ "title": "App Id"
150
+ },
151
+ "country": {
152
+ "default": "us",
153
+ "description": "Country code for App Store lookup",
154
+ "title": "Country",
155
+ "type": "string"
156
+ },
157
+ "app_title": {
158
+ "anyOf": [
159
+ {
160
+ "type": "string"
161
+ },
162
+ {
163
+ "type": "null"
164
+ }
165
+ ],
166
+ "default": null,
167
+ "description": "App title (overrides fetched)",
168
+ "title": "App Title"
169
+ },
170
+ "app_subtitle": {
171
+ "anyOf": [
172
+ {
173
+ "type": "string"
174
+ },
175
+ {
176
+ "type": "null"
177
+ }
178
+ ],
179
+ "default": null,
180
+ "description": "App subtitle / tagline",
181
+ "title": "App Subtitle"
182
+ },
183
+ "app_description": {
184
+ "anyOf": [
185
+ {
186
+ "type": "string"
187
+ },
188
+ {
189
+ "type": "null"
190
+ }
191
+ ],
192
+ "default": null,
193
+ "description": "App description (overrides fetched)",
194
+ "title": "App Description"
195
+ },
196
+ "primary_color": {
197
+ "anyOf": [
198
+ {
199
+ "type": "string"
200
+ },
201
+ {
202
+ "type": "null"
203
+ }
204
+ ],
205
+ "default": null,
206
+ "description": "Primary brand color hex (e.g. \"#4A90D9\")",
207
+ "title": "Primary Color"
208
+ },
209
+ "secondary_color": {
210
+ "anyOf": [
211
+ {
212
+ "type": "string"
213
+ },
214
+ {
215
+ "type": "null"
216
+ }
217
+ ],
218
+ "default": null,
219
+ "description": "Secondary brand color hex",
220
+ "title": "Secondary Color"
221
+ },
222
+ "accent_color": {
223
+ "anyOf": [
224
+ {
225
+ "type": "string"
226
+ },
227
+ {
228
+ "type": "null"
229
+ }
230
+ ],
231
+ "default": null,
232
+ "description": "Accent color hex",
233
+ "title": "Accent Color"
234
+ },
235
+ "background_style": {
236
+ "anyOf": [
237
+ {
238
+ "type": "string"
239
+ },
240
+ {
241
+ "type": "null"
242
+ }
243
+ ],
244
+ "default": null,
245
+ "description": "Background style: gradient, solid, abstract, blurred, minimal, dark, light",
246
+ "title": "Background Style"
247
+ },
248
+ "design_style": {
249
+ "anyOf": [
250
+ {
251
+ "type": "string"
252
+ },
253
+ {
254
+ "type": "null"
255
+ }
256
+ ],
257
+ "default": null,
258
+ "description": "Overall design style: modern, bold, playful, corporate, elegant, minimal, vibrant",
259
+ "title": "Design Style"
260
+ },
261
+ "brand_keywords": {
262
+ "description": "Keywords describing the brand aesthetic (e.g. [\"clean\", \"premium\"])",
263
+ "items": {
264
+ "type": "string"
265
+ },
266
+ "title": "Brand Keywords",
267
+ "type": "array"
268
+ },
269
+ "target_audience": {
270
+ "anyOf": [
271
+ {
272
+ "type": "string"
273
+ },
274
+ {
275
+ "type": "null"
276
+ }
277
+ ],
278
+ "default": null,
279
+ "description": "Target audience (e.g. \"young professionals\", \"parents\")",
280
+ "title": "Target Audience"
281
+ },
282
+ "app_screenshots": {
283
+ "description": "The app's own existing screenshots (MUST be provided to be placed inside the device mockup)",
284
+ "items": {
285
+ "type": "string"
286
+ },
287
+ "minItems": 1,
288
+ "title": "App Screenshots",
289
+ "type": "array"
290
+ },
291
+ "batches": {
292
+ "description": "Reference screenshot batches \u2014 one per screenshot position",
293
+ "items": {
294
+ "$ref": "#/$defs/ScreenshotBatch"
295
+ },
296
+ "title": "Batches",
297
+ "type": "array"
298
+ },
299
+ "num_screenshots": {
300
+ "default": 6,
301
+ "maximum": 10,
302
+ "minimum": 1,
303
+ "title": "Num Screenshots",
304
+ "type": "integer"
305
+ },
306
+ "aspect_ratio": {
307
+ "default": "9:16",
308
+ "description": "Aspect ratio (9:16 for iPhone)",
309
+ "title": "Aspect Ratio",
310
+ "type": "string"
311
+ },
312
+ "image_model": {
313
+ "default": "nano-banana-2",
314
+ "description": "Image model ID from registry",
315
+ "title": "Image Model",
316
+ "type": "string"
317
+ },
318
+ "image_model_params": {
319
+ "additionalProperties": true,
320
+ "title": "Image Model Params",
321
+ "type": "object"
322
+ }
323
+ },
324
+ "required": [
325
+ "app_screenshots"
326
+ ],
327
+ "title": "ScreenshotGeneratorInput",
328
+ "type": "object"
329
+ }
@@ -0,0 +1,118 @@
1
+ {
2
+ "$defs": {
3
+ "GeneratedScreenshot": {
4
+ "description": "A single generated App Store screenshot.",
5
+ "properties": {
6
+ "position": {
7
+ "description": "Screenshot position (1-based)",
8
+ "title": "Position",
9
+ "type": "integer"
10
+ },
11
+ "image_url": {
12
+ "description": "Generated screenshot URL",
13
+ "title": "Image Url",
14
+ "type": "string"
15
+ },
16
+ "headline": {
17
+ "anyOf": [
18
+ {
19
+ "type": "string"
20
+ },
21
+ {
22
+ "type": "null"
23
+ }
24
+ ],
25
+ "default": null,
26
+ "description": "Headline used",
27
+ "title": "Headline"
28
+ },
29
+ "prompt_used": {
30
+ "default": "",
31
+ "description": "Image generation prompt used",
32
+ "title": "Prompt Used",
33
+ "type": "string"
34
+ }
35
+ },
36
+ "required": [
37
+ "position",
38
+ "image_url"
39
+ ],
40
+ "title": "GeneratedScreenshot",
41
+ "type": "object"
42
+ }
43
+ },
44
+ "description": "Output from the screenshot generator workflow.",
45
+ "properties": {
46
+ "screenshots": {
47
+ "items": {
48
+ "$ref": "#/$defs/GeneratedScreenshot"
49
+ },
50
+ "title": "Screenshots",
51
+ "type": "array"
52
+ },
53
+ "app_title": {
54
+ "default": "",
55
+ "title": "App Title",
56
+ "type": "string"
57
+ },
58
+ "app_description": {
59
+ "anyOf": [
60
+ {
61
+ "type": "string"
62
+ },
63
+ {
64
+ "type": "null"
65
+ }
66
+ ],
67
+ "default": null,
68
+ "title": "App Description"
69
+ },
70
+ "total_generated": {
71
+ "default": 0,
72
+ "title": "Total Generated",
73
+ "type": "integer"
74
+ },
75
+ "prompts": {
76
+ "items": {
77
+ "type": "string"
78
+ },
79
+ "title": "Prompts",
80
+ "type": "array"
81
+ },
82
+ "best_reference_app": {
83
+ "anyOf": [
84
+ {
85
+ "type": "string"
86
+ },
87
+ {
88
+ "type": "null"
89
+ }
90
+ ],
91
+ "default": null,
92
+ "description": "Title of the best-rated reference app",
93
+ "title": "Best Reference App"
94
+ },
95
+ "reference_screenshots_used": {
96
+ "description": "URLs of the screenshots used as visual inspiration",
97
+ "items": {
98
+ "type": "string"
99
+ },
100
+ "title": "Reference Screenshots Used",
101
+ "type": "array"
102
+ },
103
+ "llm_prompt_sent": {
104
+ "default": "",
105
+ "description": "The exact prompt sent to the LLM",
106
+ "title": "Llm Prompt Sent",
107
+ "type": "string"
108
+ },
109
+ "llm_response_raw": {
110
+ "default": "",
111
+ "description": "The raw JSON response from the LLM",
112
+ "title": "Llm Response Raw",
113
+ "type": "string"
114
+ }
115
+ },
116
+ "title": "ScreenshotGeneratorOutput",
117
+ "type": "object"
118
+ }
package/types.ts CHANGED
@@ -66,6 +66,8 @@ export interface InspirationsPinterestInput {
66
66
  | null;
67
67
  /** What kind of inspiration the user wants (e.g., "landing page design") */
68
68
  prompt: string;
69
+ /** Number of inspiration images to return */
70
+ num_images?: number;
69
71
  }
70
72
 
71
73
  export interface InspirationsPinterestOutput {
@@ -491,6 +493,100 @@ export interface SaaSVideoOutput {
491
493
  generation_context?: Record<string, unknown>;
492
494
  }
493
495
 
496
+ export interface ScreenshotGeneratorInput {
497
+ /** Secret key for authentication (required when WORKFLOW_SECRET_ENABLED=True) */
498
+ secret_key?: string | null;
499
+ /** Make your content appear as fresh, original uploads. Bypasses duplicate detection and AI content filters on social platforms. */
500
+ rewrite_enabled?: boolean;
501
+ /** Make media appear as if created on this device. Adds authenticity and helps bypass platform detection. Random device if not specified. */
502
+ rewrite_device?:
503
+ | "iPhone 17 Pro Max"
504
+ | "iPhone 17 Pro"
505
+ | "iPhone 17 Plus"
506
+ | "iPhone 17"
507
+ | "iPhone 16 Pro Max"
508
+ | "iPhone 16 Pro"
509
+ | "iPhone 16 Plus"
510
+ | "iPhone 16"
511
+ | "iPhone 15 Pro Max"
512
+ | "iPhone 15 Pro"
513
+ | "iPhone 15 Plus"
514
+ | "iPhone 15"
515
+ | "iPhone 14 Pro Max"
516
+ | "iPhone 14 Pro"
517
+ | "iPhone 14 Plus"
518
+ | "iPhone 14"
519
+ | "iPhone 13 Pro Max"
520
+ | "iPhone 13 Pro"
521
+ | "iPhone 13"
522
+ | "iPhone 13 mini"
523
+ | "Ray-Ban Meta Smart Glasses"
524
+ | null;
525
+ /** App Store URL */
526
+ app_url?: string | null;
527
+ /** Numeric App Store ID */
528
+ app_id?: string | null;
529
+ /** Country code for App Store lookup */
530
+ country?: string;
531
+ /** App title (overrides fetched) */
532
+ app_title?: string | null;
533
+ /** App subtitle / tagline */
534
+ app_subtitle?: string | null;
535
+ /** App description (overrides fetched) */
536
+ app_description?: string | null;
537
+ /** Primary brand color hex (e.g. "#4A90D9") */
538
+ primary_color?: string | null;
539
+ /** Secondary brand color hex */
540
+ secondary_color?: string | null;
541
+ /** Accent color hex */
542
+ accent_color?: string | null;
543
+ /** Background style: gradient, solid, abstract, blurred, minimal, dark, light */
544
+ background_style?: string | null;
545
+ /** Overall design style: modern, bold, playful, corporate, elegant, minimal, vibrant */
546
+ design_style?: string | null;
547
+ /** Keywords describing the brand aesthetic (e.g. ["clean", "premium"]) */
548
+ brand_keywords?: string[];
549
+ /** Target audience (e.g. "young professionals", "parents") */
550
+ target_audience?: string | null;
551
+ /** The app's own existing screenshots (MUST be provided to be placed inside the device mockup) */
552
+ app_screenshots: string[];
553
+ /** Reference screenshot batches — one per screenshot position */
554
+ batches?: {
555
+ position: number;
556
+ headline?: string | null;
557
+ sub_headline?: string | null;
558
+ feature_description?: string | null;
559
+ reference_urls?: string[];
560
+ }[];
561
+ num_screenshots?: number;
562
+ /** Aspect ratio (9:16 for iPhone) */
563
+ aspect_ratio?: string;
564
+ /** Image model ID from registry */
565
+ image_model?: string;
566
+ image_model_params?: Record<string, unknown>;
567
+ }
568
+
569
+ export interface ScreenshotGeneratorOutput {
570
+ screenshots?: {
571
+ position: number;
572
+ image_url: string;
573
+ headline?: string | null;
574
+ prompt_used?: string;
575
+ }[];
576
+ app_title?: string;
577
+ app_description?: string | null;
578
+ total_generated?: number;
579
+ prompts?: string[];
580
+ /** Title of the best-rated reference app */
581
+ best_reference_app?: string | null;
582
+ /** URLs of the screenshots used as visual inspiration */
583
+ reference_screenshots_used?: string[];
584
+ /** The exact prompt sent to the LLM */
585
+ llm_prompt_sent?: string;
586
+ /** The raw JSON response from the LLM */
587
+ llm_response_raw?: string;
588
+ }
589
+
494
590
  export interface SlideshowToVideoInput {
495
591
  /** Secret key for authentication (required when WORKFLOW_SECRET_ENABLED=True) */
496
592
  secret_key?: string | null;