@nodaro/prompts 1.53.2 → 1.55.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/dist/{catalog-packs-DeMcSVCR.d.cts → catalog-packs-Bw7OpufR.d.cts} +1 -1
  2. package/dist/{catalog-packs-DjqvicAR.d.ts → catalog-packs-CyS8NdLM.d.ts} +1 -1
  3. package/dist/{chunk-HOZPYHRA.js → chunk-242NZ6SI.js} +5 -5
  4. package/dist/{chunk-HOZPYHRA.js.map → chunk-242NZ6SI.js.map} +1 -1
  5. package/dist/{chunk-GRSKB3P7.cjs → chunk-2LWYFWZL.cjs} +528 -2
  6. package/dist/chunk-2LWYFWZL.cjs.map +1 -0
  7. package/dist/{chunk-P4BXE4OA.cjs → chunk-2MTFPGQC.cjs} +13 -13
  8. package/dist/{chunk-P4BXE4OA.cjs.map → chunk-2MTFPGQC.cjs.map} +1 -1
  9. package/dist/{chunk-EKRO42T3.cjs → chunk-32BMZ4Q5.cjs} +113 -41
  10. package/dist/chunk-32BMZ4Q5.cjs.map +1 -0
  11. package/dist/{chunk-WQ7FWGZ2.js → chunk-4MCK7Y6C.js} +524 -3
  12. package/dist/chunk-4MCK7Y6C.js.map +1 -0
  13. package/dist/{chunk-FFPFBNXH.cjs → chunk-7ZWWJY24.cjs} +8 -2
  14. package/dist/chunk-7ZWWJY24.cjs.map +1 -0
  15. package/dist/{chunk-F22GZF7T.cjs → chunk-AMUXCE7X.cjs} +8 -8
  16. package/dist/{chunk-F22GZF7T.cjs.map → chunk-AMUXCE7X.cjs.map} +1 -1
  17. package/dist/{chunk-OQ3J7OGR.cjs → chunk-BHBZN2AP.cjs} +49 -49
  18. package/dist/{chunk-OQ3J7OGR.cjs.map → chunk-BHBZN2AP.cjs.map} +1 -1
  19. package/dist/{chunk-YAIPYPMM.js → chunk-BJGD4DBP.js} +4 -4
  20. package/dist/{chunk-YAIPYPMM.js.map → chunk-BJGD4DBP.js.map} +1 -1
  21. package/dist/{chunk-ZRORO6OM.js → chunk-CYYHQNW3.js} +4 -4
  22. package/dist/{chunk-ZRORO6OM.js.map → chunk-CYYHQNW3.js.map} +1 -1
  23. package/dist/{chunk-E5EKWWOO.cjs → chunk-FEHXLXAV.cjs} +8 -7
  24. package/dist/chunk-FEHXLXAV.cjs.map +1 -0
  25. package/dist/{chunk-5XPELUES.js → chunk-GJX5N63V.js} +8 -2
  26. package/dist/chunk-GJX5N63V.js.map +1 -0
  27. package/dist/{chunk-XR7RAHZI.js → chunk-HZH6XXYK.js} +81 -9
  28. package/dist/chunk-HZH6XXYK.js.map +1 -0
  29. package/dist/{chunk-OMRFKG4M.js → chunk-KBWUO4P7.js} +3 -3
  30. package/dist/{chunk-OMRFKG4M.js.map → chunk-KBWUO4P7.js.map} +1 -1
  31. package/dist/{chunk-XRCK3BCF.cjs → chunk-M25N26II.cjs} +55 -10
  32. package/dist/chunk-M25N26II.cjs.map +1 -0
  33. package/dist/{chunk-PHCYQWJP.js → chunk-NCF5TAR6.js} +55 -10
  34. package/dist/chunk-NCF5TAR6.js.map +1 -0
  35. package/dist/{chunk-NUC5RV4P.cjs → chunk-NDKJW7RP.cjs} +4 -4
  36. package/dist/{chunk-NUC5RV4P.cjs.map → chunk-NDKJW7RP.cjs.map} +1 -1
  37. package/dist/{chunk-ED47NNIN.js → chunk-OXNJVQ2V.js} +3 -3
  38. package/dist/{chunk-ED47NNIN.js.map → chunk-OXNJVQ2V.js.map} +1 -1
  39. package/dist/{chunk-PWYASBX2.cjs → chunk-P5HAPDV3.cjs} +18 -18
  40. package/dist/{chunk-PWYASBX2.cjs.map → chunk-P5HAPDV3.cjs.map} +1 -1
  41. package/dist/{chunk-EUU5W7XR.js → chunk-TMYYALRF.js} +4 -4
  42. package/dist/{chunk-EUU5W7XR.js.map → chunk-TMYYALRF.js.map} +1 -1
  43. package/dist/{chunk-H322GC7M.js → chunk-VX3BIUGY.js} +5 -4
  44. package/dist/chunk-VX3BIUGY.js.map +1 -0
  45. package/dist/{chunk-VBCVQPQ4.js → chunk-WDKQQ7WL.js} +3 -3
  46. package/dist/{chunk-VBCVQPQ4.js.map → chunk-WDKQQ7WL.js.map} +1 -1
  47. package/dist/{chunk-KTNCB2IE.cjs → chunk-XMRDZRGV.cjs} +35 -35
  48. package/dist/{chunk-KTNCB2IE.cjs.map → chunk-XMRDZRGV.cjs.map} +1 -1
  49. package/dist/{chunk-7BWDATUZ.cjs → chunk-Y3TSRO3S.cjs} +125 -125
  50. package/dist/{chunk-7BWDATUZ.cjs.map → chunk-Y3TSRO3S.cjs.map} +1 -1
  51. package/dist/entries/assembly.cjs +29 -29
  52. package/dist/entries/assembly.d.cts +9 -0
  53. package/dist/entries/assembly.d.ts +9 -0
  54. package/dist/entries/assembly.js +6 -6
  55. package/dist/entries/catalog-packs.d.cts +4 -4
  56. package/dist/entries/catalog-packs.d.ts +4 -4
  57. package/dist/entries/doctrine.cjs +46 -46
  58. package/dist/entries/doctrine.js +1 -1
  59. package/dist/entries/person.d.cts +3 -3
  60. package/dist/entries/person.d.ts +3 -3
  61. package/dist/entries/picker-art.cjs +22 -22
  62. package/dist/entries/picker-art.d.cts +1 -1
  63. package/dist/entries/picker-art.d.ts +1 -1
  64. package/dist/entries/picker-art.js +2 -2
  65. package/dist/entries/picker-catalogs.cjs +57 -57
  66. package/dist/entries/picker-catalogs.d.cts +3 -3
  67. package/dist/entries/picker-catalogs.d.ts +3 -3
  68. package/dist/entries/picker-catalogs.js +5 -5
  69. package/dist/entries/pickers.cjs +383 -383
  70. package/dist/entries/pickers.js +3 -3
  71. package/dist/entries/presets.cjs +55 -35
  72. package/dist/entries/presets.d.cts +29 -1
  73. package/dist/entries/presets.d.ts +29 -1
  74. package/dist/entries/presets.js +1 -1
  75. package/dist/entries/prompt-builder.cjs +76 -76
  76. package/dist/entries/prompt-builder.js +5 -5
  77. package/dist/{images-ChAOLY5V.d.cts → images-BQ1jUWyZ.d.cts} +32 -3
  78. package/dist/{images-ChAOLY5V.d.ts → images-BQ1jUWyZ.d.ts} +32 -3
  79. package/dist/index.cjs +657 -637
  80. package/dist/index.d.cts +4 -4
  81. package/dist/index.d.ts +4 -4
  82. package/dist/index.js +12 -12
  83. package/dist/{picker-catalogs-DzLCu6qQ.d.cts → picker-catalogs-BuMGOVWC.d.cts} +1 -1
  84. package/dist/{picker-catalogs-SDSWrufc.d.ts → picker-catalogs-CVQopXwp.d.ts} +1 -1
  85. package/package.json +2 -2
  86. package/src/__tests__/doctrine-roster-completeness.test.ts +3 -0
  87. package/src/__tests__/factory-preset-previews.test.ts +38 -0
  88. package/src/__tests__/factory-preset-shelves.test.ts +30 -0
  89. package/src/__tests__/picker-art-images.test.ts +54 -0
  90. package/src/__tests__/seedance-extend.test.ts +37 -23
  91. package/src/__tests__/video-reference-features.test.ts +7 -5
  92. package/src/__tests__/video-reference-seatless-assets.test.ts +132 -0
  93. package/src/factory-presets/index.ts +4 -0
  94. package/src/factory-presets/preview-files.generated.ts +472 -0
  95. package/src/factory-presets/previews.ts +17 -2
  96. package/src/factory-presets/shelves.ts +50 -0
  97. package/src/picker-art/images.ts +39 -2
  98. package/src/picker-catalogs.ts +4 -2
  99. package/src/prompt-wizard-categories.ts +15 -3
  100. package/src/provider-prompt-doctrine.ts +44 -5
  101. package/src/seatless-assets.ts +141 -0
  102. package/src/video-reference-resolver.ts +31 -4
  103. package/dist/chunk-5XPELUES.js.map +0 -1
  104. package/dist/chunk-E5EKWWOO.cjs.map +0 -1
  105. package/dist/chunk-EKRO42T3.cjs.map +0 -1
  106. package/dist/chunk-FFPFBNXH.cjs.map +0 -1
  107. package/dist/chunk-GRSKB3P7.cjs.map +0 -1
  108. package/dist/chunk-H322GC7M.js.map +0 -1
  109. package/dist/chunk-PHCYQWJP.js.map +0 -1
  110. package/dist/chunk-WQ7FWGZ2.js.map +0 -1
  111. package/dist/chunk-XR7RAHZI.js.map +0 -1
  112. package/dist/chunk-XRCK3BCF.cjs.map +0 -1
@@ -1,9 +1,9 @@
1
- import { tidyReferenceTokenGaps, unboundReferenceTokenText, renderDescribedReferenceLines, renderReferenceCaptionLines, appendReferenceLines, resolveCharacterMentions, referenceDescriptionLine, insertBeforeStyleSection, applyReferenceOrderToVideo, sectionedClauseCosts, asBodyClauses, renderSubjectHints, SUBJECT_VIDEO_HINT_MODE_DEFAULT, partitionStyleClauses, renderStructuredFields, composeSectionedPrompt, buildImagePromptWithOverflow, SUBJECT_IMAGE_HINT_MODE_DEFAULT } from './chunk-YAIPYPMM.js';
1
+ import { tidyReferenceTokenGaps, unboundReferenceTokenText, renderDescribedReferenceLines, renderReferenceCaptionLines, appendReferenceLines, resolveCharacterMentions, referenceDescriptionLine, insertBeforeStyleSection, applyReferenceOrderToVideo, sectionedClauseCosts, asBodyClauses, renderSubjectHints, SUBJECT_VIDEO_HINT_MODE_DEFAULT, partitionStyleClauses, renderStructuredFields, composeSectionedPrompt, buildImagePromptWithOverflow, SUBJECT_IMAGE_HINT_MODE_DEFAULT } from './chunk-BJGD4DBP.js';
2
2
  import { keepableDirectionHints } from './chunk-JZOPMVGY.js';
3
3
  import { buildIdentityLockLine, withForcedIdentityLock } from './chunk-BQWIPLLR.js';
4
- import { getParameterPromptHint } from './chunk-EUU5W7XR.js';
5
- import { styleReferenceDescription, VIDEO_HINT_MODE_DEFAULT, IMAGE_HINT_MODE_DEFAULT } from './chunk-VBCVQPQ4.js';
6
- import { getMusicEra, getMusicGenre, buildMusicMoodHints } from './chunk-H322GC7M.js';
4
+ import { getParameterPromptHint } from './chunk-TMYYALRF.js';
5
+ import { styleReferenceDescription, VIDEO_HINT_MODE_DEFAULT, IMAGE_HINT_MODE_DEFAULT } from './chunk-WDKQQ7WL.js';
6
+ import { getMusicEra, getMusicGenre, buildMusicMoodHints } from './chunk-VX3BIUGY.js';
7
7
  import { findCharacterMentionTokens, roleToPhrase, resolveDefaultRole, DEFAULT_USAGE_MODE, usageModeDirective, REFERENCE_ROLE_PRESETS } from '@nodaro/shared/entities';
8
8
  import { imageReferenceLimit, SEEDANCE_2_REF_LIMITS, VIDEO_REF_LIMITS_BY_PROVIDER } from '@nodaro/shared/models';
9
9
  import { resolveFrameDelivery } from '@nodaro/shared/video';
@@ -78,6 +78,68 @@ function resolveRefIdTokens(prompt, ctx) {
78
78
  return label ?? "";
79
79
  }).replace(MALFORMED_REF_ID_TOKEN_RE, "");
80
80
  }
81
+ function identityDescription(mode, override, canonical, injection) {
82
+ if (mode === "none" || mode === "name") return "";
83
+ const parts = [];
84
+ const o = override?.trim();
85
+ const c = canonical?.trim();
86
+ if (o) parts.push(o);
87
+ else if ((mode === "identical" || mode === "face-pose") && c) parts.push(c);
88
+ const i = injection?.trim();
89
+ if (i) parts.push(i);
90
+ return parts.join(". ");
91
+ }
92
+ function resolveSeatlessAssets(args) {
93
+ const bySlug = /* @__PURE__ */ new Map();
94
+ for (const r of args.wiredCharRefs) {
95
+ if (r.source !== "wired-character" || !r.characterSlug) continue;
96
+ const known = bySlug.get(r.characterSlug);
97
+ if (!known || known.variantSlug && !r.variantSlug) bySlug.set(r.characterSlug, r);
98
+ }
99
+ const nameOf = (slug) => {
100
+ const r = bySlug.get(slug);
101
+ return r?.defaultName || r?.characterSlug || slug;
102
+ };
103
+ let prompt = args.prompt;
104
+ const mentioned = /* @__PURE__ */ new Set();
105
+ if (prompt && bySlug.size > 0) {
106
+ const tokens = findCharacterMentionTokens(prompt, [...bySlug.keys()]);
107
+ for (const t of [...tokens].sort((a, b) => b.offset - a.offset)) {
108
+ mentioned.add(t.characterSlug);
109
+ prompt = prompt.slice(0, t.offset) + nameOf(t.characterSlug) + prompt.slice(t.offset + t.token.length);
110
+ }
111
+ }
112
+ const identities = [];
113
+ const described = /* @__PURE__ */ new Set();
114
+ const describe = (slug, name, description) => {
115
+ if (described.has(slug)) return;
116
+ described.add(slug);
117
+ if (description) identities.push({ name, description });
118
+ };
119
+ for (const [slug, r] of bySlug) {
120
+ const shown = !args.suppressedCanonicalSlugs.has(slug) || mentioned.has(slug);
121
+ if (!shown) continue;
122
+ describe(
123
+ slug,
124
+ nameOf(slug),
125
+ identityDescription(r.defaultUsageMode ?? DEFAULT_USAGE_MODE, r.descriptionOverride, r.characterCanonicalDescription, r.elementInjection)
126
+ );
127
+ }
128
+ const extraNamesById = /* @__PURE__ */ new Map();
129
+ for (const ex of args.extraRefs ?? []) {
130
+ if (!ex.characterSlug) continue;
131
+ const meta = args.lookupCharacterBySlug?.(ex.characterSlug);
132
+ const name = bySlug.has(ex.characterSlug) ? nameOf(ex.characterSlug) : meta?.characterName || ex.characterSlug;
133
+ if (ex.id) extraNamesById.set(ex.id, name);
134
+ const own = (ex.descriptionOverride ?? "").trim() || (ex.description ?? "").trim();
135
+ describe(
136
+ ex.characterSlug,
137
+ name,
138
+ identityDescription(ex.usageMode ?? meta?.defaultUsageMode ?? DEFAULT_USAGE_MODE, own, meta?.canonicalDescription, ex.elementInjection)
139
+ );
140
+ }
141
+ return { prompt, identities, extraNamesById };
142
+ }
81
143
 
82
144
  // src/video-reference-resolver.ts
83
145
  var REFERENCE_TOKEN_RE = /\{(image|video|audio):(\d+)(?::([a-zA-Z0-9_ -]+))?\}/gi;
@@ -173,8 +235,17 @@ function resolveVideoReferenceCore(args) {
173
235
  video: args.videoRefCount ?? 0,
174
236
  audio: args.audioRefCount ?? 0
175
237
  });
238
+ const seatless = args.assetsTakeNoSeat === true ? resolveSeatlessAssets({
239
+ prompt: args.prompt,
240
+ wiredCharRefs: args.wiredCharRefs,
241
+ suppressedCanonicalSlugs: new Set(args.suppressedCanonicalCharacterIds ?? []),
242
+ extraRefs: args.extraRefs,
243
+ lookupCharacterBySlug: args.lookupCharacterBySlug
244
+ }) : void 0;
176
245
  const describedAndCaptionLines = [
177
- ...renderDescribedReferenceLines(args.describedReferences),
246
+ ...renderDescribedReferenceLines(
247
+ seatless ? [...seatless.identities, ...args.describedReferences ?? []] : args.describedReferences
248
+ ),
178
249
  ...renderReferenceCaptionLines(args.videoCaptions, args.audioCaptions, {
179
250
  video: args.videoRefCount ?? 0,
180
251
  audio: args.audioRefCount ?? 0
@@ -198,14 +269,15 @@ function resolveVideoReferenceCore(args) {
198
269
  for (const ex of args.extraRefs ?? []) {
199
270
  if (ex.id && !nameByRefId.has(ex.id)) nameByRefId.set(ex.id, "");
200
271
  }
272
+ for (const [id, name] of seatless?.extraNamesById ?? []) nameByRefId.set(id, name);
201
273
  for (const [id, name] of args.refNamesById ?? []) {
202
274
  if (id) nameByRefId.set(id, name);
203
275
  }
204
276
  const slotByRefId = /* @__PURE__ */ new Map();
205
- if (wiredCharRefs.length === 0 && !hasExtras) {
277
+ if (seatless || wiredCharRefs.length === 0 && !hasExtras) {
206
278
  const counts = tokenCounts(leadingRefUrls.length);
207
279
  const resolved2 = resolveReferenceTokens(
208
- resolveRefIdTokens(args.prompt, { slotById: slotByRefId, nameById: nameByRefId, imageCount: counts.image }),
280
+ resolveRefIdTokens(seatless ? seatless.prompt : args.prompt, { slotById: slotByRefId, nameById: nameByRefId, imageCount: counts.image }),
209
281
  counts
210
282
  );
211
283
  return {
@@ -978,5 +1050,5 @@ function planFrameDelivery(args) {
978
1050
  }
979
1051
 
980
1052
  export { REF_BINDING, SEEDANCE_VIDEO_EDIT_PREFIX, appendField, appendMusicMeta, assembleImageInput, assembleSunoInput, buildSeedanceVideoEditPrompt, buildSurroundFillPrompt, composeSoundHintFromConnections, composeVideoPromptText, getEffectiveSunoCustomMode, identityRefsSentence, imageBindingFor, placeFramesAfterReferences, planFrameDelivery, promptBindsFirstFrame, resolveGeminiOmniI2vInputs, resolveRefIdTokens, resolveReferenceTokens, resolveSeedance2Inputs, resolveVeoI2vInputs, resolveVideoReferenceCore, truncateForField };
981
- //# sourceMappingURL=chunk-XR7RAHZI.js.map
982
- //# sourceMappingURL=chunk-XR7RAHZI.js.map
1053
+ //# sourceMappingURL=chunk-HZH6XXYK.js.map
1054
+ //# sourceMappingURL=chunk-HZH6XXYK.js.map