@clipwright/core 0.15.0 → 0.17.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.
Files changed (56) hide show
  1. package/CHANGELOG.md +89 -0
  2. package/dist/account-actors.d.ts +292 -0
  3. package/dist/account-actors.js +222 -0
  4. package/dist/account-actors.js.map +1 -0
  5. package/dist/actor-bounds.d.ts +14 -0
  6. package/dist/actor-bounds.js +13 -0
  7. package/dist/actor-bounds.js.map +1 -0
  8. package/dist/actor-qualities.d.ts +8 -0
  9. package/dist/actor-qualities.js +7 -0
  10. package/dist/actor-qualities.js.map +1 -0
  11. package/dist/actors.d.ts +10 -0
  12. package/dist/actors.js +30 -0
  13. package/dist/actors.js.map +1 -1
  14. package/dist/aspect.d.ts +3 -0
  15. package/dist/aspect.js +15 -1
  16. package/dist/aspect.js.map +1 -1
  17. package/dist/contract-dispositions.d.ts +4 -0
  18. package/dist/contract-dispositions.js +15 -1
  19. package/dist/contract-dispositions.js.map +1 -1
  20. package/dist/endpoints.d.ts +3 -1
  21. package/dist/endpoints.js +13 -10
  22. package/dist/endpoints.js.map +1 -1
  23. package/dist/errors.d.ts +7 -1
  24. package/dist/errors.js +18 -1
  25. package/dist/errors.js.map +1 -1
  26. package/dist/idempotency.d.ts +3 -0
  27. package/dist/idempotency.js +9 -0
  28. package/dist/idempotency.js.map +1 -1
  29. package/dist/index.d.ts +1 -0
  30. package/dist/index.js +2 -0
  31. package/dist/index.js.map +1 -1
  32. package/dist/public-endpoints.d.ts +1 -0
  33. package/dist/public-endpoints.js +1 -0
  34. package/dist/public-endpoints.js.map +1 -1
  35. package/dist/rate-limit.d.ts +25 -0
  36. package/dist/rate-limit.js +40 -0
  37. package/dist/rate-limit.js.map +1 -1
  38. package/dist/run-static-warnings.d.ts +12 -4
  39. package/dist/run-static-warnings.js +35 -12
  40. package/dist/run-static-warnings.js.map +1 -1
  41. package/dist/runs.d.ts +51 -2
  42. package/dist/runs.js +14 -1
  43. package/dist/runs.js.map +1 -1
  44. package/dist/skills.d.ts +11 -1
  45. package/dist/skills.js +29 -18
  46. package/dist/skills.js.map +1 -1
  47. package/dist/voice-admission.d.ts +13 -1
  48. package/dist/voice-admission.js +32 -1
  49. package/dist/voice-admission.js.map +1 -1
  50. package/dist/voice-listing.d.ts +5 -1
  51. package/dist/voice-listing.js +11 -1
  52. package/dist/voice-listing.js.map +1 -1
  53. package/dist/voices.d.ts +2 -0
  54. package/dist/voices.js +3 -0
  55. package/dist/voices.js.map +1 -1
  56. package/package.json +1 -1
@@ -179,4 +179,44 @@ export function authThrottledBody(args) {
179
179
  },
180
180
  });
181
181
  }
182
+ /** Лимиты `create_actor` на аккаунт за скользящие сутки (решение владельца после G0b, clipwright#120). */
183
+ /** Создания считаются по ранам любого исхода, отказы и непригодные портреты — по событиям воркера. */
184
+ export const ACTOR_LIMIT_WINDOW_SECONDS = 86_400;
185
+ export const ACTOR_LIMIT_KINDS = ["creations", "prompt_refusals", "unusable_portraits"];
186
+ export const ACTOR_LIMITS = {
187
+ creations: 20,
188
+ prompt_refusals: 3,
189
+ unusable_portraits: 5,
190
+ };
191
+ export const actorCreationLimitedError = z.object({
192
+ error: z.object({
193
+ code: z.literal("actor_creation_limited"),
194
+ message: z.string().min(1),
195
+ limit_kind: z.enum(ACTOR_LIMIT_KINDS),
196
+ limit: z.number().int().positive(),
197
+ window_seconds: z.number().int().positive(),
198
+ retry_after_seconds: z.number().int().positive(),
199
+ }),
200
+ });
201
+ const ACTOR_LIMIT_SUBJECTS = {
202
+ creations: "create_actor runs",
203
+ prompt_refusals: "descriptions refused as naming or resembling a real person",
204
+ unusable_portraits: "portraits refused for not showing exactly one face",
205
+ };
206
+ export function actorCreationLimitedBody(args) {
207
+ const limit = ACTOR_LIMITS[args.kind];
208
+ const advice = args.kind === "prompt_refusals" ? " Describe a fictional adult." : "";
209
+ return actorCreationLimitedError.parse({
210
+ error: {
211
+ code: "actor_creation_limited",
212
+ message: `This account reached ${limit} ${ACTOR_LIMIT_SUBJECTS[args.kind]} in the last ` +
213
+ `${ACTOR_LIMIT_WINDOW_SECONDS / 3600} hours. Retry in ${args.retryAfterSeconds} seconds; ` +
214
+ `nothing was charged and no run was created.${advice}`,
215
+ limit_kind: args.kind,
216
+ limit,
217
+ window_seconds: ACTOR_LIMIT_WINDOW_SECONDS,
218
+ retry_after_seconds: args.retryAfterSeconds,
219
+ },
220
+ });
221
+ }
182
222
  //# sourceMappingURL=rate-limit.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rate-limit.js","sourceRoot":"","sources":["../src/rate-limit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rate-limit.js","sourceRoot":"","sources":["../src/rate-limit.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,15 @@
1
+ import { type Gender } from "./actors.js";
1
2
  import { type RunPreflight } from "./run-preflight.js";
3
+ /** Пол голоса приходит ОТ ВЫЗЫВАТЕЛЯ и обязателен: каталог голосов в баррел не */
4
+ /** входит, а умолчание «только пресеты» теряло бы голос каталога молча (#210). */
5
+ export type VoiceGenderResolver = (voice: string) => Gender | undefined;
2
6
  /** Сохранённый вход нечитаем: перечислить несоблюдённые поля нечем. */
3
7
  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";
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[];
8
+ /** То же для `create_actor`: неисполненных параметров у него не бывает, а нечитаемый вход — отказ без списания. */
9
+ export declare const UNREADABLE_CREATE_ACTOR_INPUT_WARNING = "create_actor run input could not be read: a run that fails for this reason creates no actor and is not charged";
10
+ /** Выводимое по скиллу рана. У `create_actor` выводить нечего: его предупреждения */
11
+ /** записаны при допуске, и чтение их не пересчитывает (ADR-0003). */
12
+ export declare function derivedRunWarnings(storedInput: unknown, preflight: RunPreflight, skill: string, voiceGenderOf: VoiceGenderResolver): string[];
13
+ /** Полный `warnings[]` рана; порядок выводимого — как у `quote`. Префлайт и скилл */
14
+ /** ОБЯЗАТЕЛЬНЫ И ЭТИМ СТОРОЖАТ: опциональный терял бы факт у нового читателя молча. */
15
+ export declare function composeRunWarnings(stored: unknown, storedInput: unknown, storedPreflight: unknown, skill: string, voiceGenderOf: VoiceGenderResolver): string[];
@@ -1,12 +1,15 @@
1
- import { resolvedScript, storedUgcInput } from "./skills.js";
1
+ import { parseSkill, resolvedScript, storedUgcInput } from "./skills.js";
2
+ import { storedCreateActorInput } from "./account-actors.js";
2
3
  import { dispositionWarnings } from "./contract-dispositions.js";
3
4
  import { buildSpeechModelWarnings, buildVoiceWarnings, TTS_MODELS } from "./voices.js";
4
- import { buildActorGenderWarnings } from "./actors.js";
5
- import { resolveAspectRatio } from "./aspect.js";
5
+ import { buildActorGenderWarnings, buildVoiceActorMatchWarnings } from "./actors.js";
6
+ import { resolveAspectRatio, upscaleWarning } from "./aspect.js";
7
+ import { DEFAULT_RESOLUTION } from "./skills.js";
6
8
  import { parseRunPreflight, sourceNotProbedWarning, VOICE_CATALOG_INCOMPLETE_WARNING, } from "./run-preflight.js";
7
- // Писатели хранят невыводимое, читатель выводит статику. Рационал — docs/18, Д41.
8
9
  /** Сохранённый вход нечитаем: перечислить несоблюдённые поля нечем. */
9
10
  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";
11
+ /** То же для `create_actor`: неисполненных параметров у него не бывает, а нечитаемый вход — отказ без списания. */
12
+ export const UNREADABLE_CREATE_ACTOR_INPUT_WARNING = "create_actor run input could not be read: a run that fails for this reason creates no actor and is not charged";
10
13
  /** Что факт пробы даёт БЕЗ входа. `undefined` ниже — не дефолт формата: берём */
11
14
  /** только `warnings`, а они у `source === null` от `requested` не зависят (кейс). */
12
15
  function aspectWarningsWithoutInput(fact) {
@@ -30,15 +33,33 @@ function aspectFactWarnings(fact, input) {
30
33
  const source = { width: fact.width, height: fact.height, origin: "probed" };
31
34
  const resolution = resolveAspectRatio({ requested: input.aspect_ratio, source });
32
35
  // Отказ здесь недостижим: ран с конфликтом формата отбивается до вставки (400).
33
- return resolution.kind === "resolved" ? resolution.warnings : [];
36
+ if (resolution.kind !== "resolved")
37
+ return [];
38
+ const upscale = upscaleWarning(source, input.resolution ?? DEFAULT_RESOLUTION, resolution.aspectRatio);
39
+ return [...resolution.warnings, ...(upscale === null ? [] : [upscale])];
34
40
  }
35
41
  /** Префлайт голоса: строку восстанавливает читатель, каталог вендора ему недоступен. */
36
42
  function voiceFactWarnings(fact) {
37
43
  return fact?.kind === "catalog_incomplete" ? [VOICE_CATALOG_INCOMPLETE_WARNING] : [];
38
44
  }
45
+ /** Выводимое по скиллу рана. У `create_actor` выводить нечего: его предупреждения */
46
+ /** записаны при допуске, и чтение их не пересчитывает (ADR-0003). */
47
+ export function derivedRunWarnings(storedInput, preflight, skill, voiceGenderOf) {
48
+ const parsed = parseSkill(skill);
49
+ switch (parsed) {
50
+ case "make_ugc":
51
+ return ugcRunWarnings(storedInput, preflight, voiceGenderOf);
52
+ case "create_actor":
53
+ return storedCreateActorInput.safeParse(storedInput).success ? [] : [UNREADABLE_CREATE_ACTOR_INPUT_WARNING];
54
+ case null:
55
+ return [UNREADABLE_RUN_INPUT_WARNING];
56
+ default:
57
+ return parsed;
58
+ }
59
+ }
39
60
  // Реестр диспозиций и языковой warning пресета. Почему без `voice_id` —
40
61
  // docs/18, Д41.
41
- export function derivedRunWarnings(storedInput, preflight) {
62
+ function ugcRunWarnings(storedInput, preflight, voiceGenderOf) {
42
63
  const parsed = storedUgcInput.safeParse(storedInput);
43
64
  if (!parsed.success) {
44
65
  // НЕЧИТАЕМЫЙ ВХОД НЕ ОТМЕНЯЕТ ФАКТОВ. Мерка одна: выводится всё, что выводимо
@@ -49,7 +70,7 @@ export function derivedRunWarnings(storedInput, preflight) {
49
70
  ...voiceFactWarnings(preflight.voice),
50
71
  ];
51
72
  }
52
- const { tts_model: storedModel, ...rest } = parsed.data;
73
+ const { tts_model: storedModel, actor_snapshot: pin, ...rest } = parsed.data;
53
74
  const ttsModel = TTS_MODELS.find((model) => model === storedModel);
54
75
  // Снятая модель (`eleven_multilingual_v2`) читается как умолчание: на нём о модели молчим.
55
76
  const input = { ...rest, tts_model: ttsModel };
@@ -60,7 +81,9 @@ export function derivedRunWarnings(storedInput, preflight) {
60
81
  ...aspectFactWarnings(preflight.aspect, input),
61
82
  ...buildVoiceWarnings({ voice: input.voice, script: resolvedScript(input) }),
62
83
  ...buildActorGenderWarnings(input),
63
- // Пола пина в сохранённом входе нет; модели пресетов по полу сегодня не расходятся.
84
+ ...buildVoiceActorMatchWarnings(input, voiceGenderOf, pin?.gender),
85
+ // Пол пина в ВЫБОР МОДЕЛИ не идёт: у голосов по умолчанию обоих полов она одна,
86
+ // поэтому вывод от пола не зависит; разойдутся модели — покраснеет тест в run-static-warnings.test.ts.
64
87
  ...buildSpeechModelWarnings({ ...input, script: resolvedScript(input) }, input.actor_gender),
65
88
  ...voiceFactWarnings(preflight.voice),
66
89
  ];
@@ -71,12 +94,12 @@ function storedStrings(stored) {
71
94
  return [];
72
95
  return stored.filter((item) => typeof item === "string");
73
96
  }
74
- /** Полный `warnings[]` рана; порядок выводимого — как у `quote`. Третий аргумент */
75
- /** ОБЯЗАТЕЛЕН И ЭТИМ СТОРОЖИТ: опциональный терял бы факт у нового читателя молча. */
76
- export function composeRunWarnings(stored, storedInput, storedPreflight) {
97
+ /** Полный `warnings[]` рана; порядок выводимого — как у `quote`. Префлайт и скилл */
98
+ /** ОБЯЗАТЕЛЬНЫ И ЭТИМ СТОРОЖАТ: опциональный терял бы факт у нового читателя молча. */
99
+ export function composeRunWarnings(stored, storedInput, storedPreflight, skill, voiceGenderOf) {
77
100
  return [
78
101
  ...new Set([
79
- ...derivedRunWarnings(storedInput, parseRunPreflight(storedPreflight)),
102
+ ...derivedRunWarnings(storedInput, parseRunPreflight(storedPreflight), skill, voiceGenderOf),
80
103
  ...storedStrings(stored),
81
104
  ]),
82
105
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"run-static-warnings.js","sourceRoot":"","sources":["../src/run-static-warnings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-static-warnings.js","sourceRoot":"","sources":["../src/run-static-warnings.ts"],"names":[],"mappings":"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"}
package/dist/runs.d.ts CHANGED
@@ -1,10 +1,11 @@
1
1
  import { z } from "zod";
2
- /** Стадии рендер-пайплайна make_ugc (docs/02 §2). */
3
- export declare const RUN_STATES: readonly ["queued", "scripting", "tts", "avatar", "compositing", "uploading", "succeeded", "failed"];
2
+ /** Стадии ранов обоих скиллов: make_ugc (docs/02 §2) и create_actor (`generating`, ADR-0003). */
3
+ export declare const RUN_STATES: readonly ["queued", "generating", "scripting", "tts", "avatar", "compositing", "uploading", "succeeded", "failed"];
4
4
  export declare const runState: z.ZodEnum<{
5
5
  avatar: "avatar";
6
6
  compositing: "compositing";
7
7
  failed: "failed";
8
+ generating: "generating";
8
9
  queued: "queued";
9
10
  scripting: "scripting";
10
11
  succeeded: "succeeded";
@@ -12,6 +13,9 @@ export declare const runState: z.ZodEnum<{
12
13
  uploading: "uploading";
13
14
  }>;
14
15
  export type RunState = z.infer<typeof runState>;
16
+ /** Подпись выдана под GET, поэтому `curl -I` отвечает 403 и читается как */
17
+ /** «ссылка мертва». Сказано там, где ссылку выдают, — разбор в `docs/41` §7. */
18
+ export declare const VIDEO_URL_CHECK: string;
15
19
  export declare const runStep: z.ZodObject<{
16
20
  step: z.ZodString;
17
21
  state: z.ZodEnum<{
@@ -73,6 +77,7 @@ export declare const run: z.ZodObject<{
73
77
  avatar: "avatar";
74
78
  compositing: "compositing";
75
79
  failed: "failed";
80
+ generating: "generating";
76
81
  queued: "queued";
77
82
  scripting: "scripting";
78
83
  succeeded: "succeeded";
@@ -83,6 +88,25 @@ export declare const run: z.ZodObject<{
83
88
  credits_charged: z.ZodNullable<z.ZodNumber>;
84
89
  warnings: z.ZodDefault<z.ZodArray<z.ZodString>>;
85
90
  error: z.ZodNullable<z.ZodString>;
91
+ created_actor: z.ZodOptional<z.ZodObject<{
92
+ actor_id: z.ZodString;
93
+ name: z.ZodString;
94
+ gender: z.ZodEnum<{
95
+ female: "female";
96
+ male: "male";
97
+ }>;
98
+ approximate_age: z.ZodNumber;
99
+ version: z.ZodNumber;
100
+ quality: z.ZodEnum<{
101
+ high: "high";
102
+ medium: "medium";
103
+ }>;
104
+ aspect_ratios: z.ZodArray<z.ZodEnum<{
105
+ "16:9": "16:9";
106
+ "1:1": "1:1";
107
+ "9:16": "9:16";
108
+ }>>;
109
+ }, z.core.$strip>>;
86
110
  final_output: z.ZodNullable<z.ZodObject<{
87
111
  video_url: z.ZodString;
88
112
  video_url_unsubtitled: z.ZodOptional<z.ZodString>;
@@ -157,6 +181,25 @@ export declare const runRead: z.ZodObject<{
157
181
  credits_charged: z.ZodNullable<z.ZodNumber>;
158
182
  warnings: z.ZodDefault<z.ZodArray<z.ZodString>>;
159
183
  error: z.ZodNullable<z.ZodString>;
184
+ created_actor: z.ZodOptional<z.ZodObject<{
185
+ actor_id: z.ZodString;
186
+ name: z.ZodString;
187
+ gender: z.ZodEnum<{
188
+ female: "female";
189
+ male: "male";
190
+ }>;
191
+ approximate_age: z.ZodNumber;
192
+ version: z.ZodNumber;
193
+ quality: z.ZodEnum<{
194
+ high: "high";
195
+ medium: "medium";
196
+ }>;
197
+ aspect_ratios: z.ZodArray<z.ZodEnum<{
198
+ "16:9": "16:9";
199
+ "1:1": "1:1";
200
+ "9:16": "9:16";
201
+ }>>;
202
+ }, z.core.$strip>>;
160
203
  final_output: z.ZodNullable<z.ZodObject<{
161
204
  video_url: z.ZodString;
162
205
  video_url_unsubtitled: z.ZodOptional<z.ZodString>;
@@ -192,6 +235,12 @@ export declare const runRead: z.ZodObject<{
192
235
  state: z.ZodString;
193
236
  }, z.core.$strip>;
194
237
  export type RunRead = z.infer<typeof runRead>;
238
+ /** Денежное поле рана. Имена выводятся ИЗ СХЕМЫ: перечень рядом с форматтером */
239
+ /** MCP и терял их — агент узнавал счёт вычитанием (clipwright#209). */
240
+ export type RunMoneyField = Extract<keyof RunRead, `credits_${string}`>;
241
+ export declare const RUN_MONEY_FIELDS: readonly RunMoneyField[];
242
+ /** Денежные поля рана одним объектом — для поверхностей, собирающих свой ответ. */
243
+ export declare function runMoney(read: RunRead): Pick<RunRead, RunMoneyField>;
195
244
  /**
196
245
  * Терминален ли ран. Принимает `string` (read-проекция), а не `RunState`,
197
246
  * поэтому неизвестный статус (расширение enum) корректно даёт `false`.
package/dist/runs.js CHANGED
@@ -1,8 +1,10 @@
1
1
  import { z } from "zod";
2
2
  import { actorSelection } from "./actors.js";
3
- /** Стадии рендер-пайплайна make_ugc (docs/02 §2). */
3
+ import { createdActor } from "./account-actors.js";
4
+ /** Стадии ранов обоих скиллов: make_ugc (docs/02 §2) и create_actor (`generating`, ADR-0003). */
4
5
  export const RUN_STATES = [
5
6
  "queued",
7
+ "generating",
6
8
  "scripting",
7
9
  "tts",
8
10
  "avatar",
@@ -12,6 +14,10 @@ export const RUN_STATES = [
12
14
  "failed",
13
15
  ];
14
16
  export const runState = z.enum(RUN_STATES);
17
+ /** Подпись выдана под GET, поэтому `curl -I` отвечает 403 и читается как */
18
+ /** «ссылка мертва». Сказано там, где ссылку выдают, — разбор в `docs/41` §7. */
19
+ export const VIDEO_URL_CHECK = "signed for GET only: HEAD returns 403. To check it without downloading, " +
20
+ 'use a ranged GET (curl -r 0-0), not curl -I.';
15
21
  export const runStep = z.object({
16
22
  step: z.string(),
17
23
  state: z.enum(["pending", "running", "succeeded", "failed"]),
@@ -76,6 +82,8 @@ export const run = z.object({
76
82
  * задержки, а не как исход. Ран в этом состоянии сам не завершится.
77
83
  */
78
84
  error: z.string().nullable(),
85
+ /** Итог рана `create_actor`; у `make_ugc` отсутствует, у него итог — `final_output`. */
86
+ created_actor: createdActor.optional(),
79
87
  final_output: z
80
88
  .object({
81
89
  video_url: z.string().url(),
@@ -146,6 +154,11 @@ export const TERMINAL_STATES = [SUCCEEDED_STATE, FAILED_STATE];
146
154
  * сохраняется — сервер не должен принимать мусорное тело.
147
155
  */
148
156
  export const runRead = run.extend({ state: z.string() });
157
+ export const RUN_MONEY_FIELDS = Object.keys(run.shape).filter((field) => field.startsWith("credits_"));
158
+ /** Денежные поля рана одним объектом — для поверхностей, собирающих свой ответ. */
159
+ export function runMoney(read) {
160
+ return Object.fromEntries(RUN_MONEY_FIELDS.map((field) => [field, read[field]]));
161
+ }
149
162
  /**
150
163
  * Терминален ли ран. Принимает `string` (read-проекция), а не `RunState`,
151
164
  * поэтому неизвестный статус (расширение enum) корректно даёт `false`.
package/dist/runs.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"runs.js","sourceRoot":"","sources":["../src/runs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,qDAAqD;AACrD,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,QAAQ;IACR,WAAW;IACX,KAAK;IACL,QAAQ;IACR,aAAa;IACb,WAAW;IACX,WAAW;IACX,QAAQ;CACA,CAAC;AAEX,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAG3C,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC5D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC5C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC7C,SAAS,EAAE,CAAC;SACT,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;SACrF,OAAO,CAAC,EAAE,CAAC;CACf,CAAC,CAAC;AAEH;;;;GAIG;AACH;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAC7B,wFAAwF,CAAC;AAE3F;;;;;GAKG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAqC;IAC7E,cAAc,EAAE,MAAM;IACtB,SAAS,EAAE,YAAY;IACvB,eAAe,EAAE,kBAAkB;CACpC,CAAC;AAEF,iFAAiF;AACjF,8EAA8E;AAC9E,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;AAE5D,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1B,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,cAAc,CAAC,QAAQ,EAAE;IAChC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,KAAK,EAAE,QAAQ;IACf,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IAChD,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IAC1D,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACzC;;;;;;;;;;;;;OAaG;IACH,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,YAAY,EAAE,CAAC;SACZ,MAAM,CAAC;QACN,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;QAC3B,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;QAClD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;QACzC,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;QAChD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACnC,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACvC;;;;;;;WAOG;QACH,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;QAC7B,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAChC;;;;;;;;;;;;;WAaG;QACH,sBAAsB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7C,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC1C,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACzC,wDAAwD;QACxD,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC1C,CAAC;SACD,QAAQ,EAAE;IACb,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACnC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CAC9C,CAAC,CAAC;AAGH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,WAAoB,CAAC;AACpD,MAAM,CAAC,MAAM,YAAY,GAAG,QAAiB,CAAC;AAE9C,8EAA8E;AAC9E,wEAAwE;AACxE,oEAAoE;AACpE,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,eAAe,EAAE,YAAY,CAAU,CAAC;AAExE;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAGzD;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,OAAQ,eAAqC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC"}
1
+ {"version":3,"file":"runs.js","sourceRoot":"","sources":["../src/runs.ts"],"names":[],"mappings":"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"}
package/dist/skills.d.ts CHANGED
@@ -47,6 +47,10 @@ export declare function resolveResolution(requested: Resolution | undefined, isD
47
47
  /** Потолок длины ЛЮБОГО адреса из чужого тела: без него поле берёт весь потолок */
48
48
  /** тела запроса. Число — верхний предел, который переваривает любой браузер и CDN. */
49
49
  export declare const MAX_URL_LENGTH = 2048;
50
+ /** Скиллы общего неймспейса ранов. Колонка `runs.skill` — текст, поэтому читается через `parseSkill`. */
51
+ export declare const SKILLS: readonly ["make_ugc", "create_actor"];
52
+ export type Skill = (typeof SKILLS)[number];
53
+ export declare function parseSkill(value: unknown): Skill | null;
50
54
  /** ЧТО ДЕЛАЕТ `make_ugc` — один текст на обе контрактные поверхности: публичный */
51
55
  /** REST-каталог и MCP `tools/list`. Разойдясь, они описали бы РАЗНЫЙ скилл. */
52
56
  export declare const MAKE_UGC_DESCRIPTION: string;
@@ -284,7 +288,7 @@ export declare function serverUgcInputWith(voiceRefusal: (voice: string) => stri
284
288
  }>>;
285
289
  }, z.core.$strip>;
286
290
  /** Сохранённый вход рана: правила допуска он уже прошёл, и смена модели или */
287
- /** потолка не должна делать старый ран нечитаемым (#145). */
291
+ /** потолка не должна делать старый ран нечитаемым (#145). Снимок — ради пола (#210). */
288
292
  export declare const storedUgcInput: z.ZodObject<{
289
293
  script: z.ZodOptional<z.ZodString>;
290
294
  segments: z.ZodOptional<z.ZodArray<z.ZodObject<{
@@ -336,6 +340,12 @@ export declare const storedUgcInput: z.ZodObject<{
336
340
  white: "white";
337
341
  }>>;
338
342
  tts_model: z.ZodOptional<z.ZodString>;
343
+ actor_snapshot: z.ZodOptional<z.ZodObject<{
344
+ gender: z.ZodOptional<z.ZodEnum<{
345
+ female: "female";
346
+ male: "male";
347
+ }>>;
348
+ }, z.core.$strip>>;
339
349
  }, z.core.$strip>;
340
350
  /** Минимум, из которого выводится произносимый текст: сам скрипт или сегменты. */
341
351
  export interface SpokenTextInput {
package/dist/skills.js CHANGED
@@ -51,10 +51,15 @@ export function resolveResolution(requested, isDev) {
51
51
  /** Потолок длины ЛЮБОГО адреса из чужого тела: без него поле берёт весь потолок */
52
52
  /** тела запроса. Число — верхний предел, который переваривает любой браузер и CDN. */
53
53
  export const MAX_URL_LENGTH = 2048;
54
+ /** Скиллы общего неймспейса ранов. Колонка `runs.skill` — текст, поэтому читается через `parseSkill`. */
55
+ export const SKILLS = ["make_ugc", "create_actor"];
56
+ export function parseSkill(value) {
57
+ return SKILLS.find((skill) => skill === value) ?? null;
58
+ }
54
59
  /** ЧТО ДЕЛАЕТ `make_ugc` — один текст на обе контрактные поверхности: публичный */
55
60
  /** REST-каталог и MCP `tools/list`. Разойдясь, они описали бы РАЗНЫЙ скилл. */
56
61
  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 " +
57
- "from person (described in words) or image. Format and resolution follow the request and " +
62
+ "from actor_id (a saved actor from list_actors) or image, otherwise the default actor is used. Format and resolution follow the request and " +
58
63
  "the source, defaulting to 1080x1920. Captions are OPT-IN: ask the user first. Fields the " +
59
64
  "renderer does not honor yet carry a NOT HONORED YET note in their own description — read " +
60
65
  "it instead of guessing.";
@@ -99,12 +104,13 @@ export const makeUgcInputShape = {
99
104
  // JSON-Schema не умеет выразить «ровно одно из двух» через `required[]`,
100
105
  // поэтому информативность возвращается текстом описания (блокер B9).
101
106
  script: z
102
- .string()
103
- .min(1)
104
- .max(MAX_SCRIPT_CHARS)
107
+ .string({ error: "script must be the text the actor says, as a string" })
108
+ .min(1, "script is empty: pass the words the actor says")
109
+ .max(MAX_SCRIPT_CHARS, `script is longer than ${MAX_SCRIPT_CHARS} characters`)
105
110
  .optional()
106
- .describe(`required unless \`segments\` is provided; \`segments\` is currently rejected. ${SCRIPT_LENGTH_DESCRIPTION} ` +
107
- STRESS_MARKING_DESCRIPTION),
111
+ .describe("required: the words the actor says. The schema leaves it optional for a second way of " +
112
+ "passing them that is not accepted yet, so a request without it is refused before any charge. " +
113
+ `${SCRIPT_LENGTH_DESCRIPTION} ${STRESS_MARKING_DESCRIPTION}`),
108
114
  segments: z.array(ugcSegment).min(1).max(MAX_SEGMENTS).optional(),
109
115
  person: z.string().min(1).max(500).optional(),
110
116
  actor_id: actorId
@@ -116,14 +122,15 @@ export const makeUgcInputShape = {
116
122
  // вскрыла бы инвариант Этапа 4 «R2-URL вендору не передаются». Отказ на входе
117
123
  // честнее, чем приём поля, которое некуда деть.
118
124
  image: z
119
- .string()
120
- .url()
121
- .startsWith("https://")
122
- .max(MAX_URL_LENGTH)
125
+ .string({ error: "image must be the https url of the photo, as a string" })
126
+ .url("image is not a url: pass the https address of the photo, or upload it first")
127
+ .startsWith("https://", "image must start with https:// — http sources are refused before any charge")
128
+ .max(MAX_URL_LENGTH, `image url is longer than ${MAX_URL_LENGTH} characters`)
123
129
  .optional()
124
130
  .describe("Public https url of the actor's photo (PNG, JPEG or WebP, up to 10 MB). A file on disk goes " +
125
- "through upload_image (POST /v1/uploads) first — pass the url it returns. Private or loopback " +
126
- "hosts, http and unreachable sources are refused before any charge. We do not detect the " +
131
+ "through upload_image (POST /v1/uploads) first — pass the url it returns. A source we cannot " +
132
+ "use — private or loopback host, http, unreachable, redirecting, over 10 MB, or not one of " +
133
+ "those image types — is refused (unusable_source) before any charge. We do not detect the " +
127
134
  "face's gender: pass actor_gender or voice, or the default male voice is used with a warning."),
128
135
  // Без .default(): молчание отличимо от подсказки, и на молчании приходит warning (clipwright#183).
129
136
  actor_gender: z
@@ -160,8 +167,8 @@ export const makeUgcInputShape = {
160
167
  // Без .default(), как resolution: явный выбор голоса отличим от молчания (US-517).
161
168
  // voice — форма имени, список сверяет `serverUgcInput` (#164); voice_id — сырой id вендора.
162
169
  voice: z
163
- .string()
164
- .regex(VOICE_NAME_PATTERN)
170
+ .string({ error: "voice must be a voice name from list_voices, as a string" })
171
+ .regex(VOICE_NAME_PATTERN, "voice is not a voice name: take one from list_voices, or pass voice_id")
165
172
  .optional()
166
173
  .describe(`Voice name from list_voices. Curated presets: ${VOICE_PRESET_NAMES.join(" | ")} ` +
167
174
  "(owner_ru_clone is the Russian cloned voice). The API refuses a name list_voices does not " +
@@ -170,8 +177,8 @@ export const makeUgcInputShape = {
170
177
  "without actor_gender. " +
171
178
  "Mutually exclusive with voice_id."),
172
179
  voice_id: z
173
- .string()
174
- .regex(VOICE_ID_PATTERN)
180
+ .string({ error: "voice_id must be a vendor voice id, as a string" })
181
+ .regex(VOICE_ID_PATTERN, "voice_id is not a vendor voice id: 16 to 32 letters and digits")
175
182
  .optional()
176
183
  .describe("Raw vendor voice id (16–32 letters and digits) for a voice outside the catalog. Checked " +
177
184
  "lazily: an unknown id fails the run, not the request. Mutually exclusive with voice."),
@@ -300,8 +307,12 @@ export function serverUgcInputWith(voiceRefusal) {
300
307
  });
301
308
  }
302
309
  /** Сохранённый вход рана: правила допуска он уже прошёл, и смена модели или */
303
- /** потолка не должна делать старый ран нечитаемым (#145). */
304
- export const storedUgcInput = z.object({ ...makeUgcInputShape, tts_model: z.string().optional() });
310
+ /** потолка не должна делать старый ран нечитаемым (#145). Снимок — ради пола (#210). */
311
+ export const storedUgcInput = z.object({
312
+ ...makeUgcInputShape,
313
+ tts_model: z.string().optional(),
314
+ actor_snapshot: z.object({ gender: z.enum(["female", "male"]).optional() }).optional(),
315
+ });
305
316
  /** Склейка произносимого текста без проверок — общая база для гейтов и хелпера. */
306
317
  function spokenTextOf(input) {
307
318
  if (input.script !== undefined)
@@ -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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"}
@@ -1,4 +1,6 @@
1
- import type { CatalogFileVoice } from "./voice-catalog.js";
1
+ import type { Gender } from "./default-actor.js";
2
+ import { type CatalogFileVoice } from "./voice-catalog.js";
3
+ import { type TtsModelId } from "./voices.js";
2
4
  /** Почему API не допускает имя голоса; `undefined` — пресет или живой голос каталога. */
3
5
  export declare function catalogVoiceRefusal(voice: string, voices?: readonly CatalogFileVoice[]): string | undefined;
4
6
  export declare const serverUgcInput: import("zod").ZodObject<{
@@ -57,3 +59,13 @@ export declare const serverUgcInput: import("zod").ZodObject<{
57
59
  white: "white";
58
60
  }>>;
59
61
  }, import("zod/v4/core").$strip>;
62
+ /** Пол голоса по имени: у пресета — наш факт, у каталожного — метка вендора. */
63
+ /** Сырой `voice_id` пола не имеет, и это `undefined`, а не догадка (#210). */
64
+ export declare function voiceGenderOf(voice: string, voices?: readonly CatalogFileVoice[]): Gender | undefined;
65
+ /** Предупреждение — только там, где НЕХВАТКА верификации что-то значит: у */
66
+ /** `eleven_v3` её нет ни у кого, разбор — `docs/16` (clipwright#208). */
67
+ export declare function buildVoiceVerificationWarnings(input: {
68
+ voice?: string | undefined;
69
+ voice_id?: string | undefined;
70
+ tts_model?: TtsModelId | undefined;
71
+ }, gender?: Gender | undefined, voices?: readonly CatalogFileVoice[]): string[];
@@ -1,6 +1,8 @@
1
1
  import { serverUgcInputWith } from "./skills.js";
2
+ import { normalizeVoiceLabel } from "./voice-catalog.js";
2
3
  import { VOICE_CATALOG } from "./voice-catalog-data.js";
3
- import { isVoicePresetName } from "./voices.js";
4
+ import { vendorVerifiedModels } from "./voice-listing.js";
5
+ import { isVoicePresetName, resolveTtsModel, VOICE_PRESETS } from "./voices.js";
4
6
  // Подпуть, а не баррел: каталог весит сотни килобайт, и клиентам SDK он не нужен (docs/16).
5
7
  /** Почему API не допускает имя голоса; `undefined` — пресет или живой голос каталога. */
6
8
  export function catalogVoiceRefusal(voice, voices = VOICE_CATALOG.voices) {
@@ -17,4 +19,33 @@ export function catalogVoiceRefusal(voice, voices = VOICE_CATALOG.voices) {
17
19
  return undefined;
18
20
  }
19
21
  export const serverUgcInput = serverUgcInputWith((voice) => catalogVoiceRefusal(voice));
22
+ /** Пол голоса по имени: у пресета — наш факт, у каталожного — метка вендора. */
23
+ /** Сырой `voice_id` пола не имеет, и это `undefined`, а не догадка (#210). */
24
+ export function voiceGenderOf(voice, voices = VOICE_CATALOG.voices) {
25
+ if (isVoicePresetName(voice))
26
+ return VOICE_PRESETS[voice].gender;
27
+ const entry = voices.find((item) => item.slug === voice && item.retired_at === undefined);
28
+ const label = normalizeVoiceLabel(entry?.gender_raw);
29
+ return label === "female" || label === "male" ? label : undefined;
30
+ }
31
+ /** Предупреждение — только там, где НЕХВАТКА верификации что-то значит: у */
32
+ /** `eleven_v3` её нет ни у кого, разбор — `docs/16` (clipwright#208). */
33
+ export function buildVoiceVerificationWarnings(input, gender, voices = VOICE_CATALOG.voices) {
34
+ const slug = input.voice;
35
+ if (slug === undefined || isVoicePresetName(slug))
36
+ return [];
37
+ const entry = voices.find((voice) => voice.slug === slug && voice.retired_at === undefined);
38
+ if (entry === undefined)
39
+ return [];
40
+ const model = resolveTtsModel(input, gender);
41
+ if (!vendorVerifiedModels(voices).includes(model))
42
+ return [];
43
+ if (entry.verified_models.includes(model))
44
+ return [];
45
+ const verified = entry.verified_models.join(", ");
46
+ return [
47
+ `voice "${slug}" is not among the voices the vendor verified for ${model}` +
48
+ `${verified === "" ? "" : ` (it verified ${verified})`}; the run will still use ${model} as asked`,
49
+ ];
50
+ }
20
51
  //# sourceMappingURL=voice-admission.js.map
@@ -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,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,4FAA4F;AAE5F,yFAAyF;AACzF,MAAM,UAAU,mBAAmB,CACjC,KAAa,EACb,MAAM,GAAgC,aAAa,CAAC,MAAM;IAE1D,IAAI,iBAAiB,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC/C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;IACzD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,kBAAkB,KAAK,0DAA0D,CAAC;IAC3F,CAAC;IACD,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACnC,OAAO,CACL,UAAU,KAAK,qCAAqC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG;YACpF,qEAAqE,CACtE,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,kBAAkB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"voice-admission.js","sourceRoot":"","sources":["../src/voice-admission.ts"],"names":[],"mappings":"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"}