@nodaro/prompts 1.9.0 → 1.11.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 +426 -35
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +830 -51
- package/dist/index.d.ts +830 -51
- package/dist/index.js +410 -37
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/__tests__/assemble-image-input.test.ts +93 -3
- package/src/__tests__/assemble-video-input.test.ts +301 -0
- package/src/__tests__/character-fx-timing-catalogs.test.ts +240 -0
- package/src/__tests__/direction-hint-token-safety.test.ts +113 -0
- package/src/__tests__/direction-registry.test.ts +393 -0
- package/src/__tests__/image-convergence-image.test.ts +370 -0
- package/src/__tests__/read-node-direction.test.ts +154 -0
- package/src/__tests__/transition-timing-catalogs.test.ts +3 -1
- package/src/__tests__/video-reference-ref-id-tokens.test.ts +301 -0
- package/src/assemble-image-input.ts +45 -46
- package/src/assemble-video-input.ts +89 -0
- package/src/character-fx.ts +102 -19
- package/src/direction-registry.ts +354 -0
- package/src/index.ts +8 -2
- package/src/picker-catalogs.ts +18 -1
- package/src/prompt-builder.ts +188 -1
- package/src/prompt-hint-join.ts +30 -0
- package/src/provider-prompt-doctrine.ts +2 -2
- package/src/read-node-direction.ts +174 -0
- package/src/ref-binding.ts +45 -0
- package/src/ref-id-tokens.ts +112 -0
- package/src/video-reference-resolver.ts +78 -39
package/dist/index.d.cts
CHANGED
|
@@ -859,6 +859,12 @@ interface BuildImagePromptConfig {
|
|
|
859
859
|
* (`flux-lora-character`) — the trigger word + LoRA carries identity, so
|
|
860
860
|
* the directive bullets are redundant and the wired-character refs
|
|
861
861
|
* shouldn't be injected as `Image N`.
|
|
862
|
+
*
|
|
863
|
+
* The strip regex is grammar-agnostic — it eats LOCATION and named-IMAGE
|
|
864
|
+
* mentions (`@town:3:background`) as well as character ones. That is
|
|
865
|
+
* INTENDED, not an oversight: this path drops `connectedReferences` outright,
|
|
866
|
+
* so there is no reference left for any mention to bind to and a surviving
|
|
867
|
+
* token would reach the model as literal noise. Do not narrow it.
|
|
862
868
|
*/
|
|
863
869
|
skipCharacterMentions?: boolean;
|
|
864
870
|
}
|
|
@@ -1000,34 +1006,457 @@ interface StructuredPromptFields {
|
|
|
1000
1006
|
declare function renderStructuredFields(fields: StructuredPromptFields): string;
|
|
1001
1007
|
|
|
1002
1008
|
/**
|
|
1003
|
-
*
|
|
1004
|
-
*
|
|
1005
|
-
*
|
|
1006
|
-
*
|
|
1007
|
-
*
|
|
1009
|
+
* THE DIRECTION REGISTRY — the single, ordered table of every cinematic
|
|
1010
|
+
* dimension the flat `direction` channel carries, plus the one renderer that
|
|
1011
|
+
* folds it into prompt text.
|
|
1012
|
+
*
|
|
1013
|
+
* WHY IT EXISTS: before this module, five of the ~35 cinematic dimensions rode
|
|
1014
|
+
* the `direction` wire channel and every other dimension was folded into prompt
|
|
1015
|
+
* TEXT by the client. A production copied between clients therefore froze stale
|
|
1016
|
+
* catalog wording, and each client re-implemented the fold. The table below is
|
|
1017
|
+
* the platform-owned replacement: the wire carries ids, the platform renders
|
|
1018
|
+
* the clauses, and the fold ORDER is exported so a client preview cannot drift
|
|
1019
|
+
* from what the server actually emits.
|
|
1020
|
+
*
|
|
1021
|
+
* WIRE VOCABULARY: the keys are the platform's OWN node-data field names — the
|
|
1022
|
+
* ones `SINGLE_PICKER_WIRING[].valueField` and the four `*_FIELD_BY_CATEGORY`
|
|
1023
|
+
* maps already use (`shotSize`, `lightingStyle`, `isoValue`, `style`, `mood`,
|
|
1024
|
+
* `cameraMotion`, …). A Studio-emitted graph and a hand-built canvas node
|
|
1025
|
+
* therefore speak ONE vocabulary for one catalog, and every `build*Hints`
|
|
1026
|
+
* already consumes these names.
|
|
1027
|
+
*
|
|
1028
|
+
* IMPORT RULE (hard): this module imports only `get*PromptHint` / `get*Term` /
|
|
1029
|
+
* `build*Hints` FUNCTIONS — never a raw UPPERCASE catalog array.
|
|
1030
|
+
* `catalog-funnel-ratchet.test.ts` derives its watch set from
|
|
1031
|
+
* `picker-catalogs.ts`'s uppercase value imports and can only SHRINK, so a raw
|
|
1032
|
+
* array import here would be a new offender. Nothing here reads an environment
|
|
1033
|
+
* variable either (`content-free-contract.test.ts`) — verbosity and surface are
|
|
1034
|
+
* threaded parameters, never deployment state.
|
|
1035
|
+
*
|
|
1036
|
+
* DELIBERATELY EXCLUDED, so neither is filed as a gap:
|
|
1037
|
+
* - `characterFx` — a per-shot composer with catalog timing levers
|
|
1038
|
+
* (`composeCharacterFxHintFromConnections`) positioned at an in-prose effect
|
|
1039
|
+
* token, not a bare id. A single-id channel cannot carry it.
|
|
1040
|
+
* - Subject / Styling / prop dimensions (`animal`, `heldProp`, `material`,
|
|
1041
|
+
* Person, Styling) — a separate `subject` channel, deliberately out of scope
|
|
1042
|
+
* here.
|
|
1043
|
+
*
|
|
1044
|
+
* PACK BLINDNESS (parity, not a regression): `get*PromptHint` reads the frozen
|
|
1045
|
+
* base arrays, so ids added by a deployment-registered catalog pack resolve to
|
|
1046
|
+
* `""` and contribute no clause. This is identical to the behavior of the five
|
|
1047
|
+
* keys that shipped before this table; routing through `getPickerCatalog` is a
|
|
1048
|
+
* deliberate non-goal.
|
|
1049
|
+
*/
|
|
1050
|
+
|
|
1051
|
+
/** Which generation stages fold a dimension. */
|
|
1052
|
+
type DirectionSurface = "image" | "video" | "both";
|
|
1053
|
+
/** Verbosity family — the video policy folds `motion` compact, `look` full. */
|
|
1054
|
+
type DirectionFamily = "look" | "motion";
|
|
1055
|
+
interface DirectionFieldSpec {
|
|
1056
|
+
/**
|
|
1057
|
+
* Wire key — also the `DirectionFields` property name and the canvas
|
|
1058
|
+
* node-data field name for the same catalog.
|
|
1059
|
+
*/
|
|
1060
|
+
readonly key: string;
|
|
1061
|
+
/**
|
|
1062
|
+
* Which generation stages fold this dimension. Filtering happens in the
|
|
1063
|
+
* RENDERER, never in the wire schema: an image-only key sent to
|
|
1064
|
+
* `/v1/generate-video` is accepted and simply contributes no hint.
|
|
1065
|
+
*/
|
|
1066
|
+
readonly surface: DirectionSurface;
|
|
1067
|
+
/** Verbosity family. The video policy folds `motion` compact, `look` full. */
|
|
1068
|
+
readonly family: DirectionFamily;
|
|
1069
|
+
/** Ids honored per dimension. Extras are SLICED at render, never a 400. */
|
|
1070
|
+
readonly maxPicks: number;
|
|
1071
|
+
/**
|
|
1072
|
+
* Render selected ids in this catalog's own doctrine: per-id for independent
|
|
1073
|
+
* catalogs, ONE blended clause for Mood / Aesthetic / Photographer, the
|
|
1074
|
+
* catalog's own multi builder where it has one. `[]` when nothing resolves.
|
|
1075
|
+
*/
|
|
1076
|
+
readonly render: (ids: readonly string[], mode: PickerHintMode) => string[];
|
|
1077
|
+
}
|
|
1078
|
+
/**
|
|
1079
|
+
* THE TABLE. Declaration order IS fold order (`DIRECTION_KEYS`), pinned by
|
|
1080
|
+
* `__tests__/direction-registry.test.ts`.
|
|
1081
|
+
*
|
|
1082
|
+
* Group order: camera motion leads (matching the video hint order the canvas
|
|
1083
|
+
* and Studio both emit today), then composition → camera → exposure → light →
|
|
1084
|
+
* style → scene → motion, then the LEGACY BLOCK last.
|
|
1085
|
+
*
|
|
1086
|
+
* THE LEGACY BLOCK (the last five rows) is the pre-registry published
|
|
1087
|
+
* `DirectionFields`, placed LAST in today's exact `composePromptText` order so
|
|
1088
|
+
* every existing caller's fold is byte-identical. They are WHOLE-CATALOG keys —
|
|
1089
|
+
* `framingId` accepts ANY `FRAMINGS` id and `lightingId` ANY `LIGHTINGS` id —
|
|
1090
|
+
* so they are NOT aliases of `shotSize` / `lightingStyle`, and an alias table
|
|
1091
|
+
* would wrongly suppress a legal second selection. Overlap is handled instead
|
|
1092
|
+
* by the exact-string dedupe in `renderDirectionHints`.
|
|
1093
|
+
*/
|
|
1094
|
+
declare const DIRECTION_FIELDS: readonly [{
|
|
1095
|
+
readonly key: "cameraMotion";
|
|
1096
|
+
readonly surface: "video";
|
|
1097
|
+
readonly family: "motion";
|
|
1098
|
+
readonly maxPicks: 1;
|
|
1099
|
+
readonly render: (ids: readonly string[], mode: PickerHintMode) => string[];
|
|
1100
|
+
}, {
|
|
1101
|
+
readonly key: "shotSize";
|
|
1102
|
+
readonly surface: "both";
|
|
1103
|
+
readonly family: "look";
|
|
1104
|
+
readonly maxPicks: 1;
|
|
1105
|
+
readonly render: (ids: readonly string[], mode: PickerHintMode) => string[];
|
|
1106
|
+
}, {
|
|
1107
|
+
readonly key: "angle";
|
|
1108
|
+
readonly surface: "both";
|
|
1109
|
+
readonly family: "look";
|
|
1110
|
+
readonly maxPicks: 1;
|
|
1111
|
+
readonly render: (ids: readonly string[], mode: PickerHintMode) => string[];
|
|
1112
|
+
}, {
|
|
1113
|
+
readonly key: "coverage";
|
|
1114
|
+
readonly surface: "both";
|
|
1115
|
+
readonly family: "look";
|
|
1116
|
+
readonly maxPicks: 1;
|
|
1117
|
+
readonly render: (ids: readonly string[], mode: PickerHintMode) => string[];
|
|
1118
|
+
}, {
|
|
1119
|
+
readonly key: "composition";
|
|
1120
|
+
readonly surface: "both";
|
|
1121
|
+
readonly family: "look";
|
|
1122
|
+
readonly maxPicks: 2;
|
|
1123
|
+
readonly render: (ids: readonly string[], mode: PickerHintMode) => string[];
|
|
1124
|
+
}, {
|
|
1125
|
+
readonly key: "vantage";
|
|
1126
|
+
readonly surface: "both";
|
|
1127
|
+
readonly family: "look";
|
|
1128
|
+
readonly maxPicks: 1;
|
|
1129
|
+
readonly render: (ids: readonly string[], mode: PickerHintMode) => string[];
|
|
1130
|
+
}, {
|
|
1131
|
+
readonly key: "pose";
|
|
1132
|
+
readonly surface: "both";
|
|
1133
|
+
readonly family: "look";
|
|
1134
|
+
readonly maxPicks: 1;
|
|
1135
|
+
readonly render: (ids: readonly string[], mode: PickerHintMode) => string[];
|
|
1136
|
+
}, {
|
|
1137
|
+
readonly key: "compositionEffect";
|
|
1138
|
+
readonly surface: "both";
|
|
1139
|
+
readonly family: "look";
|
|
1140
|
+
readonly maxPicks: 1;
|
|
1141
|
+
readonly render: (ids: readonly string[], mode: PickerHintMode) => string[];
|
|
1142
|
+
}, {
|
|
1143
|
+
readonly key: "cameraFormat";
|
|
1144
|
+
readonly surface: "both";
|
|
1145
|
+
readonly family: "look";
|
|
1146
|
+
readonly maxPicks: 1;
|
|
1147
|
+
readonly render: (ids: readonly string[], mode: PickerHintMode) => string[];
|
|
1148
|
+
}, {
|
|
1149
|
+
readonly key: "lens";
|
|
1150
|
+
readonly surface: "both";
|
|
1151
|
+
readonly family: "look";
|
|
1152
|
+
readonly maxPicks: 1;
|
|
1153
|
+
readonly render: (ids: readonly string[], mode: PickerHintMode) => string[];
|
|
1154
|
+
}, {
|
|
1155
|
+
readonly key: "aperture";
|
|
1156
|
+
readonly surface: "image";
|
|
1157
|
+
readonly family: "look";
|
|
1158
|
+
readonly maxPicks: 1;
|
|
1159
|
+
readonly render: (ids: readonly string[], mode: PickerHintMode) => string[];
|
|
1160
|
+
}, {
|
|
1161
|
+
readonly key: "shutterSpeed";
|
|
1162
|
+
readonly surface: "image";
|
|
1163
|
+
readonly family: "look";
|
|
1164
|
+
readonly maxPicks: 1;
|
|
1165
|
+
readonly render: (ids: readonly string[], mode: PickerHintMode) => string[];
|
|
1166
|
+
}, {
|
|
1167
|
+
readonly key: "isoValue";
|
|
1168
|
+
readonly surface: "image";
|
|
1169
|
+
readonly family: "look";
|
|
1170
|
+
readonly maxPicks: 1;
|
|
1171
|
+
readonly render: (ids: readonly string[], mode: PickerHintMode) => string[];
|
|
1172
|
+
}, {
|
|
1173
|
+
readonly key: "timeOfDay";
|
|
1174
|
+
readonly surface: "both";
|
|
1175
|
+
readonly family: "look";
|
|
1176
|
+
readonly maxPicks: 1;
|
|
1177
|
+
readonly render: (ids: readonly string[], mode: PickerHintMode) => string[];
|
|
1178
|
+
}, {
|
|
1179
|
+
readonly key: "lightingStyle";
|
|
1180
|
+
readonly surface: "both";
|
|
1181
|
+
readonly family: "look";
|
|
1182
|
+
readonly maxPicks: 2;
|
|
1183
|
+
readonly render: (ids: readonly string[], mode: PickerHintMode) => string[];
|
|
1184
|
+
}, {
|
|
1185
|
+
readonly key: "lightingDirection";
|
|
1186
|
+
readonly surface: "both";
|
|
1187
|
+
readonly family: "look";
|
|
1188
|
+
readonly maxPicks: 1;
|
|
1189
|
+
readonly render: (ids: readonly string[], mode: PickerHintMode) => string[];
|
|
1190
|
+
}, {
|
|
1191
|
+
readonly key: "lightingRatio";
|
|
1192
|
+
readonly surface: "both";
|
|
1193
|
+
readonly family: "look";
|
|
1194
|
+
readonly maxPicks: 1;
|
|
1195
|
+
readonly render: (ids: readonly string[], mode: PickerHintMode) => string[];
|
|
1196
|
+
}, {
|
|
1197
|
+
readonly key: "colorTemperature";
|
|
1198
|
+
readonly surface: "both";
|
|
1199
|
+
readonly family: "look";
|
|
1200
|
+
readonly maxPicks: 1;
|
|
1201
|
+
readonly render: (ids: readonly string[], mode: PickerHintMode) => string[];
|
|
1202
|
+
}, {
|
|
1203
|
+
readonly key: "colorLook";
|
|
1204
|
+
readonly surface: "both";
|
|
1205
|
+
readonly family: "look";
|
|
1206
|
+
readonly maxPicks: 1;
|
|
1207
|
+
readonly render: (ids: readonly string[], mode: PickerHintMode) => string[];
|
|
1208
|
+
}, {
|
|
1209
|
+
readonly key: "atmosphere";
|
|
1210
|
+
readonly surface: "both";
|
|
1211
|
+
readonly family: "look";
|
|
1212
|
+
readonly maxPicks: 2;
|
|
1213
|
+
readonly render: (ids: readonly string[], mode: PickerHintMode) => string[];
|
|
1214
|
+
}, {
|
|
1215
|
+
readonly key: "postProcess";
|
|
1216
|
+
readonly surface: "image";
|
|
1217
|
+
readonly family: "look";
|
|
1218
|
+
readonly maxPicks: 2;
|
|
1219
|
+
readonly render: (ids: readonly string[], mode: PickerHintMode) => string[];
|
|
1220
|
+
}, {
|
|
1221
|
+
readonly key: "style";
|
|
1222
|
+
readonly surface: "both";
|
|
1223
|
+
readonly family: "look";
|
|
1224
|
+
readonly maxPicks: 1;
|
|
1225
|
+
readonly render: (ids: readonly string[], mode: PickerHintMode) => string[];
|
|
1226
|
+
}, {
|
|
1227
|
+
readonly key: "mood";
|
|
1228
|
+
readonly surface: "both";
|
|
1229
|
+
readonly family: "look";
|
|
1230
|
+
readonly maxPicks: 2;
|
|
1231
|
+
readonly render: (ids: readonly string[], mode: PickerHintMode) => string[];
|
|
1232
|
+
}, {
|
|
1233
|
+
readonly key: "aesthetic";
|
|
1234
|
+
readonly surface: "both";
|
|
1235
|
+
readonly family: "look";
|
|
1236
|
+
readonly maxPicks: 2;
|
|
1237
|
+
readonly render: (ids: readonly string[], mode: PickerHintMode) => string[];
|
|
1238
|
+
}, {
|
|
1239
|
+
readonly key: "photoGenre";
|
|
1240
|
+
readonly surface: "image";
|
|
1241
|
+
readonly family: "look";
|
|
1242
|
+
readonly maxPicks: 1;
|
|
1243
|
+
readonly render: (ids: readonly string[], mode: PickerHintMode) => string[];
|
|
1244
|
+
}, {
|
|
1245
|
+
readonly key: "photographer";
|
|
1246
|
+
readonly surface: "image";
|
|
1247
|
+
readonly family: "look";
|
|
1248
|
+
readonly maxPicks: 2;
|
|
1249
|
+
readonly render: (ids: readonly string[], mode: PickerHintMode) => string[];
|
|
1250
|
+
}, {
|
|
1251
|
+
readonly key: "renderQuality";
|
|
1252
|
+
readonly surface: "image";
|
|
1253
|
+
readonly family: "look";
|
|
1254
|
+
readonly maxPicks: 1;
|
|
1255
|
+
readonly render: (ids: readonly string[], mode: PickerHintMode) => string[];
|
|
1256
|
+
}, {
|
|
1257
|
+
readonly key: "setting";
|
|
1258
|
+
readonly surface: "both";
|
|
1259
|
+
readonly family: "look";
|
|
1260
|
+
readonly maxPicks: 1;
|
|
1261
|
+
readonly render: (ids: readonly string[], mode: PickerHintMode) => string[];
|
|
1262
|
+
}, {
|
|
1263
|
+
readonly key: "era";
|
|
1264
|
+
readonly surface: "both";
|
|
1265
|
+
readonly family: "look";
|
|
1266
|
+
readonly maxPicks: 1;
|
|
1267
|
+
readonly render: (ids: readonly string[], mode: PickerHintMode) => string[];
|
|
1268
|
+
}, {
|
|
1269
|
+
readonly key: "backdrop";
|
|
1270
|
+
readonly surface: "both";
|
|
1271
|
+
readonly family: "look";
|
|
1272
|
+
readonly maxPicks: 1;
|
|
1273
|
+
readonly render: (ids: readonly string[], mode: PickerHintMode) => string[];
|
|
1274
|
+
}, {
|
|
1275
|
+
readonly key: "actionFx";
|
|
1276
|
+
readonly surface: "video";
|
|
1277
|
+
readonly family: "motion";
|
|
1278
|
+
readonly maxPicks: 2;
|
|
1279
|
+
readonly render: (ids: readonly string[], mode: PickerHintMode) => string[];
|
|
1280
|
+
}, {
|
|
1281
|
+
readonly key: "temporalSpeed";
|
|
1282
|
+
readonly surface: "video";
|
|
1283
|
+
readonly family: "motion";
|
|
1284
|
+
readonly maxPicks: 1;
|
|
1285
|
+
readonly render: (ids: readonly string[], mode: PickerHintMode) => string[];
|
|
1286
|
+
}, {
|
|
1287
|
+
readonly key: "temporalFreeze";
|
|
1288
|
+
readonly surface: "video";
|
|
1289
|
+
readonly family: "motion";
|
|
1290
|
+
readonly maxPicks: 1;
|
|
1291
|
+
readonly render: (ids: readonly string[], mode: PickerHintMode) => string[];
|
|
1292
|
+
}, {
|
|
1293
|
+
readonly key: "temporalDirection";
|
|
1294
|
+
readonly surface: "video";
|
|
1295
|
+
readonly family: "motion";
|
|
1296
|
+
readonly maxPicks: 1;
|
|
1297
|
+
readonly render: (ids: readonly string[], mode: PickerHintMode) => string[];
|
|
1298
|
+
}, {
|
|
1299
|
+
readonly key: "temporalShutter";
|
|
1300
|
+
readonly surface: "video";
|
|
1301
|
+
readonly family: "motion";
|
|
1302
|
+
readonly maxPicks: 1;
|
|
1303
|
+
readonly render: (ids: readonly string[], mode: PickerHintMode) => string[];
|
|
1304
|
+
}, {
|
|
1305
|
+
readonly key: "transition";
|
|
1306
|
+
readonly surface: "video";
|
|
1307
|
+
readonly family: "motion";
|
|
1308
|
+
readonly maxPicks: 2;
|
|
1309
|
+
readonly render: (ids: readonly string[], mode: PickerHintMode) => string[];
|
|
1310
|
+
}, {
|
|
1311
|
+
readonly key: "loopSubject";
|
|
1312
|
+
readonly surface: "video";
|
|
1313
|
+
readonly family: "motion";
|
|
1314
|
+
readonly maxPicks: 1;
|
|
1315
|
+
readonly render: (ids: readonly string[], mode: PickerHintMode) => string[];
|
|
1316
|
+
}, {
|
|
1317
|
+
readonly key: "framingId";
|
|
1318
|
+
readonly surface: "both";
|
|
1319
|
+
readonly family: "look";
|
|
1320
|
+
readonly maxPicks: 1;
|
|
1321
|
+
readonly render: (ids: readonly string[], mode: PickerHintMode) => string[];
|
|
1322
|
+
}, {
|
|
1323
|
+
readonly key: "framingAngleId";
|
|
1324
|
+
readonly surface: "both";
|
|
1325
|
+
readonly family: "look";
|
|
1326
|
+
readonly maxPicks: 1;
|
|
1327
|
+
readonly render: (ids: readonly string[], mode: PickerHintMode) => string[];
|
|
1328
|
+
}, {
|
|
1329
|
+
readonly key: "lightingId";
|
|
1330
|
+
readonly surface: "both";
|
|
1331
|
+
readonly family: "look";
|
|
1332
|
+
readonly maxPicks: 1;
|
|
1333
|
+
readonly render: (ids: readonly string[], mode: PickerHintMode) => string[];
|
|
1334
|
+
}, {
|
|
1335
|
+
readonly key: "lensId";
|
|
1336
|
+
readonly surface: "both";
|
|
1337
|
+
readonly family: "look";
|
|
1338
|
+
readonly maxPicks: 1;
|
|
1339
|
+
readonly render: (ids: readonly string[], mode: PickerHintMode) => string[];
|
|
1340
|
+
}, {
|
|
1341
|
+
readonly key: "cameraFormatId";
|
|
1342
|
+
readonly surface: "both";
|
|
1343
|
+
readonly family: "look";
|
|
1344
|
+
readonly maxPicks: 1;
|
|
1345
|
+
readonly render: (ids: readonly string[], mode: PickerHintMode) => string[];
|
|
1346
|
+
}];
|
|
1347
|
+
type DirectionFieldRow = (typeof DIRECTION_FIELDS)[number];
|
|
1348
|
+
type DirectionKey = DirectionFieldRow["key"];
|
|
1349
|
+
type ImageDirectionKey = Extract<DirectionFieldRow, {
|
|
1350
|
+
surface: "image" | "both";
|
|
1351
|
+
}>["key"];
|
|
1352
|
+
type VideoDirectionKey = Extract<DirectionFieldRow, {
|
|
1353
|
+
surface: "video" | "both";
|
|
1354
|
+
}>["key"];
|
|
1355
|
+
/**
|
|
1356
|
+
* Flat cinematic-direction ids (Studio / MCP / canvas node data).
|
|
1357
|
+
*
|
|
1358
|
+
* Every key accepts a single id OR an array: multi-pick dimensions always carry
|
|
1359
|
+
* an array, and a single-pick key may legitimately carry one (a client's
|
|
1360
|
+
* partition writer preserving legacy out-of-catalog ids). Absent ≠ empty — a
|
|
1361
|
+
* missing key means "no hint", never a default.
|
|
1362
|
+
*/
|
|
1363
|
+
type DirectionFields = {
|
|
1364
|
+
readonly [K in DirectionKey]?: string | readonly string[];
|
|
1365
|
+
};
|
|
1366
|
+
/**
|
|
1367
|
+
* Table order — THE canonical fold order. Exported so a client's "will inject
|
|
1368
|
+
* into prompt" preview folds in the exact order the server does instead of
|
|
1369
|
+
* re-deriving one.
|
|
1370
|
+
*/
|
|
1371
|
+
declare const DIRECTION_KEYS: ReadonlyArray<DirectionKey>;
|
|
1372
|
+
/** Verbosity for a whole fold, or split per family. */
|
|
1373
|
+
type DirectionHintMode = PickerHintMode | {
|
|
1374
|
+
readonly look: PickerHintMode;
|
|
1375
|
+
readonly motion: PickerHintMode;
|
|
1376
|
+
};
|
|
1377
|
+
/** Image policy: full clause for every dimension (today's behavior). */
|
|
1378
|
+
declare const IMAGE_HINT_MODE_DEFAULT: DirectionHintMode;
|
|
1379
|
+
/** Video policy: full look clauses, compact motion terms. */
|
|
1380
|
+
declare const VIDEO_HINT_MODE_DEFAULT: DirectionHintMode;
|
|
1381
|
+
declare function modeForFamily(mode: DirectionHintMode, family: DirectionFamily): PickerHintMode;
|
|
1382
|
+
/**
|
|
1383
|
+
* Wire tolerance ceiling for an array-valued direction key. The SEMANTIC cap is
|
|
1384
|
+
* the per-row render-time slice (`maxPicks`) — this is only the point past
|
|
1385
|
+
* which a body is malformed rather than merely over-generous.
|
|
1386
|
+
*/
|
|
1387
|
+
declare const DIRECTION_ARRAY_CEILING = 8;
|
|
1388
|
+
/**
|
|
1389
|
+
* Tolerance ceiling for the LENGTH of a single direction id. Catalog ids are
|
|
1390
|
+
* short slugs (<= ~40 chars); 100 is generous and closes an otherwise unbounded
|
|
1391
|
+
* string channel that lands verbatim in `jobs.input_data`.
|
|
1392
|
+
*
|
|
1393
|
+
* ONE literal for BOTH doors into the fold — the route's `directionSchema`
|
|
1394
|
+
* (`backend/src/lib/direction-schema.ts`) and the persisted-node reader
|
|
1395
|
+
* (`read-node-direction.ts`) — so the wire and the canvas cannot start
|
|
1396
|
+
* disagreeing about which strings are ids at all.
|
|
1397
|
+
*/
|
|
1398
|
+
declare const DIRECTION_ID_MAX_CHARS = 100;
|
|
1399
|
+
/** The rows a given generation stage folds, in table order. */
|
|
1400
|
+
declare function directionFieldsForSurface(surface: "image" | "video"): ReadonlyArray<DirectionFieldSpec>;
|
|
1401
|
+
/**
|
|
1402
|
+
* Every clause the `direction` channel injects, in canonical table order.
|
|
1403
|
+
*
|
|
1404
|
+
* Iterates the TABLE (never the caller's object), so unknown wire keys are
|
|
1405
|
+
* ignored, the order is platform-owned, and off-surface dimensions are inert.
|
|
1406
|
+
* Unknown IDS are silently skipped too — every `get*PromptHint` returns `""` on
|
|
1407
|
+
* a miss, so a retired or pack-only id contributes no clause rather than a 400.
|
|
1408
|
+
*
|
|
1409
|
+
* DEDUPE: the result is de-duplicated by exact clause string, FIRST OCCURRENCE
|
|
1410
|
+
* WINS (order-preserving). This is what lets the five legacy whole-catalog keys
|
|
1411
|
+
* (`framingId`, `lightingId`, …) coexist with their canonical counterparts
|
|
1412
|
+
* without an alias table: a caller sending `framingId` and `shotSize` with the
|
|
1413
|
+
* SAME id emits the clause once, while `lightingId: "golden-hour"` alongside
|
|
1414
|
+
* `lightingStyle: "rembrandt"` correctly emits BOTH (they are different ids in
|
|
1415
|
+
* the same catalog — an alias table would have wrongly suppressed one).
|
|
1416
|
+
* A caller sending two DIFFERENT ids for the same dimension gets both clauses,
|
|
1417
|
+
* exactly as two wired picker nodes of one family behave today.
|
|
1418
|
+
*
|
|
1419
|
+
* Exported so a client's "will inject into prompt" preview renders the exact
|
|
1420
|
+
* server output instead of re-implementing the fold.
|
|
1421
|
+
*/
|
|
1422
|
+
declare function renderDirectionHints(direction: DirectionFields | undefined, opts: {
|
|
1423
|
+
surface: "image" | "video";
|
|
1424
|
+
mode?: DirectionHintMode;
|
|
1425
|
+
}): string[];
|
|
1426
|
+
|
|
1427
|
+
/**
|
|
1428
|
+
* The measured hint join, shared by the image (`composePromptText`) and video
|
|
1429
|
+
* (`composeVideoPromptText`) composers so the two can never drift.
|
|
1008
1430
|
*
|
|
1009
|
-
*
|
|
1010
|
-
*
|
|
1011
|
-
*
|
|
1012
|
-
*
|
|
1431
|
+
* EXACT NO-OP: zero hints → the user's prompt back VERBATIM AND UNTRIMMED (the
|
|
1432
|
+
* platform-caller byte-parity contract — the old platform path passed the
|
|
1433
|
+
* prompt straight to `buildImagePrompt`, which never trims, so trimming here
|
|
1434
|
+
* would change the assembled prompt and the recorded `jobs.input_data`
|
|
1435
|
+
* byte-for-byte). With hints → trim the body so the join reads cleanly
|
|
1436
|
+
* ("prompt. hint", not "prompt . hint"), and drop a blank body so the result
|
|
1437
|
+
* never starts with ". ".
|
|
1013
1438
|
*
|
|
1014
|
-
*
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
*
|
|
1439
|
+
* Never mutates its inputs.
|
|
1440
|
+
*/
|
|
1441
|
+
/** The measured separator between the user's prompt and each folded hint. */
|
|
1442
|
+
declare const PROMPT_HINT_SEPARATOR = ". ";
|
|
1443
|
+
/**
|
|
1444
|
+
* Join a user prompt with its folded hint clauses.
|
|
1020
1445
|
*
|
|
1021
|
-
*
|
|
1022
|
-
*
|
|
1023
|
-
*
|
|
1024
|
-
*
|
|
1025
|
-
* `@audio_N` (the legacy form was `Image N`) — all routed through the single
|
|
1026
|
-
* `REF_BINDING` swap-point below. The structural strings ("Use these
|
|
1027
|
-
* characters:", the bullet layout, "… is the same subject as …") are otherwise
|
|
1028
|
-
* unchanged.
|
|
1446
|
+
* The trailing `.filter((p) => p.length > 0)` on the join array is
|
|
1447
|
+
* parity-critical — do NOT remove it as "redundant": `hints` arrives
|
|
1448
|
+
* pre-filtered but `userPrompt` does not, so a blank user prompt would
|
|
1449
|
+
* otherwise make the result start with ". ".
|
|
1029
1450
|
*/
|
|
1451
|
+
declare function joinPromptHints(userPrompt: string, hints: readonly string[]): string;
|
|
1030
1452
|
|
|
1453
|
+
/**
|
|
1454
|
+
* The reference-binding surface string — `@image_N` / `@video_N` / `@audio_N`
|
|
1455
|
+
* — and the one identity sentence built on it. Split out of
|
|
1456
|
+
* `video-reference-resolver.ts` so the id-addressed token resolver
|
|
1457
|
+
* (`ref-id-tokens.ts`) can bind through the same arrows without a module
|
|
1458
|
+
* cycle; the resolver re-exports both, so importers are unaffected.
|
|
1459
|
+
*/
|
|
1031
1460
|
/**
|
|
1032
1461
|
* The SINGLE swap-point for the reference-binding surface-string (design D1/D7).
|
|
1033
1462
|
*
|
|
@@ -1059,6 +1488,89 @@ declare const REF_BINDING: {
|
|
|
1059
1488
|
readonly ordinal: (n: number) => string;
|
|
1060
1489
|
readonly frame: (n: number, role: "opening" | "closing") => string;
|
|
1061
1490
|
};
|
|
1491
|
+
|
|
1492
|
+
/**
|
|
1493
|
+
* `{ref:<id>}` / `{ref:<id>:<label>}` — id-addressed reference tokens.
|
|
1494
|
+
*
|
|
1495
|
+
* The API/Studio form of the positional `{image:N}` token: the client names a
|
|
1496
|
+
* reference by its OWN `connectedReferences[].id` and the platform substitutes
|
|
1497
|
+
* the `@image_N` seat after IT has done the numbering. Without it a client that
|
|
1498
|
+
* wanted the binding inline had to mirror the numbering walk client-side — a
|
|
1499
|
+
* duplicated rule that misbinds pictures the moment the walk changes.
|
|
1500
|
+
*
|
|
1501
|
+
* `resolveVideoReferenceCore` builds the `RefIdTokenContext` DURING its walk
|
|
1502
|
+
* and calls `resolveRefIdTokens` before the `referenceOrder` reorder (so the
|
|
1503
|
+
* binding follows the reference to its final seat); the video routes call it
|
|
1504
|
+
* standalone on their no-image-reference early return (nothing seated, so
|
|
1505
|
+
* every token degrades).
|
|
1506
|
+
*/
|
|
1507
|
+
/** What `resolveRefIdTokens` resolves against — the numbering walk's output. */
|
|
1508
|
+
interface RefIdTokenContext {
|
|
1509
|
+
/** Reference id → the 1-based `@image_N` seat the walk gave it. */
|
|
1510
|
+
readonly slotById: ReadonlyMap<string, number>;
|
|
1511
|
+
/** Reference id → display name, the degrade target of a token that cannot bind. */
|
|
1512
|
+
readonly nameById: ReadonlyMap<string, string>;
|
|
1513
|
+
/**
|
|
1514
|
+
* How many image references actually ship — the same range gate `{image:N}`
|
|
1515
|
+
* uses. A seat past it (a capped-out or duplicate-URL ref) must not bind.
|
|
1516
|
+
*/
|
|
1517
|
+
readonly imageCount: number;
|
|
1518
|
+
}
|
|
1519
|
+
/**
|
|
1520
|
+
* Rewrite id-addressed reference tokens into the `@image_N` binding of the
|
|
1521
|
+
* reference the caller sent under that id.
|
|
1522
|
+
*
|
|
1523
|
+
* Ids are matched by IDENTITY against the known ids (seated or named), never
|
|
1524
|
+
* parsed by character class: the whole content is tried as an id first (the
|
|
1525
|
+
* longest reading — an id may itself end in something label-shaped), then
|
|
1526
|
+
* `<id>:<label>` split at the last colon, then the token is unknown. The label
|
|
1527
|
+
* class is the one `REFERENCE_TOKEN_RE` uses. An id containing `{`, `}`, an
|
|
1528
|
+
* `@name:N` mention or a `{image:N}` token is unsupported (the mention pass
|
|
1529
|
+
* runs first and would rewrite it; a brace ends the token).
|
|
1530
|
+
*
|
|
1531
|
+
* Per token:
|
|
1532
|
+
* - id seated in range → `REF_BINDING.image(label, N)` when labeled, else the
|
|
1533
|
+
* bare `REF_BINDING.ordinal(N)` — exactly what `{image:N[:label]}` emits.
|
|
1534
|
+
* - otherwise (unknown id, ref skipped by the walk, capped out, or no image
|
|
1535
|
+
* references at all) → the label if given, else the ref's display name if
|
|
1536
|
+
* the id is known, else "". A token never ships raw — a malformed one is
|
|
1537
|
+
* dropped by the last-resort net.
|
|
1538
|
+
*
|
|
1539
|
+
* No whitespace tidy here: every caller runs `resolveReferenceTokens` after
|
|
1540
|
+
* this (the core does at every return), and that collapses the gap a dropped
|
|
1541
|
+
* token leaves. Returns the input untouched when it carries no `{ref:` at all.
|
|
1542
|
+
*/
|
|
1543
|
+
declare function resolveRefIdTokens(prompt: string | undefined, ctx: RefIdTokenContext): string | undefined;
|
|
1544
|
+
|
|
1545
|
+
/**
|
|
1546
|
+
* Shared video-reference resolver CORE — the ONE pure implementation of the
|
|
1547
|
+
* video-prompt `@-mention` + canonical-fallback + extras assembly that BOTH the
|
|
1548
|
+
* frontend (`frontend/src/lib/video-prompt-assembly.ts`) and backend
|
|
1549
|
+
* (`backend/src/services/workflow-engine/payload-builder.ts`) resolvers delegate
|
|
1550
|
+
* to.
|
|
1551
|
+
*
|
|
1552
|
+
* Historically the FE and BE each hand-rolled a byte-for-byte copy of this logic
|
|
1553
|
+
* (they had to stay in lock-step or single-node FE runs and orchestrator runs
|
|
1554
|
+
* would diverge). This module is the lift-and-shift of the FRONTEND resolver's
|
|
1555
|
+
* post-expansion body into one place so there is a single source of truth.
|
|
1556
|
+
*
|
|
1557
|
+
* Purity contract: NO FE/BE-only dependencies. The caller is responsible for the
|
|
1558
|
+
* layer-specific work BEFORE calling in:
|
|
1559
|
+
* - expanding wired Character upstreams into `ConnectedReference[]`
|
|
1560
|
+
* (`wiredCharRefs`), and
|
|
1561
|
+
* - looking up an extra-ref's character metadata by slug
|
|
1562
|
+
* (`lookupCharacterBySlug` — FE: `nodes.find(...)`, BE: `buildCtx`).
|
|
1563
|
+
*
|
|
1564
|
+
* Behavior-preserving when first extracted (the FE resolver's post-expansion
|
|
1565
|
+
* body was lifted verbatim). The ONE intended output change since is the
|
|
1566
|
+
* reference-binding surface string: the per-image subject phrasing, the bullet
|
|
1567
|
+
* ordinals, and the frame directive now emit `@image_N` / `@video_N` /
|
|
1568
|
+
* `@audio_N` (the legacy form was `Image N`) — all routed through the single
|
|
1569
|
+
* `REF_BINDING` swap-point below. The structural strings ("Use these
|
|
1570
|
+
* characters:", the bullet layout, "… is the same subject as …") are otherwise
|
|
1571
|
+
* unchanged.
|
|
1572
|
+
*/
|
|
1573
|
+
|
|
1062
1574
|
/**
|
|
1063
1575
|
* Positional reference counts the editor tokens are resolved against — how many
|
|
1064
1576
|
* image / video / audio references are wired into the node, in worker-payload
|
|
@@ -1102,6 +1614,13 @@ declare function resolveReferenceTokens(prompt: string | undefined, counts: Refe
|
|
|
1102
1614
|
* frontend `ExtraRef` / backend extras: only the fields this core reads.
|
|
1103
1615
|
*/
|
|
1104
1616
|
interface VideoExtraRef {
|
|
1617
|
+
/**
|
|
1618
|
+
* The caller's own id for this reference (`connectedReferences[].id` on the
|
|
1619
|
+
* route, `extraRefs[].id` on the canvas) — what a `{ref:<id>}` token in the
|
|
1620
|
+
* prompt names. Slot-map only: the reorder's tile id stays `wired:<url>`.
|
|
1621
|
+
* Absent → the extra cannot be addressed by id (it still numbers normally).
|
|
1622
|
+
*/
|
|
1623
|
+
id?: string;
|
|
1105
1624
|
url: string;
|
|
1106
1625
|
description?: string;
|
|
1107
1626
|
characterSlug?: string;
|
|
@@ -1207,6 +1726,15 @@ interface ResolveVideoReferenceCoreArgs {
|
|
|
1207
1726
|
* Wired in Phase B Tasks 2-3.
|
|
1208
1727
|
*/
|
|
1209
1728
|
hybridRoles?: boolean;
|
|
1729
|
+
/**
|
|
1730
|
+
* Display names for EVERY reference the caller knows by id — including the
|
|
1731
|
+
* ones it did NOT hand to this walk (the route caps `connectedReferences` to
|
|
1732
|
+
* the provider's image budget before calling in). A `{ref:<id>}` token that
|
|
1733
|
+
* cannot bind degrades to `label ?? refNamesById[id] ?? ""`, so a capped-out
|
|
1734
|
+
* or skipped reference keeps its name in the prose instead of vanishing.
|
|
1735
|
+
* The wired character refs' `defaultName`s are known without this.
|
|
1736
|
+
*/
|
|
1737
|
+
refNamesById?: ReadonlyMap<string, string>;
|
|
1210
1738
|
}
|
|
1211
1739
|
/**
|
|
1212
1740
|
* Resolve `@kira:N` / `@kira:N:smile` mentions in a video-node prompt against
|
|
@@ -1377,13 +1905,17 @@ declare function assembleSunoInput(input: AssembleSunoInput): AssembleSunoResult
|
|
|
1377
1905
|
* This wrapper collapses them into one.
|
|
1378
1906
|
*
|
|
1379
1907
|
* THE NO-OP CONTRACT (load-bearing — the platform-caller parity relies on it):
|
|
1380
|
-
*
|
|
1381
|
-
*
|
|
1382
|
-
*
|
|
1383
|
-
*
|
|
1384
|
-
*
|
|
1385
|
-
*
|
|
1386
|
-
*
|
|
1908
|
+
* a node that carries NO stored `direction` / `structured` (every workflow
|
|
1909
|
+
* authored before the canvas honored them) still reaches here with both absent,
|
|
1910
|
+
* and `composePromptText` MUST return the caller's `userPrompt` byte-for-byte
|
|
1911
|
+
* unchanged, so the wrapper degenerates to exactly the `buildImagePrompt(...)`
|
|
1912
|
+
* call those sites made before. The platform callers (`execute-node` /
|
|
1913
|
+
* `payload-builder`) compose their prompt from the canvas GRAPH themselves and
|
|
1914
|
+
* ALSO forward a node's STORED `direction` / `structured` when it carries them
|
|
1915
|
+
* (`readDirectionFields` / `readStructuredFields`); those nodes get the id-hint
|
|
1916
|
+
* composition on top, ADDITIVE to the graph-wired cinematography hints the
|
|
1917
|
+
* caller already folded into `userPrompt`. Studio and the MCP route supply the
|
|
1918
|
+
* same two levers directly.
|
|
1387
1919
|
*
|
|
1388
1920
|
* THE EMPTY-CHECK FLAG (also load-bearing for parity): `execute-node` rejects a
|
|
1389
1921
|
* truly-empty assembled prompt (its "type one, mention a character, or connect
|
|
@@ -1393,21 +1925,6 @@ declare function assembleSunoInput(input: AssembleSunoInput): AssembleSunoResult
|
|
|
1393
1925
|
* guard (frontend, Studio, route) pass `throwOnEmpty: true`.
|
|
1394
1926
|
*/
|
|
1395
1927
|
|
|
1396
|
-
/**
|
|
1397
|
-
* Flat cinematic-direction ids the Studio framing UI (and the MCP route)
|
|
1398
|
-
* expose — all optional. Promoted here from Studio's `assembly.ts` so the
|
|
1399
|
-
* id → hint composition lives in one place. The platform callers pass none of
|
|
1400
|
-
* these (they fold their hints from the graph into `userPrompt` themselves).
|
|
1401
|
-
*/
|
|
1402
|
-
interface DirectionFields {
|
|
1403
|
-
/** Shot Type — the FRAMINGS shot-size/coverage/composition/vantage dimensions. */
|
|
1404
|
-
framingId?: string;
|
|
1405
|
-
/** Angle — the FRAMINGS angle dimension (separate pill, so it can coexist with Shot Type). */
|
|
1406
|
-
framingAngleId?: string;
|
|
1407
|
-
lightingId?: string;
|
|
1408
|
-
lensId?: string;
|
|
1409
|
-
cameraFormatId?: string;
|
|
1410
|
-
}
|
|
1411
1928
|
/**
|
|
1412
1929
|
* Input to `assembleImageInput`. A faithful SUPERSET of what the two platform
|
|
1413
1930
|
* callers pass to `buildImagePrompt` today (so they can route through this
|
|
@@ -1427,8 +1944,9 @@ interface AssembleImageInput {
|
|
|
1427
1944
|
connectedReferences?: ConnectedReference[];
|
|
1428
1945
|
/**
|
|
1429
1946
|
* Flat cinematic-direction ids → folded into the prompt as hints. Studio /
|
|
1430
|
-
* MCP-route use
|
|
1431
|
-
*
|
|
1947
|
+
* MCP-route use, and the platform callers' narrow-read of a node's STORED
|
|
1948
|
+
* `data.direction`; absent on a node that carries none (so `composePromptText`
|
|
1949
|
+
* is a no-op for it and the result is byte-identical to today).
|
|
1432
1950
|
*/
|
|
1433
1951
|
direction?: DirectionFields;
|
|
1434
1952
|
/** Path-1 structured fields → composed fragment appended to the prompt. */
|
|
@@ -1496,6 +2014,134 @@ interface AssembleImageInput {
|
|
|
1496
2014
|
*/
|
|
1497
2015
|
declare function assembleImageInput(input: AssembleImageInput): BuildImagePromptResult;
|
|
1498
2016
|
|
|
2017
|
+
/**
|
|
2018
|
+
* `composeVideoPromptText` — the video twin of `assemble-image-input.ts`'s
|
|
2019
|
+
* `composePromptText`: fold cinematic-direction picker IDS into the prompt BODY,
|
|
2020
|
+
* server-side, at the model call.
|
|
2021
|
+
*
|
|
2022
|
+
* WHY THIS EXISTS: `/v1/generate-video` had no structured direction channel, so
|
|
2023
|
+
* every client baked the hint TEXT itself. A copied scene then carried stale
|
|
2024
|
+
* catalog wording forever, a re-generate double-baked it, and each client
|
|
2025
|
+
* re-implemented the fold with its own separator and its own order. The wire
|
|
2026
|
+
* now carries ids; the platform renders the clauses.
|
|
2027
|
+
*
|
|
2028
|
+
* WHERE IT RUNS (load-bearing): on the prompt BODY, BEFORE
|
|
2029
|
+
* `resolveVideoReferenceCore`. That resolver FRAMES the body — legacy prepends
|
|
2030
|
+
* its `Use these characters:` block, hybrid prepends the lock lines and APPENDS
|
|
2031
|
+
* the canonical role phrases and extras. Folding afterwards would push the
|
|
2032
|
+
* scene/look description PAST the identity directives, a worse version of the
|
|
2033
|
+
* bug this channel exists to fix. The image side is structurally identical
|
|
2034
|
+
* (`assembleImageInput` = `composePromptText` → `buildImagePrompt`).
|
|
2035
|
+
*
|
|
2036
|
+
* THE VERBOSITY POLICY LIVES HERE, NOT IN THE CLIENT: motion dimensions render
|
|
2037
|
+
* their compact professional term, look dimensions their full clause
|
|
2038
|
+
* (`VIDEO_HINT_MODE_DEFAULT`, resolved per row's `family` by the registry).
|
|
2039
|
+
* It is a threaded PARAMETER with a pure default — never deployment state:
|
|
2040
|
+
* `__tests__/content-free-contract.test.ts` hard-fails any environment read
|
|
2041
|
+
* under `packages/prompts/src`, and this module has nothing to read anyway.
|
|
2042
|
+
*
|
|
2043
|
+
* EXACT NO-OP CONTRACT: with no direction and no structured fields the caller's
|
|
2044
|
+
* `userPrompt` comes back VERBATIM AND UNTRIMMED — `undefined` included, since
|
|
2045
|
+
* a video prompt is optional on the route. That is what keeps every existing
|
|
2046
|
+
* caller byte-identical (the "backward-compatible: no connectedReferences →
|
|
2047
|
+
* prompt + flat refs pass through unchanged" oracle in
|
|
2048
|
+
* `backend/src/routes/__tests__/generate-video.test.ts`, restated locally in
|
|
2049
|
+
* `__tests__/assemble-video-input.test.ts`).
|
|
2050
|
+
*
|
|
2051
|
+
* WHAT IS DELIBERATELY NOT HERE: the dimension table, the fold order, the
|
|
2052
|
+
* dedupe and the surface filter all live in `direction-registry.ts` — ONE
|
|
2053
|
+
* renderer serves both surfaces, so the image and video folds cannot drift.
|
|
2054
|
+
* Clients render their "will inject into prompt" preview by importing
|
|
2055
|
+
* `renderDirectionHints` + `joinPromptHints` directly.
|
|
2056
|
+
*/
|
|
2057
|
+
|
|
2058
|
+
/**
|
|
2059
|
+
* Fold a video run's cinematic-direction ids (and optional structured fields)
|
|
2060
|
+
* into its prompt body.
|
|
2061
|
+
*
|
|
2062
|
+
* The direction hints land first, in the registry's canonical table order
|
|
2063
|
+
* (camera motion leads), and the structured fragment lands LAST — the same
|
|
2064
|
+
* ordering `composePromptText` uses for stills.
|
|
2065
|
+
*
|
|
2066
|
+
* @param userPrompt The user's prompt. Optional: an image-to-video run may
|
|
2067
|
+
* legitimately have none, and it is returned as-is when nothing folds.
|
|
2068
|
+
* @param direction Flat catalog ids. Unknown keys, off-surface keys (an
|
|
2069
|
+
* image-only dimension sent to a video run) and unknown ids all contribute
|
|
2070
|
+
* nothing — never a throw.
|
|
2071
|
+
* @param structured Path-1 structured fields. Not a `/v1/generate-video` wire
|
|
2072
|
+
* field today; the canvas orchestrator passes it directly.
|
|
2073
|
+
* @param opts.hintMode Override the verbosity policy (a whole-fold
|
|
2074
|
+
* `PickerHintMode`, or a `{ look, motion }` split).
|
|
2075
|
+
*/
|
|
2076
|
+
declare function composeVideoPromptText(userPrompt: string | undefined, direction: DirectionFields | undefined, structured?: StructuredPromptFields, opts?: {
|
|
2077
|
+
readonly hintMode?: DirectionHintMode;
|
|
2078
|
+
}): string | undefined;
|
|
2079
|
+
|
|
2080
|
+
/**
|
|
2081
|
+
* Narrow readers turning UNTRUSTED persisted node data (`workflows.nodes`
|
|
2082
|
+
* JSONB — import, MCP write, node preset, a Studio-emitted graph) into the
|
|
2083
|
+
* typed `direction` / `structured` levers `assembleImageInput` accepts.
|
|
2084
|
+
* `buildPayload` has no zod and workflow writes are
|
|
2085
|
+
* `z.record(z.string(), z.unknown())`, so this blob may have been written years
|
|
2086
|
+
* ago by any client.
|
|
2087
|
+
*
|
|
2088
|
+
* Used by ALL THREE image-assembly sites so what the canvas accepts cannot
|
|
2089
|
+
* drift between them: the frontend single-node executor (`execute-node.ts`),
|
|
2090
|
+
* the orchestrator (`payload-builder.ts`), and the config-panel final-prompt
|
|
2091
|
+
* preview (`build-image-assemble-input.ts`).
|
|
2092
|
+
*
|
|
2093
|
+
* `readDirectionFields` is DERIVED FROM `DIRECTION_FIELDS`, never a hand list:
|
|
2094
|
+
* a dimension added to the registry is honored here by construction, so the
|
|
2095
|
+
* reader can never silently drop a key the wire schema and the renderer both
|
|
2096
|
+
* know about. Anything unrecognised is DROPPED, never thrown on — a malformed
|
|
2097
|
+
* blob must not fail a canvas run, and an unknown catalog ID already degrades
|
|
2098
|
+
* to `""` inside each `get*PromptHint`, so this validates SHAPE only.
|
|
2099
|
+
*
|
|
2100
|
+
* BOUNDS MATCH THE WIRE SCHEMA where both exist, by SHARED CONSTANT:
|
|
2101
|
+
* `DIRECTION_ID_MAX_CHARS` and `DIRECTION_ARRAY_CEILING` are the same two
|
|
2102
|
+
* literals the `generate-image` route's `directionSchema` enforces, imported
|
|
2103
|
+
* from the registry rather than re-typed here — a body the route accepts and a
|
|
2104
|
+
* node the canvas re-runs must not disagree about which strings are ids.
|
|
2105
|
+
*
|
|
2106
|
+
* DELIBERATELY STRICTER THAN THE WIRE SCHEMA on `structured` values: the
|
|
2107
|
+
* route's `structuredPromptFieldsSchema` declares every field as a bare
|
|
2108
|
+
* `z.string().optional()` (unbounded), while `MAX_STRUCTURED_VALUE_CHARS` below
|
|
2109
|
+
* bounds them at 200. Do not "fix" that asymmetry by loosening HERE — this
|
|
2110
|
+
* reads a blob any client may have written years ago, and the values land
|
|
2111
|
+
* verbatim in `jobs.input_data.prompt`. Tightening the ROUTE instead would be a
|
|
2112
|
+
* new 400 on currently-accepted input, so a >200-char structured value stored
|
|
2113
|
+
* on a node is dropped on a canvas run while `POST /v1/generate-image` still
|
|
2114
|
+
* renders it. That is the one known divergence; it is bounded to a field the
|
|
2115
|
+
* canvas UI never writes that long.
|
|
2116
|
+
*
|
|
2117
|
+
* RETURNS `undefined`, NEVER `{}`: an empty object would still be a *defined*
|
|
2118
|
+
* `direction`, and the call sites' `...(x !== undefined ? { x } : {})` spread
|
|
2119
|
+
* would then hand `assembleImageInput` a defined-but-empty lever. Returning
|
|
2120
|
+
* `undefined` keeps that spread honest and the exact no-op branch taken.
|
|
2121
|
+
*/
|
|
2122
|
+
|
|
2123
|
+
/**
|
|
2124
|
+
* Read a node's stored cinematic-direction ids. Accepts a single id OR an array
|
|
2125
|
+
* on every key (multi-pick dimensions carry arrays; a single-pick key may
|
|
2126
|
+
* legitimately carry one).
|
|
2127
|
+
*
|
|
2128
|
+
* The SEMANTIC per-dimension cap stays the renderer's slice (`maxPicks`) — this
|
|
2129
|
+
* reader does not know a row's pick budget and must not guess it. But it DOES
|
|
2130
|
+
* bound cardinality at `DIRECTION_ARRAY_CEILING`, the same ceiling the wire
|
|
2131
|
+
* schema enforces: the value is untrusted persisted JSONB (a node blob is
|
|
2132
|
+
* validated only as `z.record(z.string(), z.unknown())` on write), and handing
|
|
2133
|
+
* an unbounded array to `renderDirectionHints` would put an `includes`-dedupe
|
|
2134
|
+
* scan in front of that slice. Keeping the FIRST `DIRECTION_ARRAY_CEILING`
|
|
2135
|
+
* survivors is what the wire door already does to the same input.
|
|
2136
|
+
*
|
|
2137
|
+
* Junk is filtered BEFORE the cap, so valid ids sitting behind malformed
|
|
2138
|
+
* entries survive rather than being crowded out by them.
|
|
2139
|
+
*/
|
|
2140
|
+
declare function readDirectionFields(value: unknown): DirectionFields | undefined;
|
|
2141
|
+
/** Read a node's stored Path-1 structured prompt fields. Same drop-never-throw
|
|
2142
|
+
* and `undefined`-never-`{}` contract as `readDirectionFields`. */
|
|
2143
|
+
declare function readStructuredFields(value: unknown): StructuredPromptFields | undefined;
|
|
2144
|
+
|
|
1499
2145
|
type Seedance2Mode = "first-frame" | "first-last-frame" | "reference";
|
|
1500
2146
|
interface Seedance2InputsArgs {
|
|
1501
2147
|
/** The generation prompt — used ONLY to detect an existing first-frame
|
|
@@ -3014,9 +3660,23 @@ interface CharacterFx {
|
|
|
3014
3660
|
/** Optional authored compact term (see `term.ts` for the convention). */
|
|
3015
3661
|
readonly term?: string;
|
|
3016
3662
|
}
|
|
3017
|
-
|
|
3018
|
-
|
|
3019
|
-
|
|
3663
|
+
/**
|
|
3664
|
+
* The three timing scales, each derived from the catalog that defines it (see
|
|
3665
|
+
* `CHARACTER_FX_POSITIONS` and friends below).
|
|
3666
|
+
*
|
|
3667
|
+
* The direction matters. These used to be hand-written unions with the clause
|
|
3668
|
+
* tables written out separately beside them, so the two could disagree: add a
|
|
3669
|
+
* step to the union, forget the clause, and the composer indexed a missing key
|
|
3670
|
+
* — pushing `undefined` into the parts list, which `join(", ")` renders as a
|
|
3671
|
+
* dangling separator on a prompt that then ships to a provider with the user's
|
|
3672
|
+
* chosen parameter silently dropped. Deriving the union FROM the catalog makes
|
|
3673
|
+
* that unrepresentable: one array is the source of the type, the option list
|
|
3674
|
+
* the API serves, and the clause table, so a new step reaches all three or
|
|
3675
|
+
* none. The exact id sets are pinned by `character-fx-timing-catalogs.test.ts`.
|
|
3676
|
+
*/
|
|
3677
|
+
type CharacterFxPosition = (typeof CHARACTER_FX_POSITIONS)[number]["id"];
|
|
3678
|
+
type CharacterFxDuration = (typeof CHARACTER_FX_DURATIONS)[number]["id"];
|
|
3679
|
+
type CharacterFxIntensity = (typeof CHARACTER_FX_INTENSITIES)[number]["id"];
|
|
3020
3680
|
interface CharacterFxTiming {
|
|
3021
3681
|
position?: CharacterFxPosition;
|
|
3022
3682
|
duration?: CharacterFxDuration;
|
|
@@ -3037,6 +3697,125 @@ declare function getCharacterFxPromptHint(id: string | undefined | null): string
|
|
|
3037
3697
|
*/
|
|
3038
3698
|
declare function getCharacterFxTerm(id: string | undefined | null): string;
|
|
3039
3699
|
declare const CHARACTER_FX_IDS: ReadonlyArray<string>;
|
|
3700
|
+
/**
|
|
3701
|
+
* The character-fx node's three timing parameters, as catalogs.
|
|
3702
|
+
*
|
|
3703
|
+
* Graded scales in the standard option shape, so a consumer that can only send
|
|
3704
|
+
* ids (Studio, the SDK, MCP) can offer Position / Duration / Intensity without
|
|
3705
|
+
* composing prompt text of its own. `auto` is the no-op head of each scale: an
|
|
3706
|
+
* empty `promptHint`, so an unset parameter contributes nothing and the model
|
|
3707
|
+
* is left to decide, exactly as before these were enumerable.
|
|
3708
|
+
*
|
|
3709
|
+
* These are NOT the transition node's scales, even though the ids match. The
|
|
3710
|
+
* wording is deliberately different — a transition OCCURS and SPANS the clip,
|
|
3711
|
+
* an effect MANIFESTS and PERSISTS — and the three intensity clauses coincide
|
|
3712
|
+
* by accident, not by shared definition. Keep the two catalogs separate; do
|
|
3713
|
+
* not fold one into the other.
|
|
3714
|
+
*
|
|
3715
|
+
* `POSITION_CLAUSES` / `DURATION_CLAUSES` / `INTENSITY_CLAUSES` below are
|
|
3716
|
+
* DERIVED from these arrays, so the clause the composer injects and the hint
|
|
3717
|
+
* the catalog advertises are the same string by construction and cannot drift.
|
|
3718
|
+
*/
|
|
3719
|
+
interface CharacterFxTimingOption {
|
|
3720
|
+
readonly id: string;
|
|
3721
|
+
readonly label: string;
|
|
3722
|
+
readonly description: string;
|
|
3723
|
+
readonly promptHint: string;
|
|
3724
|
+
readonly term?: string;
|
|
3725
|
+
}
|
|
3726
|
+
declare const CHARACTER_FX_POSITIONS: readonly [{
|
|
3727
|
+
readonly id: "auto";
|
|
3728
|
+
readonly label: "Auto";
|
|
3729
|
+
readonly description: "Let the model place the effect";
|
|
3730
|
+
readonly promptHint: "";
|
|
3731
|
+
readonly term: "";
|
|
3732
|
+
}, {
|
|
3733
|
+
readonly id: "start";
|
|
3734
|
+
readonly label: "Start";
|
|
3735
|
+
readonly description: "Occurs at the opening of the clip";
|
|
3736
|
+
readonly promptHint: "the effect occurs at the opening of the clip";
|
|
3737
|
+
readonly term: "at the opening of the clip";
|
|
3738
|
+
}, {
|
|
3739
|
+
readonly id: "middle";
|
|
3740
|
+
readonly label: "Middle";
|
|
3741
|
+
readonly description: "Occurs in the middle of the clip";
|
|
3742
|
+
readonly promptHint: "the effect occurs in the middle of the clip";
|
|
3743
|
+
readonly term: "mid-clip";
|
|
3744
|
+
}, {
|
|
3745
|
+
readonly id: "end";
|
|
3746
|
+
readonly label: "End";
|
|
3747
|
+
readonly description: "Occurs at the end of the clip";
|
|
3748
|
+
readonly promptHint: "the effect occurs at the end of the clip";
|
|
3749
|
+
readonly term: "at the end of the clip";
|
|
3750
|
+
}, {
|
|
3751
|
+
readonly id: "full";
|
|
3752
|
+
readonly label: "Full";
|
|
3753
|
+
readonly description: "Persists for the entire clip";
|
|
3754
|
+
readonly promptHint: "the effect persists for the entire clip";
|
|
3755
|
+
readonly term: "persisting for the whole clip";
|
|
3756
|
+
}];
|
|
3757
|
+
declare const CHARACTER_FX_DURATIONS: readonly [{
|
|
3758
|
+
readonly id: "auto";
|
|
3759
|
+
readonly label: "Auto";
|
|
3760
|
+
readonly description: "Let the model time the effect";
|
|
3761
|
+
readonly promptHint: "";
|
|
3762
|
+
readonly term: "";
|
|
3763
|
+
}, {
|
|
3764
|
+
readonly id: "instant";
|
|
3765
|
+
readonly label: "Instant";
|
|
3766
|
+
readonly description: "Manifests instantaneously";
|
|
3767
|
+
readonly promptHint: "manifesting instantaneously";
|
|
3768
|
+
readonly term: "manifesting instantly";
|
|
3769
|
+
}, {
|
|
3770
|
+
readonly id: "short";
|
|
3771
|
+
readonly label: "Short (~1s)";
|
|
3772
|
+
readonly description: "Manifests over approximately 1 second";
|
|
3773
|
+
readonly promptHint: "manifesting over approximately 1 second";
|
|
3774
|
+
readonly term: "manifesting over about 1 second";
|
|
3775
|
+
}, {
|
|
3776
|
+
readonly id: "medium";
|
|
3777
|
+
readonly label: "Medium (~2s)";
|
|
3778
|
+
readonly description: "Manifests over approximately 2 seconds";
|
|
3779
|
+
readonly promptHint: "manifesting over approximately 2 seconds";
|
|
3780
|
+
readonly term: "manifesting over about 2 seconds";
|
|
3781
|
+
}, {
|
|
3782
|
+
readonly id: "long";
|
|
3783
|
+
readonly label: "Long (~3s)";
|
|
3784
|
+
readonly description: "Manifests over approximately 3 seconds";
|
|
3785
|
+
readonly promptHint: "manifesting over approximately 3 seconds";
|
|
3786
|
+
readonly term: "manifesting over about 3 seconds";
|
|
3787
|
+
}];
|
|
3788
|
+
declare const CHARACTER_FX_INTENSITIES: readonly [{
|
|
3789
|
+
readonly id: "auto";
|
|
3790
|
+
readonly label: "Auto";
|
|
3791
|
+
readonly description: "Let the model judge the effect's energy";
|
|
3792
|
+
readonly promptHint: "";
|
|
3793
|
+
readonly term: "";
|
|
3794
|
+
}, {
|
|
3795
|
+
readonly id: "subtle";
|
|
3796
|
+
readonly label: "Subtle";
|
|
3797
|
+
readonly description: "Restrained, minimal flourish";
|
|
3798
|
+
readonly promptHint: "with subtle restrained energy and minimal flourish";
|
|
3799
|
+
readonly term: "subtly";
|
|
3800
|
+
}, {
|
|
3801
|
+
readonly id: "natural";
|
|
3802
|
+
readonly label: "Natural";
|
|
3803
|
+
readonly description: "Unhurried, unforced timing";
|
|
3804
|
+
readonly promptHint: "with natural unhurried timing";
|
|
3805
|
+
readonly term: "at a natural pace";
|
|
3806
|
+
}, {
|
|
3807
|
+
readonly id: "dynamic";
|
|
3808
|
+
readonly label: "Dynamic";
|
|
3809
|
+
readonly description: "Assertive, energetic";
|
|
3810
|
+
readonly promptHint: "with dynamic energy and assertive flourish";
|
|
3811
|
+
readonly term: "energetically";
|
|
3812
|
+
}, {
|
|
3813
|
+
readonly id: "crazy";
|
|
3814
|
+
readonly label: "Crazy";
|
|
3815
|
+
readonly description: "Extreme, wild, distorted";
|
|
3816
|
+
readonly promptHint: "with extreme exaggerated energy, wild flourishes, and dramatic distortion";
|
|
3817
|
+
readonly term: "wildly exaggerated";
|
|
3818
|
+
}];
|
|
3040
3819
|
/**
|
|
3041
3820
|
* Compose a character-fx prompt-hint sentence from an effect id (or array
|
|
3042
3821
|
* of 1-2 ids for multi-pick) plus target-ref display names (from upstream
|
|
@@ -5714,4 +6493,4 @@ declare function getPickerWiring(nodeType: string | undefined | null): PickerWir
|
|
|
5714
6493
|
*/
|
|
5715
6494
|
declare function buildSurroundFillPrompt(direction: SurroundDirection, userPrompt?: string): string;
|
|
5716
6495
|
|
|
5717
|
-
export { ACTION_FX, ACTION_FX_CATEGORY_LABELS, ACTION_FX_CATEGORY_ORDER, ACTION_FX_IDS, AESTHETICS, AESTHETIC_CATEGORY_LABELS, AESTHETIC_CATEGORY_ORDER, AESTHETIC_IDS, ALL_PICKER_WIRING, ANALYZABLE_PICKER_TYPES, ANGLE_LABELS, ASPECT_RATIO_LABELS, ATMOSPHERES, ATMOSPHERE_IDS, AUDIO_WIZARD_CATEGORIES, type ActionFx, type ActionFxCategory, type Aesthetic, type AestheticCategory, type AssembleImageInput, type AssembleSunoInput, type AssembleSunoResult, type Atmosphere, BACKDROPS, BACKDROP_CATEGORY_LABELS, BACKDROP_CATEGORY_ORDER, BACKDROP_IDS, BRAND_PRESETS, BRAND_PRESET_IDS, BRAND_PRESET_META, type Backdrop, type BackdropCategory, type BrandCasing, type BrandFonts, type BrandLogo, type BrandPalette, type BrandPresetId, type BrandPresetMeta, type BrandTokens, type BrandTypeSpec, type BuildImagePromptConfig, type BuildImagePromptResult, type BuildImagePromptSegmentsResult, CAMERA_FORMATS, CAMERA_FORMAT_IDS, CAMERA_MOTIONS, CAMERA_MOTION_CATEGORY_LABELS, CAMERA_MOTION_CATEGORY_ORDER, CAMERA_MOTION_IDS, CHARACTER_FX, CHARACTER_FX_CATEGORY_LABELS, CHARACTER_FX_CATEGORY_ORDER, CHARACTER_FX_IDS, CINEMATIC_LOOK_TAIL, COLOR_LOOKS, COLOR_LOOK_CATEGORY_LABELS, COLOR_LOOK_CATEGORY_ORDER, COLOR_LOOK_IDS, COMPOSITION_EFFECTS, COMPOSITION_EFFECT_IDS, type CameraFormat, type CameraMotion, type CameraMotionCategory, type CatalogPack, type CatalogPackMode, type CategorizedInstrument, type CharacterFx, type CharacterFxCategory, type CharacterFxDuration, type CharacterFxIntensity, type CharacterFxPosition, type CharacterFxTiming, type CharacterMeta, type CharacterMotionPromptInput, type CharacterPromptInput, type ColorLook, type ColorLookCategory, type CompositionEffect, type ComputeNodePromptArgs, type CreaturePromptInput, DEFAULT_IDENTITY_LOCK, DEFAULT_TEMPLATES, type DirectionFields, ERAS, ERA_CATEGORY_LABELS, ERA_CATEGORY_ORDER, ERA_IDS, EXPOSURE_CATEGORY_LABELS, EXPOSURE_CATEGORY_ORDER, EXPOSURE_FIELD_BY_CATEGORY, EXPOSURE_IDS, EXPOSURE_SETTINGS, type Era, type EraCategory, type ExposureCategory, type ExposureSettings, type ExposureValue, FACTORY_PRESETS, FACTORY_SNIPPETS, FILM_STILL_PREFIX, FRAMINGS, FRAMING_CATEGORY_LABELS, FRAMING_CATEGORY_ORDER, FRAMING_FIELD_BY_CATEGORY, FRAMING_IDS, type FacePromptInput, type FactoryPreset, type FactoryPresetGroup, type FactorySnippet, type Framing, type FramingCategory, type FramingValue, GAPS_SCHEMA, type GeminiOmniI2vInputsArgs, type GeminiOmniI2vInputsResult, HELD_PROPS, HELD_PROP_CATEGORY_LABELS, HELD_PROP_CATEGORY_ORDER, HELD_PROP_IDS, type HeldProp, type HeldPropCategory, IMAGE_REFERENCE_PROMPT_DOCTRINE, IMAGE_WIZARD_CATEGORIES, INSTRUMENTATION_DEFAULT_DATA, INSTRUMENTS, INSTRUMENT_CATEGORY_LABELS, INSTRUMENT_CATEGORY_ORDER, type IdentityLockMode, type ImageReferenceDoctrine, type InstrumentCategory, type InstrumentationEntry, LENSES, LENS_IDS, LIGHTINGS, LIGHTING_CATEGORY_LABELS, LIGHTING_CATEGORY_ORDER, LIGHTING_FIELD_BY_CATEGORY, LIGHTING_IDS, LLM_CHAT_WIZARD_CATEGORIES, LOOP_SUBJECTS, LOOP_SUBJECT_CATEGORY_LABELS, LOOP_SUBJECT_CATEGORY_ORDER, type Lens, type Lighting, type LightingCategory, type LightingValue, type LlmChatFieldArgs, type LocationMotionPromptInput, type LocationPromptInput, type LocationRefinePromptInput, type LoopSubject, type LoopSubjectCategory, MATERIALS, MATERIAL_CATEGORY_LABELS, MATERIAL_CATEGORY_ORDER, MATERIAL_IDS, MAX_SELECTED_BY_DIMENSION, MAX_SELECTED_BY_FRAMING_CATEGORY, MAX_SELECTED_BY_STYLING_DIMENSION, MOODS, MOOD_CATEGORY_LABELS, MOOD_CATEGORY_ORDER, MOOD_IDS, MOVEMENT_LABELS, MULTI_PICKER_WIRING, MUSIC_EMOTIONS, MUSIC_ENERGIES, MUSIC_ERAS, MUSIC_GENRES, MUSIC_GENRE_CATEGORY_LABELS, MUSIC_GENRE_CATEGORY_ORDER, MUSIC_GENRE_DEFAULT_DATA, MUSIC_MOOD_DEFAULT_DATA, MUSIC_VIBES, MUSIC_WIZARD_CATEGORIES, type Material, type MaterialCategory, type ModelChange, type Mood, type MoodCategory, type MoodValue, type MultiDimPickerWiring, type MultiPickerAnalyzerSpec, type MusicEra, type MusicGenre, type MusicGenreCategory, type MusicMoodData, type MusicMoodEntry, type MusicSubgenre, NODE_PROMPT_CANDIDATE_FIELDS, NODE_PROMPT_FIELDS, OBJECT_ANGLE_PRESETS, OBJECT_ANGLE_PROMPTS, OBJECT_ASSET_PRESETS, OBJECT_ASSET_PROMPTS, OBJECT_MATERIAL_PRESETS, OBJECT_MATERIAL_PROMPTS, OBJECT_VARIATION_PRESETS, OBJECT_VARIATION_PROMPTS, type ObjectMotionPromptInput, type ObjectPresetAssetType, type ObjectPromptInput, PEOPLE, PERSON_DIMENSION_LABELS, PERSON_DIMENSION_ORDER, PERSON_DIMENSION_SECTIONS, PERSON_FIELD_BY_DIMENSION, PERSON_IDS, PHOTOGRAPHERS, PHOTOGRAPHER_CATEGORY_LABELS, PHOTOGRAPHER_CATEGORY_ORDER, PHOTOGRAPHER_IDS, PHOTO_GENRES, PHOTO_GENRE_CATEGORY_LABELS, PHOTO_GENRE_CATEGORY_ORDER, PHOTO_GENRE_IDS, PICKER_ANALYZER_FAMILIES, PICKER_ANALYZER_REGISTRY, PICKER_CATALOGS, PICKER_TYPES, POSES, POSE_CATEGORY_LABELS, POSE_CATEGORY_ORDER, POSE_IDS, POST_PROCESS_EFFECTS, POST_PROCESS_EFFECT_IDS, PRODUCTION_STYLES, PROMPT_AFFIX_CORE_FIELD_OVERRIDES, PROMPT_AFFIX_NODE_TYPES, PROVIDER_CAPABILITIES, PROVIDER_PROMPT_DOCTRINES, type Person, type PersonDimension, type PersonDimensionSection, type PersonPack, type PersonValue, type PhotoGenre, type PhotoGenreCategory, type Photographer, type PhotographerCategory, type PickerAnalyzer, type PickerAnalyzerDescriptor, type PickerAnalyzerSpec, type PickerApplyMode, type PickerCatalog, type PickerCatalogDetail, type PickerCatalogInput, type PickerCatalogSummary, type PickerDimension, type PickerDimensionInput, type PickerDimensionSpec, type PickerGaps, type PickerHintMode, type PickerOption, type PickerOptionInput, type PickerType, type PickerWiring, type PickerWiringEntry, type Pose, type PoseCategory, type PoseValue, type PostProcessEffect, type ProjectPickerCatalogOptions, type ProjectedPickerCatalog, type ProjectedPickerDimension, type ProjectedPickerOption, type PromptFieldSpec, type PromptIconKind, type PromptSegment, type PromptSegmentOrigin, type ProviderPromptDoctrine, REFERENCE_IMAGE_ROLES, REFERENCE_RULES, REFERENCE_RULES_MULTI_PERSON, REF_BINDING, RENDER_QUALITIES, RENDER_QUALITY_IDS, type RecommendedModel, type ReferenceCounts, type RegisteredPersonEntry, type RenderQuality, type ResolveCharacterMentionsResult, type ResolveLocationMentionsResult, type ResolvePromptArgs, type ResolveVideoReferenceCoreArgs, SCENE_FRAME_RULE, SCENE_PROMPT_MAX_LENGTH, SETTINGS, SETTING_CATEGORY_LABELS, SETTING_IDS, SHOT_LABELS, SINGING_STYLES, SINGLE_PICKER_WIRING, SNIPPET_MEDIA_VALUES, STYLES, STYLE_IDS, STYLE_PRESETS, STYLINGS, STYLING_DIMENSION_LABELS, STYLING_DIMENSION_ORDER, STYLING_FIELD_BY_DIMENSION, STYLING_IDS, type Seedance2InputsArgs, type Seedance2InputsResult, type Seedance2Mode, type Setting, type SettingCategory, type SidecarCoverageReport, type SingleDimPickerWiring, type SnippetMedia, type SnippetTarget, type SoundComposition, type SoundCompositionFields, type SoundConsumerType, type StructuredPromptFields, type Style, type StylePreset, type Styling, type StylingDimension, type StylingValue, type SuspiciousTermOptions, TEMPORALS, TEMPORAL_CATEGORY_LABELS, TEMPORAL_CATEGORY_ORDER, TEMPORAL_FIELD_BY_CATEGORY, TEMPORAL_IDS, TERM_MAX_CHARS, TEXT_WIZARD_CATEGORIES, TRANSITIONS, TRANSITION_CATEGORY_LABELS, TRANSITION_CATEGORY_ORDER, TRANSITION_DURATIONS, TRANSITION_IDS, TRANSITION_INTENSITIES, TRANSITION_POSITIONS, type Temporal, type TemporalCategory, type TemporalValue, type TermCarrier, type Transition, type TransitionCategory, type TransitionDuration, type TransitionIntensity, type TransitionPosition, type TransitionTiming, type TransitionTimingOption, VIDEO_WIZARD_CATEGORIES, VOCAL_PRESENCE, VOCAL_PRESENCE_INSTRUMENTAL_ID, VOICE_ACCENTS, VOICE_AGES, VOICE_ARCHETYPES, VOICE_CHARACTER_DEFAULT_DATA, VOICE_DELIVERY_DEFAULT_DATA, VOICE_EMOTIONS, VOICE_GENDERS, VOICE_LANGUAGES, VOICE_PACES, VOICE_TIMBRES, type VeoI2vInputsArgs, type VeoI2vInputsResult, type VideoExtraRef, type VoiceCharacterEntry, type VoiceDeliveryEntry, WARDROBE, WARDROBE_CATEGORY_LABELS, WARDROBE_DIMENSION_ORDER, WARDROBE_FIELD_BY_DIMENSION, type WardrobeDimension, type WardrobeEntry, type WardrobeValue, type WizardCategory, type WizardNodeContext, type WizardOption, type WizardQuestion, type WizardSelection, appendField, appendMusicMeta, applyPickerJson, applyPromptAffixes, applyReferenceOrderToVideo, applyTemplate, assembleImageInput, assembleSunoInput, buildActionFxHints, buildActionFxTerms, buildAestheticHints, buildAestheticTerms, buildAgeHint, buildAtmosphereHints, buildAtmosphereTerms, buildCharacterPrompt, buildCreaturePrompt, buildExposureHints, buildExposureTerms, buildFaceTemplateInputs, buildFramingHints, buildFramingTerms, buildHeldPropHints, buildHeldPropTerms, buildIdentityDirectives, buildIdentityLockLine, buildImagePrompt, buildImagePromptSegments, buildInstrumentationHints, buildInstrumentationTerms, buildLightingHints, buildLightingTerms, buildLocationMotionPrompt, buildLocationPrompt, buildLocationRefinePrompt, buildMaterialHints, buildMaterialTerms, buildMoodHints, buildMoodTerms, buildMotionPrompt, buildMultiPickerAnalyzerSpec, buildMusicGenreHints, buildMusicGenreTerms, buildMusicMoodHints, buildMusicMoodTerms, buildObjectMotionPrompt, buildObjectPrompt, buildPersonHints, buildPersonTerms, buildPhotographerHints, buildPhotographerTerms, buildPickerAnalyzerSpec, buildPickerLegend, buildPickerZodSchema, buildPoseHints, buildPoseTerms, buildPostProcessHints, buildPostProcessTerms, buildReferenceBlocks, buildScenePrompt, buildStylingHints, buildStylingTerms, buildSurroundFillPrompt, buildTemporalHints, buildTemporalTerms, buildVoiceCharacterHints, buildVoiceCharacterTerms, buildVoiceDeliveryHints, buildVoiceDeliveryTerms, buildWardrobeHints, catalogPacksVersion, characterLockToRefLock, collectIdentityLockClause, composeCameraMotionHintFromConnections, composeCameraMotionTermFromConnections, composeCharacterFxHintFromConnections, composeNegative, composePickerCatalogs, composeSoundHintFromConnections, composeTransitionHintFromConnections, computeLlmChatFields, computeNodePrompt, computePackSidecarCoverage, deriveTerm, expandImagePositionRefs, expandImageRefTokens, filmStillPrefix, getActionFx, getActionFxLabel, getActionFxPromptHint, getActionFxTerm, getAesthetic, getAestheticLabel, getAestheticPromptHint, getAestheticTerm, getAtmosphere, getAtmosphereLabel, getAtmospherePromptHint, getAtmosphereTerm, getBackdrop, getBackdropLabel, getBackdropPromptHint, getBackdropTerm, getCameraFormat, getCameraFormatLabel, getCameraFormatPromptHint, getCameraFormatTerm, getCameraMotion, getCameraMotionLabel, getCameraMotionPromptHint, getCameraMotionTerm, getCategoriesForNodeType, getCharacterFx, getCharacterFxLabel, getCharacterFxPromptHint, getCharacterFxTerm, getColorLook, getColorLookLabel, getColorLookPromptHint, getColorLookTerm, getCompositionEffect, getCompositionEffectLabel, getCompositionEffectPromptHint, getCompositionEffectTerm, getEffectiveSunoCustomMode, getEra, getEraLabel, getEraPromptHint, getEraTerm, getExposure, getExposureLabel, getExposurePromptHint, getExposureTerm, getFactoryPresets, getFactorySnippets, getFraming, getFramingCategoryLimit, getFramingLabel, getFramingPromptHint, getFramingTerm, getHeldProp, getHeldPropLabel, getHeldPropPromptHint, getHeldPropTerm, getIdentityLockClause, getInstrument, getInstrumentTerm, getLens, getLensLabel, getLensPromptHint, getLensTerm, getLighting, getLightingLabel, getLightingPromptHint, getLightingTerm, getLoopSubject, getLoopSubjectLabel, getLoopSubjectPromptHint, getLoopSubjectTerm, getMaterial, getMaterialLabel, getMaterialPromptHint, getMaterialTerm, getMood, getMoodLabel, getMoodPromptHint, getMoodTerm, getMusicEmotion, getMusicEmotionTerm, getMusicEnergy, getMusicEnergyTerm, getMusicEra, getMusicEraTerm, getMusicGenre, getMusicGenreLabel, getMusicGenreTerm, getMusicSubgenre, getMusicSubgenreTerm, getMusicVibe, getMusicVibeTerm, getParameterPromptHint, getPerson, getPersonDimensionLimit, getPersonLabel, getPersonPromptHint, getPersonTerm, getPhotoGenre, getPhotoGenreLabel, getPhotoGenrePromptHint, getPhotoGenreTerm, getPhotographer, getPhotographerLabel, getPhotographerPromptHint, getPhotographerTerm, getPickerAnalyzer, getPickerCatalog, getPickerWiring, getPose, getPoseLabel, getPosePromptHint, getPoseTerm, getPostProcessEffect, getPostProcessEffectLabel, getPostProcessEffectPromptHint, getPostProcessEffectTerm, getProductionStyle, getProductionStyleTerm, getPromptDoctrine, getPromptFields, getPromptTips, getRegisteredCatalogPacks, getRegisteredPeople, getRegisteredPersonDimensionLabels, getRegisteredPersonDimensionOrder, getRegisteredPersonFieldByDimension, getRegisteredPickerCatalogs, getRenderQuality, getRenderQualityLabel, getRenderQualityPromptHint, getRenderQualityTerm, getSetting, getSettingLabel, getSettingPromptHint, getSettingTerm, getSingingStyle, getSingingStyleTerm, getSnippetMedia, getStyle, getStyleLabel, getStylePreset, getStylePromptHint, getStyleTerm, getStyling, getStylingDimensionLimit, getStylingLabel, getStylingPromptHint, getStylingTerm, getTemporal, getTemporalLabel, getTemporalPromptHint, getTemporalTerm, getTransition, getTransitionLabel, getTransitionPromptHint, getTransitionTerm, getVocalPresence, getVocalPresenceTerm, getVoiceAccent, getVoiceAccentTerm, getVoiceAge, getVoiceAgeTerm, getVoiceArchetype, getVoiceArchetypeTerm, getVoiceEmotion, getVoiceEmotionTerm, getVoiceGender, getVoiceGenderTerm, getVoiceLanguage, getVoiceLanguageTerm, getVoicePace, getVoicePaceTerm, getVoiceTimbre, getVoiceTimbreTerm, getWardrobeEntriesByDimension, getWardrobeEntry, getWardrobePromptHint, groupFactoryPresets, hasUpstreamCharacter, identityRefsSentence, isAnalyzablePicker, isInstrumentalVocal, isSuspiciousDerivedTerm, isVantageFraming, isWizardSupported, joinPromptParts, listPickerCatalogs, migratePersonValue, nodeHasInlinePrompt, nodeHasPromptField, nodeSupportsPromptAffixes, personPacksVersion, pickerFanoutTargets, projectAllCatalogs, projectPickerCatalog, promptAffixCoreField, promptBindsFirstFrame, promptFieldCarriesAffixes, promptPartSeparator, referenceRulesBlock, registerCatalogPack, registerPersonPack, renderStructuredFields, resetCatalogPacks, resetPersonPacks, resolveBrandInput, resolveCharacterMentions, resolveGeminiOmniI2vInputs, resolveLocationMentions, resolvePrompt, resolveReferenceTokens, resolveSeedance2Inputs, resolveTemplate, resolveTerm, resolveVeoI2vInputs, resolveVideoReferenceCore, summarizePickerCatalogs, toIdentityLockMode, truncateForField, truncateText, withForcedIdentityLock };
|
|
6496
|
+
export { ACTION_FX, ACTION_FX_CATEGORY_LABELS, ACTION_FX_CATEGORY_ORDER, ACTION_FX_IDS, AESTHETICS, AESTHETIC_CATEGORY_LABELS, AESTHETIC_CATEGORY_ORDER, AESTHETIC_IDS, ALL_PICKER_WIRING, ANALYZABLE_PICKER_TYPES, ANGLE_LABELS, ASPECT_RATIO_LABELS, ATMOSPHERES, ATMOSPHERE_IDS, AUDIO_WIZARD_CATEGORIES, type ActionFx, type ActionFxCategory, type Aesthetic, type AestheticCategory, type AssembleImageInput, type AssembleSunoInput, type AssembleSunoResult, type Atmosphere, BACKDROPS, BACKDROP_CATEGORY_LABELS, BACKDROP_CATEGORY_ORDER, BACKDROP_IDS, BRAND_PRESETS, BRAND_PRESET_IDS, BRAND_PRESET_META, type Backdrop, type BackdropCategory, type BrandCasing, type BrandFonts, type BrandLogo, type BrandPalette, type BrandPresetId, type BrandPresetMeta, type BrandTokens, type BrandTypeSpec, type BuildImagePromptConfig, type BuildImagePromptResult, type BuildImagePromptSegmentsResult, CAMERA_FORMATS, CAMERA_FORMAT_IDS, CAMERA_MOTIONS, CAMERA_MOTION_CATEGORY_LABELS, CAMERA_MOTION_CATEGORY_ORDER, CAMERA_MOTION_IDS, CHARACTER_FX, CHARACTER_FX_CATEGORY_LABELS, CHARACTER_FX_CATEGORY_ORDER, CHARACTER_FX_DURATIONS, CHARACTER_FX_IDS, CHARACTER_FX_INTENSITIES, CHARACTER_FX_POSITIONS, CINEMATIC_LOOK_TAIL, COLOR_LOOKS, COLOR_LOOK_CATEGORY_LABELS, COLOR_LOOK_CATEGORY_ORDER, COLOR_LOOK_IDS, COMPOSITION_EFFECTS, COMPOSITION_EFFECT_IDS, type CameraFormat, type CameraMotion, type CameraMotionCategory, type CatalogPack, type CatalogPackMode, type CategorizedInstrument, type CharacterFx, type CharacterFxCategory, type CharacterFxDuration, type CharacterFxIntensity, type CharacterFxPosition, type CharacterFxTiming, type CharacterFxTimingOption, type CharacterMeta, type CharacterMotionPromptInput, type CharacterPromptInput, type ColorLook, type ColorLookCategory, type CompositionEffect, type ComputeNodePromptArgs, type CreaturePromptInput, DEFAULT_IDENTITY_LOCK, DEFAULT_TEMPLATES, DIRECTION_ARRAY_CEILING, DIRECTION_FIELDS, DIRECTION_ID_MAX_CHARS, DIRECTION_KEYS, type DirectionFamily, type DirectionFieldRow, type DirectionFieldSpec, type DirectionFields, type DirectionHintMode, type DirectionKey, type DirectionSurface, ERAS, ERA_CATEGORY_LABELS, ERA_CATEGORY_ORDER, ERA_IDS, EXPOSURE_CATEGORY_LABELS, EXPOSURE_CATEGORY_ORDER, EXPOSURE_FIELD_BY_CATEGORY, EXPOSURE_IDS, EXPOSURE_SETTINGS, type Era, type EraCategory, type ExposureCategory, type ExposureSettings, type ExposureValue, FACTORY_PRESETS, FACTORY_SNIPPETS, FILM_STILL_PREFIX, FRAMINGS, FRAMING_CATEGORY_LABELS, FRAMING_CATEGORY_ORDER, FRAMING_FIELD_BY_CATEGORY, FRAMING_IDS, type FacePromptInput, type FactoryPreset, type FactoryPresetGroup, type FactorySnippet, type Framing, type FramingCategory, type FramingValue, GAPS_SCHEMA, type GeminiOmniI2vInputsArgs, type GeminiOmniI2vInputsResult, HELD_PROPS, HELD_PROP_CATEGORY_LABELS, HELD_PROP_CATEGORY_ORDER, HELD_PROP_IDS, type HeldProp, type HeldPropCategory, IMAGE_HINT_MODE_DEFAULT, IMAGE_REFERENCE_PROMPT_DOCTRINE, IMAGE_WIZARD_CATEGORIES, INSTRUMENTATION_DEFAULT_DATA, INSTRUMENTS, INSTRUMENT_CATEGORY_LABELS, INSTRUMENT_CATEGORY_ORDER, type IdentityLockMode, type ImageDirectionKey, type ImageReferenceDoctrine, type InstrumentCategory, type InstrumentationEntry, LENSES, LENS_IDS, LIGHTINGS, LIGHTING_CATEGORY_LABELS, LIGHTING_CATEGORY_ORDER, LIGHTING_FIELD_BY_CATEGORY, LIGHTING_IDS, LLM_CHAT_WIZARD_CATEGORIES, LOOP_SUBJECTS, LOOP_SUBJECT_CATEGORY_LABELS, LOOP_SUBJECT_CATEGORY_ORDER, type Lens, type Lighting, type LightingCategory, type LightingValue, type LlmChatFieldArgs, type LocationMotionPromptInput, type LocationPromptInput, type LocationRefinePromptInput, type LoopSubject, type LoopSubjectCategory, MATERIALS, MATERIAL_CATEGORY_LABELS, MATERIAL_CATEGORY_ORDER, MATERIAL_IDS, MAX_SELECTED_BY_DIMENSION, MAX_SELECTED_BY_FRAMING_CATEGORY, MAX_SELECTED_BY_STYLING_DIMENSION, MOODS, MOOD_CATEGORY_LABELS, MOOD_CATEGORY_ORDER, MOOD_IDS, MOVEMENT_LABELS, MULTI_PICKER_WIRING, MUSIC_EMOTIONS, MUSIC_ENERGIES, MUSIC_ERAS, MUSIC_GENRES, MUSIC_GENRE_CATEGORY_LABELS, MUSIC_GENRE_CATEGORY_ORDER, MUSIC_GENRE_DEFAULT_DATA, MUSIC_MOOD_DEFAULT_DATA, MUSIC_VIBES, MUSIC_WIZARD_CATEGORIES, type Material, type MaterialCategory, type ModelChange, type Mood, type MoodCategory, type MoodValue, type MultiDimPickerWiring, type MultiPickerAnalyzerSpec, type MusicEra, type MusicGenre, type MusicGenreCategory, type MusicMoodData, type MusicMoodEntry, type MusicSubgenre, NODE_PROMPT_CANDIDATE_FIELDS, NODE_PROMPT_FIELDS, OBJECT_ANGLE_PRESETS, OBJECT_ANGLE_PROMPTS, OBJECT_ASSET_PRESETS, OBJECT_ASSET_PROMPTS, OBJECT_MATERIAL_PRESETS, OBJECT_MATERIAL_PROMPTS, OBJECT_VARIATION_PRESETS, OBJECT_VARIATION_PROMPTS, type ObjectMotionPromptInput, type ObjectPresetAssetType, type ObjectPromptInput, PEOPLE, PERSON_DIMENSION_LABELS, PERSON_DIMENSION_ORDER, PERSON_DIMENSION_SECTIONS, PERSON_FIELD_BY_DIMENSION, PERSON_IDS, PHOTOGRAPHERS, PHOTOGRAPHER_CATEGORY_LABELS, PHOTOGRAPHER_CATEGORY_ORDER, PHOTOGRAPHER_IDS, PHOTO_GENRES, PHOTO_GENRE_CATEGORY_LABELS, PHOTO_GENRE_CATEGORY_ORDER, PHOTO_GENRE_IDS, PICKER_ANALYZER_FAMILIES, PICKER_ANALYZER_REGISTRY, PICKER_CATALOGS, PICKER_TYPES, POSES, POSE_CATEGORY_LABELS, POSE_CATEGORY_ORDER, POSE_IDS, POST_PROCESS_EFFECTS, POST_PROCESS_EFFECT_IDS, PRODUCTION_STYLES, PROMPT_AFFIX_CORE_FIELD_OVERRIDES, PROMPT_AFFIX_NODE_TYPES, PROMPT_HINT_SEPARATOR, PROVIDER_CAPABILITIES, PROVIDER_PROMPT_DOCTRINES, type Person, type PersonDimension, type PersonDimensionSection, type PersonPack, type PersonValue, type PhotoGenre, type PhotoGenreCategory, type Photographer, type PhotographerCategory, type PickerAnalyzer, type PickerAnalyzerDescriptor, type PickerAnalyzerSpec, type PickerApplyMode, type PickerCatalog, type PickerCatalogDetail, type PickerCatalogInput, type PickerCatalogSummary, type PickerDimension, type PickerDimensionInput, type PickerDimensionSpec, type PickerGaps, type PickerHintMode, type PickerOption, type PickerOptionInput, type PickerType, type PickerWiring, type PickerWiringEntry, type Pose, type PoseCategory, type PoseValue, type PostProcessEffect, type ProjectPickerCatalogOptions, type ProjectedPickerCatalog, type ProjectedPickerDimension, type ProjectedPickerOption, type PromptFieldSpec, type PromptIconKind, type PromptSegment, type PromptSegmentOrigin, type ProviderPromptDoctrine, REFERENCE_IMAGE_ROLES, REFERENCE_RULES, REFERENCE_RULES_MULTI_PERSON, REF_BINDING, RENDER_QUALITIES, RENDER_QUALITY_IDS, type RecommendedModel, type RefIdTokenContext, type ReferenceCounts, type RegisteredPersonEntry, type RenderQuality, type ResolveCharacterMentionsResult, type ResolveLocationMentionsResult, type ResolvePromptArgs, type ResolveVideoReferenceCoreArgs, SCENE_FRAME_RULE, SCENE_PROMPT_MAX_LENGTH, SETTINGS, SETTING_CATEGORY_LABELS, SETTING_IDS, SHOT_LABELS, SINGING_STYLES, SINGLE_PICKER_WIRING, SNIPPET_MEDIA_VALUES, STYLES, STYLE_IDS, STYLE_PRESETS, STYLINGS, STYLING_DIMENSION_LABELS, STYLING_DIMENSION_ORDER, STYLING_FIELD_BY_DIMENSION, STYLING_IDS, type Seedance2InputsArgs, type Seedance2InputsResult, type Seedance2Mode, type Setting, type SettingCategory, type SidecarCoverageReport, type SingleDimPickerWiring, type SnippetMedia, type SnippetTarget, type SoundComposition, type SoundCompositionFields, type SoundConsumerType, type StructuredPromptFields, type Style, type StylePreset, type Styling, type StylingDimension, type StylingValue, type SuspiciousTermOptions, TEMPORALS, TEMPORAL_CATEGORY_LABELS, TEMPORAL_CATEGORY_ORDER, TEMPORAL_FIELD_BY_CATEGORY, TEMPORAL_IDS, TERM_MAX_CHARS, TEXT_WIZARD_CATEGORIES, TRANSITIONS, TRANSITION_CATEGORY_LABELS, TRANSITION_CATEGORY_ORDER, TRANSITION_DURATIONS, TRANSITION_IDS, TRANSITION_INTENSITIES, TRANSITION_POSITIONS, type Temporal, type TemporalCategory, type TemporalValue, type TermCarrier, type Transition, type TransitionCategory, type TransitionDuration, type TransitionIntensity, type TransitionPosition, type TransitionTiming, type TransitionTimingOption, VIDEO_HINT_MODE_DEFAULT, VIDEO_WIZARD_CATEGORIES, VOCAL_PRESENCE, VOCAL_PRESENCE_INSTRUMENTAL_ID, VOICE_ACCENTS, VOICE_AGES, VOICE_ARCHETYPES, VOICE_CHARACTER_DEFAULT_DATA, VOICE_DELIVERY_DEFAULT_DATA, VOICE_EMOTIONS, VOICE_GENDERS, VOICE_LANGUAGES, VOICE_PACES, VOICE_TIMBRES, type VeoI2vInputsArgs, type VeoI2vInputsResult, type VideoDirectionKey, type VideoExtraRef, type VoiceCharacterEntry, type VoiceDeliveryEntry, WARDROBE, WARDROBE_CATEGORY_LABELS, WARDROBE_DIMENSION_ORDER, WARDROBE_FIELD_BY_DIMENSION, type WardrobeDimension, type WardrobeEntry, type WardrobeValue, type WizardCategory, type WizardNodeContext, type WizardOption, type WizardQuestion, type WizardSelection, appendField, appendMusicMeta, applyPickerJson, applyPromptAffixes, applyReferenceOrderToVideo, applyTemplate, assembleImageInput, assembleSunoInput, buildActionFxHints, buildActionFxTerms, buildAestheticHints, buildAestheticTerms, buildAgeHint, buildAtmosphereHints, buildAtmosphereTerms, buildCharacterPrompt, buildCreaturePrompt, buildExposureHints, buildExposureTerms, buildFaceTemplateInputs, buildFramingHints, buildFramingTerms, buildHeldPropHints, buildHeldPropTerms, buildIdentityDirectives, buildIdentityLockLine, buildImagePrompt, buildImagePromptSegments, buildInstrumentationHints, buildInstrumentationTerms, buildLightingHints, buildLightingTerms, buildLocationMotionPrompt, buildLocationPrompt, buildLocationRefinePrompt, buildMaterialHints, buildMaterialTerms, buildMoodHints, buildMoodTerms, buildMotionPrompt, buildMultiPickerAnalyzerSpec, buildMusicGenreHints, buildMusicGenreTerms, buildMusicMoodHints, buildMusicMoodTerms, buildObjectMotionPrompt, buildObjectPrompt, buildPersonHints, buildPersonTerms, buildPhotographerHints, buildPhotographerTerms, buildPickerAnalyzerSpec, buildPickerLegend, buildPickerZodSchema, buildPoseHints, buildPoseTerms, buildPostProcessHints, buildPostProcessTerms, buildReferenceBlocks, buildScenePrompt, buildStylingHints, buildStylingTerms, buildSurroundFillPrompt, buildTemporalHints, buildTemporalTerms, buildVoiceCharacterHints, buildVoiceCharacterTerms, buildVoiceDeliveryHints, buildVoiceDeliveryTerms, buildWardrobeHints, catalogPacksVersion, characterLockToRefLock, collectIdentityLockClause, composeCameraMotionHintFromConnections, composeCameraMotionTermFromConnections, composeCharacterFxHintFromConnections, composeNegative, composePickerCatalogs, composeSoundHintFromConnections, composeTransitionHintFromConnections, composeVideoPromptText, computeLlmChatFields, computeNodePrompt, computePackSidecarCoverage, deriveTerm, directionFieldsForSurface, expandImagePositionRefs, expandImageRefTokens, filmStillPrefix, getActionFx, getActionFxLabel, getActionFxPromptHint, getActionFxTerm, getAesthetic, getAestheticLabel, getAestheticPromptHint, getAestheticTerm, getAtmosphere, getAtmosphereLabel, getAtmospherePromptHint, getAtmosphereTerm, getBackdrop, getBackdropLabel, getBackdropPromptHint, getBackdropTerm, getCameraFormat, getCameraFormatLabel, getCameraFormatPromptHint, getCameraFormatTerm, getCameraMotion, getCameraMotionLabel, getCameraMotionPromptHint, getCameraMotionTerm, getCategoriesForNodeType, getCharacterFx, getCharacterFxLabel, getCharacterFxPromptHint, getCharacterFxTerm, getColorLook, getColorLookLabel, getColorLookPromptHint, getColorLookTerm, getCompositionEffect, getCompositionEffectLabel, getCompositionEffectPromptHint, getCompositionEffectTerm, getEffectiveSunoCustomMode, getEra, getEraLabel, getEraPromptHint, getEraTerm, getExposure, getExposureLabel, getExposurePromptHint, getExposureTerm, getFactoryPresets, getFactorySnippets, getFraming, getFramingCategoryLimit, getFramingLabel, getFramingPromptHint, getFramingTerm, getHeldProp, getHeldPropLabel, getHeldPropPromptHint, getHeldPropTerm, getIdentityLockClause, getInstrument, getInstrumentTerm, getLens, getLensLabel, getLensPromptHint, getLensTerm, getLighting, getLightingLabel, getLightingPromptHint, getLightingTerm, getLoopSubject, getLoopSubjectLabel, getLoopSubjectPromptHint, getLoopSubjectTerm, getMaterial, getMaterialLabel, getMaterialPromptHint, getMaterialTerm, getMood, getMoodLabel, getMoodPromptHint, getMoodTerm, getMusicEmotion, getMusicEmotionTerm, getMusicEnergy, getMusicEnergyTerm, getMusicEra, getMusicEraTerm, getMusicGenre, getMusicGenreLabel, getMusicGenreTerm, getMusicSubgenre, getMusicSubgenreTerm, getMusicVibe, getMusicVibeTerm, getParameterPromptHint, getPerson, getPersonDimensionLimit, getPersonLabel, getPersonPromptHint, getPersonTerm, getPhotoGenre, getPhotoGenreLabel, getPhotoGenrePromptHint, getPhotoGenreTerm, getPhotographer, getPhotographerLabel, getPhotographerPromptHint, getPhotographerTerm, getPickerAnalyzer, getPickerCatalog, getPickerWiring, getPose, getPoseLabel, getPosePromptHint, getPoseTerm, getPostProcessEffect, getPostProcessEffectLabel, getPostProcessEffectPromptHint, getPostProcessEffectTerm, getProductionStyle, getProductionStyleTerm, getPromptDoctrine, getPromptFields, getPromptTips, getRegisteredCatalogPacks, getRegisteredPeople, getRegisteredPersonDimensionLabels, getRegisteredPersonDimensionOrder, getRegisteredPersonFieldByDimension, getRegisteredPickerCatalogs, getRenderQuality, getRenderQualityLabel, getRenderQualityPromptHint, getRenderQualityTerm, getSetting, getSettingLabel, getSettingPromptHint, getSettingTerm, getSingingStyle, getSingingStyleTerm, getSnippetMedia, getStyle, getStyleLabel, getStylePreset, getStylePromptHint, getStyleTerm, getStyling, getStylingDimensionLimit, getStylingLabel, getStylingPromptHint, getStylingTerm, getTemporal, getTemporalLabel, getTemporalPromptHint, getTemporalTerm, getTransition, getTransitionLabel, getTransitionPromptHint, getTransitionTerm, getVocalPresence, getVocalPresenceTerm, getVoiceAccent, getVoiceAccentTerm, getVoiceAge, getVoiceAgeTerm, getVoiceArchetype, getVoiceArchetypeTerm, getVoiceEmotion, getVoiceEmotionTerm, getVoiceGender, getVoiceGenderTerm, getVoiceLanguage, getVoiceLanguageTerm, getVoicePace, getVoicePaceTerm, getVoiceTimbre, getVoiceTimbreTerm, getWardrobeEntriesByDimension, getWardrobeEntry, getWardrobePromptHint, groupFactoryPresets, hasUpstreamCharacter, identityRefsSentence, isAnalyzablePicker, isInstrumentalVocal, isSuspiciousDerivedTerm, isVantageFraming, isWizardSupported, joinPromptHints, joinPromptParts, listPickerCatalogs, migratePersonValue, modeForFamily, nodeHasInlinePrompt, nodeHasPromptField, nodeSupportsPromptAffixes, personPacksVersion, pickerFanoutTargets, projectAllCatalogs, projectPickerCatalog, promptAffixCoreField, promptBindsFirstFrame, promptFieldCarriesAffixes, promptPartSeparator, readDirectionFields, readStructuredFields, referenceRulesBlock, registerCatalogPack, registerPersonPack, renderDirectionHints, renderStructuredFields, resetCatalogPacks, resetPersonPacks, resolveBrandInput, resolveCharacterMentions, resolveGeminiOmniI2vInputs, resolveLocationMentions, resolvePrompt, resolveRefIdTokens, resolveReferenceTokens, resolveSeedance2Inputs, resolveTemplate, resolveTerm, resolveVeoI2vInputs, resolveVideoReferenceCore, summarizePickerCatalogs, toIdentityLockMode, truncateForField, truncateText, withForcedIdentityLock };
|