@clipwright/core 0.14.0 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +89 -0
- package/dist/account-actors.d.ts +292 -0
- package/dist/account-actors.js +222 -0
- package/dist/account-actors.js.map +1 -0
- package/dist/actor-bounds.d.ts +14 -0
- package/dist/actor-bounds.js +13 -0
- package/dist/actor-bounds.js.map +1 -0
- package/dist/actor-qualities.d.ts +8 -0
- package/dist/actor-qualities.js +7 -0
- package/dist/actor-qualities.js.map +1 -0
- package/dist/actors.d.ts +23 -0
- package/dist/actors.js +33 -0
- package/dist/actors.js.map +1 -1
- package/dist/aspect.js +1 -1
- package/dist/aspect.js.map +1 -1
- package/dist/contract-dispositions.d.ts +14 -2
- package/dist/contract-dispositions.js +21 -2
- package/dist/contract-dispositions.js.map +1 -1
- package/dist/endpoints.d.ts +1 -1
- package/dist/endpoints.js +3 -0
- package/dist/endpoints.js.map +1 -1
- package/dist/errors.d.ts +1 -1
- package/dist/errors.js +5 -1
- package/dist/errors.js.map +1 -1
- package/dist/idempotency.d.ts +3 -0
- package/dist/idempotency.js +9 -0
- package/dist/idempotency.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/public-endpoints.d.ts +1 -0
- package/dist/public-endpoints.js +1 -0
- package/dist/public-endpoints.js.map +1 -1
- package/dist/rate-limit.d.ts +25 -0
- package/dist/rate-limit.js +40 -0
- package/dist/rate-limit.js.map +1 -1
- package/dist/run-static-warnings.d.ts +8 -4
- package/dist/run-static-warnings.js +29 -7
- package/dist/run-static-warnings.js.map +1 -1
- package/dist/runs.d.ts +42 -2
- package/dist/runs.js +5 -1
- package/dist/runs.js.map +1 -1
- package/dist/skills.d.ts +20 -0
- package/dist/skills.js +39 -13
- package/dist/skills.js.map +1 -1
- package/dist/voice-admission.d.ts +4 -0
- package/dist/voice-listing.d.ts +1 -0
- package/dist/voice-listing.js +2 -0
- package/dist/voice-listing.js.map +1 -1
- package/dist/voices.d.ts +12 -31
- package/dist/voices.js +20 -36
- package/dist/voices.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** Известное только пополняется и совпадает с CHECK 0031: по нему читаются сохранённые раны и ответы. */
|
|
2
|
+
export const ACTOR_GENDERS_KNOWN = ["female", "male"];
|
|
3
|
+
export const ACTOR_ASPECTS_KNOWN = ["9:16", "1:1", "16:9"];
|
|
4
|
+
/** Нижняя граница `account_actors_adult`: младше неё не записано ничего. */
|
|
5
|
+
export const ACTOR_AGE_FLOOR = 18;
|
|
6
|
+
/** Границы приёма — решение продукта и могут сузиться. Отдельный модуль: тест сужает */
|
|
7
|
+
/** каждую подменой и проверяет, что ни одна схема чтения от них не зависит. */
|
|
8
|
+
export const ACTOR_DESCRIPTION_MAX_CHARS = 500;
|
|
9
|
+
export const ACTOR_NAME_MAX_CHARS = 100;
|
|
10
|
+
export const ACTOR_MIN_AGE = 18;
|
|
11
|
+
export const ACTOR_MAX_AGE = 90;
|
|
12
|
+
export const ACTOR_GENDERS_ACCEPTED = ["female", "male"];
|
|
13
|
+
//# sourceMappingURL=actor-bounds.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actor-bounds.js","sourceRoot":"","sources":["../src/actor-bounds.ts"],"names":[],"mappings":"AAAA,yGAAyG;AACzG,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAU,CAAC;AAE/D,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAU,CAAC;AAEpE,4EAA4E;AAC5E,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAC;AAElC,wFAAwF;AACxF,+EAA+E;AAC/E,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAG,CAAC;AAC/C,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AACxC,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC;AAChC,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC;AAChC,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,QAAQ,EAAE,MAAM,CAA2C,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** Известные качества только пополняются: по ним читаются сохранённые раны и ответы. */
|
|
2
|
+
export declare const ACTOR_QUALITIES_KNOWN: readonly ["medium", "high"];
|
|
3
|
+
export type ActorQuality = (typeof ACTOR_QUALITIES_KNOWN)[number];
|
|
4
|
+
/** Принимаемые на входе — подмножество известных. Отдельный модуль: тест сужает его */
|
|
5
|
+
/** подменой и проверяет, что ни одна схема чтения от него не зависит. */
|
|
6
|
+
export declare const ACTOR_QUALITIES_ACCEPTED: readonly ["medium", "high"];
|
|
7
|
+
export type ActorQualityAccepted = (typeof ACTOR_QUALITIES_ACCEPTED)[number];
|
|
8
|
+
export declare const ACTOR_DEFAULT_QUALITY: ActorQualityAccepted;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** Известные качества только пополняются: по ним читаются сохранённые раны и ответы. */
|
|
2
|
+
export const ACTOR_QUALITIES_KNOWN = ["medium", "high"];
|
|
3
|
+
/** Принимаемые на входе — подмножество известных. Отдельный модуль: тест сужает его */
|
|
4
|
+
/** подменой и проверяет, что ни одна схема чтения от него не зависит. */
|
|
5
|
+
export const ACTOR_QUALITIES_ACCEPTED = ["medium", "high"];
|
|
6
|
+
export const ACTOR_DEFAULT_QUALITY = "medium";
|
|
7
|
+
//# sourceMappingURL=actor-qualities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actor-qualities.js","sourceRoot":"","sources":["../src/actor-qualities.ts"],"names":[],"mappings":"AAAA,wFAAwF;AACxF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAU,CAAC;AAGjE,uFAAuF;AACvF,yEAAyE;AACzE,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,QAAQ,EAAE,MAAM,CAA4C,CAAC;AAEtG,MAAM,CAAC,MAAM,qBAAqB,GAAyB,QAAQ,CAAC"}
|
package/dist/actors.d.ts
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
export declare const ACTORS_PATH = "/v1/actors";
|
|
3
|
+
/** Личный актёр аккаунта (clipwright#120): оценка бесплатна, запуск платный. */
|
|
4
|
+
/** Те же адреса стоят литералами в `apps/api/src/routes.ts`; равенство держит тест. */
|
|
5
|
+
export declare const CREATE_ACTOR_QUOTE_PATH = "/v1/skills/create_actor/quote";
|
|
6
|
+
export declare const CREATE_ACTOR_RUN_PATH = "/v1/skills/create_actor/run";
|
|
7
|
+
/** Адрес одного актёра. Идентификатор кодируется: он приходит от вызывателя. */
|
|
8
|
+
export declare function actorItemPath(id: string): string;
|
|
3
9
|
export type Gender = "female" | "male";
|
|
4
10
|
export interface AspectSource {
|
|
5
11
|
width: number;
|
|
@@ -26,6 +32,23 @@ export declare function actorForInput(input: {
|
|
|
26
32
|
gender: Gender;
|
|
27
33
|
version: number;
|
|
28
34
|
} | undefined): ActorDescription | null;
|
|
35
|
+
export interface VoiceGenderInput {
|
|
36
|
+
image?: string | undefined;
|
|
37
|
+
actor_id?: string | undefined;
|
|
38
|
+
actor_gender?: Gender | undefined;
|
|
39
|
+
voice?: string | undefined;
|
|
40
|
+
voice_id?: string | undefined;
|
|
41
|
+
}
|
|
42
|
+
/** Пол для голоса по умолчанию: `actor_id` → пин; `image` → `actor_gender`; иначе дефолтный актёр. */
|
|
43
|
+
/** Только из пина того же актёра, не из каталога: личных актёров там нет (docs/18, Д52). */
|
|
44
|
+
export declare function voiceGenderFor(input: VoiceGenderInput, pin?: {
|
|
45
|
+
actor_id: string;
|
|
46
|
+
gender: Gender;
|
|
47
|
+
} | undefined): Gender | undefined;
|
|
48
|
+
export declare const IMAGE_DEFAULT_VOICE_WARNING: string;
|
|
49
|
+
export declare function actorGenderIgnoredWarning(field: "voice" | "voice_id"): string;
|
|
50
|
+
/** Читает только поля входа, без пина: путь рана зовёт его из сохранённого входа. */
|
|
51
|
+
export declare function buildActorGenderWarnings(input: VoiceGenderInput): string[];
|
|
29
52
|
export declare const actorSelection: z.ZodObject<{
|
|
30
53
|
actor_id: z.ZodString;
|
|
31
54
|
version: z.ZodNumber;
|
package/dist/actors.js
CHANGED
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { actorId, ASPECT_RATIOS } from "./skills.js";
|
|
3
|
+
import { DEFAULT_VOICE_PRESET, VOICE_PRESETS } from "./voices.js";
|
|
3
4
|
export const ACTORS_PATH = "/v1/actors";
|
|
5
|
+
/** Личный актёр аккаунта (clipwright#120): оценка бесплатна, запуск платный. */
|
|
6
|
+
/** Те же адреса стоят литералами в `apps/api/src/routes.ts`; равенство держит тест. */
|
|
7
|
+
export const CREATE_ACTOR_QUOTE_PATH = "/v1/skills/create_actor/quote";
|
|
8
|
+
export const CREATE_ACTOR_RUN_PATH = "/v1/skills/create_actor/run";
|
|
9
|
+
/** Адрес одного актёра. Идентификатор кодируется: он приходит от вызывателя. */
|
|
10
|
+
export function actorItemPath(id) {
|
|
11
|
+
return `${ACTORS_PATH}/${encodeURIComponent(id)}`;
|
|
12
|
+
}
|
|
4
13
|
// Default portrait dimensions and gender were measured on 2026-09-09 (#64, D50).
|
|
5
14
|
export const DEFAULT_ACTOR_SOURCE = { width: 432, height: 768, origin: "default" };
|
|
6
15
|
export const DEFAULT_ACTOR = { gender: "male" };
|
|
@@ -14,6 +23,30 @@ export function actorForInput(input, selected) {
|
|
|
14
23
|
}
|
|
15
24
|
return input.image === undefined ? DEFAULT_ACTOR : null;
|
|
16
25
|
}
|
|
26
|
+
/** Пол для голоса по умолчанию: `actor_id` → пин; `image` → `actor_gender`; иначе дефолтный актёр. */
|
|
27
|
+
/** Только из пина того же актёра, не из каталога: личных актёров там нет (docs/18, Д52). */
|
|
28
|
+
export function voiceGenderFor(input, pin) {
|
|
29
|
+
if (input.actor_id !== undefined) {
|
|
30
|
+
if (pin?.actor_id !== input.actor_id) {
|
|
31
|
+
throw new Error("actor identity must be resolved before choosing its voice");
|
|
32
|
+
}
|
|
33
|
+
return pin.gender;
|
|
34
|
+
}
|
|
35
|
+
return input.image === undefined ? DEFAULT_ACTOR_GENDER : input.actor_gender;
|
|
36
|
+
}
|
|
37
|
+
export const IMAGE_DEFAULT_VOICE_WARNING = `no voice was chosen for the face in image: the default ${VOICE_PRESETS[DEFAULT_VOICE_PRESET].gender} ` +
|
|
38
|
+
`voice "${DEFAULT_VOICE_PRESET}" is used; pass voice (from list_voices) or actor_gender to match the face`;
|
|
39
|
+
export function actorGenderIgnoredWarning(field) {
|
|
40
|
+
return `actor_gender did not change the voice: the explicit ${field} is used as requested`;
|
|
41
|
+
}
|
|
42
|
+
/** Читает только поля входа, без пина: путь рана зовёт его из сохранённого входа. */
|
|
43
|
+
export function buildActorGenderWarnings(input) {
|
|
44
|
+
const explicit = input.voice_id !== undefined ? "voice_id" : input.voice !== undefined ? "voice" : undefined;
|
|
45
|
+
if (input.actor_gender !== undefined) {
|
|
46
|
+
return explicit === undefined ? [] : [actorGenderIgnoredWarning(explicit)];
|
|
47
|
+
}
|
|
48
|
+
return input.image !== undefined && explicit === undefined ? [IMAGE_DEFAULT_VOICE_WARNING] : [];
|
|
49
|
+
}
|
|
17
50
|
export const actorSelection = z.object({
|
|
18
51
|
actor_id: actorId,
|
|
19
52
|
version: z.number().int().positive(),
|
package/dist/actors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actors.js","sourceRoot":"","sources":["../src/actors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"actors.js","sourceRoot":"","sources":["../src/actors.ts"],"names":[],"mappings":"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"}
|
package/dist/aspect.js
CHANGED
|
@@ -190,7 +190,7 @@ export function deliveryWarnings(args) {
|
|
|
190
190
|
// среди неизвестных.
|
|
191
191
|
const paddedToWholeSecond = durationDelta > 0 && Number.isInteger(actual.durationSec) && actual.durationSec <= 1;
|
|
192
192
|
warnings.push(paddedToWholeSecond
|
|
193
|
-
? `vendor padded the clip to ${actual.durationSec}s from ${predicted.durationSec}s of audio`
|
|
193
|
+
? `vendor padded the clip to ${actual.durationSec}s from ${predicted.durationSec}s of audio` // skill-scope: dynamic — текст предупреждения, не SQL
|
|
194
194
|
: `vendor returned ${actual.durationSec}s where ${predicted.durationSec}s was expected`);
|
|
195
195
|
}
|
|
196
196
|
return warnings;
|
package/dist/aspect.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aspect.js","sourceRoot":"","sources":["../src/aspect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAqC,MAAM,aAAa,CAAC;AAI/E;;;;;;;;;;GAUG;AAEH,8EAA8E;AAC9E,MAAM,CAAC,MAAM,mBAAmB,GAAgC;IAC9D,MAAM,EAAE,CAAC,GAAG,EAAE;IACd,KAAK,EAAE,CAAC;IACR,MAAM,EAAE,EAAE,GAAG,CAAC;CACf,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAgB,MAAM,CAAC;AAGxD,sEAAsE;AACtE,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAC3C,qEAAqE;AACrE,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAE1C;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,CAAS,EAAE,CAAS;IACjD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,IAAI,IAAI,GAAgB,aAAa,CAAC,CAAC,CAAC,CAAC;IACzC,IAAI,YAAY,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAC5C,KAAK,MAAM,SAAS,IAAI,aAAa,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,cAAc,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC;QACvE,IAAI,QAAQ,GAAG,YAAY,EAAE,CAAC;YAC5B,YAAY,GAAG,QAAQ,CAAC;YACxB,IAAI,GAAG,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAkBD;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAyB;IAC1D,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAEpC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,2EAA2E;QAC3E,kEAAkE;QAClE,0EAA0E;QAC1E,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,SAAS,IAAI,oBAAoB;YAC9C,QAAQ,EAAE;gBACR,sFAAsF;aACvF;SACF,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;IACjD,MAAM,MAAM,GAAG,SAAS,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,cAAc,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC;IAE1E,IAAI,QAAQ,IAAI,sBAAsB,EAAE,CAAC;QACvC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACjE,CAAC;IAED,sEAAsE;IACtE,EAAE;IACF,8EAA8E;IAC9E,sEAAsE;IACtE,wEAAwE;IACxE,8EAA8E;IAC9E,wDAAwD;IACxD,EAAE;IACF,oEAAoE;IACpE,2EAA2E;IAC3E,MAAM,WAAW,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAChD,MAAM,WAAW,GACf,WAAW,GAAG,WAAW;QACvB,CAAC,CAAC,aAAa,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,eAAe,MAAM,6BAA6B;YAC5F,oFAAoF;QACtF,CAAC,CAAC,aAAa,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,eAAe,MAAM,8BAA8B;YAC7F,oEAAoE,CAAC;IAE3E,IAAI,QAAQ,IAAI,qBAAqB,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QACjE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC;IAC5E,CAAC;IAED,wEAAwE;IACxE,yEAAyE;IACzE,MAAM,IAAI,GACR,MAAM,CAAC,MAAM,KAAK,SAAS;QACzB,CAAC,CAAC,wBAAwB,UAAU,CAAC,WAAW,CAAC,KAAK,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,KAAK;YACtF,yCAAyC,MAAM,cAAc,MAAM,EAAE;QACvE,CAAC,CAAC,iBAAiB,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,iCAAiC,MAAM,IAAI;YACzF,cAAc,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC;IAEtD,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,0BAA0B,MAAM,iCAAiC,IAAI,CAAC,KAAK,CAClF,QAAQ,GAAG,GAAG,CACf,MAAM,IAAI,EAAE;KACd,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAE,MAAc;IAC5D,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC5E,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC5B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1B,OAAO,GAAG,CAAC,GAAG,OAAO,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC;AACzC,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAoB,EACpB,SAAiC;IAEjC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IAClF,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;IACjD,IAAI,IAAI,GAAG,SAAS,CAAC,CAAC,CAAE,CAAC;IACzB,IAAI,YAAY,GAAG,cAAc,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC;IAE1E,KAAK,MAAM,SAAS,IAAI,SAAS,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,cAAc,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC,CAAC;QAC7E,IAAI,QAAQ,GAAG,YAAY,EAAE,CAAC;YAC5B,IAAI,GAAG,SAAS,CAAC;YACjB,YAAY,GAAG,QAAQ,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AASD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAKhC;IACC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACnC,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC;IACpD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,IAAI,SAAS,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,IAAI,SAAS,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;QAC3E,QAAQ,CAAC,IAAI,CACX,mBAAmB,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,UAAU,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,MAAM,eAAe,CAC7G,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;IACjE,IAAI,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,SAAS,EAAE,CAAC;QACxC,0EAA0E;QAC1E,uEAAuE;QACvE,sEAAsE;QACtE,qBAAqB;QACrB,MAAM,mBAAmB,GACvB,aAAa,GAAG,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC;QAEvF,QAAQ,CAAC,IAAI,CACX,mBAAmB;YACjB,CAAC,CAAC,6BAA6B,MAAM,CAAC,WAAW,UAAU,SAAS,CAAC,WAAW,YAAY;
|
|
1
|
+
{"version":3,"file":"aspect.js","sourceRoot":"","sources":["../src/aspect.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ import { makeUgcInputShape } from "./skills.js";
|
|
|
8
8
|
* обязано её двигать; до этого пересмотра версии не было вообще, поэтому первое
|
|
9
9
|
* её значение совпадает с месяцем самого пересмотра.
|
|
10
10
|
*/
|
|
11
|
-
export declare const CONTRACT_VERSION = "2026-09-
|
|
11
|
+
export declare const CONTRACT_VERSION = "2026-09-14";
|
|
12
12
|
export declare const CONTRACT_VERSION_HEADER = "X-Clipwright-Contract";
|
|
13
13
|
/**
|
|
14
14
|
* Решение по одному полю входа.
|
|
@@ -104,6 +104,10 @@ export declare const FIELD_DISPOSITIONS: {
|
|
|
104
104
|
readonly kind: "implemented";
|
|
105
105
|
readonly provenBy: "egress";
|
|
106
106
|
};
|
|
107
|
+
readonly actor_gender: {
|
|
108
|
+
readonly kind: "implemented";
|
|
109
|
+
readonly provenBy: "egress";
|
|
110
|
+
};
|
|
107
111
|
readonly segments: {
|
|
108
112
|
readonly kind: "rejected";
|
|
109
113
|
readonly message: "segmented clips are not available yet: pass `script` with the full spoken text instead";
|
|
@@ -143,7 +147,11 @@ export interface ContractFlags {
|
|
|
143
147
|
remoteFetch: boolean;
|
|
144
148
|
/** Стадия композиции (US-527, `CLIPWRIGHT_COMPOSE`). */
|
|
145
149
|
compose: boolean;
|
|
150
|
+
/** Генерация личных актёров (clipwright#120); отсутствие значит «выключено». */
|
|
151
|
+
actorGeneration?: boolean;
|
|
146
152
|
}
|
|
153
|
+
/** `create_actor` открыт только вместе с фетч-поверхностью: без неё личного актёра не отрендерить. */
|
|
154
|
+
export declare function isActorGenerationEnabled(env?: Record<string, string | undefined>): boolean;
|
|
147
155
|
/**
|
|
148
156
|
* Значение флагов из окружения. Читается один раз на процесс: килсвитч ставится
|
|
149
157
|
* на деплое, а не меняется от запроса к запросу, и `tools/list` не должен
|
|
@@ -157,7 +165,7 @@ export declare function resolveDispositions(flags: ContractFlags): Record<Contra
|
|
|
157
165
|
* Отличается от `FIELD_DISPOSITIONS` ровно на применённые флаги: базовая
|
|
158
166
|
* таблица говорит, что код УМЕЕТ, эта — что он предлагает прямо сейчас.
|
|
159
167
|
*/
|
|
160
|
-
export declare const EFFECTIVE_DISPOSITIONS: Record<"actor_id" | "aspect_ratio" | "background" | "broll_url" | "caption_style" | "captions" | "character" | "disclosure_overlay" | "image" | "look" | "name" | "person" | "resolution" | "script" | "segments" | "tts_model" | "voice" | "voice_id" | "webhook_url", Disposition>;
|
|
168
|
+
export declare const EFFECTIVE_DISPOSITIONS: Record<"actor_gender" | "actor_id" | "aspect_ratio" | "background" | "broll_url" | "caption_style" | "captions" | "character" | "disclosure_overlay" | "image" | "look" | "name" | "person" | "resolution" | "script" | "segments" | "tts_model" | "voice" | "voice_id" | "webhook_url", Disposition>;
|
|
161
169
|
type RejectedField = {
|
|
162
170
|
[K in ContractField]: (typeof FIELD_DISPOSITIONS)[K]["kind"] extends "rejected" ? K : never;
|
|
163
171
|
}[ContractField];
|
|
@@ -237,6 +245,10 @@ export declare const offeredUgcInput: z.ZodObject<{
|
|
|
237
245
|
person: z.ZodOptional<z.ZodString>;
|
|
238
246
|
actor_id: z.ZodOptional<z.ZodString>;
|
|
239
247
|
image: z.ZodOptional<z.ZodString>;
|
|
248
|
+
actor_gender: z.ZodOptional<z.ZodEnum<{
|
|
249
|
+
female: "female";
|
|
250
|
+
male: "male";
|
|
251
|
+
}>>;
|
|
240
252
|
name: z.ZodOptional<z.ZodString>;
|
|
241
253
|
captions: z.ZodDefault<z.ZodBoolean>;
|
|
242
254
|
caption_style: z.ZodDefault<z.ZodEnum<{
|
|
@@ -8,7 +8,7 @@ import { makeUgcInputShape } from "./skills.js";
|
|
|
8
8
|
* обязано её двигать; до этого пересмотра версии не было вообще, поэтому первое
|
|
9
9
|
* её значение совпадает с месяцем самого пересмотра.
|
|
10
10
|
*/
|
|
11
|
-
export const CONTRACT_VERSION = "2026-09-
|
|
11
|
+
export const CONTRACT_VERSION = "2026-09-14";
|
|
12
12
|
export const CONTRACT_VERSION_HEADER = "X-Clipwright-Contract";
|
|
13
13
|
/**
|
|
14
14
|
* Таблица решений. `as const satisfies Record<…>` даёт СРАЗУ ДВА свойства:
|
|
@@ -61,6 +61,7 @@ export const FIELD_DISPOSITIONS = {
|
|
|
61
61
|
// выключенном флаге `resolveDispositions` переводит её в `rejected` (см. ниже).
|
|
62
62
|
image: { kind: "implemented", provenBy: "egress" },
|
|
63
63
|
actor_id: { kind: "implemented", provenBy: "egress" },
|
|
64
|
+
actor_gender: { kind: "implemented", provenBy: "egress" },
|
|
64
65
|
// Отклоняются: принять поле, зная, что оно не работает, план запрещает сам
|
|
65
66
|
// себе.
|
|
66
67
|
//
|
|
@@ -120,6 +121,16 @@ export const FIELD_DISPOSITIONS = {
|
|
|
120
121
|
};
|
|
121
122
|
/** Поля входа в порядке объявления shape — детерминированный обход реестра. */
|
|
122
123
|
const CONTRACT_FIELDS = Object.keys(makeUgcInputShape);
|
|
124
|
+
/** `create_actor` открыт только вместе с фетч-поверхностью: без неё личного актёра не отрендерить. */
|
|
125
|
+
export function isActorGenerationEnabled(env = process.env) {
|
|
126
|
+
return env.CLIPWRIGHT_ACTOR_GENERATION === "1" && env.CLIPWRIGHT_REMOTE_FETCH === "1";
|
|
127
|
+
}
|
|
128
|
+
/** Лицо словами делает `create_actor`, поэтому при включённой генерации совет ведёт туда. */
|
|
129
|
+
const PERSON_WITH_ACTOR_GENERATION = {
|
|
130
|
+
kind: "warned",
|
|
131
|
+
warning: "person is not honored: this request uses the default actor; create a personal actor from the description with create_actor, then pass its actor_id",
|
|
132
|
+
triggersWhen: "present",
|
|
133
|
+
};
|
|
123
134
|
/**
|
|
124
135
|
* Значение флагов из окружения. Читается один раз на процесс: килсвитч ставится
|
|
125
136
|
* на деплое, а не меняется от запроса к запросу, и `tools/list` не должен
|
|
@@ -152,10 +163,15 @@ const DISCLOSURE_OVERLAY_DISABLED = {
|
|
|
152
163
|
export function resolveDispositions(flags) {
|
|
153
164
|
return {
|
|
154
165
|
...FIELD_DISPOSITIONS,
|
|
166
|
+
person: flags.actorGeneration === true ? PERSON_WITH_ACTOR_GENERATION : FIELD_DISPOSITIONS.person,
|
|
155
167
|
image: flags.remoteFetch ? FIELD_DISPOSITIONS.image : REMOTE_FETCH_DISABLED,
|
|
156
168
|
actor_id: flags.remoteFetch ? FIELD_DISPOSITIONS.actor_id : {
|
|
157
169
|
kind: "rejected", message: "actor_id is temporarily disabled (remote media fetch is off); omit it to use the default actor",
|
|
158
170
|
},
|
|
171
|
+
// Подсказка о лице из `image` без самого `image` не имеет смысла: гасится вместе с ним.
|
|
172
|
+
actor_gender: flags.remoteFetch ? FIELD_DISPOSITIONS.actor_gender : {
|
|
173
|
+
kind: "rejected", message: "actor_gender is temporarily disabled together with image (remote media fetch is off); omit both to use the default actor",
|
|
174
|
+
},
|
|
159
175
|
// Тот же приём, что у `image` (US-524): базовая строка объявляет, что поле
|
|
160
176
|
// РАБОТАЕТ, а выключенный флаг переводит её в отказ. Обещать выбор фона,
|
|
161
177
|
// когда стадия композиции выключена, значило бы принять поле, которое
|
|
@@ -174,7 +190,10 @@ export function resolveDispositions(flags) {
|
|
|
174
190
|
* Отличается от `FIELD_DISPOSITIONS` ровно на применённые флаги: базовая
|
|
175
191
|
* таблица говорит, что код УМЕЕТ, эта — что он предлагает прямо сейчас.
|
|
176
192
|
*/
|
|
177
|
-
export const EFFECTIVE_DISPOSITIONS = resolveDispositions(
|
|
193
|
+
export const EFFECTIVE_DISPOSITIONS = resolveDispositions({
|
|
194
|
+
...contractFlagsFromEnv(),
|
|
195
|
+
actorGeneration: isActorGenerationEnabled(),
|
|
196
|
+
});
|
|
178
197
|
/**
|
|
179
198
|
* Дефолт поля — то, что схема подставит на `undefined`. Берём у самой схемы, а
|
|
180
199
|
* не переписываем значения рядом: второй список дефолтов разошёлся бы с первым
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract-dispositions.js","sourceRoot":"","sources":["../src/contract-dispositions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,uFAAuF;AACvF,uEAAuE;AAEvE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,
|
|
1
|
+
{"version":3,"file":"contract-dispositions.js","sourceRoot":"","sources":["../src/contract-dispositions.ts"],"names":[],"mappings":"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"}
|
package/dist/endpoints.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/** Маршруты API (clipwright#135): контрактный тест `apps/api` сверяет их с `app.routes`, */
|
|
2
2
|
/** квикстарт печатает отсюда список «что стоит денег». */
|
|
3
3
|
export interface ApiEndpoint {
|
|
4
|
-
method: "GET" | "POST";
|
|
4
|
+
method: "GET" | "POST" | "DELETE";
|
|
5
5
|
/** Путь в записи Hono: параметр — `:id`. */
|
|
6
6
|
path: string;
|
|
7
7
|
/** Может ли вызов списать кредиты. */
|
package/dist/endpoints.js
CHANGED
|
@@ -7,6 +7,9 @@ export const API_ENDPOINTS = [
|
|
|
7
7
|
{ method: "POST", path: "/v1/skills/make_ugc/run", billed: true, onQuickstart: true },
|
|
8
8
|
{ method: "GET", path: "/v1/public/skills", billed: false, onQuickstart: false },
|
|
9
9
|
{ method: "GET", path: "/v1/actors", billed: false, onQuickstart: false },
|
|
10
|
+
{ method: "DELETE", path: "/v1/actors/:id", billed: false, onQuickstart: false },
|
|
11
|
+
{ method: "POST", path: "/v1/skills/create_actor/quote", billed: false, onQuickstart: false },
|
|
12
|
+
{ method: "POST", path: "/v1/skills/create_actor/run", billed: true, onQuickstart: false },
|
|
10
13
|
{ method: "POST", path: "/v1/uploads", billed: false, onQuickstart: false },
|
|
11
14
|
{ method: "GET", path: "/internal/portfolio-metrics", billed: false, onQuickstart: false },
|
|
12
15
|
];
|
package/dist/endpoints.js.map
CHANGED
|
@@ -1 +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"}
|
|
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,QAAQ,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE;IAChF,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,+BAA+B,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE;IAC7F,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,6BAA6B,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE;IAC1F,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
|
@@ -178,7 +178,7 @@ export declare function scriptEncodingLostBody(args: {
|
|
|
178
178
|
}): ScriptEncodingLostError;
|
|
179
179
|
/** КОДЫ С ГОЛЫМ КОНВЕРТОМ — ОДНИМ РЕЕСТРОМ: перечень §6 `docs/03-api.md` объявлен */
|
|
180
180
|
/** исчерпывающим. Устройство сторожей — `docs/41-api-error-contract.md`. */
|
|
181
|
-
declare const BARE_ERROR_CODES: readonly ["aspect_conflict", "actor_unavailable", "actor_format_unavailable", "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"];
|
|
181
|
+
declare const BARE_ERROR_CODES: readonly ["aspect_conflict", "actor_unavailable", "actor_format_unavailable", "actor_storage_unavailable", "actor_generation_disabled", "actor_in_use", "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"];
|
|
182
182
|
/** Код отказа, тело которого несёт только `code` и `message`. */
|
|
183
183
|
export type BareApiErrorCode = (typeof BARE_ERROR_CODES)[number];
|
|
184
184
|
/** ВСЕ коды, которые умеет вернуть API: голые плюс типизированные. Значения вторых */
|
package/dist/errors.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
// Только ради кода 429 в реестре ниже: имя берётся из его схемы, а не пишется
|
|
3
3
|
// здесь литералом (единственный дом формы 429 — `rate-limit.ts`).
|
|
4
|
-
import { rateLimitedError } from "./rate-limit.js";
|
|
4
|
+
import { actorCreationLimitedError, rateLimitedError } from "./rate-limit.js";
|
|
5
5
|
/**
|
|
6
6
|
* ТЕЛА ОТКАЗОВ — СХЕМАМИ, А НЕ `c.json({...})` В ОБРАБОТЧИКЕ.
|
|
7
7
|
*
|
|
@@ -242,6 +242,9 @@ const BARE_ERROR_CODES = [
|
|
|
242
242
|
"aspect_conflict",
|
|
243
243
|
"actor_unavailable",
|
|
244
244
|
"actor_format_unavailable",
|
|
245
|
+
"actor_storage_unavailable",
|
|
246
|
+
"actor_generation_disabled",
|
|
247
|
+
"actor_in_use",
|
|
245
248
|
"idempotency_key_required",
|
|
246
249
|
"idempotency_key_reused",
|
|
247
250
|
"internal_error",
|
|
@@ -266,6 +269,7 @@ export const API_ERROR_CODES = [
|
|
|
266
269
|
debtOutstandingError.shape.error.shape.code.value,
|
|
267
270
|
accountNotAdmittedError.shape.error.shape.code.value,
|
|
268
271
|
rateLimitedError.shape.error.shape.code.value,
|
|
272
|
+
actorCreationLimitedError.shape.error.shape.code.value,
|
|
269
273
|
];
|
|
270
274
|
/** Тело голого отказа. Единственный путь к нему: код вне реестра не компилируется, */
|
|
271
275
|
/** а конверт мимо этой функции валит `scripts/api-error-envelope.test.ts`. */
|
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;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/idempotency.d.ts
CHANGED
|
@@ -43,3 +43,6 @@ export declare function requestHash(input: unknown): string;
|
|
|
43
43
|
* (дефект 3.2), один клиент на одном входе — стабильный ключ (дедуп денег).
|
|
44
44
|
*/
|
|
45
45
|
export declare function idempotencyKeyFor(input: unknown, clientId: string): string;
|
|
46
|
+
/** Тот же ключ для `create_actor` (clipwright#120): своя схема, свои дефолты. */
|
|
47
|
+
/** Разбором `make_ugc` здесь не обойтись — он срезал бы поля актёра в ноль. */
|
|
48
|
+
export declare function actorIdempotencyKeyFor(input: unknown, clientId: string): string;
|
package/dist/idempotency.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
|
+
import { createActorInput } from "./account-actors.js";
|
|
2
3
|
import { makeUgcInput } from "./skills.js";
|
|
3
4
|
/**
|
|
4
5
|
* Отпечаток запроса под ключом идемпотентности + ключ идемпотентности per-client.
|
|
@@ -69,4 +70,12 @@ export function idempotencyKeyFor(input, clientId) {
|
|
|
69
70
|
.update(clientId + JSON.stringify(canonicalize(parsed)))
|
|
70
71
|
.digest("hex");
|
|
71
72
|
}
|
|
73
|
+
/** Тот же ключ для `create_actor` (clipwright#120): своя схема, свои дефолты. */
|
|
74
|
+
/** Разбором `make_ugc` здесь не обойтись — он срезал бы поля актёра в ноль. */
|
|
75
|
+
export function actorIdempotencyKeyFor(input, clientId) {
|
|
76
|
+
const parsed = createActorInput.parse(input);
|
|
77
|
+
return createHash("sha256")
|
|
78
|
+
.update(clientId + JSON.stringify(canonicalize(parsed)))
|
|
79
|
+
.digest("hex");
|
|
80
|
+
}
|
|
72
81
|
//# sourceMappingURL=idempotency.js.map
|
package/dist/idempotency.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"idempotency.js","sourceRoot":"","sources":["../src/idempotency.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C;;;;;;;;;GASG;AAEH;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,MAAM,MAAM,GAAG,KAAgC,CAAC;QAChD,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YAC7C,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC9B,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,OAAO,UAAU,CAAC,QAAQ,CAAC;SACxB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;SAC3C,MAAM,CAAC,KAAK,CAAC,CAAC;AACnB,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAc,EAAE,QAAgB;IAChE,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACzC,OAAO,UAAU,CAAC,QAAQ,CAAC;SACxB,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;SACvD,MAAM,CAAC,KAAK,CAAC,CAAC;AACnB,CAAC"}
|
|
1
|
+
{"version":3,"file":"idempotency.js","sourceRoot":"","sources":["../src/idempotency.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C;;;;;;;;;GASG;AAEH;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,MAAM,MAAM,GAAG,KAAgC,CAAC;QAChD,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YAC7C,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC9B,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,OAAO,UAAU,CAAC,QAAQ,CAAC;SACxB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;SAC3C,MAAM,CAAC,KAAK,CAAC,CAAC;AACnB,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAc,EAAE,QAAgB;IAChE,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACzC,OAAO,UAAU,CAAC,QAAQ,CAAC;SACxB,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;SACvD,MAAM,CAAC,KAAK,CAAC,CAAC;AACnB,CAAC;AAED,iFAAiF;AACjF,+EAA+E;AAC/E,MAAM,UAAU,sBAAsB,CAAC,KAAc,EAAE,QAAgB;IACrE,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC7C,OAAO,UAAU,CAAC,QAAQ,CAAC;SACxB,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;SACvD,MAAM,CAAC,KAAK,CAAC,CAAC;AACnB,CAAC"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export * from "./skills.js";
|
|
2
2
|
export * from "./actors.js";
|
|
3
|
+
// Личные актёры аккаунта: вход и итог скилла `create_actor` (clipwright#120).
|
|
4
|
+
export * from "./account-actors.js";
|
|
3
5
|
// Реестр диспозиций импортирует shape из skills.js — направление одностороннее,
|
|
4
6
|
// цикла нет. Отсюда же приходит MakeUgcInputArgs (выводится из предлагаемого
|
|
5
7
|
// shape, а не из полного).
|
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,oBAAoB,CAAC;AACnC,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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,8EAA8E;AAC9E,cAAc,qBAAqB,CAAC;AACpC,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,oBAAoB,CAAC;AACnC,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,7 @@ 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
|
+
export declare const SDK_PACKAGE = "@clipwright/sdk";
|
|
12
13
|
/** Мажор Node из `engines` клиентских пакетов; квикстарт называет его (clipwright#129). */
|
|
13
14
|
export declare const NODE_MIN_MAJOR = 20;
|
|
14
15
|
/** Адрес API ИЗ ОКРУЖЕНИЯ — только `https:`: по нему уходит `Authorization: Bearer */
|
package/dist/public-endpoints.js
CHANGED
|
@@ -9,6 +9,7 @@ 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
|
+
export const SDK_PACKAGE = "@clipwright/sdk";
|
|
12
13
|
/** Мажор Node из `engines` клиентских пакетов; квикстарт называет его (clipwright#129). */
|
|
13
14
|
export const NODE_MIN_MAJOR = 20;
|
|
14
15
|
/** Петлевые имена — единственное, чему разрешён `http:`: локальный API никуда не */
|
|
@@ -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;
|
|
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;AACpD,MAAM,CAAC,MAAM,WAAW,GAAG,iBAAiB,CAAC;AAE7C,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"}
|
package/dist/rate-limit.d.ts
CHANGED
|
@@ -158,3 +158,28 @@ export declare function authThrottledBody(args: {
|
|
|
158
158
|
windowSeconds: number;
|
|
159
159
|
retryAfterSeconds: number;
|
|
160
160
|
}): RateLimitedError;
|
|
161
|
+
/** Лимиты `create_actor` на аккаунт за скользящие сутки (решение владельца после G0b, clipwright#120). */
|
|
162
|
+
/** Создания считаются по ранам любого исхода, отказы и непригодные портреты — по событиям воркера. */
|
|
163
|
+
export declare const ACTOR_LIMIT_WINDOW_SECONDS = 86400;
|
|
164
|
+
export declare const ACTOR_LIMIT_KINDS: readonly ["creations", "prompt_refusals", "unusable_portraits"];
|
|
165
|
+
export type ActorLimitKind = (typeof ACTOR_LIMIT_KINDS)[number];
|
|
166
|
+
export declare const ACTOR_LIMITS: Readonly<Record<ActorLimitKind, number>>;
|
|
167
|
+
export declare const actorCreationLimitedError: z.ZodObject<{
|
|
168
|
+
error: z.ZodObject<{
|
|
169
|
+
code: z.ZodLiteral<"actor_creation_limited">;
|
|
170
|
+
message: z.ZodString;
|
|
171
|
+
limit_kind: z.ZodEnum<{
|
|
172
|
+
creations: "creations";
|
|
173
|
+
prompt_refusals: "prompt_refusals";
|
|
174
|
+
unusable_portraits: "unusable_portraits";
|
|
175
|
+
}>;
|
|
176
|
+
limit: z.ZodNumber;
|
|
177
|
+
window_seconds: z.ZodNumber;
|
|
178
|
+
retry_after_seconds: z.ZodNumber;
|
|
179
|
+
}, z.core.$strip>;
|
|
180
|
+
}, z.core.$strip>;
|
|
181
|
+
export type ActorCreationLimitedError = z.infer<typeof actorCreationLimitedError>;
|
|
182
|
+
export declare function actorCreationLimitedBody(args: {
|
|
183
|
+
kind: ActorLimitKind;
|
|
184
|
+
retryAfterSeconds: number;
|
|
185
|
+
}): ActorCreationLimitedError;
|
package/dist/rate-limit.js
CHANGED
|
@@ -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
|