@clipwright/core 0.18.0 → 0.20.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 (124) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/dist/__fixtures__/queue-promises.d.ts +5 -84
  3. package/dist/__fixtures__/queue-promises.js +7 -84
  4. package/dist/__fixtures__/queue-promises.js.map +1 -1
  5. package/dist/account-actors.d.ts +25 -25
  6. package/dist/account-actors.js +25 -25
  7. package/dist/account-actors.js.map +1 -1
  8. package/dist/account.d.ts +4 -10
  9. package/dist/account.js +6 -12
  10. package/dist/account.js.map +1 -1
  11. package/dist/actor-bounds.d.ts +4 -4
  12. package/dist/actor-bounds.js +4 -4
  13. package/dist/actor-bounds.js.map +1 -1
  14. package/dist/actor-qualities.d.ts +3 -3
  15. package/dist/actor-qualities.js +3 -3
  16. package/dist/actor-qualities.js.map +1 -1
  17. package/dist/actors.d.ts +8 -8
  18. package/dist/actors.js +9 -9
  19. package/dist/actors.js.map +1 -1
  20. package/dist/api-failure.d.ts +28 -129
  21. package/dist/api-failure.js +52 -225
  22. package/dist/api-failure.js.map +1 -1
  23. package/dist/aspect.d.ts +26 -96
  24. package/dist/aspect.js +32 -108
  25. package/dist/aspect.js.map +1 -1
  26. package/dist/contract-dispositions.d.ts +42 -167
  27. package/dist/contract-dispositions.js +54 -184
  28. package/dist/contract-dispositions.js.map +1 -1
  29. package/dist/endpoints.d.ts +5 -5
  30. package/dist/endpoints.js +3 -3
  31. package/dist/endpoints.js.map +1 -1
  32. package/dist/errors.d.ts +33 -101
  33. package/dist/errors.js +42 -108
  34. package/dist/errors.js.map +1 -1
  35. package/dist/faceless-cut-style.d.ts +115 -0
  36. package/dist/faceless-cut-style.js +109 -0
  37. package/dist/faceless-cut-style.js.map +1 -0
  38. package/dist/faceless-image-qualification.d.ts +97 -0
  39. package/dist/faceless-image-qualification.js +145 -0
  40. package/dist/faceless-image-qualification.js.map +1 -0
  41. package/dist/faceless-short-61.d.ts +83 -0
  42. package/dist/faceless-short-61.js +152 -0
  43. package/dist/faceless-short-61.js.map +1 -0
  44. package/dist/faceless-storyboard-timing.d.ts +40 -0
  45. package/dist/faceless-storyboard-timing.js +97 -0
  46. package/dist/faceless-storyboard-timing.js.map +1 -0
  47. package/dist/faceless-storyboard-v2-plan.d.ts +3 -0
  48. package/dist/faceless-storyboard-v2-plan.js +112 -0
  49. package/dist/faceless-storyboard-v2-plan.js.map +1 -0
  50. package/dist/faceless-storyboard-v2-timing.d.ts +52 -0
  51. package/dist/faceless-storyboard-v2-timing.js +136 -0
  52. package/dist/faceless-storyboard-v2-timing.js.map +1 -0
  53. package/dist/faceless-storyboard-v2.d.ts +44 -0
  54. package/dist/faceless-storyboard-v2.js +43 -0
  55. package/dist/faceless-storyboard-v2.js.map +1 -0
  56. package/dist/faceless-storyboard.d.ts +55 -0
  57. package/dist/faceless-storyboard.js +105 -0
  58. package/dist/faceless-storyboard.js.map +1 -0
  59. package/dist/idempotency.d.ts +8 -44
  60. package/dist/idempotency.js +10 -44
  61. package/dist/idempotency.js.map +1 -1
  62. package/dist/index.js +21 -25
  63. package/dist/index.js.map +1 -1
  64. package/dist/long-form-pricing.d.ts +4 -4
  65. package/dist/long-form-pricing.js +4 -4
  66. package/dist/long-form-pricing.js.map +1 -1
  67. package/dist/long-form-profile.d.ts +2 -2
  68. package/dist/long-form-profile.js +2 -2
  69. package/dist/long-form-profile.js.map +1 -1
  70. package/dist/pacing.d.ts +1 -1
  71. package/dist/pacing.js +1 -1
  72. package/dist/pacing.js.map +1 -1
  73. package/dist/public-endpoints.d.ts +9 -11
  74. package/dist/public-endpoints.js +11 -13
  75. package/dist/public-endpoints.js.map +1 -1
  76. package/dist/rate-limit.d.ts +23 -130
  77. package/dist/rate-limit.js +27 -132
  78. package/dist/rate-limit.js.map +1 -1
  79. package/dist/render-backend.d.ts +30 -145
  80. package/dist/render-backend.js +4 -27
  81. package/dist/render-backend.js.map +1 -1
  82. package/dist/run-preflight.d.ts +4 -4
  83. package/dist/run-preflight.js +10 -10
  84. package/dist/run-preflight.js.map +1 -1
  85. package/dist/run-static-warnings.d.ts +8 -8
  86. package/dist/run-static-warnings.js +24 -24
  87. package/dist/run-static-warnings.js.map +1 -1
  88. package/dist/runs.d.ts +18 -55
  89. package/dist/runs.js +26 -94
  90. package/dist/runs.js.map +1 -1
  91. package/dist/script-integrity.d.ts +6 -7
  92. package/dist/script-integrity.js +7 -8
  93. package/dist/script-integrity.js.map +1 -1
  94. package/dist/semantic-inserts.d.ts +4 -4
  95. package/dist/semantic-inserts.js +6 -6
  96. package/dist/semantic-inserts.js.map +1 -1
  97. package/dist/skills.d.ts +33 -107
  98. package/dist/skills.js +72 -161
  99. package/dist/skills.js.map +1 -1
  100. package/dist/tts-backend.d.ts +13 -42
  101. package/dist/tts-backend.js +2 -10
  102. package/dist/tts-backend.js.map +1 -1
  103. package/dist/uploads.d.ts +4 -4
  104. package/dist/uploads.js +4 -4
  105. package/dist/uploads.js.map +1 -1
  106. package/dist/vendor-response.d.ts +17 -80
  107. package/dist/vendor-response.js +19 -67
  108. package/dist/vendor-response.js.map +1 -1
  109. package/dist/voice-admission.d.ts +5 -5
  110. package/dist/voice-admission.js +6 -6
  111. package/dist/voice-admission.js.map +1 -1
  112. package/dist/voice-catalog-data.d.ts +2 -2
  113. package/dist/voice-catalog-data.js +2 -2
  114. package/dist/voice-catalog-data.js.map +1 -1
  115. package/dist/voice-catalog.d.ts +5 -5
  116. package/dist/voice-catalog.js +6 -6
  117. package/dist/voice-catalog.js.map +1 -1
  118. package/dist/voice-listing.d.ts +4 -4
  119. package/dist/voice-listing.js +6 -6
  120. package/dist/voice-listing.js.map +1 -1
  121. package/dist/voices.d.ts +40 -82
  122. package/dist/voices.js +56 -99
  123. package/dist/voices.js.map +1 -1
  124. package/package.json +1 -1
package/dist/skills.d.ts CHANGED
@@ -1,80 +1,36 @@
1
1
  import { z } from "zod";
2
2
  export declare const CAPTION_STYLES: readonly ["hormozi", "tiktok", "minimal"];
3
3
  export declare const LOOKS: readonly ["natural", "commercial", "raw_iphone"];
4
- /**
5
- * Публичное множество форматов = ИЗМЕРЕННОЕ множество, а не вендорская дока.
6
- *
7
- * Вендор принимает шесть форматов, но живьём у нас проверены два, и ровно эти
8
- * два объявляет `CAPABILITIES` адаптера. Объявить в схеме больше — значит
9
- * принять значение, которое пайплайн потом отклонит; это тот самый класс
10
- * расхождения, ради устранения которого пересматривается контракт. Расширение —
11
- * отдельное стори (US-535) и только после живого измерения (US-530).
12
- */
4
+ /** Public formats = formats MEASURED live, not the vendor docs: declaring more would */
5
+ /** accept values the pipeline later rejects. */
13
6
  export declare const ASPECT_RATIOS: readonly ["9:16", "1:1", "16:9"];
14
7
  export type AspectRatio = (typeof ASPECT_RATIOS)[number];
15
- /**
16
- * Разрешение выхода. Значения — те, что реально принимает HeyGen v3
17
- * (проверено 18.07.2026: `480p` и ниже отклоняются с
18
- * `Input should be '4k', '1080p' or '720p'`).
19
- *
20
- * Фактические кадры при `aspect_ratio: "9:16"` — замерены на реальных файлах:
21
- * 720p → 720 × 1280 (~590 КБ на 7 сек)
22
- * 1080p → 1080 × 1920 (~923 КБ)
23
- * 4k → 2160 × 3840 (~3.7 МБ)
24
- *
25
- * ВАЖНО: на стоимость разрешение НЕ влияет. HeyGen тарифицирует по
26
- * длительности (~1 кредит/сек): все три варианта стоили одинаково — 8
27
- * кредитов за один и тот же 7.36-секундный ролик. Понижать разрешение ради
28
- * экономии кредитов бессмысленно; экономят короткие скрипты и фикстурный
29
- * режим. 720p в деве берётся ради скорости скачивания и объёма в R2
30
- * (файл в 6 раз меньше 4k), а не ради денег.
31
- */
8
+ /** Output resolution, as the vendor accepts it (720p: 720×1280, 1080p: 1080×1920, 4k: 2160×3840 */
9
+ /** at 9:16). Resolution does not change the price; dev uses 720p for download size only. */
32
10
  export declare const RESOLUTIONS: readonly ["720p", "1080p", "4k"];
33
11
  export type Resolution = (typeof RESOLUTIONS)[number];
34
- /**
35
- * Продуктовый дефолт — 1080p, и это не деталь реализации.
36
- * Конкурент обещает 1080p, а отдаёт 720p (docs/08); наше обещание держать
37
- * 1080×1920 — заявленный дифференциатор и правило проекта №4. Понижение
38
- * дефолта допустимо ТОЛЬКО в dev-окружении, где ролики никто не публикует.
39
- */
12
+ /** The 1080×1920 default is a product promise; only dev, where nothing is published, */
13
+ /** may lower it. */
40
14
  export declare const DEFAULT_RESOLUTION: Resolution;
41
15
  export declare const DEV_RESOLUTION: Resolution;
42
- /**
43
- * Разрешение конкретного рана: явный выбор клиента важнее любых дефолтов,
44
- * иначе dev-окружение молча подменяло бы то, что пользователь запросил.
45
- */
16
+ /** Resolution of a run: an explicit client choice beats any default, or dev would */
17
+ /** silently replace what the user asked for. */
46
18
  export declare function resolveResolution(requested: Resolution | undefined, isDev: boolean): Resolution;
47
- /** Потолок длины ЛЮБОГО адреса из чужого тела: без него поле берёт весь потолок */
48
- /** тела запроса. Число — верхний предел, который переваривает любой браузер и CDN. */
19
+ /** Length cap for ANY URL from a foreign body; without it the field takes the whole */
20
+ /** body cap. The value is the upper bound any browser and CDN handles. */
49
21
  export declare const MAX_URL_LENGTH = 2048;
50
- /** Скиллы общего неймспейса ранов. Колонка `runs.skill` — текст, поэтому читается через `parseSkill`. */
22
+ /** Skills in the shared run namespace. `runs.skill` is text, so it is read through `parseSkill`. */
51
23
  export declare const SKILLS: readonly ["make_ugc", "create_actor"];
52
24
  export type Skill = (typeof SKILLS)[number];
53
25
  export declare function parseSkill(value: unknown): Skill | null;
54
- /** ЧТО ДЕЛАЕТ `make_ugc` — один текст на обе контрактные поверхности: публичный */
55
- /** REST-каталог и MCP `tools/list`. Разойдясь, они описали бы РАЗНЫЙ скилл. */
26
+ /** What `make_ugc` does: one text for both contract surfaces, the public REST catalog */
27
+ /** and MCP `tools/list`, so they never describe different skills. */
56
28
  export declare const MAKE_UGC_DESCRIPTION: string;
57
- /** Как ЗВАТЬ скилл по MCP. Отдельно от описания выше: имена соседних тулов и */
58
- /** поллинг — свойства протокола, и REST-каталогу они не адресованы. */
29
+ /** How to CALL the skill over MCP. Kept apart from the description: neighboring tool */
30
+ /** names and polling are protocol details not meant for the REST catalog. */
59
31
  export declare const MAKE_UGC_AGENT_PROTOCOL: string;
60
- /**
61
- * Сырой zod-shape входа make_ugc — БЕЗ `.refine()`.
62
- *
63
- * ЗАЧЕМ ОТДЕЛЬНО ОТ `makeUgcInput`: `makeUgcInput` после `.refine()` становится
64
- * `ZodEffects`, у которого НЕТ `.shape` (ловушка A12). MCP-тул (`tools/list`) и
65
- * прочие потребители, которым нужен именно объект полей, обязаны собираться из
66
- * этого shape, а не переписывать поля руками (правило проекта №2 — не дублировать
67
- * схему). `makeUgcInput` пересобирается из ЭТОГО ЖЕ shape ниже, чтобы они не
68
- * разошлись.
69
- */
70
- /**
71
- * Один сегмент ролика. Форма объявляется ЗДЕСЬ, в Slice 1, хотя реализация —
72
- * в Slice 2 (US-526): поле `segments` требует `script → .optional()`, а это
73
- * меняет `required[]` в `tools/list`. Приедь правка позже, публичная форма
74
- * сменилась бы ПОСЛЕ проверки вторым пользователем и обесценила бы её —
75
- * единственную внешне фальсифицируемую проверку продукта. Здесь required-набор
76
- * меняется один раз, до гейта, а Slice 2 сводится к снятию строки отказа.
77
- */
32
+ /** One clip segment. `segments` makes `script` optional, changing `required[]` in `tools/list`, */
33
+ /** so the shape was declared once up front instead of changing the public form later. */
78
34
  export declare const ugcSegment: z.ZodObject<{
79
35
  kind: z.ZodEnum<{
80
36
  actor: "actor";
@@ -120,11 +76,11 @@ export declare const ugcInsert: z.ZodObject<{
120
76
  }, z.core.$strict>>;
121
77
  }, z.core.$strict>;
122
78
  export type UgcInsert = z.infer<typeof ugcInsert>;
123
- /** Потолок актёрских сегментов — ограничение ОДНОГО рана, не суточных трат. */
79
+ /** Actor segment cap: a limit on ONE run, not on daily spend. */
124
80
  export declare const MAX_ACTOR_SEGMENTS = 3;
125
81
  export declare const MAX_SEGMENTS = 5;
126
- /** Потолки НАРРАТИВНОГО пути — другие, потому что медиа-шот денег не стоит, */
127
- /** а актёрский стоит: вставок столько, сколько вмещает таймлайн (ADR #265). */
82
+ /** Narrated-path caps differ because a media shot costs nothing and an actor shot does: */
83
+ /** as many inserts as the timeline holds. */
128
84
  export declare const MAX_INSERTS: number;
129
85
  export declare const MAX_NARRATED_ACTOR_SHOTS = 6;
130
86
  export declare const actorId: z.ZodString;
@@ -217,39 +173,19 @@ export declare const makeUgcInputShape: {
217
173
  eleven_v3: "eleven_v3";
218
174
  }>>;
219
175
  readonly webhook_url: z.ZodOptional<z.ZodString>;
220
- /**
221
- * Видимая плашка «сделано ИИ» поверх кадра — OPT-IN, а не обязательная.
222
- *
223
- * Обязательный вотермарк отменил бы заявленный дифференциатор («без
224
- * вотермарки»), поэтому раскрытие держится на контрактных полях и на теге
225
- * внутри файла, а плашка остаётся выбором вызывателя. Выжигание её в кадр
226
- * требует композиции: она появилась в US-527, и US-539 перевёл поле в
227
- * `implemented` (обусловлено флагом `CLIPWRIGHT_COMPOSE`).
228
- */
176
+ /** Visible "made with AI" overlay, OPT-IN: disclosure rests on contract fields and file */
177
+ /** metadata. Burning it in needs composition (gated by `CLIPWRIGHT_COMPOSE`). */
229
178
  readonly disclosure_overlay: z.ZodOptional<z.ZodBoolean>;
230
- /**
231
- * Чем заполнять кадр, когда клип не покрывает его целиком (US-527).
232
- *
233
- * БЕЗ `.default()` НАМЕРЕННО. Дефолт здесь означал бы, что мы выбираем за
234
- * клиента, как выглядит его ролик там, где формат не совпал с источником, —
235
- * и выбираем МОЛЧА. Отсутствие поля значит «укладки не требуется»; если она
236
- * всё же понадобилась, ран обязан сказать об этом в `warnings[]`, а не
237
- * подобрать фон по своему вкусу.
238
- *
239
- * `contain` — вписать целиком (поля видны), `white` — белые поля как у
240
- * вендора, `blur` — размытая заливка тем же кадром.
241
- */
179
+ /** How to fill a frame the clip does not cover. No `.default()`: absence means no layout */
180
+ /** is needed. `contain` fits whole, `white` pads white, `blur` fills with the blurred frame. */
242
181
  readonly background: z.ZodOptional<z.ZodEnum<{
243
182
  blur: "blur";
244
183
  contain: "contain";
245
184
  white: "white";
246
185
  }>>;
247
186
  };
248
- /**
249
- * Ретрай-параметр агентного скилла: НОМЕР попытки. Живёт в core (не рукописно в
250
- * MCP и CLI сразу), но ОТДЕЛЬНО от `makeUgcInputShape` — это вход СКИЛЛА
251
- * (порождает суффикс `:N` у ключа идемпотентности в SDK), а не параметр рендера.
252
- */
187
+ /** Agent retry parameter: the attempt NUMBER. Kept apart from `makeUgcInputShape` because it */
188
+ /** is a skill input (the `:N` idempotency-key suffix in the SDK), not a render parameter. */
253
189
  export declare const agentRetryShape: {
254
190
  readonly attempt: z.ZodOptional<z.ZodNumber>;
255
191
  };
@@ -349,8 +285,8 @@ export declare const makeUgcInput: z.ZodObject<{
349
285
  white: "white";
350
286
  }>>;
351
287
  }, z.core.$strip>;
352
- /** Вход API: имя голоса сверяет `voiceRefusal` сервера. Каталог сюда не импортируется — */
353
- /** баррел читают клиенты; сервер берёт готовую схему из `@clipwright/core/voice-admission`. */
288
+ /** API input: the server's `voiceRefusal` checks the voice name. The catalog is not imported */
289
+ /** here, since clients read this barrel; the server uses `@clipwright/core/voice-admission`. */
354
290
  export declare function serverUgcInputWith(voiceRefusal: (voice: string) => string | undefined): z.ZodObject<{
355
291
  script: z.ZodOptional<z.ZodString>;
356
292
  segments: z.ZodOptional<z.ZodArray<z.ZodObject<{
@@ -447,8 +383,8 @@ export declare function serverUgcInputWith(voiceRefusal: (voice: string) => stri
447
383
  white: "white";
448
384
  }>>;
449
385
  }, z.core.$strip>;
450
- /** Сохранённый вход рана: правила допуска он уже прошёл, и смена модели или */
451
- /** потолка не должна делать старый ран нечитаемым (#145). Снимок — ради пола (#210). */
386
+ /** A stored run input already passed admission; a model or cap change must not make an */
387
+ /** old run unreadable. The snapshot keeps the actor's gender. */
452
388
  export declare const storedUgcInput: z.ZodObject<{
453
389
  script: z.ZodOptional<z.ZodString>;
454
390
  segments: z.ZodOptional<z.ZodArray<z.ZodObject<{
@@ -547,23 +483,13 @@ export declare const storedUgcInput: z.ZodObject<{
547
483
  }>>;
548
484
  }, z.core.$strip>>;
549
485
  }, z.core.$strip>;
550
- /** Минимум, из которого выводится произносимый текст: сам скрипт или сегменты. */
486
+ /** The minimum the spoken text is derived from: the script itself or the segments. */
551
487
  export interface SpokenTextInput {
552
488
  script?: string | undefined;
553
489
  segments?: readonly UgcSegment[] | undefined;
554
490
  }
555
- /**
556
- * ЕДИНСТВЕННОЕ место, где «`script` либо сам, либо склейка сегментов»
557
- * превращается в `string`.
558
- *
559
- * ЗАЧЕМ ХЕЛПЕР, А НЕ `!` НА СЕМИ CALL-SITE'АХ. Снятие обязательности со
560
- * `script` делает его `string | undefined` у каждого потребителя, и `.refine`
561
- * спасает в рантайме, а компилятор — нет. Самый чувствительный из них —
562
- * `elevenlabs-tts.ts`, где комментарий прямо опирался на `z.string().min(1)`
563
- * как на ГАРД ПЕРЕД ПЛАТНЫМ POST: заткни мы там типы, гард остался бы снятым,
564
- * а компилятор бы об этом молчал. Поэтому проверка непустоты живёт ВНУТРИ
565
- * хелпера и восстанавливает гард явно, а не полагается на снятую схему.
566
- */
491
+ /** The ONLY place where "script or joined segments" becomes a `string`. The non-empty */
492
+ /** check lives here, restoring the guard before the paid TTS call that the schema no longer holds. */
567
493
  export declare function resolvedScript(input: SpokenTextInput): string;
568
494
  export type MakeUgcInput = z.infer<typeof makeUgcInput>;
569
495
  export declare const quoteResponse: z.ZodObject<{