@clipwright/core 0.9.0 → 0.11.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/dist/contract-dispositions.d.ts +3 -2
- package/dist/contract-dispositions.js +1 -1
- package/dist/endpoints.d.ts +15 -0
- package/dist/endpoints.js +18 -0
- package/dist/endpoints.js.map +1 -0
- package/dist/errors.d.ts +14 -0
- package/dist/errors.js +20 -1
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/public-endpoints.d.ts +2 -0
- package/dist/public-endpoints.js +2 -0
- package/dist/public-endpoints.js.map +1 -1
- package/dist/run-preflight.d.ts +48 -0
- package/dist/run-preflight.js +45 -0
- package/dist/run-preflight.js.map +1 -0
- package/dist/run-static-warnings.d.ts +5 -3
- package/dist/run-static-warnings.js +60 -9
- package/dist/run-static-warnings.js.map +1 -1
- package/dist/skills.d.ts +60 -2
- package/dist/skills.js +10 -4
- package/dist/skills.js.map +1 -1
- package/dist/voices.d.ts +28 -10
- package/dist/voices.js +89 -14
- package/dist/voices.js.map +1 -1
- package/package.json +1 -1
|
@@ -8,7 +8,7 @@ import { makeUgcInputShape } from "./skills.js";
|
|
|
8
8
|
* обязано её двигать; до этого пересмотра версии не было вообще, поэтому первое
|
|
9
9
|
* её значение совпадает с месяцем самого пересмотра.
|
|
10
10
|
*/
|
|
11
|
-
export declare const CONTRACT_VERSION = "2026-
|
|
11
|
+
export declare const CONTRACT_VERSION = "2026-09";
|
|
12
12
|
export declare const CONTRACT_VERSION_HEADER = "X-Clipwright-Contract";
|
|
13
13
|
/**
|
|
14
14
|
* Решение по одному полю входа.
|
|
@@ -268,7 +268,8 @@ export declare const offeredUgcInput: z.ZodObject<{
|
|
|
268
268
|
}>>;
|
|
269
269
|
voice_id: z.ZodOptional<z.ZodString>;
|
|
270
270
|
tts_model: z.ZodOptional<z.ZodEnum<{
|
|
271
|
-
|
|
271
|
+
eleven_flash_v2_5: "eleven_flash_v2_5";
|
|
272
|
+
eleven_turbo_v2_5: "eleven_turbo_v2_5";
|
|
272
273
|
eleven_v3: "eleven_v3";
|
|
273
274
|
}>>;
|
|
274
275
|
disclosure_overlay: z.ZodOptional<z.ZodBoolean>;
|
|
@@ -8,7 +8,7 @@ import { makeUgcInputShape } from "./skills.js";
|
|
|
8
8
|
* обязано её двигать; до этого пересмотра версии не было вообще, поэтому первое
|
|
9
9
|
* её значение совпадает с месяцем самого пересмотра.
|
|
10
10
|
*/
|
|
11
|
-
export const CONTRACT_VERSION = "2026-
|
|
11
|
+
export const CONTRACT_VERSION = "2026-09";
|
|
12
12
|
export const CONTRACT_VERSION_HEADER = "X-Clipwright-Contract";
|
|
13
13
|
/**
|
|
14
14
|
* Таблица решений. `as const satisfies Record<…>` даёт СРАЗУ ДВА свойства:
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** Маршруты API (clipwright#135): контрактный тест `apps/api` сверяет их с `app.routes`, */
|
|
2
|
+
/** квикстарт печатает отсюда список «что стоит денег». */
|
|
3
|
+
export interface ApiEndpoint {
|
|
4
|
+
method: "GET" | "POST";
|
|
5
|
+
/** Путь в записи Hono: параметр — `:id`. */
|
|
6
|
+
path: string;
|
|
7
|
+
/** Может ли вызов списать кредиты. */
|
|
8
|
+
billed: boolean;
|
|
9
|
+
/** Называет ли его квикстарт. */
|
|
10
|
+
onQuickstart: boolean;
|
|
11
|
+
}
|
|
12
|
+
export declare const API_ENDPOINTS: readonly ApiEndpoint[];
|
|
13
|
+
/** `GET /v1/runs/{id}` — запись для людей: параметр в фигурных скобках. */
|
|
14
|
+
export declare function endpointLabel(endpoint: ApiEndpoint): string;
|
|
15
|
+
export declare const QUICKSTART_ENDPOINTS: readonly ApiEndpoint[];
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export const API_ENDPOINTS = [
|
|
2
|
+
{ method: "GET", path: "/health", billed: false, onQuickstart: true },
|
|
3
|
+
{ method: "GET", path: "/v1/voices", billed: false, onQuickstart: true },
|
|
4
|
+
{ method: "GET", path: "/v1/account", billed: false, onQuickstart: true },
|
|
5
|
+
{ method: "POST", path: "/v1/skills/make_ugc/quote", billed: false, onQuickstart: true },
|
|
6
|
+
{ method: "GET", path: "/v1/runs/:id", billed: false, onQuickstart: true },
|
|
7
|
+
{ method: "POST", path: "/v1/skills/make_ugc/run", billed: true, onQuickstart: true },
|
|
8
|
+
{ method: "GET", path: "/v1/public/skills", billed: false, onQuickstart: false },
|
|
9
|
+
{ method: "GET", path: "/v1/actors", billed: false, onQuickstart: false },
|
|
10
|
+
{ method: "POST", path: "/v1/uploads", billed: false, onQuickstart: false },
|
|
11
|
+
{ method: "GET", path: "/internal/portfolio-metrics", billed: false, onQuickstart: false },
|
|
12
|
+
];
|
|
13
|
+
/** `GET /v1/runs/{id}` — запись для людей: параметр в фигурных скобках. */
|
|
14
|
+
export function endpointLabel(endpoint) {
|
|
15
|
+
return `${endpoint.method} ${endpoint.path.replace(/:(\w+)/g, "{$1}")}`;
|
|
16
|
+
}
|
|
17
|
+
export const QUICKSTART_ENDPOINTS = API_ENDPOINTS.filter((endpoint) => endpoint.onQuickstart);
|
|
18
|
+
//# sourceMappingURL=endpoints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"endpoints.js","sourceRoot":"","sources":["../src/endpoints.ts"],"names":[],"mappings":"AAYA,MAAM,CAAC,MAAM,aAAa,GAA2B;IACnD,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE;IACrE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE;IACxE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE;IACzE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,2BAA2B,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE;IACxF,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE;IAC1E,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,yBAAyB,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE;IACrF,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE;IAChF,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE;IACzE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE;IAC3E,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,6BAA6B,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE;CAC3F,CAAC;AAEF,2EAA2E;AAC3E,MAAM,UAAU,aAAa,CAAC,QAAqB;IACjD,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC;AAC1E,CAAC;AAED,MAAM,CAAC,MAAM,oBAAoB,GAA2B,aAAa,CAAC,MAAM,CAC9E,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,YAAY,CACpC,CAAC"}
|
package/dist/errors.d.ts
CHANGED
|
@@ -110,6 +110,20 @@ export declare function insufficientCreditsBody(args: {
|
|
|
110
110
|
balanceCredits: number;
|
|
111
111
|
requiredCredits: number;
|
|
112
112
|
}): InsufficientCreditsError;
|
|
113
|
+
/** Одна фраза «нужно / есть / не хватает» на отказ 402 и на warning `quote`. */
|
|
114
|
+
export declare function creditsNeededSentence(args: {
|
|
115
|
+
balanceCredits: number;
|
|
116
|
+
requiredCredits: number;
|
|
117
|
+
}): string;
|
|
118
|
+
/** Warnings `quote`: `make_ugc` с тем же входом получит этот отказ (clipwright#134). */
|
|
119
|
+
export declare function insufficientCreditsWarning(args: {
|
|
120
|
+
balanceCredits: number;
|
|
121
|
+
requiredCredits: number;
|
|
122
|
+
}): string;
|
|
123
|
+
export declare function debtOutstandingWarning(args: {
|
|
124
|
+
debtCredits: number;
|
|
125
|
+
}): string;
|
|
126
|
+
export declare function accountNotAdmittedWarning(): string;
|
|
113
127
|
/** Сборка тела «не допущен в бету». См. довод о формулировке выше. */
|
|
114
128
|
export declare function accountNotAdmittedBody(): AccountNotAdmittedError;
|
|
115
129
|
/** Сборка тела «висит долг». См. довод о формулировке выше. */
|
package/dist/errors.js
CHANGED
|
@@ -111,13 +111,32 @@ export function insufficientCreditsBody(args) {
|
|
|
111
111
|
return insufficientCreditsError.parse({
|
|
112
112
|
error: {
|
|
113
113
|
code: "insufficient_credits",
|
|
114
|
-
message:
|
|
114
|
+
message: `${creditsNeededSentence(args)} ` +
|
|
115
115
|
"Top up the balance and retry; nothing was charged and no run was created.",
|
|
116
116
|
balance_credits: args.balanceCredits,
|
|
117
117
|
required_credits: args.requiredCredits,
|
|
118
118
|
},
|
|
119
119
|
});
|
|
120
120
|
}
|
|
121
|
+
/** Одна фраза «нужно / есть / не хватает» на отказ 402 и на warning `quote`. */
|
|
122
|
+
export function creditsNeededSentence(args) {
|
|
123
|
+
const short = args.requiredCredits - args.balanceCredits;
|
|
124
|
+
return (`This run needs ${args.requiredCredits} credits, the account has ${args.balanceCredits}` +
|
|
125
|
+
(short > 0 ? ` (${short} short).` : "."));
|
|
126
|
+
}
|
|
127
|
+
/** Warnings `quote`: `make_ugc` с тем же входом получит этот отказ (clipwright#134). */
|
|
128
|
+
export function insufficientCreditsWarning(args) {
|
|
129
|
+
return (`${creditsNeededSentence(args)} make_ugc will be refused with insufficient_credits ` +
|
|
130
|
+
"until the account buys credits.");
|
|
131
|
+
}
|
|
132
|
+
export function debtOutstandingWarning(args) {
|
|
133
|
+
return (`An outstanding debt of ${args.debtCredits} credits blocks new paid runs; make_ugc will ` +
|
|
134
|
+
"be refused with debt_outstanding until the account buys credits to clear it.");
|
|
135
|
+
}
|
|
136
|
+
export function accountNotAdmittedWarning() {
|
|
137
|
+
return ("This account is not admitted to the beta; make_ugc will be refused with " +
|
|
138
|
+
"account_not_admitted, and buying credits does not change that.");
|
|
139
|
+
}
|
|
121
140
|
/** Сборка тела «не допущен в бету». См. довод о формулировке выше. */
|
|
122
141
|
export function accountNotAdmittedBody() {
|
|
123
142
|
return accountNotAdmittedError.parse({
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,8EAA8E;AAC9E,kEAAkE;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD;;;;;;;;;;;;;;;;;;;GAmBG;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACvB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;KAC3B,CAAC;CACH,CAAC,CAAC;AAGH,8DAA8D;AAC9D,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC;QACvC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1B,qDAAqD;QACrD,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;QAC/C,oEAAoE;QACpE,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;KAC9C,CAAC;CACH,CAAC,CAAC;AAGH;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC;QACnC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;KAC1C,CAAC;CACH,CAAC,CAAC;AAGH;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC;QACvC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;KAC3B,CAAC;CACH,CAAC,CAAC;AAGH;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAGvC;IACC,OAAO,wBAAwB,CAAC,KAAK,CAAC;QACpC,KAAK,EAAE;YACL,IAAI,EAAE,sBAAsB;YAC5B,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -16,4 +16,6 @@ export * from "./render-backend.js";
|
|
|
16
16
|
export * from "./tts-backend.js";
|
|
17
17
|
export * from "./vendor-response.js";
|
|
18
18
|
export * from "./public-endpoints.js";
|
|
19
|
+
export * from "./endpoints.js";
|
|
19
20
|
export * from "./run-static-warnings.js";
|
|
21
|
+
export * from "./run-preflight.js";
|
package/dist/index.js
CHANGED
|
@@ -36,7 +36,11 @@ export * from "./vendor-response.js";
|
|
|
36
36
|
// Публичные адреса и имена пакетов: их печатают SDK, документация и лендинг,
|
|
37
37
|
// поэтому расхождение видит посетитель, а не тест (US-614).
|
|
38
38
|
export * from "./public-endpoints.js";
|
|
39
|
+
// Маршруты API и их цена: сверяются с `app.routes`, печатаются квикстартом (clipwright#135).
|
|
40
|
+
export * from "./endpoints.js";
|
|
39
41
|
// Статические warnings рана выводятся из сохранённого входа — один ответ у API
|
|
40
42
|
// и у кабинета на любом состоянии рана (clipwright#64).
|
|
41
43
|
export * from "./run-static-warnings.js";
|
|
44
|
+
// Невыводимые исходы префлайта: форма долговечного факта (clipwright#146).
|
|
45
|
+
export * from "./run-preflight.js";
|
|
42
46
|
//# sourceMappingURL=index.js.map
|
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,+EAA+E;AAC/E,wDAAwD;AACxD,cAAc,0BAA0B,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,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"}
|
|
@@ -9,6 +9,8 @@ export declare const PUBLIC_API_BASE_URL = "https://api.clipwright.io";
|
|
|
9
9
|
export declare const CLI_PACKAGE = "@clipwright/cli";
|
|
10
10
|
export declare const CLI_BIN = "clipwright";
|
|
11
11
|
export declare const MCP_PACKAGE = "@clipwright/mcp-server";
|
|
12
|
+
/** Мажор Node из `engines` клиентских пакетов; квикстарт называет его (clipwright#129). */
|
|
13
|
+
export declare const NODE_MIN_MAJOR = 20;
|
|
12
14
|
/** Адрес API ИЗ ОКРУЖЕНИЯ — только `https:`: по нему уходит `Authorization: Bearer */
|
|
13
15
|
/** cw_…`. Программный `baseUrl` встраивателя не трогаем — его выбирает автор кода. */
|
|
14
16
|
export declare function apiBaseUrlFromEnv(raw: string | undefined): string | undefined;
|
package/dist/public-endpoints.js
CHANGED
|
@@ -9,6 +9,8 @@ export const PUBLIC_API_BASE_URL = "https://api.clipwright.io";
|
|
|
9
9
|
export const CLI_PACKAGE = "@clipwright/cli";
|
|
10
10
|
export const CLI_BIN = "clipwright";
|
|
11
11
|
export const MCP_PACKAGE = "@clipwright/mcp-server";
|
|
12
|
+
/** Мажор Node из `engines` клиентских пакетов; квикстарт называет его (clipwright#129). */
|
|
13
|
+
export const NODE_MIN_MAJOR = 20;
|
|
12
14
|
/** Петлевые имена — единственное, чему разрешён `http:`: локальный API никуда не */
|
|
13
15
|
/** выходит, и требовать там сертификат значило бы запретить разработку. */
|
|
14
16
|
const LOOPBACK_HOSTS = new Set(["localhost", "127.0.0.1", "[::1]", "::1"]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public-endpoints.js","sourceRoot":"","sources":["../src/public-endpoints.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,2EAA2E;AAE3E,+EAA+E;AAC/E,MAAM,CAAC,MAAM,mBAAmB,GAAG,2BAA2B,CAAC;AAE/D;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,iBAAiB,CAAC;AAC7C,MAAM,CAAC,MAAM,OAAO,GAAG,YAAY,CAAC;AACpC,MAAM,CAAC,MAAM,WAAW,GAAG,wBAAwB,CAAC;AAEpD,oFAAoF;AACpF,2EAA2E;AAC3E,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AAE3E,sFAAsF;AACtF,sFAAsF;AACtF,MAAM,UAAU,iBAAiB,CAAC,GAAuB;IACvD,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IAEtD,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,oCAAoC,GAAG,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC;IAC1C,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAO,GAAG,CAAC;IAE7E,MAAM,IAAI,KAAK,CACb,gEAAgE,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,QAAQ,IAAI;QAC/F,yEAAyE,CAC5E,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"public-endpoints.js","sourceRoot":"","sources":["../src/public-endpoints.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,2EAA2E;AAE3E,+EAA+E;AAC/E,MAAM,CAAC,MAAM,mBAAmB,GAAG,2BAA2B,CAAC;AAE/D;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,iBAAiB,CAAC;AAC7C,MAAM,CAAC,MAAM,OAAO,GAAG,YAAY,CAAC;AACpC,MAAM,CAAC,MAAM,WAAW,GAAG,wBAAwB,CAAC;AAEpD,2FAA2F;AAC3F,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AAEjC,oFAAoF;AACpF,2EAA2E;AAC3E,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AAE3E,sFAAsF;AACtF,sFAAsF;AACtF,MAAM,UAAU,iBAAiB,CAAC,GAAuB;IACvD,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IAEtD,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,oCAAoC,GAAG,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC;IAC1C,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAO,GAAG,CAAC;IAE7E,MAAM,IAAI,KAAK,CACb,gEAAgE,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,QAAQ,IAAI;QAC/F,yEAAyE,CAC5E,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/** Проба источника кадра; `not_probed` — сети не было (нет `image`). */
|
|
3
|
+
export declare const aspectProbeFact: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
4
|
+
kind: z.ZodLiteral<"not_probed">;
|
|
5
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
6
|
+
kind: z.ZodLiteral<"failed">;
|
|
7
|
+
error_class: z.ZodString;
|
|
8
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
9
|
+
kind: z.ZodLiteral<"ok">;
|
|
10
|
+
width: z.ZodNumber;
|
|
11
|
+
height: z.ZodNumber;
|
|
12
|
+
}, z.core.$strip>], "kind">;
|
|
13
|
+
export type AspectProbeFact = z.infer<typeof aspectProbeFact>;
|
|
14
|
+
/** Префлайт СЫРОГО `voice_id`; пресет каталог не запрашивает (US-515). */
|
|
15
|
+
export declare const voicePreflightFact: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
16
|
+
kind: z.ZodLiteral<"not_probed">;
|
|
17
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
18
|
+
kind: z.ZodLiteral<"catalog_incomplete">;
|
|
19
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
20
|
+
kind: z.ZodLiteral<"verified">;
|
|
21
|
+
}, z.core.$strip>], "kind">;
|
|
22
|
+
export type VoicePreflightFact = z.infer<typeof voicePreflightFact>;
|
|
23
|
+
export declare const runPreflight: z.ZodObject<{
|
|
24
|
+
aspect: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
25
|
+
kind: z.ZodLiteral<"not_probed">;
|
|
26
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
27
|
+
kind: z.ZodLiteral<"failed">;
|
|
28
|
+
error_class: z.ZodString;
|
|
29
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
30
|
+
kind: z.ZodLiteral<"ok">;
|
|
31
|
+
width: z.ZodNumber;
|
|
32
|
+
height: z.ZodNumber;
|
|
33
|
+
}, z.core.$strip>], "kind">>;
|
|
34
|
+
voice: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
35
|
+
kind: z.ZodLiteral<"not_probed">;
|
|
36
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
37
|
+
kind: z.ZodLiteral<"catalog_incomplete">;
|
|
38
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
39
|
+
kind: z.ZodLiteral<"verified">;
|
|
40
|
+
}, z.core.$strip>], "kind">>;
|
|
41
|
+
}, z.core.$strip>;
|
|
42
|
+
export type RunPreflight = z.infer<typeof runPreflight>;
|
|
43
|
+
/** Имена семей — они же ключи слияния в `jsonb`. */
|
|
44
|
+
export type RunPreflightFamily = keyof RunPreflight;
|
|
45
|
+
export declare function sourceNotProbedWarning(errorClass: string): string;
|
|
46
|
+
/** Каталог голосов усечён — сырой `voice_id` подтвердить нечем. FAIL-OPEN. */
|
|
47
|
+
export declare const VOICE_CATALOG_INCOMPLETE_WARNING = "voice catalog incomplete \u2014 voice_id could not be verified";
|
|
48
|
+
export declare function parseRunPreflight(stored: unknown): RunPreflight;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
// ФАКТ ПРЕФЛАЙТА РАНА: невыводимое на чтении, потому что требует сети.
|
|
3
|
+
// Почему факт, а не готовая строка, — docs/18, Д41 и Д42.
|
|
4
|
+
/** Проба источника кадра; `not_probed` — сети не было (нет `image`). */
|
|
5
|
+
export const aspectProbeFact = z.discriminatedUnion("kind", [
|
|
6
|
+
z.object({ kind: z.literal("not_probed") }),
|
|
7
|
+
z.object({ kind: z.literal("failed"), error_class: z.string().min(1) }),
|
|
8
|
+
z.object({
|
|
9
|
+
kind: z.literal("ok"),
|
|
10
|
+
width: z.number().int().positive(),
|
|
11
|
+
height: z.number().int().positive(),
|
|
12
|
+
}),
|
|
13
|
+
]);
|
|
14
|
+
/** Префлайт СЫРОГО `voice_id`; пресет каталог не запрашивает (US-515). */
|
|
15
|
+
export const voicePreflightFact = z.discriminatedUnion("kind", [
|
|
16
|
+
z.object({ kind: z.literal("not_probed") }),
|
|
17
|
+
z.object({ kind: z.literal("catalog_incomplete") }),
|
|
18
|
+
z.object({ kind: z.literal("verified") }),
|
|
19
|
+
]);
|
|
20
|
+
// СЕМЬЯ БЕЗ КЛЮЧА ≠ `not_probed`: первое означает «не записано» — так выглядят
|
|
21
|
+
// раны до 0030; второе — записанное знание «пробы не было». Разбор — docs/18, Д42.
|
|
22
|
+
export const runPreflight = z.object({
|
|
23
|
+
aspect: aspectProbeFact.optional(),
|
|
24
|
+
voice: voicePreflightFact.optional(),
|
|
25
|
+
});
|
|
26
|
+
// Текст живёт рядом с фактом: его печатают оба конца — `quote` и читатель колонки.
|
|
27
|
+
export function sourceNotProbedWarning(errorClass) {
|
|
28
|
+
return `source could not be probed (${errorClass})`;
|
|
29
|
+
}
|
|
30
|
+
/** Каталог голосов усечён — сырой `voice_id` подтвердить нечем. FAIL-OPEN. */
|
|
31
|
+
export const VOICE_CATALOG_INCOMPLETE_WARNING = "voice catalog incomplete — voice_id could not be verified";
|
|
32
|
+
// СЕМЬИ РАЗБИРАЮТСЯ НЕЗАВИСИМО (довод `parseSettlementBasis`): порча одной не
|
|
33
|
+
// забирает исправную вторую. Нечитаемое значение даёт пустой набор фактов.
|
|
34
|
+
export function parseRunPreflight(stored) {
|
|
35
|
+
if (typeof stored !== "object" || stored === null)
|
|
36
|
+
return {};
|
|
37
|
+
const raw = stored;
|
|
38
|
+
const aspect = aspectProbeFact.safeParse(raw.aspect);
|
|
39
|
+
const voice = voicePreflightFact.safeParse(raw.voice);
|
|
40
|
+
return {
|
|
41
|
+
...(aspect.success ? { aspect: aspect.data } : {}),
|
|
42
|
+
...(voice.success ? { voice: voice.data } : {}),
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=run-preflight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-preflight.js","sourceRoot":"","sources":["../src/run-preflight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,uEAAuE;AACvE,0DAA0D;AAE1D,wEAAwE;AACxE,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IAC1D,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;IAC3C,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACvE,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;QACrB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;QAClC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;KACpC,CAAC;CACH,CAAC,CAAC;AAGH,0EAA0E;AAC1E,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IAC7D,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;IAC3C,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,CAAC;IACnD,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;CAC1C,CAAC,CAAC;AAGH,+EAA+E;AAC/E,mFAAmF;AACnF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,MAAM,EAAE,eAAe,CAAC,QAAQ,EAAE;IAClC,KAAK,EAAE,kBAAkB,CAAC,QAAQ,EAAE;CACrC,CAAC,CAAC;AAMH,mFAAmF;AACnF,MAAM,UAAU,sBAAsB,CAAC,UAAkB;IACvD,OAAO,+BAA+B,UAAU,GAAG,CAAC;AACtD,CAAC;AAED,8EAA8E;AAC9E,MAAM,CAAC,MAAM,gCAAgC,GAC3C,2DAA2D,CAAC;AAE9D,8EAA8E;AAC9E,2EAA2E;AAC3E,MAAM,UAAU,iBAAiB,CAAC,MAAe;IAC/C,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IAC7D,MAAM,GAAG,GAAG,MAAiC,CAAC;IAC9C,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,kBAAkB,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACtD,OAAO;QACL,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChD,CAAC;AACJ,CAAC"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { type RunPreflight } from "./run-preflight.js";
|
|
1
2
|
/** Сохранённый вход нечитаем: перечислить несоблюдённые поля нечем. */
|
|
2
3
|
export declare const UNREADABLE_RUN_INPUT_WARNING = "run input could not be read: parameters that are accepted but not honored cannot be listed for this run";
|
|
3
|
-
export declare function derivedRunWarnings(storedInput: unknown): string[];
|
|
4
|
-
/** Полный `warnings[]`
|
|
5
|
-
|
|
4
|
+
export declare function derivedRunWarnings(storedInput: unknown, preflight: RunPreflight): string[];
|
|
5
|
+
/** Полный `warnings[]` рана; порядок выводимого — как у `quote`. Третий аргумент */
|
|
6
|
+
/** ОБЯЗАТЕЛЕН И ЭТИМ СТОРОЖИТ: опциональный терял бы факт у нового читателя молча. */
|
|
7
|
+
export declare function composeRunWarnings(stored: unknown, storedInput: unknown, storedPreflight: unknown): string[];
|
|
@@ -1,20 +1,65 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { resolvedScript, storedUgcInput } from "./skills.js";
|
|
2
2
|
import { dispositionWarnings } from "./contract-dispositions.js";
|
|
3
|
-
import { buildVoiceWarnings } from "./voices.js";
|
|
3
|
+
import { buildSpeechModelWarnings, buildVoiceWarnings, TTS_MODELS } from "./voices.js";
|
|
4
|
+
import { resolveAspectRatio } from "./aspect.js";
|
|
5
|
+
import { parseRunPreflight, sourceNotProbedWarning, VOICE_CATALOG_INCOMPLETE_WARNING, } from "./run-preflight.js";
|
|
4
6
|
// Писатели хранят невыводимое, читатель выводит статику. Рационал — docs/18, Д41.
|
|
5
7
|
/** Сохранённый вход нечитаем: перечислить несоблюдённые поля нечем. */
|
|
6
8
|
export const UNREADABLE_RUN_INPUT_WARNING = "run input could not be read: parameters that are accepted but not honored cannot be listed for this run";
|
|
9
|
+
/** Что факт пробы даёт БЕЗ входа. `undefined` ниже — не дефолт формата: берём */
|
|
10
|
+
/** только `warnings`, а они у `source === null` от `requested` не зависят (кейс). */
|
|
11
|
+
function aspectWarningsWithoutInput(fact) {
|
|
12
|
+
if (fact?.kind !== "failed")
|
|
13
|
+
return [];
|
|
14
|
+
const resolution = resolveAspectRatio({ requested: undefined, source: null });
|
|
15
|
+
return [
|
|
16
|
+
sourceNotProbedWarning(fact.error_class),
|
|
17
|
+
...(resolution.kind === "resolved" ? resolution.warnings : []),
|
|
18
|
+
];
|
|
19
|
+
}
|
|
20
|
+
// ФОРМАТ ВЫВОДИТСЯ ИЗ ФАКТА ПРОБЫ ТЕМ ЖЕ РЕЗОЛВЕРОМ, ЧТО У `quote`
|
|
21
|
+
// (`decideAspect` → `resolveAspectRatio`), поэтому две поверхности не разойдутся.
|
|
22
|
+
function aspectFactWarnings(fact, input) {
|
|
23
|
+
if (fact === undefined || fact.kind === "not_probed")
|
|
24
|
+
return [];
|
|
25
|
+
// Провал зовёт ТУ ЖЕ функцию, что и путь без входа: равенство двух путей на этой
|
|
26
|
+
// ветке структурное, а не совпадение, которое разъедется при первой правке.
|
|
27
|
+
if (fact.kind === "failed")
|
|
28
|
+
return aspectWarningsWithoutInput(fact);
|
|
29
|
+
const source = { width: fact.width, height: fact.height, origin: "probed" };
|
|
30
|
+
const resolution = resolveAspectRatio({ requested: input.aspect_ratio, source });
|
|
31
|
+
// Отказ здесь недостижим: ран с конфликтом формата отбивается до вставки (400).
|
|
32
|
+
return resolution.kind === "resolved" ? resolution.warnings : [];
|
|
33
|
+
}
|
|
34
|
+
/** Префлайт голоса: строку восстанавливает читатель, каталог вендора ему недоступен. */
|
|
35
|
+
function voiceFactWarnings(fact) {
|
|
36
|
+
return fact?.kind === "catalog_incomplete" ? [VOICE_CATALOG_INCOMPLETE_WARNING] : [];
|
|
37
|
+
}
|
|
7
38
|
// Реестр диспозиций и языковой warning пресета. Почему без `voice_id` —
|
|
8
39
|
// docs/18, Д41.
|
|
9
|
-
export function derivedRunWarnings(storedInput) {
|
|
10
|
-
const parsed =
|
|
40
|
+
export function derivedRunWarnings(storedInput, preflight) {
|
|
41
|
+
const parsed = storedUgcInput.safeParse(storedInput);
|
|
11
42
|
if (!parsed.success) {
|
|
12
|
-
|
|
43
|
+
// НЕЧИТАЕМЫЙ ВХОД НЕ ОТМЕНЯЕТ ФАКТОВ. Мерка одна: выводится всё, что выводимо
|
|
44
|
+
// БЕЗ входа. У `ok` снап от запрошенного формата зависит — его здесь и нет.
|
|
45
|
+
return [
|
|
46
|
+
UNREADABLE_RUN_INPUT_WARNING,
|
|
47
|
+
...aspectWarningsWithoutInput(preflight.aspect),
|
|
48
|
+
...voiceFactWarnings(preflight.voice),
|
|
49
|
+
];
|
|
13
50
|
}
|
|
14
|
-
const
|
|
51
|
+
const { tts_model: storedModel, ...rest } = parsed.data;
|
|
52
|
+
const ttsModel = TTS_MODELS.find((model) => model === storedModel);
|
|
53
|
+
// Снятая модель (`eleven_multilingual_v2`) читается как умолчание: на нём о модели молчим.
|
|
54
|
+
const input = { ...rest, tts_model: ttsModel };
|
|
55
|
+
// ПОРЯДОК — ТОТ ЖЕ, ЧТО У `quote`: диспозиции, формат, голос. Иначе паритет
|
|
56
|
+
// двух поверхностей держался бы только составом списка, но не равенством.
|
|
15
57
|
return [
|
|
16
58
|
...dispositionWarnings(input),
|
|
59
|
+
...aspectFactWarnings(preflight.aspect, input),
|
|
17
60
|
...buildVoiceWarnings({ voice: input.voice, script: resolvedScript(input) }),
|
|
61
|
+
...buildSpeechModelWarnings({ ...input, script: resolvedScript(input) }),
|
|
62
|
+
...voiceFactWarnings(preflight.voice),
|
|
18
63
|
];
|
|
19
64
|
}
|
|
20
65
|
/** Строки колонки `warnings`; нечитаемое значение даёт пустой список. */
|
|
@@ -23,8 +68,14 @@ function storedStrings(stored) {
|
|
|
23
68
|
return [];
|
|
24
69
|
return stored.filter((item) => typeof item === "string");
|
|
25
70
|
}
|
|
26
|
-
/** Полный `warnings[]`
|
|
27
|
-
|
|
28
|
-
|
|
71
|
+
/** Полный `warnings[]` рана; порядок выводимого — как у `quote`. Третий аргумент */
|
|
72
|
+
/** ОБЯЗАТЕЛЕН И ЭТИМ СТОРОЖИТ: опциональный терял бы факт у нового читателя молча. */
|
|
73
|
+
export function composeRunWarnings(stored, storedInput, storedPreflight) {
|
|
74
|
+
return [
|
|
75
|
+
...new Set([
|
|
76
|
+
...derivedRunWarnings(storedInput, parseRunPreflight(storedPreflight)),
|
|
77
|
+
...storedStrings(stored),
|
|
78
|
+
]),
|
|
79
|
+
];
|
|
29
80
|
}
|
|
30
81
|
//# sourceMappingURL=run-static-warnings.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-static-warnings.js","sourceRoot":"","sources":["../src/run-static-warnings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"run-static-warnings.js","sourceRoot":"","sources":["../src/run-static-warnings.ts"],"names":[],"mappings":"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"}
|
package/dist/skills.d.ts
CHANGED
|
@@ -130,7 +130,8 @@ export declare const makeUgcInputShape: {
|
|
|
130
130
|
}>>;
|
|
131
131
|
readonly voice_id: z.ZodOptional<z.ZodString>;
|
|
132
132
|
readonly tts_model: z.ZodOptional<z.ZodEnum<{
|
|
133
|
-
|
|
133
|
+
eleven_flash_v2_5: "eleven_flash_v2_5";
|
|
134
|
+
eleven_turbo_v2_5: "eleven_turbo_v2_5";
|
|
134
135
|
eleven_v3: "eleven_v3";
|
|
135
136
|
}>>;
|
|
136
137
|
readonly webhook_url: z.ZodOptional<z.ZodString>;
|
|
@@ -216,7 +217,8 @@ export declare const makeUgcInput: z.ZodObject<{
|
|
|
216
217
|
}>>;
|
|
217
218
|
voice_id: z.ZodOptional<z.ZodString>;
|
|
218
219
|
tts_model: z.ZodOptional<z.ZodEnum<{
|
|
219
|
-
|
|
220
|
+
eleven_flash_v2_5: "eleven_flash_v2_5";
|
|
221
|
+
eleven_turbo_v2_5: "eleven_turbo_v2_5";
|
|
220
222
|
eleven_v3: "eleven_v3";
|
|
221
223
|
}>>;
|
|
222
224
|
webhook_url: z.ZodOptional<z.ZodString>;
|
|
@@ -227,6 +229,62 @@ export declare const makeUgcInput: z.ZodObject<{
|
|
|
227
229
|
white: "white";
|
|
228
230
|
}>>;
|
|
229
231
|
}, z.core.$strip>;
|
|
232
|
+
/** Сохранённый вход рана: правила допуска он уже прошёл, и смена модели или */
|
|
233
|
+
/** потолка не должна делать старый ран нечитаемым (#145). */
|
|
234
|
+
export declare const storedUgcInput: z.ZodObject<{
|
|
235
|
+
script: z.ZodOptional<z.ZodString>;
|
|
236
|
+
segments: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
237
|
+
kind: z.ZodEnum<{
|
|
238
|
+
actor: "actor";
|
|
239
|
+
media: "media";
|
|
240
|
+
}>;
|
|
241
|
+
script: z.ZodOptional<z.ZodString>;
|
|
242
|
+
media_url: z.ZodOptional<z.ZodString>;
|
|
243
|
+
}, z.core.$strip>>>;
|
|
244
|
+
person: z.ZodOptional<z.ZodString>;
|
|
245
|
+
actor_id: z.ZodOptional<z.ZodString>;
|
|
246
|
+
image: z.ZodOptional<z.ZodString>;
|
|
247
|
+
character: z.ZodOptional<z.ZodString>;
|
|
248
|
+
name: z.ZodOptional<z.ZodString>;
|
|
249
|
+
broll_url: z.ZodOptional<z.ZodString>;
|
|
250
|
+
captions: z.ZodDefault<z.ZodBoolean>;
|
|
251
|
+
caption_style: z.ZodDefault<z.ZodEnum<{
|
|
252
|
+
hormozi: "hormozi";
|
|
253
|
+
minimal: "minimal";
|
|
254
|
+
tiktok: "tiktok";
|
|
255
|
+
}>>;
|
|
256
|
+
look: z.ZodDefault<z.ZodEnum<{
|
|
257
|
+
commercial: "commercial";
|
|
258
|
+
natural: "natural";
|
|
259
|
+
raw_iphone: "raw_iphone";
|
|
260
|
+
}>>;
|
|
261
|
+
aspect_ratio: z.ZodOptional<z.ZodEnum<{
|
|
262
|
+
"16:9": "16:9";
|
|
263
|
+
"1:1": "1:1";
|
|
264
|
+
"9:16": "9:16";
|
|
265
|
+
}>>;
|
|
266
|
+
resolution: z.ZodOptional<z.ZodEnum<{
|
|
267
|
+
"1080p": "1080p";
|
|
268
|
+
"4k": "4k";
|
|
269
|
+
"720p": "720p";
|
|
270
|
+
}>>;
|
|
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
|
+
}>>;
|
|
278
|
+
voice_id: z.ZodOptional<z.ZodString>;
|
|
279
|
+
webhook_url: z.ZodOptional<z.ZodString>;
|
|
280
|
+
disclosure_overlay: z.ZodOptional<z.ZodBoolean>;
|
|
281
|
+
background: z.ZodOptional<z.ZodEnum<{
|
|
282
|
+
blur: "blur";
|
|
283
|
+
contain: "contain";
|
|
284
|
+
white: "white";
|
|
285
|
+
}>>;
|
|
286
|
+
tts_model: z.ZodOptional<z.ZodString>;
|
|
287
|
+
}, z.core.$strip>;
|
|
230
288
|
/** Минимум, из которого выводится произносимый текст: сам скрипт или сегменты. */
|
|
231
289
|
export interface SpokenTextInput {
|
|
232
290
|
script?: string | undefined;
|
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, 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, VOICE_ID_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
|
/**
|
|
@@ -103,7 +103,8 @@ export const makeUgcInputShape = {
|
|
|
103
103
|
.min(1)
|
|
104
104
|
.max(MAX_SCRIPT_CHARS)
|
|
105
105
|
.optional()
|
|
106
|
-
.describe(`required unless \`segments\` is provided; \`segments\` is currently rejected. ${SCRIPT_LENGTH_DESCRIPTION}`
|
|
106
|
+
.describe(`required unless \`segments\` is provided; \`segments\` is currently rejected. ${SCRIPT_LENGTH_DESCRIPTION} ` +
|
|
107
|
+
STRESS_MARKING_DESCRIPTION),
|
|
107
108
|
segments: z.array(ugcSegment).min(1).max(MAX_SEGMENTS).optional(),
|
|
108
109
|
person: z.string().min(1).max(500).optional(),
|
|
109
110
|
actor_id: actorId.optional().describe("Saved Clipwright actor ID from list_actors. Choose actor_id, image, or person; do not combine them."),
|
|
@@ -166,8 +167,10 @@ export const makeUgcInputShape = {
|
|
|
166
167
|
.enum(TTS_MODELS)
|
|
167
168
|
.optional()
|
|
168
169
|
.describe(`Speech model: ${TTS_MODELS.join(" | ")}. Omitted means the model of the chosen preset ` +
|
|
169
|
-
"(list_voices shows it;
|
|
170
|
-
"
|
|
170
|
+
"(list_voices shows it; every preset speaks eleven_v3) or eleven_v3 for a raw voice_id. " +
|
|
171
|
+
"eleven_v3 is the most expressive and the only one that reads stress marks; " +
|
|
172
|
+
"eleven_flash_v2_5 and eleven_turbo_v2_5 are cheaper alternatives for languages other than " +
|
|
173
|
+
"Russian. " + SCRIPT_LENGTH_DESCRIPTION),
|
|
171
174
|
webhook_url: z.string().url().max(MAX_URL_LENGTH).optional(),
|
|
172
175
|
/**
|
|
173
176
|
* Видимая плашка «сделано ИИ» поверх кадра — OPT-IN, а не обязательная.
|
|
@@ -252,6 +255,9 @@ export const makeUgcInput = z
|
|
|
252
255
|
.refine((v) => v.segments !== undefined || countWords(v.script ?? "") >= 1, {
|
|
253
256
|
message: "script has 0 speakable words",
|
|
254
257
|
});
|
|
258
|
+
/** Сохранённый вход рана: правила допуска он уже прошёл, и смена модели или */
|
|
259
|
+
/** потолка не должна делать старый ран нечитаемым (#145). */
|
|
260
|
+
export const storedUgcInput = z.object({ ...makeUgcInputShape, tts_model: z.string().optional() });
|
|
255
261
|
/** Склейка произносимого текста без проверок — общая база для гейтов и хелпера. */
|
|
256
262
|
function spokenTextOf(input) {
|
|
257
263
|
if (input.script !== undefined)
|
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,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,yBAAyB,EACzB,mBAAmB,EACnB,UAAU,EACV,gBAAgB,EAChB,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,mFAAmF;AACnF,+EAA+E;AAC/E,MAAM,CAAC,MAAM,oBAAoB,GAC/B,2HAA2H;IAC3H,0FAA0F;IAC1F,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;CAC3D,CAAC,CAAC;AAGH,+EAA+E;AAC/E,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AACpC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC;AAE9B,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,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,gBAAgB,CAAC;SACrB,QAAQ,EAAE;SACV,QAAQ,CACP,iFAAiF,yBAAyB,
|
|
1
|
+
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"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"}
|
package/dist/voices.d.ts
CHANGED
|
@@ -1,14 +1,23 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import type { Gender } from "./default-actor.js";
|
|
3
|
-
/** Модели синтеза ElevenLabs, которые контракт разрешает назвать (clipwright#101). */
|
|
4
|
-
|
|
3
|
+
/** Модели синтеза ElevenLabs, которые контракт разрешает назвать (clipwright#101, #145). */
|
|
4
|
+
/** `multilingual_v2` снята: по замеру #145 она не отвечает ни на один приём ударения. */
|
|
5
|
+
export declare const TTS_MODELS: readonly ["eleven_v3", "eleven_flash_v2_5", "eleven_turbo_v2_5"];
|
|
5
6
|
export type TtsModelId = (typeof TTS_MODELS)[number];
|
|
6
7
|
export declare const DEFAULT_TTS_MODEL: TtsModelId;
|
|
7
|
-
/**
|
|
8
|
+
/** У v3 потолок вендорский. У 2.5 вендор даёт 40 000; 10 000 — наш потолок длины рана. */
|
|
8
9
|
export declare const TTS_MODEL_CHAR_CAP: Readonly<Record<TtsModelId, number>>;
|
|
10
|
+
/** Знак ударения U+0301 читает только v3; flash тем же знаком ошибается втрое чаще (#145). */
|
|
11
|
+
export declare const STRESS_MARK: string;
|
|
12
|
+
export declare const STRESS_MARK_MODELS: ReadonlySet<TtsModelId>;
|
|
13
|
+
/** «потОм» → «пото́м». Заглавная в начале слова — обычная заглавная; знак не удваивается. */
|
|
14
|
+
export declare function stressMarksFromCapitals(text: string): string;
|
|
15
|
+
/** Текст, который уходит вендору: разметка ударения — только для модели, которая её читает. */
|
|
16
|
+
export declare function speechTextFor(text: string, modelId: TtsModelId): string;
|
|
9
17
|
export declare const MAX_SCRIPT_CHARS: number;
|
|
10
18
|
export declare const SCRIPT_LENGTH_DESCRIPTION: string;
|
|
11
|
-
|
|
19
|
+
export declare const STRESS_MARKING_DESCRIPTION: string;
|
|
20
|
+
/** Длина считается по тексту, который уйдёт вендору, — со знаками ударения. */
|
|
12
21
|
export declare function ttsScriptLimitError(text: string, modelId: string): string | undefined;
|
|
13
22
|
/** Каталог голосовых пресетов — НАШИ имена и метадата, БЕЗ вендорских id: имена */
|
|
14
23
|
/** порождают `tools/list` и типы SDK, id живут только в адаптере воркера. */
|
|
@@ -38,25 +47,25 @@ export declare const VOICE_PRESETS: {
|
|
|
38
47
|
readonly language: "en";
|
|
39
48
|
readonly gender: "female";
|
|
40
49
|
readonly description: "Soft, natural female voice (English)";
|
|
41
|
-
readonly model: "
|
|
50
|
+
readonly model: "eleven_v3";
|
|
42
51
|
};
|
|
43
52
|
readonly george: {
|
|
44
53
|
readonly language: "en";
|
|
45
54
|
readonly gender: "male";
|
|
46
55
|
readonly description: "Warm British storyteller, narrative pacing (English)";
|
|
47
|
-
readonly model: "
|
|
56
|
+
readonly model: "eleven_v3";
|
|
48
57
|
};
|
|
49
58
|
readonly eric: {
|
|
50
59
|
readonly language: "en";
|
|
51
60
|
readonly gender: "male";
|
|
52
61
|
readonly description: "Smooth American, conversational tone (English)";
|
|
53
|
-
readonly model: "
|
|
62
|
+
readonly model: "eleven_v3";
|
|
54
63
|
};
|
|
55
64
|
readonly daria_ru_female: {
|
|
56
65
|
readonly language: "ru";
|
|
57
66
|
readonly gender: "female";
|
|
58
67
|
readonly description: "Женский повествовательный голос (русский)";
|
|
59
|
-
readonly model: "
|
|
68
|
+
readonly model: "eleven_v3";
|
|
60
69
|
};
|
|
61
70
|
};
|
|
62
71
|
/**
|
|
@@ -82,7 +91,8 @@ export declare const voiceCatalogEntry: z.ZodObject<{
|
|
|
82
91
|
}>>;
|
|
83
92
|
description: z.ZodString;
|
|
84
93
|
model: z.ZodEnum<{
|
|
85
|
-
|
|
94
|
+
eleven_flash_v2_5: "eleven_flash_v2_5";
|
|
95
|
+
eleven_turbo_v2_5: "eleven_turbo_v2_5";
|
|
86
96
|
eleven_v3: "eleven_v3";
|
|
87
97
|
}>;
|
|
88
98
|
preview_url: z.ZodOptional<z.ZodURL>;
|
|
@@ -105,7 +115,8 @@ export declare const voicesResponse: z.ZodObject<{
|
|
|
105
115
|
}>>;
|
|
106
116
|
description: z.ZodString;
|
|
107
117
|
model: z.ZodEnum<{
|
|
108
|
-
|
|
118
|
+
eleven_flash_v2_5: "eleven_flash_v2_5";
|
|
119
|
+
eleven_turbo_v2_5: "eleven_turbo_v2_5";
|
|
109
120
|
eleven_v3: "eleven_v3";
|
|
110
121
|
}>;
|
|
111
122
|
preview_url: z.ZodOptional<z.ZodURL>;
|
|
@@ -221,3 +232,10 @@ export declare function buildVoiceWarnings(input: {
|
|
|
221
232
|
voice_id?: string | undefined;
|
|
222
233
|
script: string;
|
|
223
234
|
}): string[];
|
|
235
|
+
/** Модель, не читающая ударения, на тексте, где они важны. На умолчании (v3) молчит всегда. */
|
|
236
|
+
export declare function buildSpeechModelWarnings(input: {
|
|
237
|
+
voice?: VoicePresetName | undefined;
|
|
238
|
+
voice_id?: string | undefined;
|
|
239
|
+
tts_model?: TtsModelId | undefined;
|
|
240
|
+
script: string;
|
|
241
|
+
}): string[];
|
package/dist/voices.js
CHANGED
|
@@ -1,24 +1,77 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
/** Модели синтеза ElevenLabs, которые контракт разрешает назвать (clipwright#101). */
|
|
3
|
-
|
|
4
|
-
export const
|
|
5
|
-
|
|
2
|
+
/** Модели синтеза ElevenLabs, которые контракт разрешает назвать (clipwright#101, #145). */
|
|
3
|
+
/** `multilingual_v2` снята: по замеру #145 она не отвечает ни на один приём ударения. */
|
|
4
|
+
export const TTS_MODELS = ["eleven_v3", "eleven_flash_v2_5", "eleven_turbo_v2_5"];
|
|
5
|
+
export const DEFAULT_TTS_MODEL = "eleven_v3";
|
|
6
|
+
/** У v3 потолок вендорский. У 2.5 вендор даёт 40 000; 10 000 — наш потолок длины рана. */
|
|
6
7
|
export const TTS_MODEL_CHAR_CAP = {
|
|
7
|
-
eleven_multilingual_v2: 10_000,
|
|
8
8
|
eleven_v3: 5_000,
|
|
9
|
+
eleven_flash_v2_5: 10_000,
|
|
10
|
+
eleven_turbo_v2_5: 10_000,
|
|
9
11
|
};
|
|
12
|
+
/** Знак ударения U+0301 читает только v3; flash тем же знаком ошибается втрое чаще (#145). */
|
|
13
|
+
export const STRESS_MARK = String.fromCharCode(0x0301);
|
|
14
|
+
export const STRESS_MARK_MODELS = new Set(["eleven_v3"]);
|
|
15
|
+
const CYRILLIC_WORD = new RegExp(`[Ѐ-ӿ${STRESS_MARK}]+`, "g");
|
|
16
|
+
const CYRILLIC_STRESS_MARK = new RegExp(`[Ѐ-ӿ]${STRESS_MARK}`);
|
|
17
|
+
const CYRILLIC_LOWERCASE = /[а-џ]/;
|
|
18
|
+
const CYRILLIC_UPPERCASE = /[Ѐ-Я]/;
|
|
19
|
+
const CYRILLIC_UPPER_VOWELS = "АЕЁИОУЫЭЮЯ";
|
|
20
|
+
/** Позиция ударной заглавной: ровно одна заглавная после первой буквы, и она гласная. */
|
|
21
|
+
/** Вторая заглавная или согласная — аббревиатура («ВУЗы», «СУПЕРцена»), не ударение. */
|
|
22
|
+
function stressCapitalIndex(word) {
|
|
23
|
+
if (!CYRILLIC_LOWERCASE.test(word))
|
|
24
|
+
return -1;
|
|
25
|
+
let found = -1;
|
|
26
|
+
for (let i = 1; i < word.length; i += 1) {
|
|
27
|
+
const ch = word[i];
|
|
28
|
+
if (!CYRILLIC_UPPERCASE.test(ch))
|
|
29
|
+
continue;
|
|
30
|
+
if (found !== -1 || !CYRILLIC_UPPER_VOWELS.includes(ch))
|
|
31
|
+
return -1;
|
|
32
|
+
found = i;
|
|
33
|
+
}
|
|
34
|
+
return found;
|
|
35
|
+
}
|
|
36
|
+
/** «потОм» → «пото́м». Заглавная в начале слова — обычная заглавная; знак не удваивается. */
|
|
37
|
+
export function stressMarksFromCapitals(text) {
|
|
38
|
+
return text.replace(CYRILLIC_WORD, (word) => {
|
|
39
|
+
const i = stressCapitalIndex(word);
|
|
40
|
+
if (i === -1)
|
|
41
|
+
return word;
|
|
42
|
+
const vowel = word[i];
|
|
43
|
+
const mark = vowel === "Ё" || word[i + 1] === STRESS_MARK ? "" : STRESS_MARK;
|
|
44
|
+
return word.slice(0, i) + vowel.toLowerCase() + mark + word.slice(i + 1);
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
/** Текст, который уходит вендору: разметка ударения — только для модели, которая её читает. */
|
|
48
|
+
export function speechTextFor(text, modelId) {
|
|
49
|
+
return STRESS_MARK_MODELS.has(modelId) ? stressMarksFromCapitals(text) : text;
|
|
50
|
+
}
|
|
10
51
|
export const MAX_SCRIPT_CHARS = Math.max(...Object.values(TTS_MODEL_CHAR_CAP));
|
|
11
52
|
export const SCRIPT_LENGTH_DESCRIPTION = `Script limits by speech model: ${TTS_MODELS.map((model) => `${model}: ${TTS_MODEL_CHAR_CAP[model]} characters`).join("; ")}. ` +
|
|
12
|
-
"Count includes spaces and
|
|
53
|
+
"Count includes spaces, audio tags and stress marks; emoji may count as two characters. " +
|
|
13
54
|
"There is no word-count limit. Duration and price are estimates until measured.";
|
|
14
|
-
|
|
55
|
+
export const STRESS_MARKING_DESCRIPTION = "Russian stress: write the stressed vowel as a capital inside a lowercase word (\"потОм\", \"зАмок\") " +
|
|
56
|
+
"and eleven_v3 receives it as the stress mark U+0301 (\"пото́м\"); a mark typed directly is kept. " +
|
|
57
|
+
"A capital at the start of a word stays a capital, and a word with a second capital or a capital " +
|
|
58
|
+
"consonant inside (all caps, \"ВУЗы\") is left as it is. A single capital vowel inside a word is always " +
|
|
59
|
+
"read as stress, so write \"Яндекс Еда\", not \"ЯндексЕда\". " +
|
|
60
|
+
"Tell users writing in Russian that they can mark stress this way. eleven_flash_v2_5 and " +
|
|
61
|
+
"eleven_turbo_v2_5 cost less but misread stress marks: capitals reach them unchanged.";
|
|
62
|
+
/** Длина считается по тексту, который уйдёт вендору, — со знаками ударения. */
|
|
15
63
|
export function ttsScriptLimitError(text, modelId) {
|
|
16
64
|
const model = TTS_MODELS.find((model) => model === modelId);
|
|
17
65
|
if (!model)
|
|
18
66
|
return `unsupported speech model: ${modelId}`;
|
|
19
67
|
const limit = TTS_MODEL_CHAR_CAP[model];
|
|
20
|
-
|
|
21
|
-
|
|
68
|
+
const length = speechTextFor(text, model).length;
|
|
69
|
+
if (length > limit) {
|
|
70
|
+
const cheaperCap = TTS_MODEL_CHAR_CAP.eleven_flash_v2_5;
|
|
71
|
+
const remedy = model === "eleven_v3" && text.length <= cheaperCap
|
|
72
|
+
? `; eleven_flash_v2_5 and eleven_turbo_v2_5 allow ${cheaperCap} but do not read Russian stress`
|
|
73
|
+
: "";
|
|
74
|
+
return `script has ${length} characters; ${model} allows at most ${limit} characters (including spaces, tags and stress marks; emoji may count as two)${remedy}`;
|
|
22
75
|
}
|
|
23
76
|
return undefined;
|
|
24
77
|
}
|
|
@@ -32,32 +85,32 @@ export const VOICE_PRESETS = {
|
|
|
32
85
|
// Пол — НАШ факт о своём клоне, а не метадата вендора (docs/18, Д50).
|
|
33
86
|
gender: "male",
|
|
34
87
|
description: "Клон голоса владельца (David-Dmitry-Ru); русский — на английском даёт акцент",
|
|
35
|
-
// Клон настроен на v3: на multilingual_v2 другой тембр и ошибки в русских ударениях (#101).
|
|
36
88
|
model: "eleven_v3",
|
|
37
89
|
},
|
|
90
|
+
// Все пресеты — v3: решение владельца #145, выразительнее и единственная со знаком ударения.
|
|
38
91
|
sarah: {
|
|
39
92
|
language: "en",
|
|
40
93
|
gender: "female",
|
|
41
94
|
description: "Soft, natural female voice (English)",
|
|
42
|
-
model: "
|
|
95
|
+
model: "eleven_v3",
|
|
43
96
|
},
|
|
44
97
|
george: {
|
|
45
98
|
language: "en",
|
|
46
99
|
gender: "male",
|
|
47
100
|
description: "Warm British storyteller, narrative pacing (English)",
|
|
48
|
-
model: "
|
|
101
|
+
model: "eleven_v3",
|
|
49
102
|
},
|
|
50
103
|
eric: {
|
|
51
104
|
language: "en",
|
|
52
105
|
gender: "male",
|
|
53
106
|
description: "Smooth American, conversational tone (English)",
|
|
54
|
-
model: "
|
|
107
|
+
model: "eleven_v3",
|
|
55
108
|
},
|
|
56
109
|
daria_ru_female: {
|
|
57
110
|
language: "ru",
|
|
58
111
|
gender: "female",
|
|
59
112
|
description: "Женский повествовательный голос (русский)",
|
|
60
|
-
model: "
|
|
113
|
+
model: "eleven_v3",
|
|
61
114
|
},
|
|
62
115
|
};
|
|
63
116
|
/**
|
|
@@ -251,4 +304,26 @@ export function buildVoiceWarnings(input) {
|
|
|
251
304
|
`voice "${input.voice}" is labeled ${preset.language}, but the script looks ${scriptFamily}; it will be voiced in a ${preset.language} voice`,
|
|
252
305
|
];
|
|
253
306
|
}
|
|
307
|
+
/** Модель, не читающая ударения, на тексте, где они важны. На умолчании (v3) молчит всегда. */
|
|
308
|
+
export function buildSpeechModelWarnings(input) {
|
|
309
|
+
const model = resolveTtsModel(input);
|
|
310
|
+
if (STRESS_MARK_MODELS.has(model))
|
|
311
|
+
return [];
|
|
312
|
+
// Знак после латиницы — акцент французского или испанского текста (NFD), не ударение.
|
|
313
|
+
const marked = CYRILLIC_STRESS_MARK.test(input.script) || stressMarksFromCapitals(input.script) !== input.script;
|
|
314
|
+
if (marked) {
|
|
315
|
+
return [
|
|
316
|
+
`stress marks in the script (capital vowels or U+0301) are not read by ${model}: they are sent ` +
|
|
317
|
+
"unchanged, and a U+0301 can break the word it sits in; use eleven_v3 for Russian",
|
|
318
|
+
];
|
|
319
|
+
}
|
|
320
|
+
const letters = scriptLetterCounts(input.script);
|
|
321
|
+
if (detectScriptFamily(input.script) === "cyrillic" || (letters.cyrillic > 0 && letters.latin === 0)) {
|
|
322
|
+
return [
|
|
323
|
+
`Cyrillic script on ${model}: for Russian it places stress less reliably than eleven_v3 ` +
|
|
324
|
+
"and does not read stress marks",
|
|
325
|
+
];
|
|
326
|
+
}
|
|
327
|
+
return [];
|
|
328
|
+
}
|
|
254
329
|
//# sourceMappingURL=voices.js.map
|
package/dist/voices.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voices.js","sourceRoot":"","sources":["../src/voices.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,
|
|
1
|
+
{"version":3,"file":"voices.js","sourceRoot":"","sources":["../src/voices.ts"],"names":[],"mappings":"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"}
|