@clipwright/core 0.16.0 → 0.18.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 (77) hide show
  1. package/CHANGELOG.md +79 -0
  2. package/dist/actors.d.ts +4 -0
  3. package/dist/actors.js +22 -0
  4. package/dist/actors.js.map +1 -1
  5. package/dist/aspect.d.ts +3 -0
  6. package/dist/aspect.js +14 -0
  7. package/dist/aspect.js.map +1 -1
  8. package/dist/billing-terms.d.ts +19 -0
  9. package/dist/billing-terms.js +8 -0
  10. package/dist/billing-terms.js.map +1 -0
  11. package/dist/broll-policy.d.ts +31 -0
  12. package/dist/broll-policy.js +24 -0
  13. package/dist/broll-policy.js.map +1 -0
  14. package/dist/contract-dispositions.d.ts +65 -3
  15. package/dist/contract-dispositions.js +25 -21
  16. package/dist/contract-dispositions.js.map +1 -1
  17. package/dist/endpoints.d.ts +2 -2
  18. package/dist/endpoints.js +18 -13
  19. package/dist/endpoints.js.map +1 -1
  20. package/dist/errors.d.ts +7 -1
  21. package/dist/errors.js +13 -0
  22. package/dist/errors.js.map +1 -1
  23. package/dist/face-billing.d.ts +116 -0
  24. package/dist/face-billing.js +83 -0
  25. package/dist/face-billing.js.map +1 -0
  26. package/dist/face-delivery.d.ts +17 -0
  27. package/dist/face-delivery.js +12 -0
  28. package/dist/face-delivery.js.map +1 -0
  29. package/dist/index.d.ts +9 -0
  30. package/dist/index.js +9 -0
  31. package/dist/index.js.map +1 -1
  32. package/dist/long-form-pricing.d.ts +48 -0
  33. package/dist/long-form-pricing.js +73 -0
  34. package/dist/long-form-pricing.js.map +1 -0
  35. package/dist/long-form-profile.d.ts +5 -0
  36. package/dist/long-form-profile.js +6 -0
  37. package/dist/long-form-profile.js.map +1 -0
  38. package/dist/media-timebase.d.ts +2 -0
  39. package/dist/media-timebase.js +3 -0
  40. package/dist/media-timebase.js.map +1 -0
  41. package/dist/public-endpoints.d.ts +2 -0
  42. package/dist/public-endpoints.js +2 -0
  43. package/dist/public-endpoints.js.map +1 -1
  44. package/dist/render-backend.d.ts +3 -1
  45. package/dist/run-static-warnings.d.ts +6 -2
  46. package/dist/run-static-warnings.js +15 -11
  47. package/dist/run-static-warnings.js.map +1 -1
  48. package/dist/runs.d.ts +115 -0
  49. package/dist/runs.js +21 -0
  50. package/dist/runs.js.map +1 -1
  51. package/dist/semantic-inserts.d.ts +63 -0
  52. package/dist/semantic-inserts.js +160 -0
  53. package/dist/semantic-inserts.js.map +1 -0
  54. package/dist/skills.d.ts +217 -1
  55. package/dist/skills.js +87 -26
  56. package/dist/skills.js.map +1 -1
  57. package/dist/speech-rhythm-contract.d.ts +20 -0
  58. package/dist/speech-rhythm-contract.js +22 -0
  59. package/dist/speech-rhythm-contract.js.map +1 -0
  60. package/dist/speech-rhythm.d.ts +21 -0
  61. package/dist/speech-rhythm.js +47 -0
  62. package/dist/speech-rhythm.js.map +1 -0
  63. package/dist/tts-backend.d.ts +1 -0
  64. package/dist/tts-backend.js.map +1 -1
  65. package/dist/voice-admission.d.ts +53 -1
  66. package/dist/voice-admission.js +32 -1
  67. package/dist/voice-admission.js.map +1 -1
  68. package/dist/voice-listing.d.ts +5 -1
  69. package/dist/voice-listing.js +11 -1
  70. package/dist/voice-listing.js.map +1 -1
  71. package/dist/voice-preview-approval.d.ts +27 -0
  72. package/dist/voice-preview-approval.js +29 -0
  73. package/dist/voice-preview-approval.js.map +1 -0
  74. package/dist/voices.d.ts +2 -0
  75. package/dist/voices.js +3 -0
  76. package/dist/voices.js.map +1 -1
  77. package/package.json +13 -1
package/CHANGELOG.md CHANGED
@@ -16,6 +16,85 @@ a customer reading it should not miss what appeared in the product. Like *Server
16
16
  they are live from the day the web app was deployed, not from the package release they are
17
17
  listed under.
18
18
 
19
+ ## [0.18.0] - 2026-09-21
20
+
21
+ Long-form clips can now show a face for a fifth of their length instead of nearly
22
+ all of it, which is what the face-second meter was priced for.
23
+
24
+ ### Added
25
+
26
+ - `cover_words` on an insert says how many spoken words it covers, counted from
27
+ the first word of its anchor. The share of words left uncovered decides the
28
+ share of the clip that shows a face, and it does not move with the speed the
29
+ voice reads at. Word length still varies: at a 560-word script, asking for 19%
30
+ delivered 16 to 22 in nine hundred and ninety-seven simulated runs out of a
31
+ thousand, measured on this profile's voice. A shorter script scatters wider.
32
+ - A quote for a narrated clip carries `estimatedFaceWordShare`: the share of the
33
+ clip that will show a face, known before anything is synthesised.
34
+
35
+ ### Changed
36
+
37
+ - **Up to 49 inserts per clip**, not two, and at most six appearances of the
38
+ actor between them. Both are counted from the word indexes you send, so an
39
+ input asking for more is refused before anything is paid for.
40
+ - *Server-side* An insert now ends where its first uncovered word begins rather
41
+ than where its last covered word ends, so the pause between two words belongs
42
+ to the insert. Inserts whose coverage meets are adjacent frame for frame and
43
+ no longer leave a fragment of actor footage between them.
44
+ - *Server-side* The credit hold for a narrated clip reserves the words you leave
45
+ uncovered instead of the whole narration. On a clip that covers four fifths of
46
+ its script the hold falls from 2170 credits to 630. Billing is unchanged: it
47
+ has always used the face intervals actually delivered.
48
+
49
+ ## [0.17.0] - 2026-09-16
50
+
51
+ Everything here came out of the second dry run by a tester who had not seen the
52
+ product before.
53
+
54
+ ### Added
55
+
56
+ - The MCP server reports money. `make_ugc` carries `credits_reserved` and
57
+ `get_run` carries `credits_charged`, in every state, so an agent no longer has
58
+ to call `get_account` before and after and subtract. The field names come from
59
+ the run schema, so REST and MCP cannot drift apart. (clipwright#209)
60
+ - *Server-side:* in `GET /v1/voices`, each entry of `models` carries
61
+ `vendor_verifies_voices` — whether the vendor's library listing marks any voice
62
+ as verified for that model. It is `false` for `eleven_v3` (measured: none of
63
+ 303 live catalog voices), so an empty `verified_models` on that model says
64
+ nothing about the voice. (clipwright#208)
65
+ - *Server-side:* a voice whose gender differs from the actor's is named in
66
+ `warnings`, in the quote and in the run. The combination still runs as asked —
67
+ voicing a man with a female voice is sometimes deliberate — but it is no longer
68
+ silent. (clipwright#210)
69
+ - *Server-side:* an `image` smaller than the output on its short side gets a
70
+ warning that the source is upscaled, with both sizes and the size to send
71
+ instead. The default actor is silent: its size is a property of our own image,
72
+ stated once in the docs. (clipwright#211)
73
+
74
+ ### Fixed
75
+
76
+ - *Server-side:* a request body that is not valid JSON answers 400
77
+ `malformed_body`, not 500. A 500 says the failure is ours, so an agent retries
78
+ bytes that will never parse; the new message says both what to fix and that a
79
+ retry fails the same way. (clipwright#212)
80
+ - *Server-side:* a source we cannot use — private or loopback host, http,
81
+ unreachable, redirecting, over 10 MB, or not PNG/JPEG/WebP — is refused with
82
+ 400 `unusable_source` before any charge, in the quote and in the run alike.
83
+ It used to be priced: a loopback url answered 200 and an estimate, while the
84
+ tool description promised a refusal. (clipwright#213)
85
+ - *Server-side:* refusals on `script`, `voice`, `voice_id` and `image` are
86
+ written in the product's words instead of the schema library's, and the
87
+ description of `script` no longer names a field the API rejects.
88
+ (clipwright#212)
89
+ - *Dashboard:* the root of the cabinet host sends a signed-in visitor to their
90
+ dashboard instead of showing the landing page with a "Sign in" button.
91
+ (clipwright#214)
92
+ - *Dashboard:* every tile on `/videos` prints its `run_id` and links to the
93
+ support form with it. The id used to live only in the preview image's alt
94
+ text, so tiles without a preview had none at all. (clipwright#215)
95
+ - *Dashboard:* the REST example on `/quickstart` runs unchanged in any shell: one
96
+ line, no backslash continuations and no shell substitution. (clipwright#211)
97
+
19
98
  ## [0.16.0] - 2026-09-16
20
99
 
21
100
  ### Added
package/dist/actors.d.ts CHANGED
@@ -47,6 +47,10 @@ export declare function voiceGenderFor(input: VoiceGenderInput, pin?: {
47
47
  } | undefined): Gender | undefined;
48
48
  export declare const IMAGE_DEFAULT_VOICE_WARNING: string;
49
49
  export declare function actorGenderIgnoredWarning(field: "voice" | "voice_id"): string;
50
+ export declare function voiceActorGenderWarning(voice: string, voiceGender: Gender, actorGender: Gender): string;
51
+ /** Явный голос исполняется как запрошен, но расхождение с полом актёра */
52
+ /** НАЗЫВАЕТСЯ — правило проекта №3; разбор — `docs/18` Д52 (clipwright#210). */
53
+ export declare function buildVoiceActorMatchWarnings(input: VoiceGenderInput, voiceGenderOf: (voice: string) => Gender | undefined, pinGender?: Gender | undefined): string[];
50
54
  /** Читает только поля входа, без пина: путь рана зовёт его из сохранённого входа. */
51
55
  export declare function buildActorGenderWarnings(input: VoiceGenderInput): string[];
52
56
  export declare const actorSelection: z.ZodObject<{
package/dist/actors.js CHANGED
@@ -39,6 +39,28 @@ export const IMAGE_DEFAULT_VOICE_WARNING = `no voice was chosen for the face in
39
39
  export function actorGenderIgnoredWarning(field) {
40
40
  return `actor_gender did not change the voice: the explicit ${field} is used as requested`;
41
41
  }
42
+ export function voiceActorGenderWarning(voice, voiceGender, actorGender) {
43
+ return (`voice "${voice}" is ${voiceGender} and the actor is ${actorGender}: the run uses both as asked, ` +
44
+ `so the face and the voice will not match. Choose a ${actorGender} voice from list_voices, ` +
45
+ "or another actor, if that is not what you want.");
46
+ }
47
+ /** Пол актёра БЕЗ броска: у пина его берут из снимка, а не из каталога (#210). */
48
+ function actorGenderOf(input, pinGender) {
49
+ if (input.actor_id !== undefined)
50
+ return pinGender;
51
+ return input.image === undefined ? DEFAULT_ACTOR_GENDER : input.actor_gender;
52
+ }
53
+ /** Явный голос исполняется как запрошен, но расхождение с полом актёра */
54
+ /** НАЗЫВАЕТСЯ — правило проекта №3; разбор — `docs/18` Д52 (clipwright#210). */
55
+ export function buildVoiceActorMatchWarnings(input, voiceGenderOf, pinGender) {
56
+ if (input.voice === undefined)
57
+ return [];
58
+ const voiceGender = voiceGenderOf(input.voice);
59
+ const actorGender = actorGenderOf(input, pinGender);
60
+ if (voiceGender === undefined || actorGender === undefined || voiceGender === actorGender)
61
+ return [];
62
+ return [voiceActorGenderWarning(input.voice, voiceGender, actorGender)];
63
+ }
42
64
  /** Читает только поля входа, без пина: путь рана зовёт его из сохранённого входа. */
43
65
  export function buildActorGenderWarnings(input) {
44
66
  const explicit = input.voice_id !== undefined ? "voice_id" : input.voice !== undefined ? "voice" : undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"actors.js","sourceRoot":"","sources":["../src/actors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"actors.js","sourceRoot":"","sources":["../src/actors.ts"],"names":[],"mappings":"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"}
package/dist/aspect.d.ts CHANGED
@@ -117,6 +117,9 @@ export declare function deliveryWarnings(args: {
117
117
  /** Допуск по длительности: вендор округляет, и доли секунды — не расхождение. */
118
118
  durationToleranceSec?: number;
119
119
  }): string[];
120
+ /** Растяжение называется, как и снап формата (правило №4), но только у ЧУЖОГО */
121
+ /** кадра: размеры нашего актёра — свойство продукта, `docs/03` §2.2 (#211). */
122
+ export declare function upscaleWarning(source: AspectSource | null, resolution: Resolution, aspectRatio: AspectRatio): string | null;
120
123
  /**
121
124
  * Кадр, который МЫ ожидаем от вендора: формат ПЛЮС разрешение.
122
125
  *
package/dist/aspect.js CHANGED
@@ -195,6 +195,20 @@ export function deliveryWarnings(args) {
195
195
  }
196
196
  return warnings;
197
197
  }
198
+ /** Растяжение называется, как и снап формата (правило №4), но только у ЧУЖОГО */
199
+ /** кадра: размеры нашего актёра — свойство продукта, `docs/03` §2.2 (#211). */
200
+ export function upscaleWarning(source, resolution, aspectRatio) {
201
+ if (source === null || source.origin !== "probed")
202
+ return null;
203
+ const frame = expectedVendorFrame(resolution, aspectRatio);
204
+ const sourceShort = Math.min(source.width, source.height);
205
+ const frameShort = Math.min(frame.width, frame.height);
206
+ if (sourceShort >= frameShort)
207
+ return null;
208
+ return (`image is ${source.width}×${source.height} and the output is ${frame.width}×${frame.height}: ` +
209
+ `the source is upscaled, which softens the picture. Send at least ${frameShort} px ` +
210
+ "on the short side to avoid it.");
211
+ }
198
212
  /** Короткая сторона кадра по разрешению — измерено живьём (docs/11 «шаг 0»). */
199
213
  const SHORT_SIDE_BY_RESOLUTION = {
200
214
  "720p": 720,
@@ -1 +1 @@
1
- {"version":3,"file":"aspect.js","sourceRoot":"","sources":["../src/aspect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAqC,MAAM,aAAa,CAAC;AAI/E;;;;;;;;;;GAUG;AAEH,8EAA8E;AAC9E,MAAM,CAAC,MAAM,mBAAmB,GAAgC;IAC9D,MAAM,EAAE,CAAC,GAAG,EAAE;IACd,KAAK,EAAE,CAAC;IACR,MAAM,EAAE,EAAE,GAAG,CAAC;CACf,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAgB,MAAM,CAAC;AAGxD,sEAAsE;AACtE,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAC3C,qEAAqE;AACrE,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAE1C;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,CAAS,EAAE,CAAS;IACjD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,IAAI,IAAI,GAAgB,aAAa,CAAC,CAAC,CAAC,CAAC;IACzC,IAAI,YAAY,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAC5C,KAAK,MAAM,SAAS,IAAI,aAAa,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,cAAc,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC;QACvE,IAAI,QAAQ,GAAG,YAAY,EAAE,CAAC;YAC5B,YAAY,GAAG,QAAQ,CAAC;YACxB,IAAI,GAAG,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAkBD;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAyB;IAC1D,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAEpC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,2EAA2E;QAC3E,kEAAkE;QAClE,0EAA0E;QAC1E,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,SAAS,IAAI,oBAAoB;YAC9C,QAAQ,EAAE;gBACR,sFAAsF;aACvF;SACF,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;IACjD,MAAM,MAAM,GAAG,SAAS,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,cAAc,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC;IAE1E,IAAI,QAAQ,IAAI,sBAAsB,EAAE,CAAC;QACvC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACjE,CAAC;IAED,sEAAsE;IACtE,EAAE;IACF,8EAA8E;IAC9E,sEAAsE;IACtE,wEAAwE;IACxE,8EAA8E;IAC9E,wDAAwD;IACxD,EAAE;IACF,oEAAoE;IACpE,2EAA2E;IAC3E,MAAM,WAAW,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAChD,MAAM,WAAW,GACf,WAAW,GAAG,WAAW;QACvB,CAAC,CAAC,aAAa,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,eAAe,MAAM,6BAA6B;YAC5F,oFAAoF;QACtF,CAAC,CAAC,aAAa,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,eAAe,MAAM,8BAA8B;YAC7F,oEAAoE,CAAC;IAE3E,IAAI,QAAQ,IAAI,qBAAqB,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QACjE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC;IAC5E,CAAC;IAED,wEAAwE;IACxE,yEAAyE;IACzE,MAAM,IAAI,GACR,MAAM,CAAC,MAAM,KAAK,SAAS;QACzB,CAAC,CAAC,wBAAwB,UAAU,CAAC,WAAW,CAAC,KAAK,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,KAAK;YACtF,yCAAyC,MAAM,cAAc,MAAM,EAAE;QACvE,CAAC,CAAC,iBAAiB,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,iCAAiC,MAAM,IAAI;YACzF,cAAc,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC;IAEtD,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,0BAA0B,MAAM,iCAAiC,IAAI,CAAC,KAAK,CAClF,QAAQ,GAAG,GAAG,CACf,MAAM,IAAI,EAAE;KACd,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAE,MAAc;IAC5D,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC5E,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC5B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1B,OAAO,GAAG,CAAC,GAAG,OAAO,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC;AACzC,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAoB,EACpB,SAAiC;IAEjC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IAClF,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;IACjD,IAAI,IAAI,GAAG,SAAS,CAAC,CAAC,CAAE,CAAC;IACzB,IAAI,YAAY,GAAG,cAAc,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC;IAE1E,KAAK,MAAM,SAAS,IAAI,SAAS,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,cAAc,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC,CAAC;QAC7E,IAAI,QAAQ,GAAG,YAAY,EAAE,CAAC;YAC5B,IAAI,GAAG,SAAS,CAAC;YACjB,YAAY,GAAG,QAAQ,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AASD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAKhC;IACC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACnC,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC;IACpD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,IAAI,SAAS,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,IAAI,SAAS,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;QAC3E,QAAQ,CAAC,IAAI,CACX,mBAAmB,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,UAAU,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,MAAM,eAAe,CAC7G,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;IACjE,IAAI,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,SAAS,EAAE,CAAC;QACxC,0EAA0E;QAC1E,uEAAuE;QACvE,sEAAsE;QACtE,qBAAqB;QACrB,MAAM,mBAAmB,GACvB,aAAa,GAAG,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC;QAEvF,QAAQ,CAAC,IAAI,CACX,mBAAmB;YACjB,CAAC,CAAC,6BAA6B,MAAM,CAAC,WAAW,UAAU,SAAS,CAAC,WAAW,YAAY,CAAC,sDAAsD;YACnJ,CAAC,CAAC,mBAAmB,MAAM,CAAC,WAAW,WAAW,SAAS,CAAC,WAAW,gBAAgB,CAC1F,CAAC;IACJ,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,gFAAgF;AAChF,MAAM,wBAAwB,GAA+B;IAC3D,MAAM,EAAE,GAAG;IACX,OAAO,EAAE,IAAI;IACb,IAAI,EAAE,IAAI;CACX,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CACjC,UAAsB,EACtB,WAAwB;IAExB,MAAM,KAAK,GAAG,wBAAwB,CAAC,UAAU,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,CAAC,KAAa,EAAU,EAAE;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAClC,OAAO,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;IACnD,CAAC,CAAC;IAEF,OAAO,KAAK,IAAI,CAAC;QACf,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;QACrD,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC;AAC1D,CAAC"}
1
+ {"version":3,"file":"aspect.js","sourceRoot":"","sources":["../src/aspect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { z } from "zod";
2
+ /** Server-authored terms, exposed read-only on runs; never accepted as skill input. */
3
+ export declare const faceBillingAdmissionTermsSchema: z.ZodReadonly<z.ZodObject<{
4
+ mode: z.ZodLiteral<"face_seconds">;
5
+ tariffSnapshot: z.ZodUnion<readonly [z.ZodReadonly<z.ZodObject<{
6
+ version: z.ZodLiteral<1>;
7
+ id: z.ZodString;
8
+ creditsPerSecond: z.ZodNumber;
9
+ rounding: z.ZodLiteral<"ceil_aggregate_seconds">;
10
+ }, z.core.$strict>>, z.ZodReadonly<z.ZodObject<{
11
+ version: z.ZodLiteral<2>;
12
+ pricingVersion: z.ZodString;
13
+ rateCreditsPerFaceSecond: z.ZodNumber;
14
+ minimumCredits: z.ZodNumber;
15
+ rounding: z.ZodLiteral<"ceil_aggregate_seconds">;
16
+ failurePolicy: z.ZodLiteral<"verified_delivery_only">;
17
+ }, z.core.$strict>>]>;
18
+ }, z.core.$strict>>;
19
+ export type FaceBillingAdmissionTerms = z.infer<typeof faceBillingAdmissionTermsSchema>;
@@ -0,0 +1,8 @@
1
+ import { z } from "zod";
2
+ import { faceBillingTariffSchema } from "./face-billing.js";
3
+ /** Server-authored terms, exposed read-only on runs; never accepted as skill input. */
4
+ export const faceBillingAdmissionTermsSchema = z.object({
5
+ mode: z.literal("face_seconds"),
6
+ tariffSnapshot: faceBillingTariffSchema,
7
+ }).strict().readonly();
8
+ //# sourceMappingURL=billing-terms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"billing-terms.js","sourceRoot":"","sources":["../src/billing-terms.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,uFAAuF;AACvF,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,CAAC,MAAM,CAAC;IACtD,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC;IAC/B,cAAc,EAAE,uBAAuB;CACxC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { z } from "zod";
2
+ export declare const BROLL_POLICIES: readonly ["anyone", "no_actor", "no_people"];
3
+ export declare const DEFAULT_BROLL_POLICY: "no_people";
4
+ export declare const BROLL_POLICY_DESCRIPTION: string;
5
+ export declare const brollPolicy: z.ZodEnum<{
6
+ anyone: "anyone";
7
+ no_actor: "no_actor";
8
+ no_people: "no_people";
9
+ }>;
10
+ export type BrollPolicy = z.infer<typeof brollPolicy>;
11
+ export declare const actorDefaultsInput: z.ZodObject<{
12
+ broll_policy: z.ZodEnum<{
13
+ anyone: "anyone";
14
+ no_actor: "no_actor";
15
+ no_people: "no_people";
16
+ }>;
17
+ }, z.core.$strict>;
18
+ export declare const actorDefaults: z.ZodObject<{
19
+ actor_id: z.ZodString;
20
+ broll_policy: z.ZodEnum<{
21
+ anyone: "anyone";
22
+ no_actor: "no_actor";
23
+ no_people: "no_people";
24
+ }>;
25
+ }, z.core.$strip>;
26
+ export type ActorDefaultsInput = z.infer<typeof actorDefaultsInput>;
27
+ export type ActorDefaults = z.infer<typeof actorDefaults>;
28
+ export declare const ACTOR_DEFAULTS_PATH = "/v1/actors/:id/defaults";
29
+ export declare const actorDefaultsPath: (id: string) => string;
30
+ export declare function resolveBrollPolicy(override: BrollPolicy | undefined, actorDefault: unknown): BrollPolicy;
31
+ export declare function storedBrollPolicy(input: unknown): BrollPolicy;
@@ -0,0 +1,24 @@
1
+ import { z } from "zod";
2
+ export const BROLL_POLICIES = ["anyone", "no_actor", "no_people"];
3
+ export const DEFAULT_BROLL_POLICY = "no_people";
4
+ export const BROLL_POLICY_DESCRIPTION = "Saved policy for B-roll: anyone allows people including the actor; no_actor excludes the actor; " +
5
+ "no_people excludes all people, including hands. Segmented media generation is closed. " +
6
+ "This setting is stored only and has no effect on actor-only videos. " +
7
+ "Run override wins over the account actor default; otherwise no_people.";
8
+ export const brollPolicy = z.enum(BROLL_POLICIES).describe(BROLL_POLICY_DESCRIPTION);
9
+ export const actorDefaultsInput = z.strictObject({ broll_policy: brollPolicy });
10
+ export const actorDefaults = z.object({ actor_id: z.string(), broll_policy: brollPolicy });
11
+ export const ACTOR_DEFAULTS_PATH = "/v1/actors/:id/defaults";
12
+ export const actorDefaultsPath = (id) => `/v1/actors/${encodeURIComponent(id)}/defaults`;
13
+ export function resolveBrollPolicy(override, actorDefault) {
14
+ if (override !== undefined)
15
+ return brollPolicy.parse(override);
16
+ const parsed = brollPolicy.safeParse(actorDefault);
17
+ return parsed.success ? parsed.data : DEFAULT_BROLL_POLICY;
18
+ }
19
+ export function storedBrollPolicy(input) {
20
+ const value = input && typeof input === "object" && "resolved_broll_policy" in input
21
+ ? input.resolved_broll_policy : undefined;
22
+ return resolveBrollPolicy(undefined, value);
23
+ }
24
+ //# sourceMappingURL=broll-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"broll-policy.js","sourceRoot":"","sources":["../src/broll-policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,WAAW,CAAU,CAAC;AAC3E,MAAM,CAAC,MAAM,oBAAoB,GAAG,WAAoB,CAAC;AACzD,MAAM,CAAC,MAAM,wBAAwB,GACnC,kGAAkG;IAClG,wFAAwF;IACxF,sEAAsE;IACtE,wEAAwE,CAAC;AAC3E,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC;AAErF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,YAAY,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC;AAChF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC;AAG3F,MAAM,CAAC,MAAM,mBAAmB,GAAG,yBAAyB,CAAC;AAC7D,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAAU,EAAU,EAAE,CAAC,cAAc,kBAAkB,CAAC,EAAE,CAAC,WAAW,CAAC;AAEzG,MAAM,UAAU,kBAAkB,CAAC,QAAiC,EAAE,YAAqB;IACzF,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IACnD,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,MAAM,KAAK,GAAG,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,uBAAuB,IAAI,KAAK;QAClF,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5C,OAAO,kBAAkB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AAC9C,CAAC"}
@@ -28,6 +28,9 @@ export declare const CONTRACT_VERSION_HEADER = "X-Clipwright-Contract";
28
28
  * опциональных — `present`.
29
29
  */
30
30
  export type Disposition = {
31
+ kind: "stored";
32
+ message: string;
33
+ } | {
31
34
  kind: "implemented";
32
35
  provenBy: "egress" | "composition";
33
36
  } | {
@@ -108,9 +111,17 @@ export declare const FIELD_DISPOSITIONS: {
108
111
  readonly kind: "implemented";
109
112
  readonly provenBy: "egress";
110
113
  };
114
+ readonly broll_policy: {
115
+ readonly kind: "stored";
116
+ readonly message: string;
117
+ };
111
118
  readonly segments: {
112
- readonly kind: "rejected";
113
- readonly message: "segmented clips are not available yet: pass `script` with the full spoken text instead";
119
+ readonly kind: "implemented";
120
+ readonly provenBy: "composition";
121
+ };
122
+ readonly inserts: {
123
+ readonly kind: "implemented";
124
+ readonly provenBy: "composition";
114
125
  };
115
126
  readonly character: {
116
127
  readonly kind: "rejected";
@@ -149,6 +160,7 @@ export interface ContractFlags {
149
160
  compose: boolean;
150
161
  /** Генерация личных актёров (clipwright#120); отсутствие значит «выключено». */
151
162
  actorGeneration?: boolean;
163
+ longForm?: boolean;
152
164
  }
153
165
  /** `create_actor` открыт только вместе с фетч-поверхностью: без неё личного актёра не отрендерить. */
154
166
  export declare function isActorGenerationEnabled(env?: Record<string, string | undefined>): boolean;
@@ -158,6 +170,8 @@ export declare function isActorGenerationEnabled(env?: Record<string, string | u
158
170
  * дрожать между двумя соседними вызовами.
159
171
  */
160
172
  export declare function contractFlagsFromEnv(env?: Record<string, string | undefined>): ContractFlags;
173
+ export declare function isLongFormQualificationEnabled(env?: Record<string, string | undefined>): boolean;
174
+ export declare const LONG_FORM_DISABLED_MESSAGE = "long-form qualification is disabled on this deployment; pass script without segments or inserts";
161
175
  export declare function resolveDispositions(flags: ContractFlags): Record<ContractField, Disposition>;
162
176
  /**
163
177
  * ДЕЙСТВУЮЩАЯ таблица процесса — то, из чего строятся все поверхности.
@@ -165,7 +179,7 @@ export declare function resolveDispositions(flags: ContractFlags): Record<Contra
165
179
  * Отличается от `FIELD_DISPOSITIONS` ровно на применённые флаги: базовая
166
180
  * таблица говорит, что код УМЕЕТ, эта — что он предлагает прямо сейчас.
167
181
  */
168
- export declare const EFFECTIVE_DISPOSITIONS: Record<"actor_gender" | "actor_id" | "aspect_ratio" | "background" | "broll_url" | "caption_style" | "captions" | "character" | "disclosure_overlay" | "image" | "look" | "name" | "person" | "resolution" | "script" | "segments" | "tts_model" | "voice" | "voice_id" | "webhook_url", Disposition>;
182
+ export declare const EFFECTIVE_DISPOSITIONS: Record<"actor_gender" | "actor_id" | "aspect_ratio" | "background" | "broll_policy" | "broll_url" | "caption_style" | "captions" | "character" | "disclosure_overlay" | "image" | "inserts" | "look" | "name" | "person" | "resolution" | "script" | "segments" | "tts_model" | "voice" | "voice_id" | "webhook_url", Disposition>;
169
183
  type RejectedField = {
170
184
  [K in ContractField]: (typeof FIELD_DISPOSITIONS)[K]["kind"] extends "rejected" ? K : never;
171
185
  }[ContractField];
@@ -242,6 +256,49 @@ export declare const offeredUgcInputShape: Pick<typeof makeUgcInputShape, Offere
242
256
  */
243
257
  export declare const offeredUgcInput: z.ZodObject<{
244
258
  script: z.ZodOptional<z.ZodString>;
259
+ segments: z.ZodOptional<z.ZodArray<z.ZodObject<{
260
+ kind: z.ZodEnum<{
261
+ actor: "actor";
262
+ media: "media";
263
+ }>;
264
+ script: z.ZodOptional<z.ZodString>;
265
+ media_url: z.ZodOptional<z.ZodString>;
266
+ media_type: z.ZodOptional<z.ZodEnum<{
267
+ image: "image";
268
+ video: "video";
269
+ }>>;
270
+ duration_seconds: z.ZodOptional<z.ZodNumber>;
271
+ image_motion: z.ZodOptional<z.ZodObject<{
272
+ direction: z.ZodEnum<{
273
+ in: "in";
274
+ out: "out";
275
+ }>;
276
+ amount: z.ZodNumber;
277
+ }, z.core.$strip>>;
278
+ }, z.core.$strip>>>;
279
+ inserts: z.ZodOptional<z.ZodArray<z.ZodObject<{
280
+ id: z.ZodString;
281
+ media_url: z.ZodString;
282
+ media_type: z.ZodEnum<{
283
+ image: "image";
284
+ video: "video";
285
+ }>;
286
+ anchor: z.ZodUnion<readonly [z.ZodObject<{
287
+ startWord: z.ZodNumber;
288
+ endWord: z.ZodNumber;
289
+ }, z.core.$strict>, z.ZodObject<{
290
+ quote: z.ZodString;
291
+ occurrence: z.ZodOptional<z.ZodNumber>;
292
+ }, z.core.$strict>]>;
293
+ cover_words: z.ZodOptional<z.ZodNumber>;
294
+ image_motion: z.ZodOptional<z.ZodObject<{
295
+ direction: z.ZodEnum<{
296
+ in: "in";
297
+ out: "out";
298
+ }>;
299
+ amount: z.ZodNumber;
300
+ }, z.core.$strict>>;
301
+ }, z.core.$strict>>>;
245
302
  person: z.ZodOptional<z.ZodString>;
246
303
  actor_id: z.ZodOptional<z.ZodString>;
247
304
  image: z.ZodOptional<z.ZodString>;
@@ -250,6 +307,11 @@ export declare const offeredUgcInput: z.ZodObject<{
250
307
  male: "male";
251
308
  }>>;
252
309
  name: z.ZodOptional<z.ZodString>;
310
+ broll_policy: z.ZodOptional<z.ZodEnum<{
311
+ anyone: "anyone";
312
+ no_actor: "no_actor";
313
+ no_people: "no_people";
314
+ }>>;
253
315
  captions: z.ZodDefault<z.ZodBoolean>;
254
316
  caption_style: z.ZodDefault<z.ZodEnum<{
255
317
  hormozi: "hormozi";
@@ -1,5 +1,6 @@
1
1
  import { z } from "zod";
2
2
  import { makeUgcInputShape } from "./skills.js";
3
+ import { BROLL_POLICY_DESCRIPTION } from "./broll-policy.js";
3
4
  /** РЕЕСТР ДИСПОЗИЦИЙ ПОЛЕЙ ВХОДА `make_ugc`: у каждого поля обязано быть записанное */
4
5
  /** решение. Тип — страж ПОЛНОТЫ, истинность доказывает egress-тест. */
5
6
  /**
@@ -62,27 +63,10 @@ export const FIELD_DISPOSITIONS = {
62
63
  image: { kind: "implemented", provenBy: "egress" },
63
64
  actor_id: { kind: "implemented", provenBy: "egress" },
64
65
  actor_gender: { kind: "implemented", provenBy: "egress" },
65
- // Отклоняются: принять поле, зная, что оно не работает, план запрещает сам
66
- // себе.
67
- //
68
- // `segments` заведён СХЕМОЙ в Slice 1 и отклоняется до Slice 2. Именно так
69
- // страж и должен был сработать: поле добавили — компиляция упала, пока
70
- // решение не записано. Новое поле без решения не проезжает, кем бы оно ни
71
- // было добавлено, включая сам план.
72
- //
73
- // ПОЧЕМУ `rejected` ПЕРЕЖИЛ US-526 (решение владельца 2026-07-22). План
74
- // переключал строку на `implemented` с `provenBy: "composition"` уже в
75
- // US-526, но композиция приезжает только в US-527: без неё N клипов не
76
- // сводятся в один файл и `final_output` предъявить нечем. `implemented`
77
- // означает здесь «доказано тестом», а доказывать было бы нечем — то есть
78
- // строка обещала бы работу, которой нет. US-526 построил механику
79
- // (раскладку ключей, посегментную озвучку, вендорские области
80
- // идемпотентности); переключение — одна строка в US-527, когда появится
81
- // `composed.mp4`, который её докажет.
82
- segments: {
83
- kind: "rejected",
84
- message: "segmented clips are not available yet: pass `script` with the full spoken text instead",
85
- },
66
+ broll_policy: { kind: "stored", message: BROLL_POLICY_DESCRIPTION },
67
+ // Offered to clients; deployment qualification gates admission below.
68
+ segments: { kind: "implemented", provenBy: "composition" },
69
+ inserts: { kind: "implemented", provenBy: "composition" },
86
70
  character: {
87
71
  kind: "rejected",
88
72
  message: "character is not supported: saved characters do not exist yet. Describe the actor with `person` instead, or omit it to use the default actor",
@@ -140,8 +124,14 @@ export function contractFlagsFromEnv(env = process.env) {
140
124
  return {
141
125
  remoteFetch: env.CLIPWRIGHT_REMOTE_FETCH === "1",
142
126
  compose: env.CLIPWRIGHT_COMPOSE === "1",
127
+ longForm: isLongFormQualificationEnabled(env),
143
128
  };
144
129
  }
130
+ export function isLongFormQualificationEnabled(env = process.env) {
131
+ return env.CLIPWRIGHT_LONG_FORM_QUALIFICATION === "1" &&
132
+ env.CLIPWRIGHT_COMPOSE === "1" && env.CLIPWRIGHT_REMOTE_FETCH === "1";
133
+ }
134
+ export const LONG_FORM_DISABLED_MESSAGE = "long-form qualification is disabled on this deployment; pass script without segments or inserts";
145
135
  const REMOTE_FETCH_DISABLED = {
146
136
  kind: "rejected",
147
137
  message: "image is temporarily disabled (remote media fetch is off); omit it to render with the default actor",
@@ -160,9 +150,18 @@ const DISCLOSURE_OVERLAY_DISABLED = {
160
150
  kind: "rejected",
161
151
  message: "disclosure_overlay is not available: composition is disabled on this deployment. The output is still marked in the run contract and in the file metadata",
162
152
  };
153
+ /** Предпосылки длинной формы — ОДНО выражение на все её поля: разъехавшись, */
154
+ /** две копии открыли бы `segments` там, где `inserts` ещё закрыты. */
155
+ function longFormReady(flags) {
156
+ return flags.longForm === true && flags.remoteFetch && flags.compose;
157
+ }
158
+ const LONG_FORM_DISABLED = { kind: "rejected", message: LONG_FORM_DISABLED_MESSAGE };
163
159
  export function resolveDispositions(flags) {
160
+ const longForm = longFormReady(flags);
164
161
  return {
165
162
  ...FIELD_DISPOSITIONS,
163
+ segments: longForm ? FIELD_DISPOSITIONS.segments : LONG_FORM_DISABLED,
164
+ inserts: longForm ? FIELD_DISPOSITIONS.inserts : LONG_FORM_DISABLED,
166
165
  person: flags.actorGeneration === true ? PERSON_WITH_ACTOR_GENERATION : FIELD_DISPOSITIONS.person,
167
166
  image: flags.remoteFetch ? FIELD_DISPOSITIONS.image : REMOTE_FETCH_DISABLED,
168
167
  actor_id: flags.remoteFetch ? FIELD_DISPOSITIONS.actor_id : {
@@ -223,6 +222,8 @@ export function dispositionNote(field) {
223
222
  return noteFor(FIELD_DISPOSITIONS[field]);
224
223
  }
225
224
  function noteFor(disposition) {
225
+ if (disposition.kind === "stored")
226
+ return `STORED ONLY: ${disposition.message}`;
226
227
  if (disposition.kind === "rejected") {
227
228
  return `REJECTED: ${disposition.message}`;
228
229
  }
@@ -336,6 +337,9 @@ export function dispositionWarnings(input) {
336
337
  const warnings = [];
337
338
  for (const field of CONTRACT_FIELDS) {
338
339
  const disposition = EFFECTIVE_DISPOSITIONS[field];
340
+ if (disposition.kind === "stored" && input[field] !== undefined) {
341
+ warnings.push(disposition.message);
342
+ }
339
343
  if (disposition.kind !== "warned")
340
344
  continue;
341
345
  const value = input[field];
@@ -1 +1 @@
1
- {"version":3,"file":"contract-dispositions.js","sourceRoot":"","sources":["../src/contract-dispositions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contract-dispositions.js","sourceRoot":"","sources":["../src/contract-dispositions.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,3 @@
1
- /** Маршруты API (clipwright#135): контрактный тест `apps/api` сверяет их с `app.routes`, */
2
- /** квикстарт печатает отсюда список «что стоит денег». */
3
1
  export interface ApiEndpoint {
4
2
  method: "GET" | "POST" | "DELETE";
5
3
  /** Путь в записи Hono: параметр — `:id`. */
@@ -8,6 +6,8 @@ export interface ApiEndpoint {
8
6
  billed: boolean;
9
7
  /** Называет ли его квикстарт. */
10
8
  onQuickstart: boolean;
9
+ /** Разбирает ли маршрут тело как JSON. `POST /v1/uploads` принимает байты. */
10
+ jsonBody: boolean;
11
11
  }
12
12
  export declare const API_ENDPOINTS: readonly ApiEndpoint[];
13
13
  /** `GET /v1/runs/{id}` — запись для людей: параметр в фигурных скобках. */
package/dist/endpoints.js CHANGED
@@ -1,17 +1,22 @@
1
+ /** Маршруты API (clipwright#135): контрактный тест `apps/api` сверяет их с `app.routes`, */
2
+ /** квикстарт печатает отсюда список «что стоит денег». */
3
+ import { ACTOR_DEFAULTS_PATH } from "./broll-policy.js";
1
4
  export const API_ENDPOINTS = [
2
- { method: "GET", path: "/health", billed: false, onQuickstart: true },
3
- { method: "GET", path: "/v1/voices", billed: false, onQuickstart: true },
4
- { method: "GET", path: "/v1/account", billed: false, onQuickstart: true },
5
- { method: "POST", path: "/v1/skills/make_ugc/quote", billed: false, onQuickstart: true },
6
- { method: "GET", path: "/v1/runs/:id", billed: false, onQuickstart: true },
7
- { method: "POST", path: "/v1/skills/make_ugc/run", billed: true, onQuickstart: true },
8
- { method: "GET", path: "/v1/public/skills", billed: false, onQuickstart: false },
9
- { method: "GET", path: "/v1/actors", billed: false, onQuickstart: false },
10
- { method: "DELETE", path: "/v1/actors/:id", billed: false, onQuickstart: false },
11
- { method: "POST", path: "/v1/skills/create_actor/quote", billed: false, onQuickstart: false },
12
- { method: "POST", path: "/v1/skills/create_actor/run", billed: true, onQuickstart: false },
13
- { method: "POST", path: "/v1/uploads", billed: false, onQuickstart: false },
14
- { method: "GET", path: "/internal/portfolio-metrics", billed: false, onQuickstart: false },
5
+ { method: "GET", path: "/health", billed: false, onQuickstart: true, jsonBody: false },
6
+ { method: "GET", path: "/v1/voices", billed: false, onQuickstart: true, jsonBody: false },
7
+ { method: "GET", path: "/v1/account", billed: false, onQuickstart: true, jsonBody: false },
8
+ { method: "POST", path: "/v1/skills/make_ugc/quote", billed: false, onQuickstart: true, jsonBody: true },
9
+ { method: "GET", path: "/v1/runs/:id", billed: false, onQuickstart: true, jsonBody: false },
10
+ { method: "POST", path: "/v1/skills/make_ugc/run", billed: true, onQuickstart: true, jsonBody: true },
11
+ { method: "GET", path: "/v1/public/skills", billed: false, onQuickstart: false, jsonBody: false },
12
+ { method: "GET", path: "/v1/actors", billed: false, onQuickstart: false, jsonBody: false },
13
+ { method: "DELETE", path: "/v1/actors/:id", billed: false, onQuickstart: false, jsonBody: false },
14
+ { method: "GET", path: ACTOR_DEFAULTS_PATH, billed: false, onQuickstart: false, jsonBody: false },
15
+ { method: "POST", path: ACTOR_DEFAULTS_PATH, billed: false, onQuickstart: false, jsonBody: true },
16
+ { method: "POST", path: "/v1/skills/create_actor/quote", billed: false, onQuickstart: false, jsonBody: true },
17
+ { method: "POST", path: "/v1/skills/create_actor/run", billed: true, onQuickstart: false, jsonBody: true },
18
+ { method: "POST", path: "/v1/uploads", billed: false, onQuickstart: false, jsonBody: false },
19
+ { method: "GET", path: "/internal/portfolio-metrics", billed: false, onQuickstart: false, jsonBody: false },
15
20
  ];
16
21
  /** `GET /v1/runs/{id}` — запись для людей: параметр в фигурных скобках. */
17
22
  export function endpointLabel(endpoint) {