@clipwright/core 0.19.0 → 0.21.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 +55 -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 +5 -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-price.d.ts +21 -0
- package/dist/faceless-price.js +25 -0
- package/dist/faceless-price.js.map +1 -0
- package/dist/faceless-public-plan.d.ts +71 -0
- package/dist/faceless-public-plan.js +166 -0
- package/dist/faceless-public-plan.js.map +1 -0
- package/dist/faceless-public.d.ts +107 -0
- package/dist/faceless-public.js +74 -0
- package/dist/faceless-public.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 +63 -0
- package/dist/faceless-storyboard-v2-timing.js +143 -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 +10 -44
- package/dist/idempotency.js +18 -44
- package/dist/idempotency.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.js +24 -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 +26 -24
- package/dist/run-static-warnings.js.map +1 -1
- package/dist/runs.d.ts +34 -55
- package/dist/runs.js +28 -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 +37 -108
- package/dist/skills.js +77 -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.generated.json +56 -54
- 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/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, ` +
|
package/dist/tts-backend.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tts-backend.js","sourceRoot":"","sources":["../src/tts-backend.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tts-backend.js","sourceRoot":"","sources":["../src/tts-backend.ts"],"names":[],"mappings":"AAmDA,6FAA6F;AAC7F,sEAAsE;AACtE,MAAM,UAAU,kBAAkB,CAChC,UAA6B,EAC7B,UAA6B,EAC7B,QAA2B;IAE3B,IAAI,UAAU,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;QACrF,MAAM,IAAI,KAAK,CACb,qCAAqC,UAAU,CAAC,MAAM,UAAU;YAC9D,GAAG,UAAU,CAAC,MAAM,YAAY,QAAQ,CAAC,MAAM,OAAO,CACzD,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,GAAG,GAAG,CAAC,CAAC;IAEZ,MAAM,KAAK,GAAG,GAAS,EAAE;QACvB,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YACxD,GAAG,GAAG,EAAE,CAAC;QACX,CAAC;IACH,CAAC,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9C,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAW,CAAC;QACnC,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YAClB,KAAK,EAAE,CAAC;YACR,SAAS;QACX,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrB,KAAK,GAAG,UAAU,CAAC,CAAC,CAAW,CAAC;QAClC,CAAC;QACD,GAAG,IAAI,EAAE,CAAC;QACV,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAW,CAAC;IAC9B,CAAC;IACD,KAAK,EAAE,CAAC;IAER,OAAO,KAAK,CAAC;AACf,CAAC"}
|
package/dist/uploads.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
/**
|
|
2
|
+
/** The same cap as the source probe (`PROBE_MAX_BYTES` in service-core, guarded there). */
|
|
3
3
|
export declare const UPLOAD_MAX_BYTES: number;
|
|
4
|
-
/**
|
|
4
|
+
/** Uploads per account over a sliding day; a link lives one day, the object seven (storage lifecycle). */
|
|
5
5
|
export declare const UPLOAD_DAILY_CAP = 20;
|
|
6
6
|
export declare const UPLOAD_WINDOW_SECONDS = 86400;
|
|
7
7
|
export declare const UPLOAD_URL_TTL_SECONDS = 86400;
|
|
8
8
|
export declare const UPLOAD_OBJECT_RETENTION_DAYS = 7;
|
|
9
|
-
/** WebP
|
|
9
|
+
/** No WebP on purpose: the probe cannot read its dimensions, and without them the format cannot be checked. */
|
|
10
10
|
export declare const UPLOAD_MEDIA_TYPES: readonly ["image/png", "image/jpeg"];
|
|
11
11
|
export type UploadMediaType = (typeof UPLOAD_MEDIA_TYPES)[number];
|
|
12
12
|
export declare const UPLOADS_PATH = "/v1/uploads";
|
|
@@ -23,7 +23,7 @@ export declare const uploadResponse: z.ZodObject<{
|
|
|
23
23
|
expires_at: z.ZodString;
|
|
24
24
|
}, z.core.$strip>;
|
|
25
25
|
export type UploadResponse = z.infer<typeof uploadResponse>;
|
|
26
|
-
/**
|
|
26
|
+
/** Type by the first bytes, not by header or extension: the sender writes those. */
|
|
27
27
|
export declare function sniffUploadMediaType(bytes: Uint8Array): UploadMediaType | null;
|
|
28
28
|
export declare function uploadExtension(mediaType: UploadMediaType): "png" | "jpg";
|
|
29
29
|
export declare const UPLOAD_IMAGE_DESCRIPTION: string;
|
package/dist/uploads.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
/**
|
|
2
|
+
/** The same cap as the source probe (`PROBE_MAX_BYTES` in service-core, guarded there). */
|
|
3
3
|
export const UPLOAD_MAX_BYTES = 10 * 1024 * 1024;
|
|
4
|
-
/**
|
|
4
|
+
/** Uploads per account over a sliding day; a link lives one day, the object seven (storage lifecycle). */
|
|
5
5
|
export const UPLOAD_DAILY_CAP = 20;
|
|
6
6
|
export const UPLOAD_WINDOW_SECONDS = 86_400;
|
|
7
7
|
export const UPLOAD_URL_TTL_SECONDS = 86_400;
|
|
8
8
|
export const UPLOAD_OBJECT_RETENTION_DAYS = 7;
|
|
9
|
-
/** WebP
|
|
9
|
+
/** No WebP on purpose: the probe cannot read its dimensions, and without them the format cannot be checked. */
|
|
10
10
|
export const UPLOAD_MEDIA_TYPES = ["image/png", "image/jpeg"];
|
|
11
11
|
export const UPLOADS_PATH = "/v1/uploads";
|
|
12
12
|
export const uploadResponse = z.object({
|
|
@@ -19,7 +19,7 @@ export const uploadResponse = z.object({
|
|
|
19
19
|
expires_at: z.string().datetime(),
|
|
20
20
|
});
|
|
21
21
|
const PNG_SIGNATURE = [0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a];
|
|
22
|
-
/**
|
|
22
|
+
/** Type by the first bytes, not by header or extension: the sender writes those. */
|
|
23
23
|
export function sniffUploadMediaType(bytes) {
|
|
24
24
|
if (bytes.length >= 8 && PNG_SIGNATURE.every((b, i) => bytes[i] === b))
|
|
25
25
|
return "image/png";
|
package/dist/uploads.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uploads.js","sourceRoot":"","sources":["../src/uploads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,
|
|
1
|
+
{"version":3,"file":"uploads.js","sourceRoot":"","sources":["../src/uploads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,2FAA2F;AAC3F,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAEjD,0GAA0G;AAC1G,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAC;AACnC,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC;AAC5C,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC;AAC7C,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC;AAE9C,+GAA+G;AAC/G,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,WAAW,EAAE,YAAY,CAAU,CAAC;AAGvE,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAC;AAE1C,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,oBAAoB,CAAC;IACjD,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;IAC5C,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;IACtC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC;IACxD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAClC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACnC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAGH,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAEvE,oFAAoF;AACpF,MAAM,UAAU,oBAAoB,CAAC,KAAiB;IACpD,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAAE,OAAO,WAAW,CAAC;IAC3F,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACrF,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,SAA0B;IACxD,OAAO,SAAS,KAAK,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AACnD,CAAC;AAED,MAAM,CAAC,MAAM,wBAAwB,GACnC,+FAA+F;IAC/F,+FAA+F;IAC/F,iGAAiG;IACjG,mGAAmG;IACnG,iGAAiG,CAAC"}
|
|
@@ -1,98 +1,35 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
3
|
-
* ЕЁ ТЕКСТУ (US-606a).
|
|
4
|
-
*
|
|
5
|
-
* ЗАЧЕМ ЭТО СУЩЕСТВУЕТ. Провалившийся платный вызов кончается одним из трёх, и
|
|
6
|
-
* различать их обязан код, а не человек, читающий лог:
|
|
7
|
-
*
|
|
8
|
-
* - платный запрос ещё НЕ УХОДИЛ (упал наш префлайт, бесплатный шаг, гард
|
|
9
|
-
* длины) — денег не взяли точно;
|
|
10
|
-
* - вендор ОТВЕТИЛ — дальше всё решает код: 4xx означает отказ без денег, а
|
|
11
|
-
* 2xx, которым мы не смогли воспользоваться, означает, что работу приняли и
|
|
12
|
-
* посчитали;
|
|
13
|
-
* - ОТВЕТА НЕ БЫЛО ВОВСЕ (обрыв, тайм-аут) — взяли или нет, неизвестно.
|
|
14
|
-
*
|
|
15
|
-
* Третий случай — единственная причина, по которой US-606a вообще написана.
|
|
16
|
-
* Свалив его в «не получилось», мы объявили бы неизвестность отсутствием траты,
|
|
17
|
-
* то есть соврали бы в свою пользу ровно там, где ошибка дороже всего.
|
|
18
|
-
*
|
|
19
|
-
* ПОЧЕМУ ОТСУТСТВИЕ ПРИЗНАКА ЗНАЧИТ «НЕИЗВЕСТНО», А НЕ «НЕ УХОДИЛ». Это
|
|
20
|
-
* fail-closed: непомеченная ошибка поднимает лишний алерт, непомеченная в
|
|
21
|
-
* другую сторону — прячет возможную трату. Цена первой ошибки — внимание
|
|
22
|
-
* владельца, цена второй — необнаруженное списание. Поэтому умолчание такое.
|
|
23
|
-
*
|
|
24
|
-
* ПОЧЕМУ РАЗБОР ТЕКСТА ОШИБКИ НЕ ГОДИТСЯ. Он завёл бы второй источник правды:
|
|
25
|
-
* формат сообщений адаптера и его копию в парсере. Они расходятся на первой же
|
|
26
|
-
* правке текста — молча, потому что парсер просто перестаёт узнавать строку.
|
|
27
|
-
* Тот же довод уже стоил нам одного дефекта в `SpendRefusedError`.
|
|
28
|
-
*
|
|
29
|
-
* ПОЧЕМУ В `core`, А НЕ В СЕРВИСНОМ ПАКЕТЕ. Это обязанность реализаций
|
|
30
|
-
* `RenderBackend` и `TtsBackend`, а оба контракта живут здесь — вместе с
|
|
31
|
-
* требованием различать райтраебл и нерайтраебл ошибки, которое той же природы.
|
|
32
|
-
* Модуль не тянет ничего: три функции над свойством объекта.
|
|
33
|
-
*/
|
|
34
|
-
/**
|
|
35
|
-
* Что известно о судьбе платного запроса к моменту броска.
|
|
36
|
-
*
|
|
37
|
-
* `unsent` — платный запрос не уходил. `responded` — вендор ответил, и код
|
|
38
|
-
* ответа известен числом: флага «ответил» не хватило бы, потому что 200 и 402
|
|
39
|
-
* — разные события с разной ценой.
|
|
40
|
-
*/
|
|
1
|
+
/** What is known about the paid request when it threw. `unsent`: it never left. `responded`: */
|
|
2
|
+
/** the vendor answered, with the status as a number, since 200 and 402 cost differently. */
|
|
41
3
|
export type VendorDispatchFact = {
|
|
42
4
|
readonly kind: "unsent";
|
|
43
5
|
} | {
|
|
44
6
|
readonly kind: "responded";
|
|
45
7
|
readonly status: number;
|
|
46
8
|
};
|
|
47
|
-
/**
|
|
9
|
+
/** The paid request never left: a preflight, a guard or a free step failed. */
|
|
48
10
|
export declare function markVendorUnsent<E>(error: E): E;
|
|
49
|
-
/**
|
|
11
|
+
/** The vendor answered, with this status. */
|
|
50
12
|
export declare function markVendorResponse<E>(error: E, status: number): E;
|
|
51
|
-
/**
|
|
52
|
-
|
|
53
|
-
* утверждение о незнании, а не об отказе.
|
|
54
|
-
*
|
|
55
|
-
* Читает и не-Error значения: в `catch` приходит `unknown`, и бросить могли что
|
|
56
|
-
* угодно.
|
|
57
|
-
*/
|
|
13
|
+
/** What is known about the request. `undefined` means NOTHING is known, a statement of */
|
|
14
|
+
/** ignorance, not of refusal. Reads non-Error values too, since `catch` gets `unknown`. */
|
|
58
15
|
export declare function vendorDispatchFact(error: unknown): VendorDispatchFact | undefined;
|
|
59
|
-
/**
|
|
60
|
-
|
|
61
|
-
*
|
|
62
|
-
* ЗАЧЕМ ОТДЕЛЬНО ОТ `VendorDispatchFact`. Тот отвечает на вопрос «дошёл ли
|
|
63
|
-
* платный запрос»; этот — на вопрос «что вендор СКАЗАЛ о работе, которую уже
|
|
64
|
-
* принял». Оси независимы: запрос дошёл и получил 200 (первая ось довольна), а
|
|
65
|
-
* задача через десять минут поллинга объявлена проваленной (вторая ось — нет).
|
|
66
|
-
*
|
|
67
|
-
* ЗАЧЕМ ЭТО ВООБЩЕ ЕСТЬ. Без вердикта учёт не может отличить «мы не узнали, чем
|
|
68
|
-
* кончилось» от «вендор сам сказал, что провалил». Первое обязано оставаться
|
|
69
|
-
* незакрытым, второе — записаться: молчать о том, что знаешь, в аудиторском
|
|
70
|
-
* следе так же плохо, как утверждать то, чего не знаешь. Круг 2 внешней приёмки
|
|
71
|
-
* поймал первую ошибку, круг 3 — вторую.
|
|
72
|
-
*
|
|
73
|
-
* `succeeded` здесь означает «вендор довёл работу до конца», даже если
|
|
74
|
-
* воспользоваться результатом мы не смогли (пришёл `completed` без
|
|
75
|
-
* положительной длительности). Наша неспособность прочитать ответ — не провал
|
|
76
|
-
* вендора и не повод записывать его в отчёт как провал.
|
|
77
|
-
*/
|
|
16
|
+
/** The vendor's verdict on the job itself, an axis apart from dispatch: an accepted request */
|
|
17
|
+
/** may still fail later. `succeeded` means the vendor finished, even if we could not use it. */
|
|
78
18
|
export type VendorJobVerdict = "succeeded" | "failed";
|
|
79
|
-
/**
|
|
19
|
+
/** Marks the error with what the vendor said about the job ITSELF. */
|
|
80
20
|
export declare function markVendorJobVerdict<E>(error: E, verdict: VendorJobVerdict): E;
|
|
81
|
-
/**
|
|
82
|
-
|
|
83
|
-
* сказал: оборвался поллинг, вышел срок, ответил не тот код. Это незнание, и
|
|
84
|
-
* закрывать по нему операцию нельзя.
|
|
85
|
-
*/
|
|
21
|
+
/** The vendor's verdict on the job. `undefined`: nothing terminal was said (polling broke, */
|
|
22
|
+
/** timed out, wrong status). That is ignorance, and an operation must not be closed on it. */
|
|
86
23
|
export declare function vendorJobVerdict(error: unknown): VendorJobVerdict | undefined;
|
|
87
|
-
/**
|
|
88
|
-
/**
|
|
24
|
+
/** Whose fault a vendor refusal is. `unknown` is the honest answer and keeps the previous */
|
|
25
|
+
/** behavior (not zero). */
|
|
89
26
|
export type VendorRefusalClass = "account_standing" | "vendor" | "unknown";
|
|
90
|
-
/**
|
|
27
|
+
/** Marks the error with what the vendor itself said about the refusal cause. */
|
|
91
28
|
export declare function markVendorRefusal<E>(error: E, refusal: VendorRefusalClass): E;
|
|
92
|
-
/**
|
|
29
|
+
/** An unmarked error is `unknown`: fail-closed here means the previous behavior. */
|
|
93
30
|
export declare function vendorRefusalClass(error: unknown): VendorRefusalClass;
|
|
94
|
-
/**
|
|
95
|
-
/**
|
|
31
|
+
/** Marks the refusal class with the adapter's OWN answer; otherwise the required member */
|
|
32
|
+
/** would ask the vendor a question whose answer goes nowhere. */
|
|
96
33
|
export declare function withRefusalClass<T>(backend: {
|
|
97
34
|
classifyRefusal(error: unknown): VendorRefusalClass;
|
|
98
35
|
}, call: () => Promise<T>): Promise<T>;
|
package/dist/vendor-response.js
CHANGED
|
@@ -1,50 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
* ЗАЧЕМ ЭТО СУЩЕСТВУЕТ. Провалившийся платный вызов кончается одним из трёх, и
|
|
6
|
-
* различать их обязан код, а не человек, читающий лог:
|
|
7
|
-
*
|
|
8
|
-
* - платный запрос ещё НЕ УХОДИЛ (упал наш префлайт, бесплатный шаг, гард
|
|
9
|
-
* длины) — денег не взяли точно;
|
|
10
|
-
* - вендор ОТВЕТИЛ — дальше всё решает код: 4xx означает отказ без денег, а
|
|
11
|
-
* 2xx, которым мы не смогли воспользоваться, означает, что работу приняли и
|
|
12
|
-
* посчитали;
|
|
13
|
-
* - ОТВЕТА НЕ БЫЛО ВОВСЕ (обрыв, тайм-аут) — взяли или нет, неизвестно.
|
|
14
|
-
*
|
|
15
|
-
* Третий случай — единственная причина, по которой US-606a вообще написана.
|
|
16
|
-
* Свалив его в «не получилось», мы объявили бы неизвестность отсутствием траты,
|
|
17
|
-
* то есть соврали бы в свою пользу ровно там, где ошибка дороже всего.
|
|
18
|
-
*
|
|
19
|
-
* ПОЧЕМУ ОТСУТСТВИЕ ПРИЗНАКА ЗНАЧИТ «НЕИЗВЕСТНО», А НЕ «НЕ УХОДИЛ». Это
|
|
20
|
-
* fail-closed: непомеченная ошибка поднимает лишний алерт, непомеченная в
|
|
21
|
-
* другую сторону — прячет возможную трату. Цена первой ошибки — внимание
|
|
22
|
-
* владельца, цена второй — необнаруженное списание. Поэтому умолчание такое.
|
|
23
|
-
*
|
|
24
|
-
* ПОЧЕМУ РАЗБОР ТЕКСТА ОШИБКИ НЕ ГОДИТСЯ. Он завёл бы второй источник правды:
|
|
25
|
-
* формат сообщений адаптера и его копию в парсере. Они расходятся на первой же
|
|
26
|
-
* правке текста — молча, потому что парсер просто перестаёт узнавать строку.
|
|
27
|
-
* Тот же довод уже стоил нам одного дефекта в `SpendRefusedError`.
|
|
28
|
-
*
|
|
29
|
-
* ПОЧЕМУ В `core`, А НЕ В СЕРВИСНОМ ПАКЕТЕ. Это обязанность реализаций
|
|
30
|
-
* `RenderBackend` и `TtsBackend`, а оба контракта живут здесь — вместе с
|
|
31
|
-
* требованием различать райтраебл и нерайтраебл ошибки, которое той же природы.
|
|
32
|
-
* Модуль не тянет ничего: три функции над свойством объекта.
|
|
33
|
-
*/
|
|
34
|
-
/**
|
|
35
|
-
* Имя свойства. Намеренно длинное и с префиксом проекта: свойство садится на
|
|
36
|
-
* чужие объекты ошибок, и короткое имя вроде `status` затёрло бы поле, которое
|
|
37
|
-
* туда положил кто-то другой.
|
|
38
|
-
*/
|
|
1
|
+
// What happened to a paid request, as a flag on the error rather than a guess from its text.
|
|
2
|
+
// No flag means "unknown", not "unsent": fail-closed, so a possible charge is never hidden.
|
|
3
|
+
/** Property name, long and project-prefixed: it lands on foreign error objects, and a short */
|
|
4
|
+
/** name like `status` would overwrite someone else's field. */
|
|
39
5
|
const VENDOR_DISPATCH_FACT = "clipwrightVendorDispatchFact";
|
|
40
|
-
/**
|
|
41
|
-
|
|
42
|
-
* и лишний ключ в их сериализации — шум, за который никто не просил.
|
|
43
|
-
*
|
|
44
|
-
* НА ПРИМИТИВЕ — НИЧЕГО НЕ ДЕЛАЕТ, И ЭТО НАЗВАННОЕ СВОЙСТВО, А НЕ НЕДОСМОТР:
|
|
45
|
-
* `throw "строка"` пометить нечем, и такая ошибка попадёт в `unknown`. Это
|
|
46
|
-
* сторона fail-closed (лишний алерт, а не потерянная трата), поэтому терпимо.
|
|
47
|
-
*/
|
|
6
|
+
/** Shared flag writer. Non-enumerable, so it does not clutter serialized logs. A primitive */
|
|
7
|
+
/** cannot be marked and reads as unknown, which is the fail-closed side. */
|
|
48
8
|
function mark(error, fact) {
|
|
49
9
|
if (typeof error !== "object" || error === null) {
|
|
50
10
|
return error;
|
|
@@ -53,27 +13,22 @@ function mark(error, fact) {
|
|
|
53
13
|
value: fact,
|
|
54
14
|
enumerable: false,
|
|
55
15
|
writable: false,
|
|
56
|
-
// `configurable
|
|
57
|
-
//
|
|
16
|
+
// `configurable` so a second mark does not throw: an outer adapter layer may
|
|
17
|
+
// refine the fact.
|
|
58
18
|
configurable: true,
|
|
59
19
|
});
|
|
60
20
|
return error;
|
|
61
21
|
}
|
|
62
|
-
/**
|
|
22
|
+
/** The paid request never left: a preflight, a guard or a free step failed. */
|
|
63
23
|
export function markVendorUnsent(error) {
|
|
64
24
|
return mark(error, { kind: "unsent" });
|
|
65
25
|
}
|
|
66
|
-
/**
|
|
26
|
+
/** The vendor answered, with this status. */
|
|
67
27
|
export function markVendorResponse(error, status) {
|
|
68
28
|
return mark(error, { kind: "responded", status });
|
|
69
29
|
}
|
|
70
|
-
/**
|
|
71
|
-
|
|
72
|
-
* утверждение о незнании, а не об отказе.
|
|
73
|
-
*
|
|
74
|
-
* Читает и не-Error значения: в `catch` приходит `unknown`, и бросить могли что
|
|
75
|
-
* угодно.
|
|
76
|
-
*/
|
|
30
|
+
/** What is known about the request. `undefined` means NOTHING is known, a statement of */
|
|
31
|
+
/** ignorance, not of refusal. Reads non-Error values too, since `catch` gets `unknown`. */
|
|
77
32
|
export function vendorDispatchFact(error) {
|
|
78
33
|
if (typeof error !== "object" || error === null) {
|
|
79
34
|
return undefined;
|
|
@@ -92,7 +47,7 @@ export function vendorDispatchFact(error) {
|
|
|
92
47
|
return undefined;
|
|
93
48
|
}
|
|
94
49
|
const VENDOR_JOB_VERDICT = "clipwrightVendorJobVerdict";
|
|
95
|
-
/**
|
|
50
|
+
/** Marks the error with what the vendor said about the job ITSELF. */
|
|
96
51
|
export function markVendorJobVerdict(error, verdict) {
|
|
97
52
|
if (typeof error !== "object" || error === null) {
|
|
98
53
|
return error;
|
|
@@ -105,11 +60,8 @@ export function markVendorJobVerdict(error, verdict) {
|
|
|
105
60
|
});
|
|
106
61
|
return error;
|
|
107
62
|
}
|
|
108
|
-
/**
|
|
109
|
-
|
|
110
|
-
* сказал: оборвался поллинг, вышел срок, ответил не тот код. Это незнание, и
|
|
111
|
-
* закрывать по нему операцию нельзя.
|
|
112
|
-
*/
|
|
63
|
+
/** The vendor's verdict on the job. `undefined`: nothing terminal was said (polling broke, */
|
|
64
|
+
/** timed out, wrong status). That is ignorance, and an operation must not be closed on it. */
|
|
113
65
|
export function vendorJobVerdict(error) {
|
|
114
66
|
if (typeof error !== "object" || error === null) {
|
|
115
67
|
return undefined;
|
|
@@ -118,7 +70,7 @@ export function vendorJobVerdict(error) {
|
|
|
118
70
|
return value === "succeeded" || value === "failed" ? value : undefined;
|
|
119
71
|
}
|
|
120
72
|
const VENDOR_REFUSAL_CLASS = "clipwrightVendorRefusalClass";
|
|
121
|
-
/**
|
|
73
|
+
/** Marks the error with what the vendor itself said about the refusal cause. */
|
|
122
74
|
export function markVendorRefusal(error, refusal) {
|
|
123
75
|
if (typeof error !== "object" || error === null) {
|
|
124
76
|
return error;
|
|
@@ -131,7 +83,7 @@ export function markVendorRefusal(error, refusal) {
|
|
|
131
83
|
});
|
|
132
84
|
return error;
|
|
133
85
|
}
|
|
134
|
-
/**
|
|
86
|
+
/** An unmarked error is `unknown`: fail-closed here means the previous behavior. */
|
|
135
87
|
export function vendorRefusalClass(error) {
|
|
136
88
|
if (typeof error !== "object" || error === null) {
|
|
137
89
|
return "unknown";
|
|
@@ -139,8 +91,8 @@ export function vendorRefusalClass(error) {
|
|
|
139
91
|
const value = error[VENDOR_REFUSAL_CLASS];
|
|
140
92
|
return value === "account_standing" || value === "vendor" ? value : "unknown";
|
|
141
93
|
}
|
|
142
|
-
/**
|
|
143
|
-
/**
|
|
94
|
+
/** Marks the refusal class with the adapter's OWN answer; otherwise the required member */
|
|
95
|
+
/** would ask the vendor a question whose answer goes nowhere. */
|
|
144
96
|
export async function withRefusalClass(backend, call) {
|
|
145
97
|
try {
|
|
146
98
|
return await call();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vendor-response.js","sourceRoot":"","sources":["../src/vendor-response.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"vendor-response.js","sourceRoot":"","sources":["../src/vendor-response.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Gender } from "./default-actor.js";
|
|
2
2
|
import { type CatalogFileVoice } from "./voice-catalog.js";
|
|
3
3
|
import { type TtsModelId } from "./voices.js";
|
|
4
|
-
/**
|
|
4
|
+
/** Why the API refuses a voice name; `undefined` for a preset or a live catalog voice. */
|
|
5
5
|
export declare function catalogVoiceRefusal(voice: string, voices?: readonly CatalogFileVoice[]): string | undefined;
|
|
6
6
|
export declare const serverUgcInput: import("zod").ZodObject<{
|
|
7
7
|
script: import("zod").ZodOptional<import("zod").ZodString>;
|
|
@@ -99,11 +99,11 @@ export declare const serverUgcInput: import("zod").ZodObject<{
|
|
|
99
99
|
white: "white";
|
|
100
100
|
}>>;
|
|
101
101
|
}, import("zod/v4/core").$strip>;
|
|
102
|
-
/**
|
|
103
|
-
/**
|
|
102
|
+
/** Voice gender by name: our fact for a preset, the vendor label for a catalog voice. */
|
|
103
|
+
/** A raw `voice_id` has no gender, so `undefined`, not a guess. */
|
|
104
104
|
export declare function voiceGenderOf(voice: string, voices?: readonly CatalogFileVoice[]): Gender | undefined;
|
|
105
|
-
/**
|
|
106
|
-
/**
|
|
105
|
+
/** Warns only where MISSING verification means something: for `eleven_v3` no voice */
|
|
106
|
+
/** has it at all. */
|
|
107
107
|
export declare function buildVoiceVerificationWarnings(input: {
|
|
108
108
|
voice?: string | undefined;
|
|
109
109
|
voice_id?: string | undefined;
|
package/dist/voice-admission.js
CHANGED
|
@@ -3,8 +3,8 @@ import { normalizeVoiceLabel } from "./voice-catalog.js";
|
|
|
3
3
|
import { VOICE_CATALOG } from "./voice-catalog-data.js";
|
|
4
4
|
import { vendorVerifiedModels } from "./voice-listing.js";
|
|
5
5
|
import { isVoicePresetName, resolveTtsModel, VOICE_PRESETS } from "./voices.js";
|
|
6
|
-
//
|
|
7
|
-
/**
|
|
6
|
+
// A subpath, not the barrel: the catalog weighs hundreds of kilobytes and SDK clients do not need it.
|
|
7
|
+
/** Why the API refuses a voice name; `undefined` for a preset or a live catalog voice. */
|
|
8
8
|
export function catalogVoiceRefusal(voice, voices = VOICE_CATALOG.voices) {
|
|
9
9
|
if (isVoicePresetName(voice))
|
|
10
10
|
return undefined;
|
|
@@ -19,8 +19,8 @@ export function catalogVoiceRefusal(voice, voices = VOICE_CATALOG.voices) {
|
|
|
19
19
|
return undefined;
|
|
20
20
|
}
|
|
21
21
|
export const serverUgcInput = serverUgcInputWith((voice) => catalogVoiceRefusal(voice));
|
|
22
|
-
/**
|
|
23
|
-
/**
|
|
22
|
+
/** Voice gender by name: our fact for a preset, the vendor label for a catalog voice. */
|
|
23
|
+
/** A raw `voice_id` has no gender, so `undefined`, not a guess. */
|
|
24
24
|
export function voiceGenderOf(voice, voices = VOICE_CATALOG.voices) {
|
|
25
25
|
if (isVoicePresetName(voice))
|
|
26
26
|
return VOICE_PRESETS[voice].gender;
|
|
@@ -28,8 +28,8 @@ export function voiceGenderOf(voice, voices = VOICE_CATALOG.voices) {
|
|
|
28
28
|
const label = normalizeVoiceLabel(entry?.gender_raw);
|
|
29
29
|
return label === "female" || label === "male" ? label : undefined;
|
|
30
30
|
}
|
|
31
|
-
/**
|
|
32
|
-
/**
|
|
31
|
+
/** Warns only where MISSING verification means something: for `eleven_v3` no voice */
|
|
32
|
+
/** has it at all. */
|
|
33
33
|
export function buildVoiceVerificationWarnings(input, gender, voices = VOICE_CATALOG.voices) {
|
|
34
34
|
const slug = input.voice;
|
|
35
35
|
if (slug === undefined || isVoicePresetName(slug))
|
|
@@ -1 +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,mBAAmB,EAAyB,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,aAAa,EAAmB,MAAM,aAAa,CAAC;AAEjG,
|
|
1
|
+
{"version":3,"file":"voice-admission.js","sourceRoot":"","sources":["../src/voice-admission.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
/**
|
|
1
|
+
/** The generated files, parsed by their schemas. Not in the barrel: SDK clients do not need */
|
|
2
|
+
/** the catalog. */
|
|
3
3
|
export declare const VOICE_CATALOG: {
|
|
4
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
5
|
female?: number | undefined;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import catalogJson from "./voice-catalog.generated.json" with { type: "json" };
|
|
2
2
|
import modelsJson from "./tts-model-languages.generated.json" with { type: "json" };
|
|
3
3
|
import { ttsModelLanguagesFile, voiceCatalogFile } from "./voice-catalog.js";
|
|
4
|
-
/**
|
|
5
|
-
/**
|
|
4
|
+
/** The generated files, parsed by their schemas. Not in the barrel: SDK clients do not need */
|
|
5
|
+
/** the catalog. */
|
|
6
6
|
export const VOICE_CATALOG = voiceCatalogFile.parse(catalogJson);
|
|
7
7
|
export const TTS_MODEL_LANGUAGES = ttsModelLanguagesFile.parse(modelsJson);
|
|
8
8
|
//# sourceMappingURL=voice-catalog-data.js.map
|
|
@@ -1 +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
|
|
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,+FAA+F;AAC/F,mBAAmB;AACnB,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"}
|
package/dist/voice-catalog.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
/**
|
|
2
|
+
/** Voice catalog languages: the ONLY list; everything else is derived from it. */
|
|
3
3
|
export declare const CATALOG_LANGUAGES: readonly ["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"];
|
|
4
4
|
export type CatalogLanguage = (typeof CATALOG_LANGUAGES)[number];
|
|
5
5
|
export declare const CATALOG_GENDERS: readonly ["female", "male"];
|
|
6
6
|
export type CatalogGender = (typeof CATALOG_GENDERS)[number];
|
|
7
7
|
export declare const CATALOG_VOICES_PER_GENDER = 5;
|
|
8
|
-
/**
|
|
8
|
+
/** An entry of the generated file; not to be confused with `voiceCatalogEntry`, the `/v1/voices` response. */
|
|
9
9
|
export declare const catalogFileVoice: z.ZodObject<{
|
|
10
10
|
slug: z.ZodString;
|
|
11
11
|
language: z.ZodEnum<{
|
|
@@ -171,8 +171,8 @@ 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
|
-
/**
|
|
175
|
-
/** `
|
|
174
|
+
/** `/v1/voices` filters: request parsing, the MCP `inputSchema` and SDK parameters. `age` and */
|
|
175
|
+
/** `use_case` labels come from catalog data, so the server knows their allowed set. */
|
|
176
176
|
export declare const voicesQueryShape: {
|
|
177
177
|
language: z.ZodOptional<z.ZodEnum<{
|
|
178
178
|
bg: "bg";
|
|
@@ -267,5 +267,5 @@ export declare const voicesQuery: z.ZodObject<{
|
|
|
267
267
|
}, z.core.$strip>;
|
|
268
268
|
export type VoicesQuery = z.infer<typeof voicesQuery>;
|
|
269
269
|
export declare const VOICES_QUERY_FIELDS: (keyof VoicesQuery)[];
|
|
270
|
-
/**
|
|
270
|
+
/** Label normalization on read: `middle-aged` → `middle_aged`, empty → no label. */
|
|
271
271
|
export declare function normalizeVoiceLabel(raw: string | null | undefined): string | undefined;
|