@clipwright/core 0.12.0 → 0.13.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 CHANGED
@@ -10,6 +10,45 @@ on the client side. Entries marked *Server-side* changed the API itself: every
10
10
  client version sees them from the day the API was deployed, not from the package
11
11
  release they are listed under.
12
12
 
13
+ ## [0.13.0] - 2026-09-13
14
+
15
+ ### Changed
16
+
17
+ - `listVoices()`, MCP `list_voices` and `clipwright voices` accept a voice name
18
+ outside the five presets, a `gender` other than `female` or `male`, a voice
19
+ without `language`, and the new optional fields `kind`, `locale`, `accent`,
20
+ `age`, `use_case`, `supported_models` and `verified_models`, plus a top-level
21
+ `models` list. Unknown keys are dropped, as before. Until now the first such
22
+ voice made all three fail. (clipwright#164)
23
+ - A voice name the client does not know goes to the API, which decides.
24
+ `clipwright make --voice` checks only the form of the name: letters, digits,
25
+ `_` and `-`, up to 64 characters. The SDK and MCP `make_ugc` no longer refuse
26
+ such a name before sending it. In `tools/list`, `voice` is a string with a
27
+ pattern instead of an enum of preset names. The API itself is unchanged: a
28
+ name that is not a preset still gets 400 `invalid_request` with the same
29
+ message, before any charge. (clipwright#164)
30
+ - In `VoiceCatalogEntry`, `name` and `gender` are typed `string`, and
31
+ `language` is optional. In `MakeUgcInputArgs`, `voice` is typed `string`.
32
+ (clipwright#164)
33
+ - *Server-side:* quote and run accept a voice from the catalog by its name, as
34
+ well as a preset. A catalog voice speaks `eleven_v3` unless `tts_model` names
35
+ another model, and its script limit follows that model: 5,001 characters
36
+ without `tts_model` get 400 before any charge, as with a preset. A name that
37
+ is neither a preset nor a catalog voice gets 400 `invalid_request` that says
38
+ the voice is unknown; a voice retired from the catalog gets 400 that says it
39
+ was retired. Both point to `list_voices`. The language of a voice limits
40
+ nothing: any catalog voice speaks any language. A run already stored with a
41
+ voice that was later retired still reads, with its warnings.
42
+ (clipwright#164)
43
+
44
+ ### Added
45
+
46
+ - `@clipwright/core` exports `VOICE_NAME_PATTERN`, `isVoicePresetName`,
47
+ `serverUgcInputWith` and `voiceModelEntry`. The subpath
48
+ `@clipwright/core/voice-admission` exports `serverUgcInput`, which checks a
49
+ voice name against the catalog, and `catalogVoiceRefusal`. The catalog stays
50
+ out of the main entry point. (clipwright#164)
51
+
13
52
  ## [0.12.0] - 2026-09-13
14
53
 
15
54
  ### Changed
@@ -259,13 +259,7 @@ export declare const offeredUgcInput: z.ZodObject<{
259
259
  "4k": "4k";
260
260
  "720p": "720p";
261
261
  }>>;
262
- voice: z.ZodOptional<z.ZodEnum<{
263
- daria_ru_female: "daria_ru_female";
264
- eric: "eric";
265
- george: "george";
266
- owner_ru_clone: "owner_ru_clone";
267
- sarah: "sarah";
268
- }>>;
262
+ voice: z.ZodOptional<z.ZodString>;
269
263
  voice_id: z.ZodOptional<z.ZodString>;
270
264
  tts_model: z.ZodOptional<z.ZodEnum<{
271
265
  eleven_flash_v2_5: "eleven_flash_v2_5";
package/dist/index.d.ts CHANGED
@@ -4,6 +4,7 @@ export * from "./contract-dispositions.js";
4
4
  export * from "./aspect.js";
5
5
  export * from "./default-actor.js";
6
6
  export * from "./voices.js";
7
+ export * from "./voice-catalog.js";
7
8
  export * from "./runs.js";
8
9
  export * from "./errors.js";
9
10
  export * from "./script-integrity.js";
package/dist/index.js CHANGED
@@ -10,6 +10,7 @@ export * from "./aspect.js";
10
10
  // Актёр отдельным модулем: `aspect.js` реэкспортирует из него источник кадра.
11
11
  export * from "./default-actor.js";
12
12
  export * from "./voices.js";
13
+ export * from "./voice-catalog.js";
13
14
  export * from "./runs.js";
14
15
  // Тела отказов: форма ответа об ошибке — тоже контракт, и с появлением чисел в
15
16
  // теле (402) она перестала быть выводимой из кода ответа.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,gFAAgF;AAChF,6EAA6E;AAC7E,2BAA2B;AAC3B,cAAc,4BAA4B,CAAC;AAC3C,4EAA4E;AAC5E,gEAAgE;AAChE,cAAc,aAAa,CAAC;AAC5B,8EAA8E;AAC9E,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,+EAA+E;AAC/E,0DAA0D;AAC1D,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,yEAAyE;AACzE,iEAAiE;AACjE,cAAc,iBAAiB,CAAC;AAChC,2EAA2E;AAC3E,4EAA4E;AAC5E,2BAA2B;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,0FAA0F;AAC1F,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,4EAA4E;AAC5E,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,8EAA8E;AAC9E,0EAA0E;AAC1E,aAAa;AACb,cAAc,sBAAsB,CAAC;AACrC,6EAA6E;AAC7E,4DAA4D;AAC5D,cAAc,uBAAuB,CAAC;AACtC,6FAA6F;AAC7F,cAAc,gBAAgB,CAAC;AAC/B,+EAA+E;AAC/E,wDAAwD;AACxD,cAAc,0BAA0B,CAAC;AACzC,2EAA2E;AAC3E,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,gFAAgF;AAChF,6EAA6E;AAC7E,2BAA2B;AAC3B,cAAc,4BAA4B,CAAC;AAC3C,4EAA4E;AAC5E,gEAAgE;AAChE,cAAc,aAAa,CAAC;AAC5B,8EAA8E;AAC9E,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,+EAA+E;AAC/E,0DAA0D;AAC1D,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,yEAAyE;AACzE,iEAAiE;AACjE,cAAc,iBAAiB,CAAC;AAChC,2EAA2E;AAC3E,4EAA4E;AAC5E,2BAA2B;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,0FAA0F;AAC1F,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,4EAA4E;AAC5E,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,8EAA8E;AAC9E,0EAA0E;AAC1E,aAAa;AACb,cAAc,sBAAsB,CAAC;AACrC,6EAA6E;AAC7E,4DAA4D;AAC5D,cAAc,uBAAuB,CAAC;AACtC,6FAA6F;AAC7F,cAAc,gBAAgB,CAAC;AAC/B,+EAA+E;AAC/E,wDAAwD;AACxD,cAAc,0BAA0B,CAAC;AACzC,2EAA2E;AAC3E,cAAc,oBAAoB,CAAC"}
package/dist/skills.d.ts CHANGED
@@ -121,13 +121,7 @@ export declare const makeUgcInputShape: {
121
121
  "4k": "4k";
122
122
  "720p": "720p";
123
123
  }>>;
124
- readonly voice: z.ZodOptional<z.ZodEnum<{
125
- daria_ru_female: "daria_ru_female";
126
- eric: "eric";
127
- george: "george";
128
- owner_ru_clone: "owner_ru_clone";
129
- sarah: "sarah";
130
- }>>;
124
+ readonly voice: z.ZodOptional<z.ZodString>;
131
125
  readonly voice_id: z.ZodOptional<z.ZodString>;
132
126
  readonly tts_model: z.ZodOptional<z.ZodEnum<{
133
127
  eleven_flash_v2_5: "eleven_flash_v2_5";
@@ -208,13 +202,61 @@ export declare const makeUgcInput: z.ZodObject<{
208
202
  "4k": "4k";
209
203
  "720p": "720p";
210
204
  }>>;
211
- voice: z.ZodOptional<z.ZodEnum<{
212
- daria_ru_female: "daria_ru_female";
213
- eric: "eric";
214
- george: "george";
215
- owner_ru_clone: "owner_ru_clone";
216
- sarah: "sarah";
205
+ voice: z.ZodOptional<z.ZodString>;
206
+ voice_id: z.ZodOptional<z.ZodString>;
207
+ tts_model: z.ZodOptional<z.ZodEnum<{
208
+ eleven_flash_v2_5: "eleven_flash_v2_5";
209
+ eleven_turbo_v2_5: "eleven_turbo_v2_5";
210
+ eleven_v3: "eleven_v3";
211
+ }>>;
212
+ webhook_url: z.ZodOptional<z.ZodString>;
213
+ disclosure_overlay: z.ZodOptional<z.ZodBoolean>;
214
+ background: z.ZodOptional<z.ZodEnum<{
215
+ blur: "blur";
216
+ contain: "contain";
217
+ white: "white";
217
218
  }>>;
219
+ }, z.core.$strip>;
220
+ /** Вход API: имя голоса сверяет `voiceRefusal` сервера. Каталог сюда не импортируется — */
221
+ /** баррел читают клиенты; сервер берёт готовую схему из `@clipwright/core/voice-admission`. */
222
+ export declare function serverUgcInputWith(voiceRefusal: (voice: string) => string | undefined): z.ZodObject<{
223
+ script: z.ZodOptional<z.ZodString>;
224
+ segments: z.ZodOptional<z.ZodArray<z.ZodObject<{
225
+ kind: z.ZodEnum<{
226
+ actor: "actor";
227
+ media: "media";
228
+ }>;
229
+ script: z.ZodOptional<z.ZodString>;
230
+ media_url: z.ZodOptional<z.ZodString>;
231
+ }, z.core.$strip>>>;
232
+ person: z.ZodOptional<z.ZodString>;
233
+ actor_id: z.ZodOptional<z.ZodString>;
234
+ image: z.ZodOptional<z.ZodString>;
235
+ character: z.ZodOptional<z.ZodString>;
236
+ name: z.ZodOptional<z.ZodString>;
237
+ broll_url: z.ZodOptional<z.ZodString>;
238
+ captions: z.ZodDefault<z.ZodBoolean>;
239
+ caption_style: z.ZodDefault<z.ZodEnum<{
240
+ hormozi: "hormozi";
241
+ minimal: "minimal";
242
+ tiktok: "tiktok";
243
+ }>>;
244
+ look: z.ZodDefault<z.ZodEnum<{
245
+ commercial: "commercial";
246
+ natural: "natural";
247
+ raw_iphone: "raw_iphone";
248
+ }>>;
249
+ aspect_ratio: z.ZodOptional<z.ZodEnum<{
250
+ "16:9": "16:9";
251
+ "1:1": "1:1";
252
+ "9:16": "9:16";
253
+ }>>;
254
+ resolution: z.ZodOptional<z.ZodEnum<{
255
+ "1080p": "1080p";
256
+ "4k": "4k";
257
+ "720p": "720p";
258
+ }>>;
259
+ voice: z.ZodOptional<z.ZodString>;
218
260
  voice_id: z.ZodOptional<z.ZodString>;
219
261
  tts_model: z.ZodOptional<z.ZodEnum<{
220
262
  eleven_flash_v2_5: "eleven_flash_v2_5";
@@ -268,13 +310,7 @@ export declare const storedUgcInput: z.ZodObject<{
268
310
  "4k": "4k";
269
311
  "720p": "720p";
270
312
  }>>;
271
- voice: z.ZodOptional<z.ZodEnum<{
272
- daria_ru_female: "daria_ru_female";
273
- eric: "eric";
274
- george: "george";
275
- owner_ru_clone: "owner_ru_clone";
276
- sarah: "sarah";
277
- }>>;
313
+ voice: z.ZodOptional<z.ZodString>;
278
314
  voice_id: z.ZodOptional<z.ZodString>;
279
315
  webhook_url: z.ZodOptional<z.ZodString>;
280
316
  disclosure_overlay: z.ZodOptional<z.ZodBoolean>;
package/dist/skills.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { z } from "zod";
2
2
  import { countWords } from "./pacing.js";
3
- import { resolveTtsModel, MAX_SCRIPT_CHARS, SCRIPT_LENGTH_DESCRIPTION, STRESS_MARKING_DESCRIPTION, ttsScriptLimitError, TTS_MODELS, VOICE_ID_PATTERN, VOICE_PRESET_NAMES, } from "./voices.js";
3
+ 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";
4
4
  export const CAPTION_STYLES = ["hormozi", "tiktok", "minimal"];
5
5
  export const LOOKS = ["natural", "commercial", "raw_iphone"];
6
6
  /**
@@ -146,16 +146,15 @@ export const makeUgcInputShape = {
146
146
  .enum(RESOLUTIONS)
147
147
  .optional()
148
148
  .describe(`Output resolution: ${RESOLUTIONS.join(" | ")} (short side 720 / 1080 / 2160 px). Omitted means 1080p.`),
149
- // Оба голосовых поля — .optional() БЕЗ .default() по той же причине, что и
150
- // resolution выше: отличить «клиент явно выбрал голос» от «клиент промолчал»
151
- // можно только так. Дефолт (клон владельца) подставляет резолвер в адаптере,
152
- // а не схема; явность нужна тестам warnings (US-517). voice — наше имя пресета
153
- // (enum порождает tools/list), voice_id — сырой вендорский id как escape hatch.
149
+ // Без .default(), как resolution: явный выбор голоса отличим от молчания (US-517).
150
+ // voice — форма имени, список сверяет `serverUgcInput` (#164); voice_id — сырой id вендора.
154
151
  voice: z
155
- .enum(VOICE_PRESET_NAMES)
152
+ .string()
153
+ .regex(VOICE_NAME_PATTERN)
156
154
  .optional()
157
- .describe(`Curated voice preset: ${VOICE_PRESET_NAMES.join(" | ")} (list_voices describes each; ` +
158
- "owner_ru_clone is the Russian cloned voice). Omitted means the voice matched to the avatar. " +
155
+ .describe(`Voice name from list_voices. Curated presets: ${VOICE_PRESET_NAMES.join(" | ")} ` +
156
+ "(owner_ru_clone is the Russian cloned voice). The API refuses a name list_voices does not " +
157
+ "return, before any charge. Omitted means the voice matched to the avatar. " +
159
158
  "Mutually exclusive with voice_id."),
160
159
  voice_id: z
161
160
  .string()
@@ -214,7 +213,8 @@ export const makeUgcInput = z
214
213
  message: "pass exactly one of script | segments",
215
214
  })
216
215
  // Потолок символов — по модели: v3 короче v2 вдвое; отказ здесь, до резерва и вендора (#101).
217
- .refine((v) => ttsScriptLimitError(spokenTextOf(v), resolveTtsModel(v)) === undefined, {
216
+ // Модель незнакомого клиенту голоса знает только сервер, и потолок он проверит сам (#164).
217
+ .refine((v) => modelUnknownToClient(v) || ttsScriptLimitError(spokenTextOf(v), resolveTtsModel(v)) === undefined, {
218
218
  path: ["script"],
219
219
  error: (issue) => {
220
220
  const input = issue.input;
@@ -256,6 +256,28 @@ export const makeUgcInput = z
256
256
  .refine((v) => v.segments !== undefined || countWords(v.script ?? "") >= 1, {
257
257
  message: "script has 0 speakable words",
258
258
  });
259
+ function modelUnknownToClient(v) {
260
+ return v.tts_model === undefined && v.voice !== undefined && !isVoicePresetName(v.voice);
261
+ }
262
+ /** Вход API: имя голоса сверяет `voiceRefusal` сервера. Каталог сюда не импортируется — */
263
+ /** баррел читают клиенты; сервер берёт готовую схему из `@clipwright/core/voice-admission`. */
264
+ export function serverUgcInputWith(voiceRefusal) {
265
+ return makeUgcInput
266
+ .refine((v) => v.voice === undefined || voiceRefusal(v.voice) === undefined, {
267
+ path: ["voice"],
268
+ error: (issue) => voiceRefusal(issue.input.voice),
269
+ })
270
+ // Потолок, пропущенный клиентом: модель допущенного голоса каталога сервер знает (#164).
271
+ .refine((v) => !modelUnknownToClient(v) ||
272
+ voiceRefusal(v.voice) !== undefined ||
273
+ ttsScriptLimitError(spokenTextOf(v), resolveTtsModel(v)) === undefined, {
274
+ path: ["script"],
275
+ error: (issue) => {
276
+ const input = issue.input;
277
+ return ttsScriptLimitError(spokenTextOf(input), resolveTtsModel(input));
278
+ },
279
+ });
280
+ }
259
281
  /** Сохранённый вход рана: правила допуска он уже прошёл, и смена модели или */
260
282
  /** потолка не должна делать старый ран нечитаемым (#145). */
261
283
  export const storedUgcInput = z.object({ ...makeUgcInputShape, tts_model: z.string().optional() });
@@ -1 +1 @@
1
- {"version":3,"file":"skills.js","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,157 @@
1
+ {
2
+ "models": [
3
+ {
4
+ "id": "eleven_v3",
5
+ "languages": [
6
+ "af",
7
+ "ar",
8
+ "as",
9
+ "az",
10
+ "be",
11
+ "bg",
12
+ "bn",
13
+ "bs",
14
+ "ca",
15
+ "ceb",
16
+ "cs",
17
+ "cy",
18
+ "da",
19
+ "de",
20
+ "el",
21
+ "en",
22
+ "es",
23
+ "et",
24
+ "fa",
25
+ "fi",
26
+ "fil",
27
+ "fr",
28
+ "ga",
29
+ "gl",
30
+ "gu",
31
+ "ha",
32
+ "he",
33
+ "hi",
34
+ "hr",
35
+ "hu",
36
+ "hy",
37
+ "id",
38
+ "is",
39
+ "it",
40
+ "ja",
41
+ "jv",
42
+ "ka",
43
+ "kk",
44
+ "kn",
45
+ "ko",
46
+ "ky",
47
+ "lb",
48
+ "ln",
49
+ "lt",
50
+ "lv",
51
+ "mk",
52
+ "ml",
53
+ "mr",
54
+ "ms",
55
+ "ne",
56
+ "nl",
57
+ "no",
58
+ "ny",
59
+ "pa",
60
+ "pl",
61
+ "ps",
62
+ "pt",
63
+ "ro",
64
+ "ru",
65
+ "sd",
66
+ "sk",
67
+ "sl",
68
+ "so",
69
+ "sr",
70
+ "sv",
71
+ "sw",
72
+ "ta",
73
+ "te",
74
+ "th",
75
+ "tr",
76
+ "uk",
77
+ "ur",
78
+ "vi",
79
+ "zh"
80
+ ]
81
+ },
82
+ {
83
+ "id": "eleven_flash_v2_5",
84
+ "languages": [
85
+ "ar",
86
+ "bg",
87
+ "cs",
88
+ "da",
89
+ "de",
90
+ "el",
91
+ "en",
92
+ "es",
93
+ "fi",
94
+ "fil",
95
+ "fr",
96
+ "hi",
97
+ "hr",
98
+ "hu",
99
+ "id",
100
+ "it",
101
+ "ja",
102
+ "ko",
103
+ "ms",
104
+ "nl",
105
+ "no",
106
+ "pl",
107
+ "pt",
108
+ "ro",
109
+ "ru",
110
+ "sk",
111
+ "sv",
112
+ "ta",
113
+ "tr",
114
+ "uk",
115
+ "vi",
116
+ "zh"
117
+ ]
118
+ },
119
+ {
120
+ "id": "eleven_turbo_v2_5",
121
+ "languages": [
122
+ "ar",
123
+ "bg",
124
+ "cs",
125
+ "da",
126
+ "de",
127
+ "el",
128
+ "en",
129
+ "es",
130
+ "fi",
131
+ "fil",
132
+ "fr",
133
+ "hi",
134
+ "hr",
135
+ "hu",
136
+ "id",
137
+ "it",
138
+ "ja",
139
+ "ko",
140
+ "ms",
141
+ "nl",
142
+ "no",
143
+ "pl",
144
+ "pt",
145
+ "ro",
146
+ "ru",
147
+ "sk",
148
+ "sv",
149
+ "ta",
150
+ "tr",
151
+ "uk",
152
+ "vi",
153
+ "zh"
154
+ ]
155
+ }
156
+ ]
157
+ }
@@ -0,0 +1,55 @@
1
+ import type { CatalogFileVoice } from "./voice-catalog.js";
2
+ /** Почему API не допускает имя голоса; `undefined` — пресет или живой голос каталога. */
3
+ export declare function catalogVoiceRefusal(voice: string, voices?: readonly CatalogFileVoice[]): string | undefined;
4
+ export declare const serverUgcInput: import("zod").ZodObject<{
5
+ script: import("zod").ZodOptional<import("zod").ZodString>;
6
+ segments: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
7
+ kind: import("zod").ZodEnum<{
8
+ actor: "actor";
9
+ media: "media";
10
+ }>;
11
+ script: import("zod").ZodOptional<import("zod").ZodString>;
12
+ media_url: import("zod").ZodOptional<import("zod").ZodString>;
13
+ }, import("zod/v4/core").$strip>>>;
14
+ person: import("zod").ZodOptional<import("zod").ZodString>;
15
+ actor_id: import("zod").ZodOptional<import("zod").ZodString>;
16
+ image: import("zod").ZodOptional<import("zod").ZodString>;
17
+ character: import("zod").ZodOptional<import("zod").ZodString>;
18
+ name: import("zod").ZodOptional<import("zod").ZodString>;
19
+ broll_url: import("zod").ZodOptional<import("zod").ZodString>;
20
+ captions: import("zod").ZodDefault<import("zod").ZodBoolean>;
21
+ caption_style: import("zod").ZodDefault<import("zod").ZodEnum<{
22
+ hormozi: "hormozi";
23
+ minimal: "minimal";
24
+ tiktok: "tiktok";
25
+ }>>;
26
+ look: import("zod").ZodDefault<import("zod").ZodEnum<{
27
+ commercial: "commercial";
28
+ natural: "natural";
29
+ raw_iphone: "raw_iphone";
30
+ }>>;
31
+ aspect_ratio: import("zod").ZodOptional<import("zod").ZodEnum<{
32
+ "16:9": "16:9";
33
+ "1:1": "1:1";
34
+ "9:16": "9:16";
35
+ }>>;
36
+ resolution: import("zod").ZodOptional<import("zod").ZodEnum<{
37
+ "1080p": "1080p";
38
+ "4k": "4k";
39
+ "720p": "720p";
40
+ }>>;
41
+ voice: import("zod").ZodOptional<import("zod").ZodString>;
42
+ voice_id: import("zod").ZodOptional<import("zod").ZodString>;
43
+ tts_model: import("zod").ZodOptional<import("zod").ZodEnum<{
44
+ eleven_flash_v2_5: "eleven_flash_v2_5";
45
+ eleven_turbo_v2_5: "eleven_turbo_v2_5";
46
+ eleven_v3: "eleven_v3";
47
+ }>>;
48
+ webhook_url: import("zod").ZodOptional<import("zod").ZodString>;
49
+ disclosure_overlay: import("zod").ZodOptional<import("zod").ZodBoolean>;
50
+ background: import("zod").ZodOptional<import("zod").ZodEnum<{
51
+ blur: "blur";
52
+ contain: "contain";
53
+ white: "white";
54
+ }>>;
55
+ }, import("zod/v4/core").$strip>;
@@ -0,0 +1,20 @@
1
+ import { serverUgcInputWith } from "./skills.js";
2
+ import { VOICE_CATALOG } from "./voice-catalog-data.js";
3
+ import { isVoicePresetName } from "./voices.js";
4
+ // Подпуть, а не баррел: каталог весит сотни килобайт, и клиентам SDK он не нужен (docs/16).
5
+ /** Почему API не допускает имя голоса; `undefined` — пресет или живой голос каталога. */
6
+ export function catalogVoiceRefusal(voice, voices = VOICE_CATALOG.voices) {
7
+ if (isVoicePresetName(voice))
8
+ return undefined;
9
+ const entry = voices.find((item) => item.slug === voice);
10
+ if (entry === undefined) {
11
+ return `unknown voice "${voice}": call list_voices for the voice names this API accepts`;
12
+ }
13
+ if (entry.retired_at !== undefined) {
14
+ return (`voice "${voice}" was retired from the catalog on ${entry.retired_at.slice(0, 10)} ` +
15
+ "and is no longer accepted; call list_voices to choose another voice");
16
+ }
17
+ return undefined;
18
+ }
19
+ export const serverUgcInput = serverUgcInputWith((voice) => catalogVoiceRefusal(voice));
20
+ //# sourceMappingURL=voice-admission.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voice-admission.js","sourceRoot":"","sources":["../src/voice-admission.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,4FAA4F;AAE5F,yFAAyF;AACzF,MAAM,UAAU,mBAAmB,CACjC,KAAa,EACb,MAAM,GAAgC,aAAa,CAAC,MAAM;IAE1D,IAAI,iBAAiB,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC/C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;IACzD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,kBAAkB,KAAK,0DAA0D,CAAC;IAC3F,CAAC;IACD,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACnC,OAAO,CACL,UAAU,KAAK,qCAAqC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG;YACpF,qEAAqE,CACtE,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,kBAAkB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC"}
@@ -0,0 +1,33 @@
1
+ /** Сгенерированные файлы, разобранные схемой. В баррел не входит: клиентам SDK */
2
+ /** каталог не нужен, а подключать ли его подпутём, решает S5 (#164). */
3
+ export declare const VOICE_CATALOG: {
4
+ shortfall: Partial<Record<"bg" | "cs" | "da" | "de" | "el" | "en" | "es" | "fi" | "fil" | "fr" | "hi" | "hr" | "hu" | "id" | "it" | "ja" | "ko" | "ms" | "nl" | "no" | "pl" | "pt" | "ro" | "ru" | "sk" | "sv" | "ta" | "tr" | "uk" | "vi" | "zh", {
5
+ female?: number | undefined;
6
+ male?: number | undefined;
7
+ }>>;
8
+ voices: {
9
+ slug: string;
10
+ language: "bg" | "cs" | "da" | "de" | "el" | "en" | "es" | "fi" | "fil" | "fr" | "hi" | "hr" | "hu" | "id" | "it" | "ja" | "ko" | "ms" | "nl" | "no" | "pl" | "pt" | "ro" | "ru" | "sk" | "sv" | "ta" | "tr" | "uk" | "vi" | "zh";
11
+ locale: string | null;
12
+ accent: string | null;
13
+ gender_raw: string | null;
14
+ age_raw: string | null;
15
+ use_case_raw: string | null;
16
+ descriptive_raw: string | null;
17
+ name: string;
18
+ description: string | null;
19
+ category: string | null;
20
+ verified_models: ("eleven_flash_v2_5" | "eleven_turbo_v2_5" | "eleven_v3")[];
21
+ notice_period_days: number;
22
+ featured: boolean;
23
+ rank: number;
24
+ retired_at?: string | undefined;
25
+ refreshed_at: string;
26
+ }[];
27
+ };
28
+ export declare const TTS_MODEL_LANGUAGES: {
29
+ models: {
30
+ id: "eleven_flash_v2_5" | "eleven_turbo_v2_5" | "eleven_v3";
31
+ languages: string[];
32
+ }[];
33
+ };
@@ -0,0 +1,8 @@
1
+ import catalogJson from "./voice-catalog.generated.json" with { type: "json" };
2
+ import modelsJson from "./tts-model-languages.generated.json" with { type: "json" };
3
+ import { ttsModelLanguagesFile, voiceCatalogFile } from "./voice-catalog.js";
4
+ /** Сгенерированные файлы, разобранные схемой. В баррел не входит: клиентам SDK */
5
+ /** каталог не нужен, а подключать ли его подпутём, решает S5 (#164). */
6
+ export const VOICE_CATALOG = voiceCatalogFile.parse(catalogJson);
7
+ export const TTS_MODEL_LANGUAGES = ttsModelLanguagesFile.parse(modelsJson);
8
+ //# sourceMappingURL=voice-catalog-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voice-catalog-data.js","sourceRoot":"","sources":["../src/voice-catalog-data.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,gCAAgC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC/E,OAAO,UAAU,MAAM,sCAAsC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACpF,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE7E,kFAAkF;AAClF,wEAAwE;AACxE,MAAM,CAAC,MAAM,aAAa,GAAG,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AACjE,MAAM,CAAC,MAAM,mBAAmB,GAAG,qBAAqB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC"}