@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.
- package/CHANGELOG.md +44 -0
- package/dist/__fixtures__/queue-promises.d.ts +5 -84
- package/dist/__fixtures__/queue-promises.js +7 -84
- package/dist/__fixtures__/queue-promises.js.map +1 -1
- package/dist/account-actors.d.ts +25 -25
- package/dist/account-actors.js +25 -25
- package/dist/account-actors.js.map +1 -1
- package/dist/account.d.ts +4 -10
- package/dist/account.js +6 -12
- package/dist/account.js.map +1 -1
- package/dist/actor-bounds.d.ts +4 -4
- package/dist/actor-bounds.js +4 -4
- package/dist/actor-bounds.js.map +1 -1
- package/dist/actor-qualities.d.ts +3 -3
- package/dist/actor-qualities.js +3 -3
- package/dist/actor-qualities.js.map +1 -1
- package/dist/actors.d.ts +8 -8
- package/dist/actors.js +9 -9
- package/dist/actors.js.map +1 -1
- package/dist/api-failure.d.ts +28 -129
- package/dist/api-failure.js +52 -225
- package/dist/api-failure.js.map +1 -1
- package/dist/aspect.d.ts +26 -96
- package/dist/aspect.js +32 -108
- package/dist/aspect.js.map +1 -1
- package/dist/contract-dispositions.d.ts +42 -167
- package/dist/contract-dispositions.js +54 -184
- package/dist/contract-dispositions.js.map +1 -1
- package/dist/endpoints.d.ts +5 -5
- package/dist/endpoints.js +3 -3
- package/dist/endpoints.js.map +1 -1
- package/dist/errors.d.ts +33 -101
- package/dist/errors.js +42 -108
- package/dist/errors.js.map +1 -1
- package/dist/faceless-cut-style.d.ts +115 -0
- package/dist/faceless-cut-style.js +109 -0
- package/dist/faceless-cut-style.js.map +1 -0
- package/dist/faceless-image-qualification.d.ts +97 -0
- package/dist/faceless-image-qualification.js +145 -0
- package/dist/faceless-image-qualification.js.map +1 -0
- package/dist/faceless-short-61.d.ts +83 -0
- package/dist/faceless-short-61.js +152 -0
- package/dist/faceless-short-61.js.map +1 -0
- package/dist/faceless-storyboard-timing.d.ts +40 -0
- package/dist/faceless-storyboard-timing.js +97 -0
- package/dist/faceless-storyboard-timing.js.map +1 -0
- package/dist/faceless-storyboard-v2-plan.d.ts +3 -0
- package/dist/faceless-storyboard-v2-plan.js +112 -0
- package/dist/faceless-storyboard-v2-plan.js.map +1 -0
- package/dist/faceless-storyboard-v2-timing.d.ts +52 -0
- package/dist/faceless-storyboard-v2-timing.js +136 -0
- package/dist/faceless-storyboard-v2-timing.js.map +1 -0
- package/dist/faceless-storyboard-v2.d.ts +44 -0
- package/dist/faceless-storyboard-v2.js +43 -0
- package/dist/faceless-storyboard-v2.js.map +1 -0
- package/dist/faceless-storyboard.d.ts +55 -0
- package/dist/faceless-storyboard.js +105 -0
- package/dist/faceless-storyboard.js.map +1 -0
- package/dist/idempotency.d.ts +8 -44
- package/dist/idempotency.js +10 -44
- package/dist/idempotency.js.map +1 -1
- package/dist/index.js +21 -25
- package/dist/index.js.map +1 -1
- package/dist/long-form-pricing.d.ts +4 -4
- package/dist/long-form-pricing.js +4 -4
- package/dist/long-form-pricing.js.map +1 -1
- package/dist/long-form-profile.d.ts +2 -2
- package/dist/long-form-profile.js +2 -2
- package/dist/long-form-profile.js.map +1 -1
- package/dist/pacing.d.ts +1 -1
- package/dist/pacing.js +1 -1
- package/dist/pacing.js.map +1 -1
- package/dist/public-endpoints.d.ts +9 -11
- package/dist/public-endpoints.js +11 -13
- package/dist/public-endpoints.js.map +1 -1
- package/dist/rate-limit.d.ts +23 -130
- package/dist/rate-limit.js +27 -132
- package/dist/rate-limit.js.map +1 -1
- package/dist/render-backend.d.ts +30 -145
- package/dist/render-backend.js +4 -27
- package/dist/render-backend.js.map +1 -1
- package/dist/run-preflight.d.ts +4 -4
- package/dist/run-preflight.js +10 -10
- package/dist/run-preflight.js.map +1 -1
- package/dist/run-static-warnings.d.ts +8 -8
- package/dist/run-static-warnings.js +24 -24
- package/dist/run-static-warnings.js.map +1 -1
- package/dist/runs.d.ts +18 -55
- package/dist/runs.js +26 -94
- package/dist/runs.js.map +1 -1
- package/dist/script-integrity.d.ts +6 -7
- package/dist/script-integrity.js +7 -8
- package/dist/script-integrity.js.map +1 -1
- package/dist/semantic-inserts.d.ts +4 -4
- package/dist/semantic-inserts.js +6 -6
- package/dist/semantic-inserts.js.map +1 -1
- package/dist/skills.d.ts +33 -107
- package/dist/skills.js +72 -161
- package/dist/skills.js.map +1 -1
- package/dist/tts-backend.d.ts +13 -42
- package/dist/tts-backend.js +2 -10
- package/dist/tts-backend.js.map +1 -1
- package/dist/uploads.d.ts +4 -4
- package/dist/uploads.js +4 -4
- package/dist/uploads.js.map +1 -1
- package/dist/vendor-response.d.ts +17 -80
- package/dist/vendor-response.js +19 -67
- package/dist/vendor-response.js.map +1 -1
- package/dist/voice-admission.d.ts +5 -5
- package/dist/voice-admission.js +6 -6
- package/dist/voice-admission.js.map +1 -1
- package/dist/voice-catalog-data.d.ts +2 -2
- package/dist/voice-catalog-data.js +2 -2
- package/dist/voice-catalog-data.js.map +1 -1
- package/dist/voice-catalog.d.ts +5 -5
- package/dist/voice-catalog.js +6 -6
- package/dist/voice-catalog.js.map +1 -1
- package/dist/voice-listing.d.ts +4 -4
- package/dist/voice-listing.js +6 -6
- package/dist/voice-listing.js.map +1 -1
- package/dist/voices.d.ts +40 -82
- package/dist/voices.js +56 -99
- package/dist/voices.js.map +1 -1
- package/package.json +1 -1
package/dist/skills.js
CHANGED
|
@@ -6,95 +6,53 @@ import { countWords } from "./pacing.js";
|
|
|
6
6
|
import { resolveTtsModel, MAX_SCRIPT_CHARS, SCRIPT_LENGTH_DESCRIPTION, STRESS_MARKING_DESCRIPTION, ttsScriptLimitError, TTS_MODELS, isVoicePresetName, VOICE_ID_PATTERN, VOICE_NAME_PATTERN, VOICE_PRESET_NAMES, } from "./voices.js";
|
|
7
7
|
export const CAPTION_STYLES = ["hormozi", "tiktok", "minimal"];
|
|
8
8
|
export const LOOKS = ["natural", "commercial", "raw_iphone"];
|
|
9
|
-
/**
|
|
10
|
-
|
|
11
|
-
*
|
|
12
|
-
* Вендор принимает шесть форматов, но живьём у нас проверены два, и ровно эти
|
|
13
|
-
* два объявляет `CAPABILITIES` адаптера. Объявить в схеме больше — значит
|
|
14
|
-
* принять значение, которое пайплайн потом отклонит; это тот самый класс
|
|
15
|
-
* расхождения, ради устранения которого пересматривается контракт. Расширение —
|
|
16
|
-
* отдельное стори (US-535) и только после живого измерения (US-530).
|
|
17
|
-
*/
|
|
9
|
+
/** Public formats = formats MEASURED live, not the vendor docs: declaring more would */
|
|
10
|
+
/** accept values the pipeline later rejects. */
|
|
18
11
|
export const ASPECT_RATIOS = ["9:16", "1:1", "16:9"];
|
|
19
|
-
/**
|
|
20
|
-
|
|
21
|
-
* (проверено 18.07.2026: `480p` и ниже отклоняются с
|
|
22
|
-
* `Input should be '4k', '1080p' or '720p'`).
|
|
23
|
-
*
|
|
24
|
-
* Фактические кадры при `aspect_ratio: "9:16"` — замерены на реальных файлах:
|
|
25
|
-
* 720p → 720 × 1280 (~590 КБ на 7 сек)
|
|
26
|
-
* 1080p → 1080 × 1920 (~923 КБ)
|
|
27
|
-
* 4k → 2160 × 3840 (~3.7 МБ)
|
|
28
|
-
*
|
|
29
|
-
* ВАЖНО: на стоимость разрешение НЕ влияет. HeyGen тарифицирует по
|
|
30
|
-
* длительности (~1 кредит/сек): все три варианта стоили одинаково — 8
|
|
31
|
-
* кредитов за один и тот же 7.36-секундный ролик. Понижать разрешение ради
|
|
32
|
-
* экономии кредитов бессмысленно; экономят короткие скрипты и фикстурный
|
|
33
|
-
* режим. 720p в деве берётся ради скорости скачивания и объёма в R2
|
|
34
|
-
* (файл в 6 раз меньше 4k), а не ради денег.
|
|
35
|
-
*/
|
|
12
|
+
/** Output resolution, as the vendor accepts it (720p: 720×1280, 1080p: 1080×1920, 4k: 2160×3840 */
|
|
13
|
+
/** at 9:16). Resolution does not change the price; dev uses 720p for download size only. */
|
|
36
14
|
export const RESOLUTIONS = ["720p", "1080p", "4k"];
|
|
37
|
-
/**
|
|
38
|
-
|
|
39
|
-
* Конкурент обещает 1080p, а отдаёт 720p (docs/08); наше обещание держать
|
|
40
|
-
* 1080×1920 — заявленный дифференциатор и правило проекта №4. Понижение
|
|
41
|
-
* дефолта допустимо ТОЛЬКО в dev-окружении, где ролики никто не публикует.
|
|
42
|
-
*/
|
|
15
|
+
/** The 1080×1920 default is a product promise; only dev, where nothing is published, */
|
|
16
|
+
/** may lower it. */
|
|
43
17
|
export const DEFAULT_RESOLUTION = "1080p";
|
|
44
18
|
export const DEV_RESOLUTION = "720p";
|
|
45
|
-
/**
|
|
46
|
-
|
|
47
|
-
* иначе dev-окружение молча подменяло бы то, что пользователь запросил.
|
|
48
|
-
*/
|
|
19
|
+
/** Resolution of a run: an explicit client choice beats any default, or dev would */
|
|
20
|
+
/** silently replace what the user asked for. */
|
|
49
21
|
export function resolveResolution(requested, isDev) {
|
|
50
22
|
if (requested)
|
|
51
23
|
return requested;
|
|
52
24
|
return isDev ? DEV_RESOLUTION : DEFAULT_RESOLUTION;
|
|
53
25
|
}
|
|
54
|
-
/**
|
|
55
|
-
/**
|
|
26
|
+
/** Length cap for ANY URL from a foreign body; without it the field takes the whole */
|
|
27
|
+
/** body cap. The value is the upper bound any browser and CDN handles. */
|
|
56
28
|
export const MAX_URL_LENGTH = 2048;
|
|
57
|
-
/**
|
|
29
|
+
/** Skills in the shared run namespace. `runs.skill` is text, so it is read through `parseSkill`. */
|
|
58
30
|
export const SKILLS = ["make_ugc", "create_actor"];
|
|
59
31
|
export function parseSkill(value) {
|
|
60
32
|
return SKILLS.find((skill) => skill === value) ?? null;
|
|
61
33
|
}
|
|
62
|
-
/**
|
|
63
|
-
/**
|
|
34
|
+
/** What `make_ugc` does: one text for both contract surfaces, the public REST catalog */
|
|
35
|
+
/** and MCP `tools/list`, so they never describe different skills. */
|
|
64
36
|
export const MAKE_UGC_DESCRIPTION = "Start generation of a lip-synced UGC video. Give a script within the selected speech model's text limit; the actor comes " +
|
|
65
37
|
"from actor_id (a saved actor from list_actors) or image, otherwise the default actor is used. Format and resolution follow the request and " +
|
|
66
38
|
"the source, defaulting to 1080x1920. Captions are OPT-IN: ask the user first. Fields the " +
|
|
67
39
|
"renderer does not honor yet carry a NOT HONORED YET note in their own description — read " +
|
|
68
40
|
"it instead of guessing.";
|
|
69
|
-
/**
|
|
70
|
-
/**
|
|
41
|
+
/** How to CALL the skill over MCP. Kept apart from the description: neighboring tool */
|
|
42
|
+
/** names and polling are protocol details not meant for the REST catalog. */
|
|
71
43
|
export const MAKE_UGC_AGENT_PROTOCOL = "Call quote_ugc before generating and show the cost. This does NOT wait for the video: it " +
|
|
72
44
|
"starts the run and returns a run_id IMMEDIATELY. You MUST then poll get_run with that " +
|
|
73
|
-
"run_id until the state is 'succeeded' (video_url) or 'failed'.
|
|
45
|
+
"run_id until the state is 'succeeded' (video_url) or 'failed'. A 'failed' run whose paid " +
|
|
46
|
+
"vendor job we still hold can go back to 'queued' and reach 'succeeded' later; whenever that " +
|
|
47
|
+
"happens it is named in warnings[]. Pass attempt=2,3,… to " +
|
|
74
48
|
"deliberately start a NEW run for the same input (retry after a failure).";
|
|
75
|
-
/**
|
|
76
|
-
|
|
77
|
-
*
|
|
78
|
-
* ЗАЧЕМ ОТДЕЛЬНО ОТ `makeUgcInput`: `makeUgcInput` после `.refine()` становится
|
|
79
|
-
* `ZodEffects`, у которого НЕТ `.shape` (ловушка A12). MCP-тул (`tools/list`) и
|
|
80
|
-
* прочие потребители, которым нужен именно объект полей, обязаны собираться из
|
|
81
|
-
* этого shape, а не переписывать поля руками (правило проекта №2 — не дублировать
|
|
82
|
-
* схему). `makeUgcInput` пересобирается из ЭТОГО ЖЕ shape ниже, чтобы они не
|
|
83
|
-
* разошлись.
|
|
84
|
-
*/
|
|
85
|
-
/**
|
|
86
|
-
* Один сегмент ролика. Форма объявляется ЗДЕСЬ, в Slice 1, хотя реализация —
|
|
87
|
-
* в Slice 2 (US-526): поле `segments` требует `script → .optional()`, а это
|
|
88
|
-
* меняет `required[]` в `tools/list`. Приедь правка позже, публичная форма
|
|
89
|
-
* сменилась бы ПОСЛЕ проверки вторым пользователем и обесценила бы её —
|
|
90
|
-
* единственную внешне фальсифицируемую проверку продукта. Здесь required-набор
|
|
91
|
-
* меняется один раз, до гейта, а Slice 2 сводится к снятию строки отказа.
|
|
92
|
-
*/
|
|
49
|
+
/** One clip segment. `segments` makes `script` optional, changing `required[]` in `tools/list`, */
|
|
50
|
+
/** so the shape was declared once up front instead of changing the public form later. */
|
|
93
51
|
export const ugcSegment = z.object({
|
|
94
52
|
kind: z.enum(["actor", "media"]),
|
|
95
|
-
/**
|
|
53
|
+
/** The actor's line. Absent on a `media` segment, where a neighboring actor speaks. */
|
|
96
54
|
script: z.string().min(1).max(MAX_SCRIPT_CHARS).optional(),
|
|
97
|
-
/**
|
|
55
|
+
/** Full-frame cutaway. Required on `media`, forbidden on `actor`. */
|
|
98
56
|
media_url: z.string().url().max(MAX_URL_LENGTH).optional(),
|
|
99
57
|
media_type: z.enum(["image", "video"]).optional()
|
|
100
58
|
.describe("Explicit media source type; omission means video, regardless of URL suffix. Availability follows the segments field."),
|
|
@@ -140,19 +98,17 @@ export const ugcInsert = z.object({
|
|
|
140
98
|
}).strict().refine(insert => insert.image_motion === undefined || insert.media_type === "image", {
|
|
141
99
|
path: ["image_motion"], message: "image_motion requires media_type=image",
|
|
142
100
|
});
|
|
143
|
-
/**
|
|
101
|
+
/** Actor segment cap: a limit on ONE run, not on daily spend. */
|
|
144
102
|
export const MAX_ACTOR_SEGMENTS = 3;
|
|
145
103
|
export const MAX_SEGMENTS = 5;
|
|
146
|
-
/**
|
|
147
|
-
/**
|
|
104
|
+
/** Narrated-path caps differ because a media shot costs nothing and an actor shot does: */
|
|
105
|
+
/** as many inserts as the timeline holds. */
|
|
148
106
|
export const MAX_INSERTS = Math.floor((RESOLVED_TIMELINE_MAX_SLOTS - 1) / 2);
|
|
149
107
|
export const MAX_NARRATED_ACTOR_SHOTS = 6;
|
|
150
108
|
export const actorId = z.string().regex(/^actor_[a-z0-9][a-z0-9_-]{0,63}$/);
|
|
151
109
|
export const makeUgcInputShape = {
|
|
152
|
-
//
|
|
153
|
-
//
|
|
154
|
-
// JSON-Schema не умеет выразить «ровно одно из двух» через `required[]`,
|
|
155
|
-
// поэтому информативность возвращается текстом описания (блокер B9).
|
|
110
|
+
// Exactly one of `script | segments` must be present, enforced by `.refine` below;
|
|
111
|
+
// JSON Schema cannot express that via `required[]`, so the description says it.
|
|
156
112
|
script: z
|
|
157
113
|
.string({ error: "script must be the text the actor says, as a string" })
|
|
158
114
|
.min(1, "script is empty: pass the words the actor says")
|
|
@@ -173,10 +129,8 @@ export const makeUgcInputShape = {
|
|
|
173
129
|
.optional()
|
|
174
130
|
.describe("Saved Clipwright actor ID from list_actors. Choose actor_id, image, or person; do not combine them. " +
|
|
175
131
|
"Without voice or voice_id the voice follows the actor's gender. Do not combine with actor_gender."),
|
|
176
|
-
//
|
|
177
|
-
//
|
|
178
|
-
// вскрыла бы инвариант Этапа 4 «R2-URL вендору не передаются». Отказ на входе
|
|
179
|
-
// честнее, чем приём поля, которое некуда деть.
|
|
132
|
+
// https URLs only: the vendor takes URLs, and storage URLs are never passed to vendors,
|
|
133
|
+
// so a `data:` URI is refused on input rather than accepted and dropped.
|
|
180
134
|
image: z
|
|
181
135
|
.string({ error: "image must be the https url of the photo, as a string" })
|
|
182
136
|
.url("image is not a url: pass the https address of the photo, or upload it first")
|
|
@@ -188,7 +142,7 @@ export const makeUgcInputShape = {
|
|
|
188
142
|
"use — private or loopback host, http, unreachable, redirecting, over 10 MB, or not one of " +
|
|
189
143
|
"those image types — is refused (unusable_source) before any charge. We do not detect the " +
|
|
190
144
|
"face's gender: pass actor_gender or voice, or the default male voice is used with a warning."),
|
|
191
|
-
//
|
|
145
|
+
// No .default(): silence differs from a hint, and silence gets a warning.
|
|
192
146
|
actor_gender: z
|
|
193
147
|
.enum(["female", "male"])
|
|
194
148
|
.optional()
|
|
@@ -202,27 +156,22 @@ export const makeUgcInputShape = {
|
|
|
202
156
|
captions: z.boolean().default(false),
|
|
203
157
|
caption_style: z.enum(CAPTION_STYLES).default("hormozi"),
|
|
204
158
|
look: z.enum(LOOKS).default("natural"),
|
|
205
|
-
//
|
|
206
|
-
//
|
|
207
|
-
// 9:16», и резолвер формата не смог бы отличить молчание от явного выбора.
|
|
208
|
-
// На этом различии стоит вся развилка: промолчал — снап к формату источника с
|
|
209
|
-
// предупреждением, попросил явно и не сходится — отказ до платного вызова.
|
|
210
|
-
// Дефолт подставляет DEFAULT_ASPECT_RATIO (aspect.ts).
|
|
159
|
+
// No .default(), so the resolver tells silence (snap with a warning) from an explicit
|
|
160
|
+
// choice (refused on conflict). DEFAULT_ASPECT_RATIO (aspect.ts) fills it in.
|
|
211
161
|
aspect_ratio: z
|
|
212
162
|
.enum(ASPECT_RATIOS)
|
|
213
163
|
.optional()
|
|
214
164
|
.describe(`Output format: ${ASPECT_RATIOS.join(" | ")}. Omitted means 9:16, and a source of another shape ` +
|
|
215
165
|
"is snapped to 9:16 with a warning — pass it explicitly whenever you pass image. A mismatch " +
|
|
216
166
|
"above 15% between the request and the source is refused (aspect_conflict) before any charge."),
|
|
217
|
-
//
|
|
218
|
-
//
|
|
219
|
-
// потому что он зависит от окружения, а схема о нём знать не должна.
|
|
167
|
+
// No .default(): resolveResolution() fills it, since the default depends on the
|
|
168
|
+
// environment, which the schema must not know.
|
|
220
169
|
resolution: z
|
|
221
170
|
.enum(RESOLUTIONS)
|
|
222
171
|
.optional()
|
|
223
172
|
.describe(`Output resolution: ${RESOLUTIONS.join(" | ")} (short side 720 / 1080 / 2160 px). Omitted means 1080p.`),
|
|
224
|
-
//
|
|
225
|
-
//
|
|
173
|
+
// No .default(), like resolution: an explicit voice differs from silence. `voice` is a
|
|
174
|
+
// name form checked by `serverUgcInput`; `voice_id` is a raw vendor id.
|
|
226
175
|
voice: z
|
|
227
176
|
.string({ error: "voice must be a voice name from list_voices, as a string" })
|
|
228
177
|
.regex(VOICE_NAME_PATTERN, "voice is not a voice name: take one from list_voices, or pass voice_id")
|
|
@@ -249,53 +198,32 @@ export const makeUgcInputShape = {
|
|
|
249
198
|
"eleven_flash_v2_5 and eleven_turbo_v2_5 are cheaper alternatives for languages other than " +
|
|
250
199
|
"Russian. " + SCRIPT_LENGTH_DESCRIPTION),
|
|
251
200
|
webhook_url: z.string().url().max(MAX_URL_LENGTH).optional(),
|
|
252
|
-
/**
|
|
253
|
-
|
|
254
|
-
*
|
|
255
|
-
* Обязательный вотермарк отменил бы заявленный дифференциатор («без
|
|
256
|
-
* вотермарки»), поэтому раскрытие держится на контрактных полях и на теге
|
|
257
|
-
* внутри файла, а плашка остаётся выбором вызывателя. Выжигание её в кадр
|
|
258
|
-
* требует композиции: она появилась в US-527, и US-539 перевёл поле в
|
|
259
|
-
* `implemented` (обусловлено флагом `CLIPWRIGHT_COMPOSE`).
|
|
260
|
-
*/
|
|
201
|
+
/** Visible "made with AI" overlay, OPT-IN: disclosure rests on contract fields and file */
|
|
202
|
+
/** metadata. Burning it in needs composition (gated by `CLIPWRIGHT_COMPOSE`). */
|
|
261
203
|
disclosure_overlay: z.boolean().optional(),
|
|
262
|
-
/**
|
|
263
|
-
|
|
264
|
-
*
|
|
265
|
-
* БЕЗ `.default()` НАМЕРЕННО. Дефолт здесь означал бы, что мы выбираем за
|
|
266
|
-
* клиента, как выглядит его ролик там, где формат не совпал с источником, —
|
|
267
|
-
* и выбираем МОЛЧА. Отсутствие поля значит «укладки не требуется»; если она
|
|
268
|
-
* всё же понадобилась, ран обязан сказать об этом в `warnings[]`, а не
|
|
269
|
-
* подобрать фон по своему вкусу.
|
|
270
|
-
*
|
|
271
|
-
* `contain` — вписать целиком (поля видны), `white` — белые поля как у
|
|
272
|
-
* вендора, `blur` — размытая заливка тем же кадром.
|
|
273
|
-
*/
|
|
204
|
+
/** How to fill a frame the clip does not cover. No `.default()`: absence means no layout */
|
|
205
|
+
/** is needed. `contain` fits whole, `white` pads white, `blur` fills with the blurred frame. */
|
|
274
206
|
background: z.enum(["white", "blur", "contain"]).optional(),
|
|
275
207
|
};
|
|
276
|
-
/**
|
|
277
|
-
|
|
278
|
-
* MCP и CLI сразу), но ОТДЕЛЬНО от `makeUgcInputShape` — это вход СКИЛЛА
|
|
279
|
-
* (порождает суффикс `:N` у ключа идемпотентности в SDK), а не параметр рендера.
|
|
280
|
-
*/
|
|
208
|
+
/** Agent retry parameter: the attempt NUMBER. Kept apart from `makeUgcInputShape` because it */
|
|
209
|
+
/** is a skill input (the `:N` idempotency-key suffix in the SDK), not a render parameter. */
|
|
281
210
|
export const agentRetryShape = { attempt: z.number().int().min(1).optional() };
|
|
282
|
-
//
|
|
283
|
-
//
|
|
211
|
+
// Shared REST/MCP/SDK schema: actor_id, person and image are mutually exclusive.
|
|
212
|
+
// The registry rejects character; person is accepted with a warning.
|
|
284
213
|
export const makeUgcInput = z
|
|
285
214
|
.object(makeUgcInputShape)
|
|
286
|
-
//
|
|
287
|
-
//
|
|
288
|
-
// молчаливую подмену.
|
|
215
|
+
// Exactly one of script | segments: with neither there is nothing to render; with
|
|
216
|
+
// both, silently picking one would be a silent substitution.
|
|
289
217
|
.refine((v) => (v.script === undefined) !== (v.segments === undefined), {
|
|
290
218
|
message: "pass exactly one of script | segments",
|
|
291
219
|
})
|
|
292
220
|
.refine(v => v.inserts === undefined || (v.script !== undefined && v.segments === undefined), {
|
|
293
221
|
path: ["inserts"], message: "inserts requires script and cannot be combined with segments",
|
|
294
222
|
})
|
|
295
|
-
//
|
|
296
|
-
//
|
|
223
|
+
// The character cap depends on the model; refused here, before any reserve or vendor call.
|
|
224
|
+
// Only the server knows the model of a voice unknown to the client, and checks it there.
|
|
297
225
|
.refine(
|
|
298
|
-
//
|
|
226
|
+
// The client does not know an `actor_id`'s gender; today's preset models do not depend on it.
|
|
299
227
|
(v) => modelUnknownToClient(v) ||
|
|
300
228
|
ttsScriptLimitError(spokenTextOf(v), resolveTtsModel(v, v.actor_gender)) === undefined, {
|
|
301
229
|
path: ["script"],
|
|
@@ -313,16 +241,15 @@ export const makeUgcInput = z
|
|
|
313
241
|
path: ["actor_gender"],
|
|
314
242
|
message: "actor_gender requires image: it describes the face in your photo; omit it, or pass image",
|
|
315
243
|
})
|
|
316
|
-
//
|
|
317
|
-
//
|
|
244
|
+
// List-wide limits and per-role required fields are checked here.
|
|
245
|
+
// Image type, duration and motion are checked by ugcSegment.
|
|
318
246
|
.refine((v) => v.segments === undefined || v.segments.some((s) => s.kind === "actor"), {
|
|
319
247
|
message: "segments must contain at least one actor segment: nobody speaks otherwise",
|
|
320
248
|
})
|
|
321
249
|
.refine((v) => v.segments === undefined ||
|
|
322
250
|
v.segments.filter((s) => s.kind === "actor").length <= MAX_ACTOR_SEGMENTS, {
|
|
323
|
-
//
|
|
324
|
-
//
|
|
325
|
-
// которую это число не даёт (PM3, принцип 5 плана).
|
|
251
|
+
// A per-run limit, not a daily spend cap: confusing the two would promise a
|
|
252
|
+
// protection this number does not give.
|
|
326
253
|
message: `at most ${MAX_ACTOR_SEGMENTS} actor segments per clip`,
|
|
327
254
|
})
|
|
328
255
|
.refine((v) => v.segments === undefined ||
|
|
@@ -331,8 +258,8 @@ export const makeUgcInput = z
|
|
|
331
258
|
v.segments.every((s) => s.kind !== "actor" || s.media_url === undefined), { message: "actor segment must not carry `media_url`: use a media segment for footage" })
|
|
332
259
|
.refine((v) => v.segments === undefined ||
|
|
333
260
|
v.segments.every((s) => s.kind !== "media" || s.media_url !== undefined), { message: "media segment requires `media_url`: there is no footage to show otherwise" })
|
|
334
|
-
//
|
|
335
|
-
//
|
|
261
|
+
// One voice selector at most; checked here, not in the shape, since .refine drops .shape.
|
|
262
|
+
// With both omitted the resolver picks a voice by the actor's gender (`resolveVoiceSelection`).
|
|
336
263
|
.refine((v) => !(v.voice !== undefined && v.voice_id !== undefined), { message: "pass at most one of voice | voice_id" })
|
|
337
264
|
// Length includes whitespace; a nonempty string can still have no speech.
|
|
338
265
|
.refine((v) => v.segments !== undefined || countWords(v.script ?? "") >= 1, {
|
|
@@ -341,15 +268,15 @@ export const makeUgcInput = z
|
|
|
341
268
|
function modelUnknownToClient(v) {
|
|
342
269
|
return v.tts_model === undefined && v.voice !== undefined && !isVoicePresetName(v.voice);
|
|
343
270
|
}
|
|
344
|
-
/**
|
|
345
|
-
/**
|
|
271
|
+
/** API input: the server's `voiceRefusal` checks the voice name. The catalog is not imported */
|
|
272
|
+
/** here, since clients read this barrel; the server uses `@clipwright/core/voice-admission`. */
|
|
346
273
|
export function serverUgcInputWith(voiceRefusal) {
|
|
347
274
|
return makeUgcInput
|
|
348
275
|
.refine((v) => v.voice === undefined || voiceRefusal(v.voice) === undefined, {
|
|
349
276
|
path: ["voice"],
|
|
350
277
|
error: (issue) => voiceRefusal(issue.input.voice),
|
|
351
278
|
})
|
|
352
|
-
//
|
|
279
|
+
// The cap the client skipped: the server knows the model of an admitted catalog voice.
|
|
353
280
|
.refine((v) => !modelUnknownToClient(v) ||
|
|
354
281
|
voiceRefusal(v.voice) !== undefined ||
|
|
355
282
|
ttsScriptLimitError(spokenTextOf(v), resolveTtsModel(v, v.actor_gender)) === undefined, {
|
|
@@ -360,14 +287,14 @@ export function serverUgcInputWith(voiceRefusal) {
|
|
|
360
287
|
},
|
|
361
288
|
});
|
|
362
289
|
}
|
|
363
|
-
/**
|
|
364
|
-
/**
|
|
290
|
+
/** A stored run input already passed admission; a model or cap change must not make an */
|
|
291
|
+
/** old run unreadable. The snapshot keeps the actor's gender. */
|
|
365
292
|
export const storedUgcInput = z.object({
|
|
366
293
|
...makeUgcInputShape,
|
|
367
294
|
tts_model: z.string().optional(),
|
|
368
295
|
actor_snapshot: z.object({ gender: z.enum(["female", "male"]).optional() }).optional(),
|
|
369
296
|
});
|
|
370
|
-
/**
|
|
297
|
+
/** Joins the spoken text without checks: the shared base for gates and the helper. */
|
|
371
298
|
function spokenTextOf(input) {
|
|
372
299
|
if (input.script !== undefined)
|
|
373
300
|
return input.script;
|
|
@@ -376,18 +303,8 @@ function spokenTextOf(input) {
|
|
|
376
303
|
.map((segment) => segment.script ?? "")
|
|
377
304
|
.join(" ");
|
|
378
305
|
}
|
|
379
|
-
/**
|
|
380
|
-
|
|
381
|
-
* превращается в `string`.
|
|
382
|
-
*
|
|
383
|
-
* ЗАЧЕМ ХЕЛПЕР, А НЕ `!` НА СЕМИ CALL-SITE'АХ. Снятие обязательности со
|
|
384
|
-
* `script` делает его `string | undefined` у каждого потребителя, и `.refine`
|
|
385
|
-
* спасает в рантайме, а компилятор — нет. Самый чувствительный из них —
|
|
386
|
-
* `elevenlabs-tts.ts`, где комментарий прямо опирался на `z.string().min(1)`
|
|
387
|
-
* как на ГАРД ПЕРЕД ПЛАТНЫМ POST: заткни мы там типы, гард остался бы снятым,
|
|
388
|
-
* а компилятор бы об этом молчал. Поэтому проверка непустоты живёт ВНУТРИ
|
|
389
|
-
* хелпера и восстанавливает гард явно, а не полагается на снятую схему.
|
|
390
|
-
*/
|
|
306
|
+
/** The ONLY place where "script or joined segments" becomes a `string`. The non-empty */
|
|
307
|
+
/** check lives here, restoring the guard before the paid TTS call that the schema no longer holds. */
|
|
391
308
|
export function resolvedScript(input) {
|
|
392
309
|
const text = spokenTextOf(input);
|
|
393
310
|
if (countWords(text) < 1) {
|
|
@@ -395,26 +312,20 @@ export function resolvedScript(input) {
|
|
|
395
312
|
}
|
|
396
313
|
return text;
|
|
397
314
|
}
|
|
398
|
-
//
|
|
399
|
-
//
|
|
400
|
-
// отклонённые поля, которые сервер отбивает четырёхсотым (блокер B4).
|
|
315
|
+
// The INPUT type (`MakeUgcInputArgs`) lives in `contract-dispositions.ts`: it comes from the
|
|
316
|
+
// OFFERED shape, so SDK autocomplete does not show rejected fields.
|
|
401
317
|
export const quoteResponse = z.object({
|
|
402
318
|
long_form_pricing: longFormQuoteSchema.optional(),
|
|
403
319
|
skill: z.string(),
|
|
404
320
|
credits_estimate: z.number().int().nonnegative(),
|
|
405
321
|
duration_estimate_sec: z.number().positive(),
|
|
406
|
-
//
|
|
322
|
+
// Unhonored parameters are declared up front, never silently ignored.
|
|
407
323
|
warnings: z.array(z.string()).default([]),
|
|
408
|
-
//
|
|
409
|
-
//
|
|
324
|
+
// The contract version sits in the response too, so an agent reading the quote
|
|
325
|
+
// sees which contract the price was given under.
|
|
410
326
|
contract_version: z.string(),
|
|
411
|
-
/**
|
|
412
|
-
|
|
413
|
-
* пробу сделать не удалось — отсутствие `image` источником не является, там
|
|
414
|
-
* стоит дефолтный актёр со своими размерами. Это и есть превращение
|
|
415
|
-
* невидимой константы в наблюдаемую величину: агент видит, ПОЧЕМУ формат
|
|
416
|
-
* получился таким, ещё до платного рендера.
|
|
417
|
-
*/
|
|
327
|
+
/** What we know about the frame source. `null` only when `image` was given but probing */
|
|
328
|
+
/** failed; without `image` the default actor's dimensions are reported. */
|
|
418
329
|
source: z
|
|
419
330
|
.object({
|
|
420
331
|
width: z.number().positive(),
|
|
@@ -422,7 +333,7 @@ export const quoteResponse = z.object({
|
|
|
422
333
|
aspect_ratio: z.string(),
|
|
423
334
|
})
|
|
424
335
|
.nullable(),
|
|
425
|
-
/**
|
|
336
|
+
/** Who is in the frame; `null` for a client `image`. */
|
|
426
337
|
actor: z
|
|
427
338
|
.object({
|
|
428
339
|
gender: z.enum(["female", "male"]),
|
|
@@ -430,7 +341,7 @@ export const quoteResponse = z.object({
|
|
|
430
341
|
version: z.number().int().positive().optional(),
|
|
431
342
|
})
|
|
432
343
|
.nullable(),
|
|
433
|
-
/**
|
|
344
|
+
/** The format that will actually be rendered for this input. */
|
|
434
345
|
resolved_aspect_ratio: z.enum(ASPECT_RATIOS),
|
|
435
346
|
tts_model: z.enum(TTS_MODELS),
|
|
436
347
|
});
|
package/dist/skills.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,EAC1B,mBAAmB,EACnB,UAAU,EACV,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AAErB,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAU,CAAC;AACxE,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,SAAS,EAAE,YAAY,EAAE,YAAY,CAAU,CAAC;AACtE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAU,CAAC;AAG9D;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAU,CAAC;AAG5D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAe,OAAO,CAAC;AACtD,MAAM,CAAC,MAAM,cAAc,GAAe,MAAM,CAAC;AAEjD;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,SAAiC,EACjC,KAAc;IAEd,IAAI,SAAS;QAAE,OAAO,SAAS,CAAC;IAChC,OAAO,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,kBAAkB,CAAC;AACrD,CAAC;AAED,mFAAmF;AACnF,sFAAsF;AACtF,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;AAEnC,yGAAyG;AACzG,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,UAAU,EAAE,cAAc,CAAU,CAAC;AAG5D,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC;AACzD,CAAC;AAED,mFAAmF;AACnF,+EAA+E;AAC/E,MAAM,CAAC,MAAM,oBAAoB,GAC/B,2HAA2H;IAC3H,6IAA6I;IAC7I,2FAA2F;IAC3F,2FAA2F;IAC3F,yBAAyB,CAAC;AAE5B,gFAAgF;AAChF,uEAAuE;AACvE,MAAM,CAAC,MAAM,uBAAuB,GAClC,2FAA2F;IAC3F,wFAAwF;IACxF,uFAAuF;IACvF,0EAA0E,CAAC;AAG7E;;;;;;;;;GASG;AACH;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAChC,mFAAmF;IACnF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE;IAC1D,oEAAoE;IACpE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE;IAC1D,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE;SAC9C,QAAQ,CAAC,sHAAsH,CAAC;IACnI,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;SAC/C,QAAQ,CAAC,2GAA2G,CAAC;IACxH,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC;QACrB,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAChC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8HAA8H,CAAC;CACvJ,CAAC,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;IAClC,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC7B,KAAK,MAAM,KAAK,IAAI,CAAC,YAAY,EAAE,kBAAkB,EAAE,cAAc,CAAU,EAAE,CAAC;YAChF,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,SAAS;gBAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,qCAAqC,EAAE,CAAC,CAAC;QAC7J,CAAC;IACH,CAAC;SAAM,IAAI,OAAO,CAAC,UAAU,KAAK,OAAO,EAAE,CAAC;QAC1C,IAAI,OAAO,CAAC,gBAAgB,KAAK,SAAS;YAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,yCAAyC,EAAE,CAAC,CAAC;IAChL,CAAC;SAAM,CAAC;QACN,KAAK,MAAM,KAAK,IAAI,CAAC,kBAAkB,EAAE,cAAc,CAAU,EAAE,CAAC;YAClE,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,SAAS;gBAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,4BAA4B,EAAE,CAAC,CAAC;QACpJ,CAAC;IACH,CAAC;AACH,CAAC,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,kCAAkC,CAAC;IACxD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;IACtE,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACtC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC;QACd,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;aAC1F,MAAM,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,wCAAwC,EAAE,CAAC;QACnH,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;YAC9F,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;KACpE,CAAC;IACF,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;SAC3D,QAAQ,CAAC,uFAAuF;QAC/F,gGAAgG;QAChG,oGAAoG,CAAC;IACzG,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClH,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,KAAK,SAAS,IAAI,MAAM,CAAC,UAAU,KAAK,OAAO,EAAE;IAC/F,IAAI,EAAE,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,wCAAwC;CAC1E,CAAC,CAAC;AAGH,+EAA+E;AAC/E,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AACpC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC;AAE9B,+EAA+E;AAC/E,+EAA+E;AAC/E,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,2BAA2B,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7E,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAE1C,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;AAE5E,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,qEAAqE;IACrE,2EAA2E;IAC3E,yEAAyE;IACzE,qEAAqE;IACrE,MAAM,EAAE,CAAC;SACN,MAAM,CAAC,EAAE,KAAK,EAAE,qDAAqD,EAAE,CAAC;SACxE,GAAG,CAAC,CAAC,EAAE,gDAAgD,CAAC;SACxD,GAAG,CAAC,gBAAgB,EAAE,yBAAyB,gBAAgB,aAAa,CAAC;SAC7E,QAAQ,EAAE;SACV,QAAQ,CACP,+EAA+E;QAC7E,oFAAoF;QACpF,GAAG,yBAAyB,IAAI,0BAA0B,EAAE,CAC/D;IACH,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE;SAC9D,QAAQ,CAAC,gKAAgK,CAAC;IAC7K,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC;SAChD,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,EAAE;QACpF,OAAO,EAAE,2BAA2B;KACrC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2GAA2G;QAChI,yGAAyG,CAAC;IAC9G,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAC7C,QAAQ,EAAE,OAAO;SACd,QAAQ,EAAE;SACV,QAAQ,CACP,sGAAsG;QACpG,mGAAmG,CACtG;IACH,oEAAoE;IACpE,4EAA4E;IAC5E,8EAA8E;IAC9E,gDAAgD;IAChD,KAAK,EAAE,CAAC;SACL,MAAM,CAAC,EAAE,KAAK,EAAE,uDAAuD,EAAE,CAAC;SAC1E,GAAG,CAAC,6EAA6E,CAAC;SAClF,UAAU,CAAC,UAAU,EAAE,6EAA6E,CAAC;SACrG,GAAG,CAAC,cAAc,EAAE,4BAA4B,cAAc,aAAa,CAAC;SAC5E,QAAQ,EAAE;SACV,QAAQ,CACP,8FAA8F;QAC5F,8FAA8F;QAC9F,4FAA4F;QAC5F,2FAA2F;QAC3F,8FAA8F,CACjG;IACH,mGAAmG;IACnG,YAAY,EAAE,CAAC;SACZ,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;SACxB,QAAQ,EAAE;SACV,QAAQ,CACP,+FAA+F;QAC7F,gGAAgG;QAChG,qGAAqG,CACxG;IACH,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,QAAQ,EAAE;IAC7D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IACpC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE;IAC1D,YAAY,EAAE,WAAW,CAAC,QAAQ,EAAE;IACpC,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACpC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;IACxD,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;IACtC,4EAA4E;IAC5E,wEAAwE;IACxE,2EAA2E;IAC3E,8EAA8E;IAC9E,2EAA2E;IAC3E,uDAAuD;IACvD,YAAY,EAAE,CAAC;SACZ,IAAI,CAAC,aAAa,CAAC;SACnB,QAAQ,EAAE;SACV,QAAQ,CACP,kBAAkB,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,sDAAsD;QAC/F,6FAA6F;QAC7F,8FAA8F,CACjG;IACH,wEAAwE;IACxE,uEAAuE;IACvE,qEAAqE;IACrE,UAAU,EAAE,CAAC;SACV,IAAI,CAAC,WAAW,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,CACP,sBAAsB,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,0DAA0D,CACxG;IACH,mFAAmF;IACnF,4FAA4F;IAC5F,KAAK,EAAE,CAAC;SACL,MAAM,CAAC,EAAE,KAAK,EAAE,0DAA0D,EAAE,CAAC;SAC7E,KAAK,CAAC,kBAAkB,EAAE,wEAAwE,CAAC;SACnG,QAAQ,EAAE;SACV,QAAQ,CACP,iDAAiD,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG;QAChF,4FAA4F;QAC5F,yFAAyF;QACzF,6FAA6F;QAC7F,wBAAwB;QACxB,mCAAmC,CACtC;IACH,QAAQ,EAAE,CAAC;SACR,MAAM,CAAC,EAAE,KAAK,EAAE,iDAAiD,EAAE,CAAC;SACpE,KAAK,CAAC,gBAAgB,EAAE,gEAAgE,CAAC;SACzF,QAAQ,EAAE;SACV,QAAQ,CACP,0FAA0F;QACxF,sFAAsF,CACzF;IACH,SAAS,EAAE,CAAC;SACT,IAAI,CAAC,UAAU,CAAC;SAChB,QAAQ,EAAE;SACV,QAAQ,CACP,iBAAiB,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,iDAAiD;QACtF,yFAAyF;QACzF,4EAA4E;QAC5E,+EAA+E;QAC/E,4FAA4F;QAC5F,WAAW,GAAG,yBAAyB,CAC1C;IACH,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE;IAC5D;;;;;;;;OAQG;IACH,kBAAkB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC1C;;;;;;;;;;;OAWG;IACH,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE;CACnD,CAAC;AAEX;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAW,CAAC;AAExF,sEAAsE;AACtE,2EAA2E;AAC3E,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC;KAC1B,MAAM,CAAC,iBAAiB,CAAC;IAC1B,uEAAuE;IACvE,4EAA4E;IAC5E,sBAAsB;KACrB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,EAAE;IACtE,OAAO,EAAE,uCAAuC;CACjD,CAAC;KACD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,EAAE;IAC5F,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,8DAA8D;CAC3F,CAAC;IACF,8FAA8F;IAC9F,2FAA2F;KAC1F,MAAM;AACL,uFAAuF;AACvF,CAAC,CAAC,EAAE,EAAE,CACJ,oBAAoB,CAAC,CAAC,CAAC;IACvB,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,KAAK,SAAS,EACxF;IACA,IAAI,EAAE,CAAC,QAAQ,CAAC;IAChB,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;QACf,MAAM,KAAK,GAAG,KAAK,CAAC,KAAqC,CAAC;QAC1D,OAAO,mBAAmB,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,CAAE,CAAC;IAC/F,CAAC;CACF,CAAC;KACD,MAAM,CACL,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,EAClE,EAAE,OAAO,EAAE,wFAAwF,EAAE,CACtG;KACA,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,SAAS,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,EAAE;IACvE,IAAI,EAAE,CAAC,cAAc,CAAC;IACtB,OAAO,EAAE,6GAA6G;CACvH,CAAC;KACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,SAAS,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,EAAE;IAChG,IAAI,EAAE,CAAC,cAAc,CAAC;IACtB,OAAO,EAAE,0FAA0F;CACpG,CAAC;IACF,wEAAwE;IACxE,8DAA8D;KAC7D,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE;IACrF,OAAO,EAAE,2EAA2E;CACrF,CAAC;KACD,MAAM,CACL,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,QAAQ,KAAK,SAAS;IACxB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,MAAM,IAAI,kBAAkB,EAC3E;IACE,yEAAyE;IACzE,kEAAkE;IAClE,oDAAoD;IACpD,OAAO,EAAE,WAAW,kBAAkB,0BAA0B;CACjE,CACF;KACA,MAAM,CACL,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,QAAQ,KAAK,SAAS;IACxB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,EACvE,EAAE,OAAO,EAAE,8DAA8D,EAAE,CAC5E;KACA,MAAM,CACL,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,QAAQ,KAAK,SAAS;IACxB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,EAC1E,EAAE,OAAO,EAAE,2EAA2E,EAAE,CACzF;KACA,MAAM,CACL,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,QAAQ,KAAK,SAAS;IACxB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,EAC1E,EAAE,OAAO,EAAE,2EAA2E,EAAE,CACzF;IACD,2FAA2F;IAC3F,+EAA+E;KAC9E,MAAM,CACL,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,EAC3D,EAAE,OAAO,EAAE,sCAAsC,EAAE,CACpD;IACD,0EAA0E;KACzE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,IAAI,UAAU,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE;IAC1E,OAAO,EAAE,8BAA8B;CACxC,CAAC,CAAC;AAIL,SAAS,oBAAoB,CAAC,CAAiE;IAC7F,OAAO,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAC3F,CAAC;AAED,2FAA2F;AAC3F,+FAA+F;AAC/F,MAAM,UAAU,kBAAkB,CAAC,YAAmD;IACpF,OAAO,YAAY;SAChB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,IAAI,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE;QAC3E,IAAI,EAAE,CAAC,OAAO,CAAC;QACf,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAE,KAAK,CAAC,KAA2B,CAAC,KAAK,CAAE;KAC1E,CAAC;QACF,yFAAyF;SACxF,MAAM,CACL,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACxB,YAAY,CAAC,CAAC,CAAC,KAAM,CAAC,KAAK,SAAS;QACpC,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,KAAK,SAAS,EACxF;QACE,IAAI,EAAE,CAAC,QAAQ,CAAC;QAChB,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;YACf,MAAM,KAAK,GAAG,KAAK,CAAC,KAAqC,CAAC;YAC1D,OAAO,mBAAmB,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,CAAE,CAAC;QAC/F,CAAC;KACF,CACF,CAAC;AACN,CAAC;AAED,+EAA+E;AAC/E,wFAAwF;AACxF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,GAAG,iBAAiB;IACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,cAAc,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE;CACvF,CAAC,CAAC;AAQH,mFAAmF;AACnF,SAAS,YAAY,CAAC,KAAsB;IAC1C,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC,MAAM,CAAC;IACpD,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC;SAC7C,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;SACtC,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,cAAc,CAAC,KAAsB;IACnD,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAID,kFAAkF;AAClF,8EAA8E;AAC9E,sEAAsE;AAEtE,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,iBAAiB,EAAE,mBAAmB,CAAC,QAAQ,EAAE;IACjD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IAChD,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5C,uEAAuE;IACvE,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACzC,4EAA4E;IAC5E,4DAA4D;IAC5D,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE;IAC5B;;;;;;OAMG;IACH,MAAM,EAAE,CAAC;SACN,MAAM,CAAC;QACN,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;KACzB,CAAC;SACD,QAAQ,EAAE;IACb,yEAAyE;IACzE,KAAK,EAAE,CAAC;SACL,MAAM,CAAC;QACN,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAClC,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE;QAC5B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;KAChD,CAAC;SACD,QAAQ,EAAE;IACb,8DAA8D;IAC9D,qBAAqB,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;IAC5C,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;CAC9B,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"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"}
|
package/dist/tts-backend.d.ts
CHANGED
|
@@ -1,18 +1,5 @@
|
|
|
1
1
|
import type { VendorRefusalClass } from "./vendor-response.js";
|
|
2
|
-
/**
|
|
3
|
-
* Вендор-нейтральный контракт синтеза речи.
|
|
4
|
-
*
|
|
5
|
-
* ЗАЧЕМ отдельно от рендера: провайдеры TTS меняются независимо от провайдеров
|
|
6
|
-
* аватара, и «ElevenLabs + HeyGen» — лишь одна из комбинаций.
|
|
7
|
-
*
|
|
8
|
-
* Ключевая причина существования этого файла — ТАЙМИНГИ. ElevenLabs отдаёт их
|
|
9
|
-
* ПОСИМВОЛЬНО (проверено 18.07.2026: 134 символа → 134 тайминга), а этап B
|
|
10
|
-
* ждёт пословные для `createTikTokStyleCaptions()`. Другой провайдер отдаст
|
|
11
|
-
* пословные сразу или не отдаст вовсе. Нормализация обязана происходить в
|
|
12
|
-
* адаптере, иначе посимвольный формат ElevenLabs протечёт в пайплайн субтитров
|
|
13
|
-
* и намертво привяжет нас к вендору.
|
|
14
|
-
*/
|
|
15
|
-
/** Тайминг одного слова. Единица, в которой пайплайн субтитров думает. */
|
|
2
|
+
/** Timing of one word: the unit the caption pipeline thinks in. */
|
|
16
3
|
export interface WordTiming {
|
|
17
4
|
word: string;
|
|
18
5
|
startSec: number;
|
|
@@ -20,10 +7,10 @@ export interface WordTiming {
|
|
|
20
7
|
}
|
|
21
8
|
export interface SpeechRequest {
|
|
22
9
|
text: string;
|
|
23
|
-
/**
|
|
10
|
+
/** Voice id in backend terms. Mapping our presets is the adapter's job. */
|
|
24
11
|
voiceId: string;
|
|
25
12
|
modelId: string;
|
|
26
|
-
/**
|
|
13
|
+
/** Our run_id, for idempotency and vendor-side tracing. */
|
|
27
14
|
runId: string;
|
|
28
15
|
pace?: number;
|
|
29
16
|
}
|
|
@@ -31,43 +18,27 @@ export interface SpeechResult {
|
|
|
31
18
|
audio: Uint8Array;
|
|
32
19
|
mimeType: string;
|
|
33
20
|
durationSec: number;
|
|
34
|
-
/**
|
|
35
|
-
|
|
36
|
-
* субтитров обязан добывать их отдельно (Whisper), и это должно быть видно
|
|
37
|
-
* по типу, а не выясняться в рантайме.
|
|
38
|
-
*
|
|
39
|
-
* Адаптер обязан отдавать ПОСЛОВНЫЕ тайминги, даже если вендор отдал
|
|
40
|
-
* посимвольные: агрегация — его работа, а не работа потребителя.
|
|
41
|
-
*/
|
|
21
|
+
/** Word timings, even when the vendor gives per-character ones: aggregating is the */
|
|
22
|
+
/** adapter's job. `null` means the backend gives none, visible in the type. */
|
|
42
23
|
words: WordTiming[] | null;
|
|
43
24
|
}
|
|
44
25
|
export interface TtsCapabilities {
|
|
45
|
-
/**
|
|
26
|
+
/** Upper bound across models; the adapter checks the chosen model's limit. null: unknown. */
|
|
46
27
|
maxChars: number | null;
|
|
47
|
-
/**
|
|
28
|
+
/** Whether it provides timings at all. */
|
|
48
29
|
providesTimings: boolean;
|
|
49
|
-
/**
|
|
50
|
-
|
|
51
|
-
* (Creator = 5) и упрётся раньше лимитов рендера при мульти-тейке в этапе B.
|
|
52
|
-
*/
|
|
30
|
+
/** How many requests may run in parallel; depends on the vendor plan and binds before */
|
|
31
|
+
/** render limits on multi-take runs. */
|
|
53
32
|
maxConcurrency: number | null;
|
|
54
33
|
}
|
|
55
34
|
export interface TtsBackend {
|
|
56
35
|
readonly name: string;
|
|
57
36
|
readonly capabilities: TtsCapabilities;
|
|
58
37
|
synthesize(req: SpeechRequest): Promise<SpeechResult>;
|
|
59
|
-
/**
|
|
60
|
-
/**
|
|
38
|
+
/** The same required member as on `RenderBackend`: there are two contracts, and a */
|
|
39
|
+
/** speech vendor implements THIS one. */
|
|
61
40
|
classifyRefusal(error: unknown): VendorRefusalClass;
|
|
62
41
|
}
|
|
63
|
-
/**
|
|
64
|
-
|
|
65
|
-
*
|
|
66
|
-
* Живёт здесь, а не в адаптере ElevenLabs, потому что посимвольный формат
|
|
67
|
-
* встречается у нескольких вендоров, и переписывать эту логику под каждого —
|
|
68
|
-
* лишняя работа с одинаковыми граничными случаями.
|
|
69
|
-
*
|
|
70
|
-
* Границей слова считается пробельный символ; сам пробел в слово не входит,
|
|
71
|
-
* но и не рвёт уже начатое. Пустые слова не порождаются.
|
|
72
|
-
*/
|
|
42
|
+
/** Joins per-character timings into words, shared by vendors with that format. Whitespace */
|
|
43
|
+
/** ends a word without joining it; empty words are never produced. */
|
|
73
44
|
export declare function charTimingsToWords(characters: readonly string[], startTimes: readonly number[], endTimes: readonly number[]): WordTiming[];
|
package/dist/tts-backend.js
CHANGED
|
@@ -1,13 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
3
|
-
*
|
|
4
|
-
* Живёт здесь, а не в адаптере ElevenLabs, потому что посимвольный формат
|
|
5
|
-
* встречается у нескольких вендоров, и переписывать эту логику под каждого —
|
|
6
|
-
* лишняя работа с одинаковыми граничными случаями.
|
|
7
|
-
*
|
|
8
|
-
* Границей слова считается пробельный символ; сам пробел в слово не входит,
|
|
9
|
-
* но и не рвёт уже начатое. Пустые слова не порождаются.
|
|
10
|
-
*/
|
|
1
|
+
/** Joins per-character timings into words, shared by vendors with that format. Whitespace */
|
|
2
|
+
/** ends a word without joining it; empty words are never produced. */
|
|
11
3
|
export function charTimingsToWords(characters, startTimes, endTimes) {
|
|
12
4
|
if (characters.length !== startTimes.length || characters.length !== endTimes.length) {
|
|
13
5
|
throw new Error(`character/timing length mismatch: ${characters.length} chars, ` +
|