@clipwright/core 0.5.0 → 0.7.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/account.d.ts CHANGED
@@ -1,25 +1,8 @@
1
1
  import { z } from "zod";
2
- /**
3
- * ТЕЛО `GET /v1/account` (US-602).
4
- *
5
- * ПУТЬ ОБЪЯВЛЕН ДАВНО, ТЕЛО — НЕТ. `docs/03-api.md` обещает этот маршрут с
6
- * телом `{plan, credits_balance, renews_at}`. Путь берётся объявленный, тело —
7
- * честное: `plan` и `renews_at` мертвы по ADR-012 (тарифных планов и продлений
8
- * в продукте нет), и отдавать их означало бы поддерживать поля, за которыми
9
- * ничего не стоит. Обещание снимается из документа отдельной стори (US-623).
10
- *
11
- * ЧЕТЫРЕ ЧИСЛА, А НЕ ОДНО, И КАЖДОЕ ОТВЕЧАЕТ НА СВОЙ ВОПРОС:
12
- * - `balance_credits` — сколько денег есть;
13
- * - `debt_credits` — сколько должен (блокирует новые раны отдельным кодом);
14
- * - `holds_credits` — сколько заморожено под уже идущими ранами;
15
- * - `daily_remaining_credits` — сколько ещё пропустит НАШ суточный
16
- * предохранитель.
17
- *
18
- * Последнее — НЕ деньги, и потому названо отдельно, а не вычтено из баланса.
19
- * Смешай их — и клиент с деньгами на счету, упёршийся в наш операционный
20
- * лимит, прочтёт это как «кончились кредиты» и пойдёт покупать ещё. Ровно то
21
- * же различение держат два разных кода отказа (`errors.ts`).
22
- */
2
+ /** ТЕЛО `GET /v1/account` (US-602). Три числа — баланс, долг, холды — и все */
3
+ /** ТРИ про деньги клиента; разбор каждого — `docs/03-api.md`. */
4
+ /** ⚠️ ЧЕТВЁРТЫМ СТОЯЛО `daily_remaining_credits` — снято вместе с личным */
5
+ /** потолком (clipwright#139, пакеты 0.7.0): она была про НАШ предохранитель. */
23
6
  /**
24
7
  * Начисление. `source` — z.string(), а не enum: перечень источников живёт в
25
8
  * базе и пополняется (промо, партнёрка), а read-контракт обязан переживать
@@ -38,7 +21,6 @@ export declare const account: z.ZodObject<{
38
21
  balance_credits: z.ZodNumber;
39
22
  debt_credits: z.ZodNumber;
40
23
  holds_credits: z.ZodNumber;
41
- daily_remaining_credits: z.ZodNumber;
42
24
  grants: z.ZodDefault<z.ZodArray<z.ZodObject<{
43
25
  amount: z.ZodNumber;
44
26
  source: z.ZodString;
package/dist/account.js CHANGED
@@ -1,25 +1,8 @@
1
1
  import { z } from "zod";
2
- /**
3
- * ТЕЛО `GET /v1/account` (US-602).
4
- *
5
- * ПУТЬ ОБЪЯВЛЕН ДАВНО, ТЕЛО — НЕТ. `docs/03-api.md` обещает этот маршрут с
6
- * телом `{plan, credits_balance, renews_at}`. Путь берётся объявленный, тело —
7
- * честное: `plan` и `renews_at` мертвы по ADR-012 (тарифных планов и продлений
8
- * в продукте нет), и отдавать их означало бы поддерживать поля, за которыми
9
- * ничего не стоит. Обещание снимается из документа отдельной стори (US-623).
10
- *
11
- * ЧЕТЫРЕ ЧИСЛА, А НЕ ОДНО, И КАЖДОЕ ОТВЕЧАЕТ НА СВОЙ ВОПРОС:
12
- * - `balance_credits` — сколько денег есть;
13
- * - `debt_credits` — сколько должен (блокирует новые раны отдельным кодом);
14
- * - `holds_credits` — сколько заморожено под уже идущими ранами;
15
- * - `daily_remaining_credits` — сколько ещё пропустит НАШ суточный
16
- * предохранитель.
17
- *
18
- * Последнее — НЕ деньги, и потому названо отдельно, а не вычтено из баланса.
19
- * Смешай их — и клиент с деньгами на счету, упёршийся в наш операционный
20
- * лимит, прочтёт это как «кончились кредиты» и пойдёт покупать ещё. Ровно то
21
- * же различение держат два разных кода отказа (`errors.ts`).
22
- */
2
+ /** ТЕЛО `GET /v1/account` (US-602). Три числа — баланс, долг, холды — и все */
3
+ /** ТРИ про деньги клиента; разбор каждого — `docs/03-api.md`. */
4
+ /** ⚠️ ЧЕТВЁРТЫМ СТОЯЛО `daily_remaining_credits` — снято вместе с личным */
5
+ /** потолком (clipwright#139, пакеты 0.7.0): она была про НАШ предохранитель. */
23
6
  /**
24
7
  * Начисление. `source` — z.string(), а не enum: перечень источников живёт в
25
8
  * базе и пополняется (промо, партнёрка), а read-контракт обязан переживать
@@ -38,7 +21,6 @@ export const account = z.object({
38
21
  balance_credits: z.number().int().nonnegative(),
39
22
  debt_credits: z.number().int().nonnegative(),
40
23
  holds_credits: z.number().int().nonnegative(),
41
- daily_remaining_credits: z.number().int().nonnegative(),
42
24
  /** Только НЕИСТЁКШИЕ: истёкший грант в баланс не входит и в списке не лжёт. */
43
25
  grants: z.array(creditGrant).default([]),
44
26
  });
@@ -1 +1 @@
1
- {"version":3,"file":"account.js","sourceRoot":"","sources":["../src/account.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IACxB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,iCAAiC;IACjC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC5C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IAC/C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IAC5C,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IAC7C,uBAAuB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACvD,+EAA+E;IAC/E,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CACzC,CAAC,CAAC"}
1
+ {"version":3,"file":"account.js","sourceRoot":"","sources":["../src/account.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,+EAA+E;AAC/E,iEAAiE;AAEjE,4EAA4E;AAC5E,gFAAgF;AAEhF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IACxB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,iCAAiC;IACjC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC5C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IAC/C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IAC5C,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IAC7C,+EAA+E;IAC/E,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CACzC,CAAC,CAAC"}
package/dist/errors.d.ts CHANGED
@@ -131,6 +131,22 @@ export declare function rejectedFieldBody(hits: readonly {
131
131
  field: string;
132
132
  message: string;
133
133
  }[]): RejectedFieldError;
134
+ /** Текст пришёл с потерянными байтами: знак-заменителя в строковом листе входа. */
135
+ /** Разбор и границы проверки — `docs/18-render-contract.md` §13. */
136
+ export declare const scriptEncodingLostError: z.ZodObject<{
137
+ error: z.ZodObject<{
138
+ code: z.ZodLiteral<"script_encoding_lost">;
139
+ message: z.ZodString;
140
+ fields: z.ZodArray<z.ZodString>;
141
+ }, z.core.$strip>;
142
+ }, z.core.$strip>;
143
+ export type ScriptEncodingLostError = z.infer<typeof scriptEncodingLostError>;
144
+ /** Сборка тела «кодировка потеряна». Принимает ОБА числа предиката: выбор, */
145
+ /** откуда брать счёт знаков, иначе переложен на вызывателя. */
146
+ export declare function scriptEncodingLostBody(args: {
147
+ paths: readonly string[];
148
+ charCount: number;
149
+ }): ScriptEncodingLostError;
134
150
  /** КОДЫ С ГОЛЫМ КОНВЕРТОМ — ОДНИМ РЕЕСТРОМ: перечень §6 `docs/03-api.md` объявлен */
135
151
  /** исчерпывающим. Устройство сторожей — `docs/41-api-error-contract.md`. */
136
152
  declare const BARE_ERROR_CODES: readonly ["aspect_conflict", "idempotency_key_required", "idempotency_key_reused", "internal_error", "invalid_image", "invalid_request", "not_found", "paid_render_disabled", "payload_too_large", "unauthorized", "unsupported_media_type", "upload_cap_exceeded", "upstream_error"];
package/dist/errors.js CHANGED
@@ -160,6 +160,40 @@ export function rejectedFieldBody(hits) {
160
160
  },
161
161
  });
162
162
  }
163
+ /** Текст пришёл с потерянными байтами: знак-заменителя в строковом листе входа. */
164
+ /** Разбор и границы проверки — `docs/18-render-contract.md` §13. */
165
+ export const scriptEncodingLostError = z.object({
166
+ error: z.object({
167
+ code: z.literal("script_encoding_lost"),
168
+ message: z.string().min(1),
169
+ fields: z.array(z.string().min(1)).min(1),
170
+ }),
171
+ });
172
+ /** Столько же путей, сколько показывает `invalid_request`: длинный перечень */
173
+ /** нечитаем, а укороченный молча — лжив, поэтому остаток назван числом. */
174
+ const MAX_LISTED_PATHS = 12;
175
+ /** Пустой путь означает, что порча в самом корне входа — строка вместо объекта. */
176
+ /** Схема требует непустое имя, поэтому корень называется словом. */
177
+ const ROOT_PATH_LABEL = "(root)";
178
+ /** Сборка тела «кодировка потеряна». Принимает ОБА числа предиката: выбор, */
179
+ /** откуда брать счёт знаков, иначе переложен на вызывателя. */
180
+ export function scriptEncodingLostBody(args) {
181
+ const named = args.paths.map((path) => (path === "" ? ROOT_PATH_LABEL : path));
182
+ const listed = named.slice(0, MAX_LISTED_PATHS);
183
+ const hidden = named.length - listed.length;
184
+ const where = hidden > 0 ? `${listed.join(", ")} (+${hidden} more)` : listed.join(", ");
185
+ const noun = args.charCount === 1 ? "1 Unicode replacement character" : `${args.charCount} Unicode replacement characters`;
186
+ return scriptEncodingLostError.parse({
187
+ error: {
188
+ code: "script_encoding_lost",
189
+ message: `the text arrived with ${noun} (U+FFFD) in: ${where}. ` +
190
+ "The original bytes were lost before the request reached us, most often by " +
191
+ "reading single-byte Cyrillic as UTF-8. We cannot restore them. " +
192
+ "Re-send the text decoded as UTF-8. Nothing was charged and no run was created.",
193
+ fields: listed,
194
+ },
195
+ });
196
+ }
163
197
  /** КОДЫ С ГОЛЫМ КОНВЕРТОМ — ОДНИМ РЕЕСТРОМ: перечень §6 `docs/03-api.md` объявлен */
164
198
  /** исчерпывающим. Устройство сторожей — `docs/41-api-error-contract.md`. */
165
199
  const BARE_ERROR_CODES = [
@@ -182,6 +216,7 @@ const BARE_ERROR_CODES = [
182
216
  export const API_ERROR_CODES = [
183
217
  ...BARE_ERROR_CODES,
184
218
  rejectedFieldError.shape.error.shape.code.value,
219
+ scriptEncodingLostError.shape.error.shape.code.value,
185
220
  insufficientCreditsError.shape.error.shape.code.value,
186
221
  debtOutstandingError.shape.error.shape.code.value,
187
222
  accountNotAdmittedError.shape.error.shape.code.value,
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -4,6 +4,7 @@ export * from "./aspect.js";
4
4
  export * from "./voices.js";
5
5
  export * from "./runs.js";
6
6
  export * from "./errors.js";
7
+ export * from "./script-integrity.js";
7
8
  export * from "./rate-limit.js";
8
9
  export * from "./api-failure.js";
9
10
  export * from "./account.js";
package/dist/index.js CHANGED
@@ -11,6 +11,7 @@ export * from "./runs.js";
11
11
  // Тела отказов: форма ответа об ошибке — тоже контракт, и с появлением чисел в
12
12
  // теле (402) она перестала быть выводимой из кода ответа.
13
13
  export * from "./errors.js";
14
+ export * from "./script-integrity.js";
14
15
  // Rate limit: форма 429 и имена заголовков — тот же контракт, что и тела
15
16
  // отказов выше, и по той же причине не выводится из кода ответа.
16
17
  export * from "./rate-limit.js";
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,gFAAgF;AAChF,6EAA6E;AAC7E,2BAA2B;AAC3B,cAAc,4BAA4B,CAAC;AAC3C,4EAA4E;AAC5E,gEAAgE;AAChE,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,+EAA+E;AAC/E,0DAA0D;AAC1D,cAAc,aAAa,CAAC;AAC5B,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,gFAAgF;AAChF,6EAA6E;AAC7E,2BAA2B;AAC3B,cAAc,4BAA4B,CAAC;AAC3C,4EAA4E;AAC5E,gEAAgE;AAChE,cAAc,aAAa,CAAC;AAC5B,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"}
@@ -0,0 +1,10 @@
1
+ /** Целостность присланного текста: ловим ДОКАЗАННУЮ потерю байтов, а не догадку */
2
+ /** о ней. Разбор и границы — `docs/18-render-contract.md` §13. */
3
+ /** Знак-заменителя Unicode. Его появление означает, что байты уже потеряны. */
4
+ export declare const REPLACEMENT_CHAR = "\uFFFD";
5
+ /** СТОРОЖ ПОЛУЧАЕТ ПРОЦЕДУРУ, А НЕ ПЕРЕЧЕНЬ ПОЛЕЙ (`docs/35` §2): обходим все */
6
+ /** строковые листья, поэтому новое текстовое поле попадает под проверку само. */
7
+ export declare function damagedTextPaths(input: unknown): string[];
8
+ /** Сколько знаков-заменителя во всех строковых листьях вместе. Число идёт в */
9
+ /** сообщение: одно вхождение и сотня — разные аварии для того, кто чинит. */
10
+ export declare function damagedCharCount(input: unknown): number;
@@ -0,0 +1,58 @@
1
+ /** Целостность присланного текста: ловим ДОКАЗАННУЮ потерю байтов, а не догадку */
2
+ /** о ней. Разбор и границы — `docs/18-render-contract.md` §13. */
3
+ /** Знак-заменителя Unicode. Его появление означает, что байты уже потеряны. */
4
+ export const REPLACEMENT_CHAR = "�";
5
+ /** Ограничитель обхода: вход разбирается zod-схемой, но глубина у неё не задана. */
6
+ const MAX_DEPTH = 16;
7
+ function walk(value, path, depth, hits) {
8
+ if (depth > MAX_DEPTH)
9
+ return;
10
+ if (typeof value === "string") {
11
+ if (value.includes(REPLACEMENT_CHAR))
12
+ hits.push(path);
13
+ return;
14
+ }
15
+ if (Array.isArray(value)) {
16
+ value.forEach((item, index) => {
17
+ walk(item, path === "" ? String(index) : `${path}.${index}`, depth + 1, hits);
18
+ });
19
+ return;
20
+ }
21
+ if (value !== null && typeof value === "object") {
22
+ for (const [key, item] of Object.entries(value)) {
23
+ walk(item, path === "" ? key : `${path}.${key}`, depth + 1, hits);
24
+ }
25
+ }
26
+ }
27
+ /** СТОРОЖ ПОЛУЧАЕТ ПРОЦЕДУРУ, А НЕ ПЕРЕЧЕНЬ ПОЛЕЙ (`docs/35` §2): обходим все */
28
+ /** строковые листья, поэтому новое текстовое поле попадает под проверку само. */
29
+ export function damagedTextPaths(input) {
30
+ const hits = [];
31
+ walk(input, "", 0, hits);
32
+ return hits.sort();
33
+ }
34
+ /** Сколько знаков-заменителя во всех строковых листьях вместе. Число идёт в */
35
+ /** сообщение: одно вхождение и сотня — разные аварии для того, кто чинит. */
36
+ export function damagedCharCount(input) {
37
+ const paths = damagedTextPaths(input);
38
+ if (paths.length === 0)
39
+ return 0;
40
+ let total = 0;
41
+ const count = (value) => {
42
+ if (typeof value === "string") {
43
+ for (const ch of value)
44
+ if (ch === REPLACEMENT_CHAR)
45
+ total += 1;
46
+ return;
47
+ }
48
+ if (Array.isArray(value)) {
49
+ value.forEach(count);
50
+ return;
51
+ }
52
+ if (value !== null && typeof value === "object")
53
+ Object.values(value).forEach(count);
54
+ };
55
+ count(input);
56
+ return total;
57
+ }
58
+ //# sourceMappingURL=script-integrity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"script-integrity.js","sourceRoot":"","sources":["../src/script-integrity.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,kEAAkE;AAElE,+EAA+E;AAC/E,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAEpC,oFAAoF;AACpF,MAAM,SAAS,GAAG,EAAE,CAAC;AAErB,SAAS,IAAI,CAAC,KAAc,EAAE,IAAY,EAAE,KAAa,EAAE,IAAc;IACvE,IAAI,KAAK,GAAG,SAAS;QAAE,OAAO;IAE9B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtD,OAAO;IACT,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAC5B,IAAI,CAAC,IAAI,EAAE,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,KAAK,EAAE,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;QAChF,CAAC,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAChD,IAAI,CAAC,IAAI,EAAE,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,GAAG,EAAE,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;AACH,CAAC;AAED,iFAAiF;AACjF,iFAAiF;AACjF,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IACzB,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;AACrB,CAAC;AAED,+EAA+E;AAC/E,6EAA6E;AAC7E,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACtC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAEjC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,KAAK,GAAG,CAAC,KAAc,EAAQ,EAAE;QACrC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,KAAK,MAAM,EAAE,IAAI,KAAK;gBAAE,IAAI,EAAE,KAAK,gBAAgB;oBAAE,KAAK,IAAI,CAAC,CAAC;YAChE,OAAO;QACT,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACvF,CAAC,CAAC;IACF,KAAK,CAAC,KAAK,CAAC,CAAC;IACb,OAAO,KAAK,CAAC;AACf,CAAC"}
package/dist/skills.d.ts CHANGED
@@ -44,36 +44,6 @@ export declare const DEV_RESOLUTION: Resolution;
44
44
  * иначе dev-окружение молча подменяло бы то, что пользователь запросил.
45
45
  */
46
46
  export declare function resolveResolution(requested: Resolution | undefined, isDev: boolean): Resolution;
47
- /**
48
- * ⚠️ ЭТО БАЗИС ВЫВОДА ПОТОЛКА СЛОВ, А НЕ ПОТОЛОК СЕКУНД, и имя переименовано
49
- * ровно поэтому (находка внешней приёмки, круг 23). Прежнее — `MAX_SCRIPT_SECONDS`
50
- * — читалось как «максимум секунд» и дважды подряд стало источником ДЕНЕЖНОГО
51
- * дефекта на публичной странице цены: ею зажимали длительность, обещая клиенту
52
- * меньше возможного счёта. Схема ограничивает только СЛОВА; сколько из них выйдет
53
- * секунд, не ограничено ничем, потому что гейт пейсинга удалён.
54
- *
55
- * Число осталось прежним, роль названа честно: это множимое, из которого вместе
56
- * с быстрым краем пейсинга получается `MAX_SCRIPT_WORDS`.
57
- *
58
- * ⚠️ ИСХОДНЫЙ ДОВОД НИЖЕ ОПИСЫВАЕТ ПОЛОЖЕНИЕ ДО УДАЛЕНИЯ ГЕЙТА ПЕЙСИНГА и
59
- * оставлен как история, а не как действующее объяснение (находка внешней
60
- * приёмки, круг 24): он объясняет число через «~45с озвучки» и пейсинг-гейт,
61
- * которого с 2026-07-22 не существует. Действующее объяснение — абзац выше:
62
- * это множимое, и ограничивает контракт только слова.
63
- *
64
- * Исходный довод (docs/12 §11) — временная замена
65
- * мульти-тейка (docs/12 §3: длинные скрипты раньше резались на несколько
66
- * тейков, эта логика вырезана на время прототипа). Пока мульти-тейк не
67
- * вернули, скрипт длиннее одного тейка нужно отклонять на входе, а не
68
- * молча обрезать или рендерить с нарушением пейсинг-гейта.
69
- *
70
- * Число слов считаем от ВЕРХНЕЙ границы пейсинга (WORDS_PER_SECOND_MAX из
71
- * pacing.ts) — это самый длинный скрипт, который ещё способен уложиться в
72
- * потолок секунд без нарушения пейсинг-гейта. Числа пейсинга не дублируем,
73
- * берём готовые константы из pacing.ts.
74
- */
75
- export declare const SCRIPT_SECONDS_BASIS = 45;
76
- export declare const MAX_SCRIPT_WORDS: number;
77
47
  /** Потолок длины ЛЮБОГО адреса из чужого тела: без него поле берёт весь потолок */
78
48
  /** тела запроса. Число — верхний предел, который переваривает любой браузер и CDN. */
79
49
  export declare const MAX_URL_LENGTH = 2048;
package/dist/skills.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { z } from "zod";
2
- import { WORDS_PER_SECOND_MAX, countWords } from "./pacing.js";
3
- import { resolveTtsModel, TTS_MODEL_CHAR_CAP, TTS_MODELS, VOICE_ID_PATTERN, VOICE_PRESET_NAMES, } from "./voices.js";
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";
4
4
  export const CAPTION_STYLES = ["hormozi", "tiktok", "minimal"];
5
5
  export const LOOKS = ["natural", "commercial", "raw_iphone"];
6
6
  /**
@@ -48,42 +48,12 @@ export function resolveResolution(requested, isDev) {
48
48
  return requested;
49
49
  return isDev ? DEV_RESOLUTION : DEFAULT_RESOLUTION;
50
50
  }
51
- /**
52
- * ⚠️ ЭТО БАЗИС ВЫВОДА ПОТОЛКА СЛОВ, А НЕ ПОТОЛОК СЕКУНД, и имя переименовано
53
- * ровно поэтому (находка внешней приёмки, круг 23). Прежнее — `MAX_SCRIPT_SECONDS`
54
- * — читалось как «максимум секунд» и дважды подряд стало источником ДЕНЕЖНОГО
55
- * дефекта на публичной странице цены: ею зажимали длительность, обещая клиенту
56
- * меньше возможного счёта. Схема ограничивает только СЛОВА; сколько из них выйдет
57
- * секунд, не ограничено ничем, потому что гейт пейсинга удалён.
58
- *
59
- * Число осталось прежним, роль названа честно: это множимое, из которого вместе
60
- * с быстрым краем пейсинга получается `MAX_SCRIPT_WORDS`.
61
- *
62
- * ⚠️ ИСХОДНЫЙ ДОВОД НИЖЕ ОПИСЫВАЕТ ПОЛОЖЕНИЕ ДО УДАЛЕНИЯ ГЕЙТА ПЕЙСИНГА и
63
- * оставлен как история, а не как действующее объяснение (находка внешней
64
- * приёмки, круг 24): он объясняет число через «~45с озвучки» и пейсинг-гейт,
65
- * которого с 2026-07-22 не существует. Действующее объяснение — абзац выше:
66
- * это множимое, и ограничивает контракт только слова.
67
- *
68
- * Исходный довод (docs/12 §11) — временная замена
69
- * мульти-тейка (docs/12 §3: длинные скрипты раньше резались на несколько
70
- * тейков, эта логика вырезана на время прототипа). Пока мульти-тейк не
71
- * вернули, скрипт длиннее одного тейка нужно отклонять на входе, а не
72
- * молча обрезать или рендерить с нарушением пейсинг-гейта.
73
- *
74
- * Число слов считаем от ВЕРХНЕЙ границы пейсинга (WORDS_PER_SECOND_MAX из
75
- * pacing.ts) — это самый длинный скрипт, который ещё способен уложиться в
76
- * потолок секунд без нарушения пейсинг-гейта. Числа пейсинга не дублируем,
77
- * берём готовые константы из pacing.ts.
78
- */
79
- export const SCRIPT_SECONDS_BASIS = 45;
80
- export const MAX_SCRIPT_WORDS = SCRIPT_SECONDS_BASIS * WORDS_PER_SECOND_MAX;
81
51
  /** Потолок длины ЛЮБОГО адреса из чужого тела: без него поле берёт весь потолок */
82
52
  /** тела запроса. Число — верхний предел, который переваривает любой браузер и CDN. */
83
53
  export const MAX_URL_LENGTH = 2048;
84
54
  /** ЧТО ДЕЛАЕТ `make_ugc` — один текст на обе контрактные поверхности: публичный */
85
55
  /** REST-каталог и MCP `tools/list`. Разойдясь, они описали бы РАЗНЫЙ скилл. */
86
- export const MAKE_UGC_DESCRIPTION = "Start generation of a lip-synced UGC video. Give a script (any length); the actor comes " +
56
+ export const MAKE_UGC_DESCRIPTION = "Start generation of a lip-synced UGC video. Give a script within the selected speech model's text limit; the actor comes " +
87
57
  "from person (described in words) or image. Format and resolution follow the request and " +
88
58
  "the source, defaulting to 1080x1920. Captions are OPT-IN: ask the user first. Fields the " +
89
59
  "renderer does not honor yet carry a NOT HONORED YET note in their own description — read " +
@@ -115,7 +85,7 @@ export const MAKE_UGC_AGENT_PROTOCOL = "Call quote_ugc before generating and sho
115
85
  export const ugcSegment = z.object({
116
86
  kind: z.enum(["actor", "media"]),
117
87
  /** Реплика актёра. У `media`-сегмента отсутствует — там говорит соседний актёр. */
118
- script: z.string().min(1).max(10_000).optional(),
88
+ script: z.string().min(1).max(MAX_SCRIPT_CHARS).optional(),
119
89
  /** Полнокадровый врез. Обязателен у `media`, запрещён у `actor`. */
120
90
  media_url: z.string().url().max(MAX_URL_LENGTH).optional(),
121
91
  });
@@ -130,9 +100,9 @@ export const makeUgcInputShape = {
130
100
  script: z
131
101
  .string()
132
102
  .min(1)
133
- .max(10_000)
103
+ .max(MAX_SCRIPT_CHARS)
134
104
  .optional()
135
- .describe("required unless `segments` is provided; `segments` is currently rejected"),
105
+ .describe(`required unless \`segments\` is provided; \`segments\` is currently rejected. ${SCRIPT_LENGTH_DESCRIPTION}`),
136
106
  segments: z.array(ugcSegment).min(1).max(MAX_SEGMENTS).optional(),
137
107
  person: z.string().min(1).max(500).optional(),
138
108
  // ТОЛЬКО https-URL. Вариант `data:` снят (US-524): HeyGen принимает
@@ -195,7 +165,7 @@ export const makeUgcInputShape = {
195
165
  .optional()
196
166
  .describe(`Speech model: ${TTS_MODELS.join(" | ")}. Omitted means the model of the chosen preset ` +
197
167
  "(list_voices shows it; owner_ru_clone speaks eleven_v3) or eleven_multilingual_v2 for a " +
198
- "raw voice_id. eleven_v3 caps the script at 5000 chars."),
168
+ "raw voice_id. " + SCRIPT_LENGTH_DESCRIPTION),
199
169
  webhook_url: z.string().url().max(MAX_URL_LENGTH).optional(),
200
170
  /**
201
171
  * Видимая плашка «сделано ИИ» поверх кадра — OPT-IN, а не обязательная.
@@ -246,8 +216,12 @@ export const makeUgcInput = z
246
216
  message: "pass exactly one of script | segments",
247
217
  })
248
218
  // Потолок символов — по модели: v3 короче v2 вдвое; отказ здесь, до резерва и вендора (#101).
249
- .refine((v) => spokenTextOf(v).length <= TTS_MODEL_CHAR_CAP[resolveTtsModel(v)], {
250
- message: `script exceeds the character ceiling of the speech model (${TTS_MODELS.map((m) => `${m}: ${TTS_MODEL_CHAR_CAP[m]}`).join(", ")})`,
219
+ .refine((v) => ttsScriptLimitError(spokenTextOf(v), resolveTtsModel(v)) === undefined, {
220
+ path: ["script"],
221
+ error: (issue) => {
222
+ const input = issue.input;
223
+ return ttsScriptLimitError(spokenTextOf(input), resolveTtsModel(input));
224
+ },
251
225
  })
252
226
  .refine((v) => [v.person, v.image].filter(Boolean).length <= 1, { message: "pass at most one of person | image" })
253
227
  // ПРАВИЛА СЕГМЕНТОВ (US-526). Каждое — ОТДЕЛЬНЫЙ .refine, а не одна проверка
@@ -280,32 +254,9 @@ export const makeUgcInput = z
280
254
  // ZodEffects, у которого нет .shape (ловушка A12), а shape порождает
281
255
  // tools/list. Оба опущены → резолвер подставит дефолт (клон владельца).
282
256
  .refine((v) => !(v.voice !== undefined && v.voice_id !== undefined), { message: "pass at most one of voice | voice_id" })
283
- // Скрипт из одних пробелов/пустоты проходит символьный .min(1) выше (там
284
- // считаются сырые символы), но даёт 0 произносимых слов — countWords тримит
285
- // и схлопывает пробелы. Используем ТУ ЖЕ нормализацию, что и весь пейсинг-гейт
286
- // (pacing.ts), не переизобретаем "trim && length".
257
+ // Length includes whitespace; a nonempty string can still have no speech.
287
258
  .refine((v) => v.segments !== undefined || countWords(v.script ?? "") >= 1, {
288
259
  message: "script has 0 speakable words",
289
- })
290
- // Счёт СЛОВ, не символов: символьный .max(10_000) выше — грубая защита от
291
- // мусорного ввода, а реальный потолок привязан к произносимой длине
292
- // (пейсинг-гейт меряет слова/сек, не байты).
293
- // Потолок слов считается по ТОМУ из двух, что задан: у сегментного ролика
294
- // произносимый текст — это сумма реплик, и мерить его по отсутствующему
295
- // `script` значило бы не мерить вовсе.
296
- .refine((v) => countWords(spokenTextOf(v)) <= MAX_SCRIPT_WORDS, {
297
- error: (issue) => {
298
- const wordCount = countWords(spokenTextOf(issue.input));
299
- /*
300
- * ⚠️ ССЫЛКА НА «≈45s of speech at the pacing gate» СНЯТА (находка
301
- * внешней приёмки, круг 23), и снята как ЛОЖЬ, а не как многословие.
302
- * Гейта пейсинга не существует с 2026-07-22 — `validatePacing` не
303
- * вызывается ниоткуда, — а число секунд агент читал как границу, хотя
304
- * ограничены только слова. Текст ошибки на платной поверхности чинят
305
- * перебором, и перебор по несуществующей границе стоит денег.
306
- */
307
- return `script is ~${wordCount} words; ceiling is ${MAX_SCRIPT_WORDS} words`;
308
- },
309
260
  });
310
261
  /** Склейка произносимого текста без проверок — общая база для гейтов и хелпера. */
311
262
  function spokenTextOf(input) {
@@ -1 +1 @@
1
- {"version":3,"file":"skills.js","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"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"}
@@ -41,7 +41,7 @@ export interface SpeechResult {
41
41
  words: WordTiming[] | null;
42
42
  }
43
43
  export interface TtsCapabilities {
44
- /** Максимум символов за запрос. null — вендор не документирует (случай ElevenLabs). */
44
+ /** Верхняя граница по моделям; адаптер проверяет лимит выбранной модели. null — неизвестно. */
45
45
  maxChars: number | null;
46
46
  /** Отдаёт ли тайминги вообще. */
47
47
  providesTimings: boolean;
package/dist/voices.d.ts CHANGED
@@ -4,7 +4,11 @@ export declare const TTS_MODELS: readonly ["eleven_multilingual_v2", "eleven_v3"
4
4
  export type TtsModelId = (typeof TTS_MODELS)[number];
5
5
  export declare const DEFAULT_TTS_MODEL: TtsModelId;
6
6
  /** Потолок символов запроса по документации вендора; у v3 он вдвое ниже. */
7
- export declare const TTS_MODEL_CHAR_CAP: Record<TtsModelId, number>;
7
+ export declare const TTS_MODEL_CHAR_CAP: Readonly<Record<TtsModelId, number>>;
8
+ export declare const MAX_SCRIPT_CHARS: number;
9
+ export declare const SCRIPT_LENGTH_DESCRIPTION: string;
10
+ /** Match the API's string length, including whitespace and surrogate pairs. */
11
+ export declare function ttsScriptLimitError(text: string, modelId: string): string | undefined;
8
12
  /** Каталог голосовых пресетов — НАШИ имена и метадата, БЕЗ вендорских id: имена */
9
13
  /** порождают `tools/list` и типы SDK, id живут только в адаптере воркера. */
10
14
  export interface VoicePreset {
@@ -171,6 +175,12 @@ export declare function resolveTtsModel(input: {
171
175
  * Только уверенное доминирование (≥60%) даёт "cyrillic"/"latin".
172
176
  */
173
177
  export declare const SCRIPT_DOMINANCE_THRESHOLD = 0.6;
178
+ /** Буквы каждого письма по отдельности. Их же складывает `detectScriptFamily`; */
179
+ /** отдельно они нужны, чтобы отличить «мало» от «нет вовсе» (clipwright#131). */
180
+ export declare function scriptLetterCounts(script: string): {
181
+ cyrillic: number;
182
+ latin: number;
183
+ };
174
184
  export declare function detectScriptFamily(script: string): "cyrillic" | "latin" | "neutral";
175
185
  /** Только путь QUOTE (US-517); почему не на пути рана — docs/18, Д41. */
176
186
  export declare const RAW_VOICE_ID_VALIDATION_WARNING = "raw voice_id is verified against your account at run start, not at quote time";
package/dist/voices.js CHANGED
@@ -7,6 +7,21 @@ export const TTS_MODEL_CHAR_CAP = {
7
7
  eleven_multilingual_v2: 10_000,
8
8
  eleven_v3: 5_000,
9
9
  };
10
+ export const MAX_SCRIPT_CHARS = Math.max(...Object.values(TTS_MODEL_CHAR_CAP));
11
+ 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 audio tags; emoji may count as two characters. " +
13
+ "There is no word-count limit. Duration and price are estimates until measured.";
14
+ /** Match the API's string length, including whitespace and surrogate pairs. */
15
+ export function ttsScriptLimitError(text, modelId) {
16
+ const model = TTS_MODELS.find((model) => model === modelId);
17
+ if (!model)
18
+ return `unsupported speech model: ${modelId}`;
19
+ const limit = TTS_MODEL_CHAR_CAP[model];
20
+ if (text.length > limit) {
21
+ return `script has ${text.length} characters; ${model} allows at most ${limit} characters (including spaces and tags; emoji may count as two)`;
22
+ }
23
+ return undefined;
24
+ }
10
25
  /**
11
26
  * Стартовый набор из 5 пресетов (условие плана §4). Порядок значим только для
12
27
  * презентации; дефолт задаётся отдельно через `DEFAULT_VOICE_PRESET`.
@@ -117,7 +132,9 @@ export function resolveTtsModel(input) {
117
132
  * Только уверенное доминирование (≥60%) даёт "cyrillic"/"latin".
118
133
  */
119
134
  export const SCRIPT_DOMINANCE_THRESHOLD = 0.6;
120
- export function detectScriptFamily(script) {
135
+ /** Буквы каждого письма по отдельности. Их же складывает `detectScriptFamily`; */
136
+ /** отдельно они нужны, чтобы отличить «мало» от «нет вовсе» (clipwright#131). */
137
+ export function scriptLetterCounts(script) {
121
138
  let cyrillic = 0;
122
139
  let latin = 0;
123
140
  for (const ch of script) {
@@ -128,6 +145,10 @@ export function detectScriptFamily(script) {
128
145
  latin += 1;
129
146
  }
130
147
  }
148
+ return { cyrillic, latin };
149
+ }
150
+ export function detectScriptFamily(script) {
151
+ const { cyrillic, latin } = scriptLetterCounts(script);
131
152
  const total = cyrillic + latin;
132
153
  // «Мало букв» → нейтрально: судить о языке не на чем (условие ii — данных нет).
133
154
  if (total < 2) {
@@ -211,6 +232,16 @@ export function buildVoiceWarnings(input) {
211
232
  if (scriptFamily === "neutral" || scriptFamily === voiceFamily) {
212
233
  return [];
213
234
  }
235
+ // «БУКВ НЕТ ВОВСЕ» И «НЕ ТОТ ЯЗЫК» — РАЗНЫЕ СОВЕТЫ ЧИТАТЕЛЮ (clipwright#131):
236
+ // первое чинят текстом или доставкой, второе — выбором голоса.
237
+ const counts = scriptLetterCounts(input.script);
238
+ if (counts[voiceFamily] === 0) {
239
+ return [
240
+ `voice "${input.voice}" is labeled ${preset.language}, but the script contains ` +
241
+ `no ${voiceFamily} letters at all (${counts[scriptFamily]} ${scriptFamily} letters); ` +
242
+ `it will be voiced in a ${preset.language} voice`,
243
+ ];
244
+ }
214
245
  return [
215
246
  `voice "${input.voice}" is labeled ${preset.language}, but the script looks ${scriptFamily}; it will be voiced in a ${preset.language} voice`,
216
247
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"voices.js","sourceRoot":"","sources":["../src/voices.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"voices.js","sourceRoot":"","sources":["../src/voices.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clipwright/core",
3
- "version": "0.5.0",
3
+ "version": "0.7.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.",