@clipwright/core 0.13.0 → 0.14.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 +35 -0
- package/dist/contract-dispositions.d.ts +5 -5
- package/dist/contract-dispositions.js +6 -6
- package/dist/contract-dispositions.js.map +1 -1
- package/dist/voice-catalog.d.ts +96 -0
- package/dist/voice-catalog.js +25 -0
- package/dist/voice-catalog.js.map +1 -1
- package/dist/voice-listing.d.ts +113 -0
- package/dist/voice-listing.js +62 -0
- package/dist/voice-listing.js.map +1 -0
- package/package.json +5 -1
package/CHANGELOG.md
CHANGED
|
@@ -10,6 +10,41 @@ 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.14.0] - 2026-09-13
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
|
|
17
|
+
- **Breaking:** *Server-side:* `GET /v1/voices` lists the catalog voices after
|
|
18
|
+
the five presets, by language and then by rank; a voice retired from the
|
|
19
|
+
catalog is not listed. Every entry gains `kind` (`preset` or `catalog`) and
|
|
20
|
+
`supported_models`, the contract models that know the voice's language. A
|
|
21
|
+
catalog voice also carries `verified_models` and whichever of `locale`,
|
|
22
|
+
`accent`, `gender`, `age` and `use_case` the catalog has. The response gains
|
|
23
|
+
`models`: each contract model with its `char_limit` and `languages`. Only a
|
|
24
|
+
preset carries `preview_url`; a catalog voice has no sample yet. Clients
|
|
25
|
+
0.11.0 and 0.12.0 cannot read this response and fail in `listVoices()`,
|
|
26
|
+
`list_voices` and `clipwright voices`: upgrade to 0.13.0 or later. The
|
|
27
|
+
contract version moved to `2026-09-13.2`. (clipwright#164)
|
|
28
|
+
- *Server-side:* `GET /v1/voices` takes the filters `language`, `gender`, `age`,
|
|
29
|
+
`use_case` and `model`. `model` keeps the voices whose language the model
|
|
30
|
+
knows. A voice without a label matches no value of that filter. An unknown
|
|
31
|
+
value gets 400 `invalid_request` that names the allowed values, and an
|
|
32
|
+
unknown query key gets 400 `unknown_field`; neither returns an empty list.
|
|
33
|
+
(clipwright#164)
|
|
34
|
+
- `listVoices()` takes the same filters as an object, MCP `list_voices` as
|
|
35
|
+
arguments, and `clipwright voices` as `--language`, `--gender`, `--age`,
|
|
36
|
+
`--use-case` and `--model`. `clipwright voices` prints age and use case next
|
|
37
|
+
to language and gender, and cuts a description longer than 100 characters.
|
|
38
|
+
(clipwright#164)
|
|
39
|
+
|
|
40
|
+
### Added
|
|
41
|
+
|
|
42
|
+
- `@clipwright/core` exports `voicesQuery`, `voicesQueryShape`, `VoicesQuery`
|
|
43
|
+
and `VOICES_QUERY_FIELDS`. `unknownFields` takes an optional list of accepted
|
|
44
|
+
keys, and `UnknownFieldHit.suggestion` is typed `string`. The subpath
|
|
45
|
+
`@clipwright/core/voice-listing` exports `listVoices`, `serverVoicesQuery`
|
|
46
|
+
and `serverVoicesQueryFor`. (clipwright#164)
|
|
47
|
+
|
|
13
48
|
## [0.13.0] - 2026-09-13
|
|
14
49
|
|
|
15
50
|
### Changed
|
|
@@ -8,7 +8,7 @@ import { makeUgcInputShape } from "./skills.js";
|
|
|
8
8
|
* обязано её двигать; до этого пересмотра версии не было вообще, поэтому первое
|
|
9
9
|
* её значение совпадает с месяцем самого пересмотра.
|
|
10
10
|
*/
|
|
11
|
-
export declare const CONTRACT_VERSION = "2026-09-13";
|
|
11
|
+
export declare const CONTRACT_VERSION = "2026-09-13.2";
|
|
12
12
|
export declare const CONTRACT_VERSION_HEADER = "X-Clipwright-Contract";
|
|
13
13
|
/**
|
|
14
14
|
* Решение по одному полю входа.
|
|
@@ -288,13 +288,13 @@ export declare function rejectedFields(input: Readonly<Record<string, unknown>>)
|
|
|
288
288
|
/** Ключ тела вне контракта и поле, на которое он похож, если такое есть. */
|
|
289
289
|
export interface UnknownFieldHit {
|
|
290
290
|
field: string;
|
|
291
|
-
suggestion?:
|
|
291
|
+
suggestion?: string | undefined;
|
|
292
292
|
}
|
|
293
293
|
/** Поля, которые предлагаются клиенту: отклонённые в перечень не входят. */
|
|
294
294
|
export declare const ACCEPTED_UGC_FIELDS: string[];
|
|
295
|
-
/** Ключи
|
|
296
|
-
/** попадают — их называет `rejectedFields` своей причиной (clipwright#166). */
|
|
297
|
-
export declare function unknownFields(raw: unknown): UnknownFieldHit[];
|
|
295
|
+
/** Ключи вне перечня `fields` (по умолчанию — контракт). Отклонённые поля контракта */
|
|
296
|
+
/** сюда не попадают — их называет `rejectedFields` своей причиной (clipwright#166). */
|
|
297
|
+
export declare function unknownFields(raw: unknown, fields?: readonly string[]): UnknownFieldHit[];
|
|
298
298
|
/**
|
|
299
299
|
* Warnings реестра для входа рана (правило проекта №3).
|
|
300
300
|
*
|
|
@@ -8,7 +8,7 @@ import { makeUgcInputShape } from "./skills.js";
|
|
|
8
8
|
* обязано её двигать; до этого пересмотра версии не было вообще, поэтому первое
|
|
9
9
|
* её значение совпадает с месяцем самого пересмотра.
|
|
10
10
|
*/
|
|
11
|
-
export const CONTRACT_VERSION = "2026-09-13";
|
|
11
|
+
export const CONTRACT_VERSION = "2026-09-13.2";
|
|
12
12
|
export const CONTRACT_VERSION_HEADER = "X-Clipwright-Contract";
|
|
13
13
|
/**
|
|
14
14
|
* Таблица решений. `as const satisfies Record<…>` даёт СРАЗУ ДВА свойства:
|
|
@@ -286,17 +286,17 @@ export function rejectedFields(input) {
|
|
|
286
286
|
const normalizedFieldName = (name) => name.toLowerCase().replace(/[^a-z0-9]/g, "");
|
|
287
287
|
/** Поля, которые предлагаются клиенту: отклонённые в перечень не входят. */
|
|
288
288
|
export const ACCEPTED_UGC_FIELDS = Object.keys(offeredUgcInputShape);
|
|
289
|
-
/** Ключи
|
|
290
|
-
/** попадают — их называет `rejectedFields` своей причиной (clipwright#166). */
|
|
291
|
-
export function unknownFields(raw) {
|
|
289
|
+
/** Ключи вне перечня `fields` (по умолчанию — контракт). Отклонённые поля контракта */
|
|
290
|
+
/** сюда не попадают — их называет `rejectedFields` своей причиной (clipwright#166). */
|
|
291
|
+
export function unknownFields(raw, fields = CONTRACT_FIELDS) {
|
|
292
292
|
if (raw === null || typeof raw !== "object" || Array.isArray(raw))
|
|
293
293
|
return [];
|
|
294
|
-
const known = new Set(
|
|
294
|
+
const known = new Set(fields);
|
|
295
295
|
return Object.keys(raw)
|
|
296
296
|
.filter((key) => !known.has(key))
|
|
297
297
|
.map((field) => ({
|
|
298
298
|
field,
|
|
299
|
-
suggestion:
|
|
299
|
+
suggestion: fields.find((candidate) => normalizedFieldName(candidate) === normalizedFieldName(field)),
|
|
300
300
|
}));
|
|
301
301
|
}
|
|
302
302
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract-dispositions.js","sourceRoot":"","sources":["../src/contract-dispositions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,uFAAuF;AACvF,uEAAuE;AAEvE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,
|
|
1
|
+
{"version":3,"file":"contract-dispositions.js","sourceRoot":"","sources":["../src/contract-dispositions.ts"],"names":[],"mappings":"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"}
|
package/dist/voice-catalog.d.ts
CHANGED
|
@@ -171,5 +171,101 @@ export declare const ttsModelLanguagesFile: z.ZodObject<{
|
|
|
171
171
|
}, z.core.$strict>>;
|
|
172
172
|
}, z.core.$strict>;
|
|
173
173
|
export type TtsModelLanguagesFile = z.infer<typeof ttsModelLanguagesFile>;
|
|
174
|
+
/** Фильтры `/v1/voices`: разбор запроса, `inputSchema` MCP и параметры SDK. Метки */
|
|
175
|
+
/** `age` и `use_case` берутся из данных каталога, поэтому их допустимый набор знает сервер. */
|
|
176
|
+
export declare const voicesQueryShape: {
|
|
177
|
+
language: z.ZodOptional<z.ZodEnum<{
|
|
178
|
+
bg: "bg";
|
|
179
|
+
cs: "cs";
|
|
180
|
+
da: "da";
|
|
181
|
+
de: "de";
|
|
182
|
+
el: "el";
|
|
183
|
+
en: "en";
|
|
184
|
+
es: "es";
|
|
185
|
+
fi: "fi";
|
|
186
|
+
fil: "fil";
|
|
187
|
+
fr: "fr";
|
|
188
|
+
hi: "hi";
|
|
189
|
+
hr: "hr";
|
|
190
|
+
hu: "hu";
|
|
191
|
+
id: "id";
|
|
192
|
+
it: "it";
|
|
193
|
+
ja: "ja";
|
|
194
|
+
ko: "ko";
|
|
195
|
+
ms: "ms";
|
|
196
|
+
nl: "nl";
|
|
197
|
+
no: "no";
|
|
198
|
+
pl: "pl";
|
|
199
|
+
pt: "pt";
|
|
200
|
+
ro: "ro";
|
|
201
|
+
ru: "ru";
|
|
202
|
+
sk: "sk";
|
|
203
|
+
sv: "sv";
|
|
204
|
+
ta: "ta";
|
|
205
|
+
tr: "tr";
|
|
206
|
+
uk: "uk";
|
|
207
|
+
vi: "vi";
|
|
208
|
+
zh: "zh";
|
|
209
|
+
}>>;
|
|
210
|
+
gender: z.ZodOptional<z.ZodEnum<{
|
|
211
|
+
female: "female";
|
|
212
|
+
male: "male";
|
|
213
|
+
}>>;
|
|
214
|
+
age: z.ZodOptional<z.ZodString>;
|
|
215
|
+
use_case: z.ZodOptional<z.ZodString>;
|
|
216
|
+
model: z.ZodOptional<z.ZodEnum<{
|
|
217
|
+
eleven_flash_v2_5: "eleven_flash_v2_5";
|
|
218
|
+
eleven_turbo_v2_5: "eleven_turbo_v2_5";
|
|
219
|
+
eleven_v3: "eleven_v3";
|
|
220
|
+
}>>;
|
|
221
|
+
};
|
|
222
|
+
export declare const voicesQuery: z.ZodObject<{
|
|
223
|
+
language: z.ZodOptional<z.ZodEnum<{
|
|
224
|
+
bg: "bg";
|
|
225
|
+
cs: "cs";
|
|
226
|
+
da: "da";
|
|
227
|
+
de: "de";
|
|
228
|
+
el: "el";
|
|
229
|
+
en: "en";
|
|
230
|
+
es: "es";
|
|
231
|
+
fi: "fi";
|
|
232
|
+
fil: "fil";
|
|
233
|
+
fr: "fr";
|
|
234
|
+
hi: "hi";
|
|
235
|
+
hr: "hr";
|
|
236
|
+
hu: "hu";
|
|
237
|
+
id: "id";
|
|
238
|
+
it: "it";
|
|
239
|
+
ja: "ja";
|
|
240
|
+
ko: "ko";
|
|
241
|
+
ms: "ms";
|
|
242
|
+
nl: "nl";
|
|
243
|
+
no: "no";
|
|
244
|
+
pl: "pl";
|
|
245
|
+
pt: "pt";
|
|
246
|
+
ro: "ro";
|
|
247
|
+
ru: "ru";
|
|
248
|
+
sk: "sk";
|
|
249
|
+
sv: "sv";
|
|
250
|
+
ta: "ta";
|
|
251
|
+
tr: "tr";
|
|
252
|
+
uk: "uk";
|
|
253
|
+
vi: "vi";
|
|
254
|
+
zh: "zh";
|
|
255
|
+
}>>;
|
|
256
|
+
gender: z.ZodOptional<z.ZodEnum<{
|
|
257
|
+
female: "female";
|
|
258
|
+
male: "male";
|
|
259
|
+
}>>;
|
|
260
|
+
age: z.ZodOptional<z.ZodString>;
|
|
261
|
+
use_case: z.ZodOptional<z.ZodString>;
|
|
262
|
+
model: z.ZodOptional<z.ZodEnum<{
|
|
263
|
+
eleven_flash_v2_5: "eleven_flash_v2_5";
|
|
264
|
+
eleven_turbo_v2_5: "eleven_turbo_v2_5";
|
|
265
|
+
eleven_v3: "eleven_v3";
|
|
266
|
+
}>>;
|
|
267
|
+
}, z.core.$strip>;
|
|
268
|
+
export type VoicesQuery = z.infer<typeof voicesQuery>;
|
|
269
|
+
export declare const VOICES_QUERY_FIELDS: (keyof VoicesQuery)[];
|
|
174
270
|
/** Нормализация метки на чтении: `middle-aged` → `middle_aged`, пустая → нет метки. */
|
|
175
271
|
export declare function normalizeVoiceLabel(raw: string | null | undefined): string | undefined;
|
package/dist/voice-catalog.js
CHANGED
|
@@ -40,6 +40,31 @@ export const voiceCatalogFile = z.strictObject({
|
|
|
40
40
|
export const ttsModelLanguagesFile = z.strictObject({
|
|
41
41
|
models: z.array(z.strictObject({ id: z.enum(TTS_MODELS), languages: z.array(z.string().min(1)) })),
|
|
42
42
|
});
|
|
43
|
+
/** Фильтры `/v1/voices`: разбор запроса, `inputSchema` MCP и параметры SDK. Метки */
|
|
44
|
+
/** `age` и `use_case` берутся из данных каталога, поэтому их допустимый набор знает сервер. */
|
|
45
|
+
export const voicesQueryShape = {
|
|
46
|
+
language: z
|
|
47
|
+
.enum(CATALOG_LANGUAGES)
|
|
48
|
+
.optional()
|
|
49
|
+
.describe("Native language of the voice. A filter, not a limit: any voice speaks any supported language"),
|
|
50
|
+
gender: z.enum(CATALOG_GENDERS).optional().describe("Gender label of the voice"),
|
|
51
|
+
age: z
|
|
52
|
+
.string()
|
|
53
|
+
.min(1)
|
|
54
|
+
.optional()
|
|
55
|
+
.describe("Age label as list_voices prints it (young, middle_aged, old); an unknown value is refused with the allowed list"),
|
|
56
|
+
use_case: z
|
|
57
|
+
.string()
|
|
58
|
+
.min(1)
|
|
59
|
+
.optional()
|
|
60
|
+
.describe("Use case label as list_voices prints it (narrative_story, social_media, …); an unknown value is refused with the allowed list"),
|
|
61
|
+
model: z
|
|
62
|
+
.enum(TTS_MODELS)
|
|
63
|
+
.optional()
|
|
64
|
+
.describe("Only voices whose language this speech model supports"),
|
|
65
|
+
};
|
|
66
|
+
export const voicesQuery = z.object(voicesQueryShape);
|
|
67
|
+
export const VOICES_QUERY_FIELDS = Object.keys(voicesQueryShape);
|
|
43
68
|
/** Нормализация метки на чтении: `middle-aged` → `middle_aged`, пустая → нет метки. */
|
|
44
69
|
export function normalizeVoiceLabel(raw) {
|
|
45
70
|
const value = raw?.trim().toLowerCase().replaceAll("-", "_");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voice-catalog.js","sourceRoot":"","sources":["../src/voice-catalog.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"voice-catalog.js","sourceRoot":"","sources":["../src/voice-catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { type CatalogFileVoice, type TtsModelLanguagesFile, type VoiceCatalogFile, type VoicesQuery } from "./voice-catalog.js";
|
|
3
|
+
import { type VoiceCatalogEntry } from "./voices.js";
|
|
4
|
+
/** Запрос `/v1/voices` на сервере: незнакомая метка — отказ со списком допустимых, а не пустой список. */
|
|
5
|
+
export declare function serverVoicesQueryFor(voices?: readonly CatalogFileVoice[]): z.ZodObject<{
|
|
6
|
+
language: z.ZodOptional<z.ZodEnum<{
|
|
7
|
+
bg: "bg";
|
|
8
|
+
cs: "cs";
|
|
9
|
+
da: "da";
|
|
10
|
+
de: "de";
|
|
11
|
+
el: "el";
|
|
12
|
+
en: "en";
|
|
13
|
+
es: "es";
|
|
14
|
+
fi: "fi";
|
|
15
|
+
fil: "fil";
|
|
16
|
+
fr: "fr";
|
|
17
|
+
hi: "hi";
|
|
18
|
+
hr: "hr";
|
|
19
|
+
hu: "hu";
|
|
20
|
+
id: "id";
|
|
21
|
+
it: "it";
|
|
22
|
+
ja: "ja";
|
|
23
|
+
ko: "ko";
|
|
24
|
+
ms: "ms";
|
|
25
|
+
nl: "nl";
|
|
26
|
+
no: "no";
|
|
27
|
+
pl: "pl";
|
|
28
|
+
pt: "pt";
|
|
29
|
+
ro: "ro";
|
|
30
|
+
ru: "ru";
|
|
31
|
+
sk: "sk";
|
|
32
|
+
sv: "sv";
|
|
33
|
+
ta: "ta";
|
|
34
|
+
tr: "tr";
|
|
35
|
+
uk: "uk";
|
|
36
|
+
vi: "vi";
|
|
37
|
+
zh: "zh";
|
|
38
|
+
}>>;
|
|
39
|
+
gender: z.ZodOptional<z.ZodEnum<{
|
|
40
|
+
female: "female";
|
|
41
|
+
male: "male";
|
|
42
|
+
}>>;
|
|
43
|
+
model: z.ZodOptional<z.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
|
+
age: z.ZodOptional<z.ZodEnum<{
|
|
49
|
+
[x: string]: string;
|
|
50
|
+
}>>;
|
|
51
|
+
use_case: z.ZodOptional<z.ZodEnum<{
|
|
52
|
+
[x: string]: string;
|
|
53
|
+
}>>;
|
|
54
|
+
}, z.core.$strip>;
|
|
55
|
+
export declare const serverVoicesQuery: z.ZodObject<{
|
|
56
|
+
language: z.ZodOptional<z.ZodEnum<{
|
|
57
|
+
bg: "bg";
|
|
58
|
+
cs: "cs";
|
|
59
|
+
da: "da";
|
|
60
|
+
de: "de";
|
|
61
|
+
el: "el";
|
|
62
|
+
en: "en";
|
|
63
|
+
es: "es";
|
|
64
|
+
fi: "fi";
|
|
65
|
+
fil: "fil";
|
|
66
|
+
fr: "fr";
|
|
67
|
+
hi: "hi";
|
|
68
|
+
hr: "hr";
|
|
69
|
+
hu: "hu";
|
|
70
|
+
id: "id";
|
|
71
|
+
it: "it";
|
|
72
|
+
ja: "ja";
|
|
73
|
+
ko: "ko";
|
|
74
|
+
ms: "ms";
|
|
75
|
+
nl: "nl";
|
|
76
|
+
no: "no";
|
|
77
|
+
pl: "pl";
|
|
78
|
+
pt: "pt";
|
|
79
|
+
ro: "ro";
|
|
80
|
+
ru: "ru";
|
|
81
|
+
sk: "sk";
|
|
82
|
+
sv: "sv";
|
|
83
|
+
ta: "ta";
|
|
84
|
+
tr: "tr";
|
|
85
|
+
uk: "uk";
|
|
86
|
+
vi: "vi";
|
|
87
|
+
zh: "zh";
|
|
88
|
+
}>>;
|
|
89
|
+
gender: z.ZodOptional<z.ZodEnum<{
|
|
90
|
+
female: "female";
|
|
91
|
+
male: "male";
|
|
92
|
+
}>>;
|
|
93
|
+
model: z.ZodOptional<z.ZodEnum<{
|
|
94
|
+
eleven_flash_v2_5: "eleven_flash_v2_5";
|
|
95
|
+
eleven_turbo_v2_5: "eleven_turbo_v2_5";
|
|
96
|
+
eleven_v3: "eleven_v3";
|
|
97
|
+
}>>;
|
|
98
|
+
age: z.ZodOptional<z.ZodEnum<{
|
|
99
|
+
[x: string]: string;
|
|
100
|
+
}>>;
|
|
101
|
+
use_case: z.ZodOptional<z.ZodEnum<{
|
|
102
|
+
[x: string]: string;
|
|
103
|
+
}>>;
|
|
104
|
+
}, z.core.$strip>;
|
|
105
|
+
/** Пресеты, затем живые голоса каталога по языку и рангу; поле, которого у голоса нет, не совпадает ни с чем. */
|
|
106
|
+
export declare function listVoices(query: VoicesQuery, catalog?: VoiceCatalogFile, modelLanguages?: TtsModelLanguagesFile): {
|
|
107
|
+
voices: VoiceCatalogEntry[];
|
|
108
|
+
models: {
|
|
109
|
+
id: string;
|
|
110
|
+
char_limit: number;
|
|
111
|
+
languages: string[];
|
|
112
|
+
}[];
|
|
113
|
+
};
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { CATALOG_LANGUAGES, normalizeVoiceLabel, VOICES_QUERY_FIELDS, voicesQueryShape, } from "./voice-catalog.js";
|
|
3
|
+
import { TTS_MODEL_LANGUAGES, VOICE_CATALOG } from "./voice-catalog-data.js";
|
|
4
|
+
import { resolveTtsModel, TTS_MODEL_CHAR_CAP, TTS_MODELS, VOICE_PRESETS, } from "./voices.js";
|
|
5
|
+
// Подпуть, а не баррел: список читает каталог, а клиентам SDK он не нужен (docs/16).
|
|
6
|
+
const isLive = (voice) => voice.retired_at === undefined;
|
|
7
|
+
function labelValues(voices, raw) {
|
|
8
|
+
const values = voices.filter(isLive).map((voice) => normalizeVoiceLabel(raw(voice)));
|
|
9
|
+
return [...new Set(values.filter((value) => value !== undefined))].sort();
|
|
10
|
+
}
|
|
11
|
+
/** Запрос `/v1/voices` на сервере: незнакомая метка — отказ со списком допустимых, а не пустой список. */
|
|
12
|
+
export function serverVoicesQueryFor(voices = VOICE_CATALOG.voices) {
|
|
13
|
+
return z.object({
|
|
14
|
+
...voicesQueryShape,
|
|
15
|
+
age: z.enum(labelValues(voices, (voice) => voice.age_raw)).optional(),
|
|
16
|
+
use_case: z.enum(labelValues(voices, (voice) => voice.use_case_raw)).optional(),
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
export const serverVoicesQuery = serverVoicesQueryFor();
|
|
20
|
+
const presentText = (raw) => raw?.trim() || undefined;
|
|
21
|
+
/** Пресеты, затем живые голоса каталога по языку и рангу; поле, которого у голоса нет, не совпадает ни с чем. */
|
|
22
|
+
export function listVoices(query, catalog = VOICE_CATALOG, modelLanguages = TTS_MODEL_LANGUAGES) {
|
|
23
|
+
const languagesOf = (id) => modelLanguages.models.find((model) => model.id === id)?.languages ?? [];
|
|
24
|
+
const supportedModels = (language) => TTS_MODELS.filter((id) => languagesOf(id).includes(language));
|
|
25
|
+
const presets = Object.entries(VOICE_PRESETS).map(([name, preset]) => ({
|
|
26
|
+
name,
|
|
27
|
+
kind: "preset",
|
|
28
|
+
...preset,
|
|
29
|
+
supported_models: supportedModels(preset.language),
|
|
30
|
+
}));
|
|
31
|
+
const languageRank = (voice) => CATALOG_LANGUAGES.indexOf(voice.language);
|
|
32
|
+
const catalogVoices = catalog.voices
|
|
33
|
+
.filter(isLive)
|
|
34
|
+
.sort((a, b) => languageRank(a) - languageRank(b) || a.rank - b.rank || (a.slug < b.slug ? -1 : 1))
|
|
35
|
+
.map((voice) => ({
|
|
36
|
+
name: voice.slug,
|
|
37
|
+
kind: "catalog",
|
|
38
|
+
language: voice.language,
|
|
39
|
+
locale: presentText(voice.locale),
|
|
40
|
+
accent: presentText(voice.accent),
|
|
41
|
+
gender: normalizeVoiceLabel(voice.gender_raw),
|
|
42
|
+
age: normalizeVoiceLabel(voice.age_raw),
|
|
43
|
+
use_case: normalizeVoiceLabel(voice.use_case_raw),
|
|
44
|
+
description: presentText(voice.description) ?? voice.name,
|
|
45
|
+
model: resolveTtsModel({ voice: voice.slug }),
|
|
46
|
+
supported_models: supportedModels(voice.language),
|
|
47
|
+
verified_models: voice.verified_models,
|
|
48
|
+
}));
|
|
49
|
+
const matches = (entry) => VOICES_QUERY_FIELDS.every((field) => {
|
|
50
|
+
const wanted = query[field];
|
|
51
|
+
if (wanted === undefined)
|
|
52
|
+
return true;
|
|
53
|
+
if (field === "model")
|
|
54
|
+
return entry.supported_models?.includes(wanted) === true;
|
|
55
|
+
return entry[field] === wanted;
|
|
56
|
+
});
|
|
57
|
+
return {
|
|
58
|
+
voices: [...presets, ...catalogVoices].filter(matches),
|
|
59
|
+
models: TTS_MODELS.map((id) => ({ id, char_limit: TTS_MODEL_CHAR_CAP[id], languages: languagesOf(id) })),
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=voice-listing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"voice-listing.js","sourceRoot":"","sources":["../src/voice-listing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,GAKjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,UAAU,EACV,aAAa,GAEd,MAAM,aAAa,CAAC;AAErB,qFAAqF;AAErF,MAAM,MAAM,GAAG,CAAC,KAAuB,EAAW,EAAE,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC;AAEpF,SAAS,WAAW,CAAC,MAAmC,EAAE,GAA+C;IACvG,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACrF,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAA2B,CAAC;AACrG,CAAC;AAED,0GAA0G;AAC1G,MAAM,UAAU,oBAAoB,CAAC,MAAM,GAAgC,aAAa,CAAC,MAAM;IAC7F,OAAO,CAAC,CAAC,MAAM,CAAC;QACd,GAAG,gBAAgB;QACnB,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE;QACrE,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE;KAChF,CAAC,CAAC;AACL,CAAC;AACD,MAAM,CAAC,MAAM,iBAAiB,GAAG,oBAAoB,EAAE,CAAC;AAExD,MAAM,WAAW,GAAG,CAAC,GAAkB,EAAsB,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;AAEzF,iHAAiH;AACjH,MAAM,UAAU,UAAU,CACxB,KAAkB,EAClB,OAAO,GAAqB,aAAa,EACzC,cAAc,GAA0B,mBAAmB;IAE3D,MAAM,WAAW,GAAG,CAAC,EAAU,EAAY,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,IAAI,EAAE,CAAC;IACtH,MAAM,eAAe,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE5G,MAAM,OAAO,GAAwB,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1F,IAAI;QACJ,IAAI,EAAE,QAAQ;QACd,GAAG,MAAM;QACT,gBAAgB,EAAE,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC;KACnD,CAAC,CAAC,CAAC;IACJ,MAAM,YAAY,GAAG,CAAC,KAAuB,EAAE,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC5F,MAAM,aAAa,GAAwB,OAAO,CAAC,MAAM;SACtD,MAAM,CAAC,MAAM,CAAC;SACd,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAClG,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACf,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;QACjC,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;QACjC,MAAM,EAAE,mBAAmB,CAAC,KAAK,CAAC,UAAU,CAAC;QAC7C,GAAG,EAAE,mBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC;QACvC,QAAQ,EAAE,mBAAmB,CAAC,KAAK,CAAC,YAAY,CAAC;QACjD,WAAW,EAAE,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,IAAI;QACzD,KAAK,EAAE,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7C,gBAAgB,EAAE,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC;QACjD,eAAe,EAAE,KAAK,CAAC,eAAe;KACvC,CAAC,CAAC,CAAC;IAEN,MAAM,OAAO,GAAG,CAAC,KAAwB,EAAW,EAAE,CACpD,mBAAmB,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QAClC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACtC,IAAI,KAAK,KAAK,OAAO;YAAE,OAAO,KAAK,CAAC,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;QAChF,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC;IACjC,CAAC,CAAC,CAAC;IAEL,OAAO;QACL,MAAM,EAAE,CAAC,GAAG,OAAO,EAAE,GAAG,aAAa,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QACtD,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,kBAAkB,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;KACzG,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@clipwright/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.14.0",
|
|
4
4
|
"description": "Zod schemas and the shared request/response contract of the Clipwright UGC video API",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Dimantika Sp. z o.o.",
|
|
@@ -28,6 +28,10 @@
|
|
|
28
28
|
"./voice-admission": {
|
|
29
29
|
"types": "./dist/voice-admission.d.ts",
|
|
30
30
|
"default": "./dist/voice-admission.js"
|
|
31
|
+
},
|
|
32
|
+
"./voice-listing": {
|
|
33
|
+
"types": "./dist/voice-listing.d.ts",
|
|
34
|
+
"default": "./dist/voice-listing.js"
|
|
31
35
|
}
|
|
32
36
|
},
|
|
33
37
|
"dependencies": {
|