@clipwright/core 0.18.0 → 0.20.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 +44 -0
- package/dist/__fixtures__/queue-promises.d.ts +5 -84
- package/dist/__fixtures__/queue-promises.js +7 -84
- package/dist/__fixtures__/queue-promises.js.map +1 -1
- package/dist/account-actors.d.ts +25 -25
- package/dist/account-actors.js +25 -25
- package/dist/account-actors.js.map +1 -1
- package/dist/account.d.ts +4 -10
- package/dist/account.js +6 -12
- package/dist/account.js.map +1 -1
- package/dist/actor-bounds.d.ts +4 -4
- package/dist/actor-bounds.js +4 -4
- package/dist/actor-bounds.js.map +1 -1
- package/dist/actor-qualities.d.ts +3 -3
- package/dist/actor-qualities.js +3 -3
- package/dist/actor-qualities.js.map +1 -1
- package/dist/actors.d.ts +8 -8
- package/dist/actors.js +9 -9
- package/dist/actors.js.map +1 -1
- package/dist/api-failure.d.ts +28 -129
- package/dist/api-failure.js +52 -225
- package/dist/api-failure.js.map +1 -1
- package/dist/aspect.d.ts +26 -96
- package/dist/aspect.js +32 -108
- package/dist/aspect.js.map +1 -1
- package/dist/contract-dispositions.d.ts +42 -167
- package/dist/contract-dispositions.js +54 -184
- package/dist/contract-dispositions.js.map +1 -1
- package/dist/endpoints.d.ts +5 -5
- package/dist/endpoints.js +3 -3
- package/dist/endpoints.js.map +1 -1
- package/dist/errors.d.ts +33 -101
- package/dist/errors.js +42 -108
- package/dist/errors.js.map +1 -1
- package/dist/faceless-cut-style.d.ts +115 -0
- package/dist/faceless-cut-style.js +109 -0
- package/dist/faceless-cut-style.js.map +1 -0
- package/dist/faceless-image-qualification.d.ts +97 -0
- package/dist/faceless-image-qualification.js +145 -0
- package/dist/faceless-image-qualification.js.map +1 -0
- package/dist/faceless-short-61.d.ts +83 -0
- package/dist/faceless-short-61.js +152 -0
- package/dist/faceless-short-61.js.map +1 -0
- package/dist/faceless-storyboard-timing.d.ts +40 -0
- package/dist/faceless-storyboard-timing.js +97 -0
- package/dist/faceless-storyboard-timing.js.map +1 -0
- package/dist/faceless-storyboard-v2-plan.d.ts +3 -0
- package/dist/faceless-storyboard-v2-plan.js +112 -0
- package/dist/faceless-storyboard-v2-plan.js.map +1 -0
- package/dist/faceless-storyboard-v2-timing.d.ts +52 -0
- package/dist/faceless-storyboard-v2-timing.js +136 -0
- package/dist/faceless-storyboard-v2-timing.js.map +1 -0
- package/dist/faceless-storyboard-v2.d.ts +44 -0
- package/dist/faceless-storyboard-v2.js +43 -0
- package/dist/faceless-storyboard-v2.js.map +1 -0
- package/dist/faceless-storyboard.d.ts +55 -0
- package/dist/faceless-storyboard.js +105 -0
- package/dist/faceless-storyboard.js.map +1 -0
- package/dist/idempotency.d.ts +8 -44
- package/dist/idempotency.js +10 -44
- package/dist/idempotency.js.map +1 -1
- package/dist/index.js +21 -25
- package/dist/index.js.map +1 -1
- package/dist/long-form-pricing.d.ts +4 -4
- package/dist/long-form-pricing.js +4 -4
- package/dist/long-form-pricing.js.map +1 -1
- package/dist/long-form-profile.d.ts +2 -2
- package/dist/long-form-profile.js +2 -2
- package/dist/long-form-profile.js.map +1 -1
- package/dist/pacing.d.ts +1 -1
- package/dist/pacing.js +1 -1
- package/dist/pacing.js.map +1 -1
- package/dist/public-endpoints.d.ts +9 -11
- package/dist/public-endpoints.js +11 -13
- package/dist/public-endpoints.js.map +1 -1
- package/dist/rate-limit.d.ts +23 -130
- package/dist/rate-limit.js +27 -132
- package/dist/rate-limit.js.map +1 -1
- package/dist/render-backend.d.ts +30 -145
- package/dist/render-backend.js +4 -27
- package/dist/render-backend.js.map +1 -1
- package/dist/run-preflight.d.ts +4 -4
- package/dist/run-preflight.js +10 -10
- package/dist/run-preflight.js.map +1 -1
- package/dist/run-static-warnings.d.ts +8 -8
- package/dist/run-static-warnings.js +24 -24
- package/dist/run-static-warnings.js.map +1 -1
- package/dist/runs.d.ts +18 -55
- package/dist/runs.js +26 -94
- package/dist/runs.js.map +1 -1
- package/dist/script-integrity.d.ts +6 -7
- package/dist/script-integrity.js +7 -8
- package/dist/script-integrity.js.map +1 -1
- package/dist/semantic-inserts.d.ts +4 -4
- package/dist/semantic-inserts.js +6 -6
- package/dist/semantic-inserts.js.map +1 -1
- package/dist/skills.d.ts +33 -107
- package/dist/skills.js +72 -161
- package/dist/skills.js.map +1 -1
- package/dist/tts-backend.d.ts +13 -42
- package/dist/tts-backend.js +2 -10
- package/dist/tts-backend.js.map +1 -1
- package/dist/uploads.d.ts +4 -4
- package/dist/uploads.js +4 -4
- package/dist/uploads.js.map +1 -1
- package/dist/vendor-response.d.ts +17 -80
- package/dist/vendor-response.js +19 -67
- package/dist/vendor-response.js.map +1 -1
- package/dist/voice-admission.d.ts +5 -5
- package/dist/voice-admission.js +6 -6
- package/dist/voice-admission.js.map +1 -1
- package/dist/voice-catalog-data.d.ts +2 -2
- package/dist/voice-catalog-data.js +2 -2
- package/dist/voice-catalog-data.js.map +1 -1
- package/dist/voice-catalog.d.ts +5 -5
- package/dist/voice-catalog.js +6 -6
- package/dist/voice-catalog.js.map +1 -1
- package/dist/voice-listing.d.ts +4 -4
- package/dist/voice-listing.js +6 -6
- package/dist/voice-listing.js.map +1 -1
- package/dist/voices.d.ts +40 -82
- package/dist/voices.js +56 -99
- package/dist/voices.js.map +1 -1
- package/package.json +1 -1
package/dist/runs.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
/**
|
|
2
|
+
/** Run stages of both skills: make_ugc and create_actor (`generating`). */
|
|
3
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";
|
|
@@ -13,8 +13,8 @@ export declare const runState: z.ZodEnum<{
|
|
|
13
13
|
uploading: "uploading";
|
|
14
14
|
}>;
|
|
15
15
|
export type RunState = z.infer<typeof runState>;
|
|
16
|
-
/**
|
|
17
|
-
/**
|
|
16
|
+
/** The signature covers GET only, so `curl -I` gets 403 and reads as "the link is dead". */
|
|
17
|
+
/** Said where the link is handed out. */
|
|
18
18
|
export declare const VIDEO_URL_CHECK: string;
|
|
19
19
|
export declare const runStep: z.ZodObject<{
|
|
20
20
|
step: z.ZodString;
|
|
@@ -32,33 +32,14 @@ export declare const runStep: z.ZodObject<{
|
|
|
32
32
|
bytes: z.ZodNumber;
|
|
33
33
|
}, z.core.$strip>>>;
|
|
34
34
|
}, z.core.$strip>;
|
|
35
|
-
/**
|
|
36
|
-
|
|
37
|
-
* /v1/runs/{id}, без протечки внутреннего роутинга (урок из teardown
|
|
38
|
-
* AgentMedia: реюз-раны у них 404-ят на документированном эндпоинте).
|
|
39
|
-
*/
|
|
40
|
-
/**
|
|
41
|
-
* МАРКИРОВКА AI-ВЫВОДА — константа, а не строка на каждой поверхности.
|
|
42
|
-
*
|
|
43
|
-
* Ст. 50 EU AI Act применяется с 2026-08-02. Юридическую применимость к
|
|
44
|
-
* прототипу мы не проверяли и не выдаём техническую меру за соответствие; но
|
|
45
|
-
* ролик, синтезированный целиком, обязан говорить об этом сам — независимо от
|
|
46
|
-
* того, кто его потом перешлёт.
|
|
47
|
-
*
|
|
48
|
-
* Текст живёт ОДНОЙ константой: три поверхности (SDK, CLI, MCP) отдают его
|
|
49
|
-
* дословно, и разъехавшиеся формулировки означали бы, что раскрытие зависит от
|
|
50
|
-
* того, каким клиентом пользователь скачал файл.
|
|
51
|
-
*/
|
|
35
|
+
/** AI output disclosure, one constant for every surface: a fully synthetic clip says so */
|
|
36
|
+
/** itself, the same way whichever client downloaded it. Not a claim of legal compliance. */
|
|
52
37
|
export declare const AI_DISCLOSURE_TEXT = "This video was generated with AI: the actor, the voice and the lip sync are synthetic.";
|
|
53
|
-
/**
|
|
54
|
-
|
|
55
|
-
* ключи должны совпадать у писателя и у любого будущего читателя. Носитель
|
|
56
|
-
* слабее встроенного тега (теряется при пересохранении), зато проставляется
|
|
57
|
-
* всегда и детерминированно, без разбора боксов MP4.
|
|
58
|
-
*/
|
|
38
|
+
/** Storage object metadata, one constant so writer and readers share keys. Weaker than an */
|
|
39
|
+
/** embedded tag (lost on re-save), but always set, without parsing MP4 boxes. */
|
|
59
40
|
export declare const AI_DISCLOSURE_OBJECT_METADATA: Readonly<Record<string, string>>;
|
|
60
|
-
/**
|
|
61
|
-
/**
|
|
41
|
+
/** Run id shape, a separate schema because INPUT asks for it too: the MCP `get_run` tool, */
|
|
42
|
+
/** where a bare `z.string()` let garbage reach the network. */
|
|
62
43
|
export declare const runId: z.ZodString;
|
|
63
44
|
export declare const run: z.ZodObject<{
|
|
64
45
|
run_id: z.ZodString;
|
|
@@ -194,29 +175,13 @@ export declare const run: z.ZodObject<{
|
|
|
194
175
|
finished_at: z.ZodNullable<z.ZodString>;
|
|
195
176
|
}, z.core.$strip>;
|
|
196
177
|
export type Run = z.infer<typeof run>;
|
|
197
|
-
/**
|
|
198
|
-
|
|
199
|
-
* истины о завершённости. ЗАЧЕМ отдельно, а не строковые литералы: до US-501
|
|
200
|
-
* терминальность проверялась `"succeeded"`/`"failed"` в трёх местах (SDK-цикл
|
|
201
|
-
* `makeUgc`, две ветки MCP `get_run`); расхождение при правке ловилось бы только
|
|
202
|
-
* в проде.
|
|
203
|
-
*/
|
|
178
|
+
/** Terminal run states as shared constants, the single source of truth about completion, */
|
|
179
|
+
/** instead of string literals repeated across consumers. */
|
|
204
180
|
export declare const SUCCEEDED_STATE: "succeeded";
|
|
205
181
|
export declare const FAILED_STATE: "failed";
|
|
206
182
|
export declare const TERMINAL_STATES: readonly ["succeeded", "failed"];
|
|
207
|
-
/**
|
|
208
|
-
|
|
209
|
-
* (enum `runState` → `z.string()`). Все остальные поля, включая
|
|
210
|
-
* `final_output.portrait_url`/`character_*`, НАСЛЕДУЮТСЯ через `run.extend` —
|
|
211
|
-
* рукописный форк схемы ЗАПРЕЩЁН (связывающее условие Architect A11): форк молча
|
|
212
|
-
* ронял бы новые поля `run` из read-контракта, что и есть тот класс дефектов.
|
|
213
|
-
*
|
|
214
|
-
* ЗАЧЕМ read/write-асимметрия (docs/12:198): добавление стадии на сервере
|
|
215
|
-
* (напр. `"publishing"`) сломало бы строгий `run.parse` в `getRun` у КАЖДОГО уже
|
|
216
|
-
* установленного MCP — неизвестная стадия отверглась бы. Чтение толерантно к
|
|
217
|
-
* расширению enum стадий; строгость ЗАПИСИ (`run.parse` в `startUgc`) при этом
|
|
218
|
-
* сохраняется — сервер не должен принимать мусорное тело.
|
|
219
|
-
*/
|
|
183
|
+
/** Tolerant READ projection: only `state` is loosened to `z.string()`, everything else is */
|
|
184
|
+
/** inherited via `run.extend`, so a new server stage does not break installed clients. */
|
|
220
185
|
export declare const runRead: z.ZodObject<{
|
|
221
186
|
run_id: z.ZodString;
|
|
222
187
|
actor: z.ZodOptional<z.ZodObject<{
|
|
@@ -341,14 +306,12 @@ export declare const runRead: z.ZodObject<{
|
|
|
341
306
|
state: z.ZodString;
|
|
342
307
|
}, z.core.$strip>;
|
|
343
308
|
export type RunRead = z.infer<typeof runRead>;
|
|
344
|
-
/**
|
|
345
|
-
/**
|
|
309
|
+
/** A money field of a run. Names are derived FROM THE SCHEMA: a hand list next to the MCP */
|
|
310
|
+
/** formatter kept losing them. */
|
|
346
311
|
export type RunMoneyField = Extract<keyof RunRead, `credits_${string}`>;
|
|
347
312
|
export declare const RUN_MONEY_FIELDS: readonly RunMoneyField[];
|
|
348
|
-
/**
|
|
313
|
+
/** A run's money fields as one object, for surfaces that build their own response. */
|
|
349
314
|
export declare function runMoney(read: RunRead): Pick<RunRead, RunMoneyField>;
|
|
350
|
-
/**
|
|
351
|
-
|
|
352
|
-
* поэтому неизвестный статус (расширение enum) корректно даёт `false`.
|
|
353
|
-
*/
|
|
315
|
+
/** Whether a run is terminal. Takes a `string` (the read projection), so an unknown */
|
|
316
|
+
/** status from an extended enum correctly gives `false`. */
|
|
354
317
|
export declare function isTerminal(state: string): boolean;
|
package/dist/runs.js
CHANGED
|
@@ -5,7 +5,7 @@ import { actorSelection } from "./actors.js";
|
|
|
5
5
|
import { createdActor } from "./account-actors.js";
|
|
6
6
|
import { faceBillingAdmissionTermsSchema } from "./billing-terms.js";
|
|
7
7
|
import { brollPolicy } from "./broll-policy.js";
|
|
8
|
-
/**
|
|
8
|
+
/** Run stages of both skills: make_ugc and create_actor (`generating`). */
|
|
9
9
|
export const RUN_STATES = [
|
|
10
10
|
"queued",
|
|
11
11
|
"generating",
|
|
@@ -18,8 +18,8 @@ export const RUN_STATES = [
|
|
|
18
18
|
"failed",
|
|
19
19
|
];
|
|
20
20
|
export const runState = z.enum(RUN_STATES);
|
|
21
|
-
/**
|
|
22
|
-
/**
|
|
21
|
+
/** The signature covers GET only, so `curl -I` gets 403 and reads as "the link is dead". */
|
|
22
|
+
/** Said where the link is handed out. */
|
|
23
23
|
export const VIDEO_URL_CHECK = "signed for GET only: HEAD returns 403. To check it without downloading, " +
|
|
24
24
|
'use a ranged GET (curl -r 0-0), not curl -I.';
|
|
25
25
|
export const runStep = z.object({
|
|
@@ -31,37 +31,18 @@ export const runStep = z.object({
|
|
|
31
31
|
.array(z.object({ kind: z.string(), url: z.string().url(), bytes: z.number().int() }))
|
|
32
32
|
.default([]),
|
|
33
33
|
});
|
|
34
|
-
/**
|
|
35
|
-
|
|
36
|
-
* /v1/runs/{id}, без протечки внутреннего роутинга (урок из teardown
|
|
37
|
-
* AgentMedia: реюз-раны у них 404-ят на документированном эндпоинте).
|
|
38
|
-
*/
|
|
39
|
-
/**
|
|
40
|
-
* МАРКИРОВКА AI-ВЫВОДА — константа, а не строка на каждой поверхности.
|
|
41
|
-
*
|
|
42
|
-
* Ст. 50 EU AI Act применяется с 2026-08-02. Юридическую применимость к
|
|
43
|
-
* прототипу мы не проверяли и не выдаём техническую меру за соответствие; но
|
|
44
|
-
* ролик, синтезированный целиком, обязан говорить об этом сам — независимо от
|
|
45
|
-
* того, кто его потом перешлёт.
|
|
46
|
-
*
|
|
47
|
-
* Текст живёт ОДНОЙ константой: три поверхности (SDK, CLI, MCP) отдают его
|
|
48
|
-
* дословно, и разъехавшиеся формулировки означали бы, что раскрытие зависит от
|
|
49
|
-
* того, каким клиентом пользователь скачал файл.
|
|
50
|
-
*/
|
|
34
|
+
/** AI output disclosure, one constant for every surface: a fully synthetic clip says so */
|
|
35
|
+
/** itself, the same way whichever client downloaded it. Not a claim of legal compliance. */
|
|
51
36
|
export const AI_DISCLOSURE_TEXT = "This video was generated with AI: the actor, the voice and the lip sync are synthetic.";
|
|
52
|
-
/**
|
|
53
|
-
|
|
54
|
-
* ключи должны совпадать у писателя и у любого будущего читателя. Носитель
|
|
55
|
-
* слабее встроенного тега (теряется при пересохранении), зато проставляется
|
|
56
|
-
* всегда и детерминированно, без разбора боксов MP4.
|
|
57
|
-
*/
|
|
37
|
+
/** Storage object metadata, one constant so writer and readers share keys. Weaker than an */
|
|
38
|
+
/** embedded tag (lost on re-save), but always set, without parsing MP4 boxes. */
|
|
58
39
|
export const AI_DISCLOSURE_OBJECT_METADATA = {
|
|
59
40
|
"ai-generated": "true",
|
|
60
41
|
generator: "clipwright",
|
|
61
42
|
"ai-disclosure": AI_DISCLOSURE_TEXT,
|
|
62
43
|
};
|
|
63
|
-
/**
|
|
64
|
-
/**
|
|
44
|
+
/** Run id shape, a separate schema because INPUT asks for it too: the MCP `get_run` tool, */
|
|
45
|
+
/** where a bare `z.string()` let garbage reach the network. */
|
|
65
46
|
export const runId = z.string().regex(/^run_[a-zA-Z0-9]+$/);
|
|
66
47
|
export const run = z.object({
|
|
67
48
|
run_id: runId,
|
|
@@ -73,22 +54,10 @@ export const run = z.object({
|
|
|
73
54
|
billing_terms: faceBillingAdmissionTermsSchema.optional(),
|
|
74
55
|
resolved_broll_policy: brollPolicy.optional(),
|
|
75
56
|
warnings: z.array(z.string()).default([]),
|
|
76
|
-
/**
|
|
77
|
-
|
|
78
|
-
* с clipwright#48, поэтому сказано здесь, в контракте, а не только в коде.
|
|
79
|
-
*
|
|
80
|
-
* Второй случай: ран, не доживший до расчёта, чей счёт записал предыдущий
|
|
81
|
-
* проход сборщика. Его исход НЕИЗВЕСТЕН — успел он отдать видео или упал,
|
|
82
|
-
* по строке рана не различить, — поэтому состояние остаётся нетерминальным
|
|
83
|
-
* (врать о нём нельзя), а `error` несёт пометку «нужен разбор человеком».
|
|
84
|
-
* Пишет её `markRunForReview`.
|
|
85
|
-
*
|
|
86
|
-
* ЧТО ИЗ ЭТОГО СЛЕДУЕТ КЛИЕНТУ: опрос по-прежнему ждёт `succeeded` либо
|
|
87
|
-
* `failed`, а `error` при нетерминальном состоянии читается как объяснение
|
|
88
|
-
* задержки, а не как исход. Ран в этом состоянии сам не завершится.
|
|
89
|
-
*/
|
|
57
|
+
/** The reason. A non-empty `error` does NOT imply `state: "failed"`: on a non-terminal */
|
|
58
|
+
/** run it explains a delay awaiting human review, and such a run will not finish by itself. */
|
|
90
59
|
error: z.string().nullable(),
|
|
91
|
-
/**
|
|
60
|
+
/** The result of a `create_actor` run; absent on `make_ugc`, whose result is `final_output`. */
|
|
92
61
|
created_actor: createdActor.optional(),
|
|
93
62
|
final_output: z
|
|
94
63
|
.object({
|
|
@@ -104,34 +73,16 @@ export const run = z.object({
|
|
|
104
73
|
face_credits_per_second: z.number().int().positive().optional(),
|
|
105
74
|
face_tariff_id: z.string().min(1).optional(),
|
|
106
75
|
speech_timing_gaps: speechRhythmResult.optional(),
|
|
107
|
-
/**
|
|
108
|
-
|
|
109
|
-
*
|
|
110
|
-
* `z.literal(true)` — не педантизм: опциональное поле можно забыть
|
|
111
|
-
* проставить, и ролик уедет непомеченным, а схема промолчит. Здесь она
|
|
112
|
-
* не промолчит — `run.parse` уронит терминальный ответ, и дефект
|
|
113
|
-
* обнаружится у нас, а не у получателя ролика.
|
|
114
|
-
*/
|
|
76
|
+
/** REQUIRED disclosure fields: an optional one could be forgotten and the clip ship */
|
|
77
|
+
/** unmarked, while `z.literal(true)` makes `run.parse` fail on our side first. */
|
|
115
78
|
ai_generated: z.literal(true),
|
|
116
79
|
ai_disclosure: z.string().min(1),
|
|
117
|
-
/**
|
|
118
|
-
|
|
119
|
-
*
|
|
120
|
-
* До этой стори ответ нёс одно значение, и по нему нельзя было отличить
|
|
121
|
-
* «клиент попросил 1:1 и получил 1:1» от «клиент попросил 1:1, вендору
|
|
122
|
-
* ушло 9:16, а квадрат собрали мы». Живое измерение US-530 показало, что
|
|
123
|
-
* разница видимая: вендор в одну сторону режет кадр, в другую добивает
|
|
124
|
-
* белым. Отладка расхождения по одному полю невозможна — оно не хранит
|
|
125
|
-
* того, что произошло.
|
|
126
|
-
*
|
|
127
|
-
* Поля опциональны, потому что заполняются только на пути композиции:
|
|
128
|
-
* ран без неё отдаёт вендорский файл как есть, и трёх значений у него
|
|
129
|
-
* нет — есть одно.
|
|
130
|
-
*/
|
|
80
|
+
/** Three formats, not one: requested, sent to the vendor and final. Set only on the */
|
|
81
|
+
/** composition path; without it the vendor file is returned as is. */
|
|
131
82
|
requested_aspect_ratio: z.string().optional(),
|
|
132
83
|
vendor_aspect_ratio: z.string().optional(),
|
|
133
84
|
final_aspect_ratio: z.string().optional(),
|
|
134
|
-
/**
|
|
85
|
+
/** How the clip was fitted into the frame: `exact` or a background mode. */
|
|
135
86
|
composition_policy: z.string().optional(),
|
|
136
87
|
})
|
|
137
88
|
.nullable(),
|
|
@@ -139,42 +90,23 @@ export const run = z.object({
|
|
|
139
90
|
created_at: z.string().datetime(),
|
|
140
91
|
finished_at: z.string().datetime().nullable(),
|
|
141
92
|
});
|
|
142
|
-
/**
|
|
143
|
-
|
|
144
|
-
* истины о завершённости. ЗАЧЕМ отдельно, а не строковые литералы: до US-501
|
|
145
|
-
* терминальность проверялась `"succeeded"`/`"failed"` в трёх местах (SDK-цикл
|
|
146
|
-
* `makeUgc`, две ветки MCP `get_run`); расхождение при правке ловилось бы только
|
|
147
|
-
* в проде.
|
|
148
|
-
*/
|
|
93
|
+
/** Terminal run states as shared constants, the single source of truth about completion, */
|
|
94
|
+
/** instead of string literals repeated across consumers. */
|
|
149
95
|
export const SUCCEEDED_STATE = "succeeded";
|
|
150
96
|
export const FAILED_STATE = "failed";
|
|
151
|
-
//
|
|
152
|
-
//
|
|
153
|
-
// инвертировал бы успех/провал (вердикт Architect, Фаза 2 Этапа 5).
|
|
97
|
+
// Consumers tell outcomes apart ONLY through the named constants above: a positional
|
|
98
|
+
// `TERMINAL_STATES[1]` would silently invert success and failure on reorder.
|
|
154
99
|
export const TERMINAL_STATES = [SUCCEEDED_STATE, FAILED_STATE];
|
|
155
|
-
/**
|
|
156
|
-
|
|
157
|
-
* (enum `runState` → `z.string()`). Все остальные поля, включая
|
|
158
|
-
* `final_output.portrait_url`/`character_*`, НАСЛЕДУЮТСЯ через `run.extend` —
|
|
159
|
-
* рукописный форк схемы ЗАПРЕЩЁН (связывающее условие Architect A11): форк молча
|
|
160
|
-
* ронял бы новые поля `run` из read-контракта, что и есть тот класс дефектов.
|
|
161
|
-
*
|
|
162
|
-
* ЗАЧЕМ read/write-асимметрия (docs/12:198): добавление стадии на сервере
|
|
163
|
-
* (напр. `"publishing"`) сломало бы строгий `run.parse` в `getRun` у КАЖДОГО уже
|
|
164
|
-
* установленного MCP — неизвестная стадия отверглась бы. Чтение толерантно к
|
|
165
|
-
* расширению enum стадий; строгость ЗАПИСИ (`run.parse` в `startUgc`) при этом
|
|
166
|
-
* сохраняется — сервер не должен принимать мусорное тело.
|
|
167
|
-
*/
|
|
100
|
+
/** Tolerant READ projection: only `state` is loosened to `z.string()`, everything else is */
|
|
101
|
+
/** inherited via `run.extend`, so a new server stage does not break installed clients. */
|
|
168
102
|
export const runRead = run.extend({ state: z.string() });
|
|
169
103
|
export const RUN_MONEY_FIELDS = Object.keys(run.shape).filter((field) => field.startsWith("credits_"));
|
|
170
|
-
/**
|
|
104
|
+
/** A run's money fields as one object, for surfaces that build their own response. */
|
|
171
105
|
export function runMoney(read) {
|
|
172
106
|
return Object.fromEntries(RUN_MONEY_FIELDS.map((field) => [field, read[field]]));
|
|
173
107
|
}
|
|
174
|
-
/**
|
|
175
|
-
|
|
176
|
-
* поэтому неизвестный статус (расширение enum) корректно даёт `false`.
|
|
177
|
-
*/
|
|
108
|
+
/** Whether a run is terminal. Takes a `string` (the read projection), so an unknown */
|
|
109
|
+
/** status from an extended enum correctly gives `false`. */
|
|
178
110
|
export function isTerminal(state) {
|
|
179
111
|
return TERMINAL_STATES.includes(state);
|
|
180
112
|
}
|
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,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,+BAA+B,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,
|
|
1
|
+
{"version":3,"file":"runs.js","sourceRoot":"","sources":["../src/runs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
/**
|
|
2
|
-
/**
|
|
3
|
-
/** Знак-заменителя Unicode. Его появление означает, что байты уже потеряны. */
|
|
1
|
+
/** Integrity of submitted text: catches PROVEN byte loss, not a guess about it. */
|
|
2
|
+
/** The Unicode replacement character. Its presence means bytes are already lost. */
|
|
4
3
|
export declare const REPLACEMENT_CHAR = "\uFFFD";
|
|
5
|
-
/**
|
|
6
|
-
/**
|
|
4
|
+
/** A walk, not a field list: every string leaf is visited, so a new text field is */
|
|
5
|
+
/** checked automatically. */
|
|
7
6
|
export declare function damagedTextPaths(input: unknown): string[];
|
|
8
|
-
/**
|
|
9
|
-
/**
|
|
7
|
+
/** Replacement characters across all string leaves. The count goes into the message: one */
|
|
8
|
+
/** and a hundred are different failures for whoever fixes it. */
|
|
10
9
|
export declare function damagedCharCount(input: unknown): number;
|
package/dist/script-integrity.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
/**
|
|
2
|
-
/**
|
|
3
|
-
/** Знак-заменителя Unicode. Его появление означает, что байты уже потеряны. */
|
|
1
|
+
/** Integrity of submitted text: catches PROVEN byte loss, not a guess about it. */
|
|
2
|
+
/** The Unicode replacement character. Its presence means bytes are already lost. */
|
|
4
3
|
export const REPLACEMENT_CHAR = "�";
|
|
5
|
-
/**
|
|
4
|
+
/** Walk depth limit: the input is parsed by a zod schema, but its depth is unbounded. */
|
|
6
5
|
const MAX_DEPTH = 16;
|
|
7
6
|
function walk(value, path, depth, hits) {
|
|
8
7
|
if (depth > MAX_DEPTH)
|
|
@@ -24,15 +23,15 @@ function walk(value, path, depth, hits) {
|
|
|
24
23
|
}
|
|
25
24
|
}
|
|
26
25
|
}
|
|
27
|
-
/**
|
|
28
|
-
/**
|
|
26
|
+
/** A walk, not a field list: every string leaf is visited, so a new text field is */
|
|
27
|
+
/** checked automatically. */
|
|
29
28
|
export function damagedTextPaths(input) {
|
|
30
29
|
const hits = [];
|
|
31
30
|
walk(input, "", 0, hits);
|
|
32
31
|
return hits.sort();
|
|
33
32
|
}
|
|
34
|
-
/**
|
|
35
|
-
/**
|
|
33
|
+
/** Replacement characters across all string leaves. The count goes into the message: one */
|
|
34
|
+
/** and a hundred are different failures for whoever fixes it. */
|
|
36
35
|
export function damagedCharCount(input) {
|
|
37
36
|
const paths = damagedTextPaths(input);
|
|
38
37
|
if (paths.length === 0)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"script-integrity.js","sourceRoot":"","sources":["../src/script-integrity.ts"],"names":[],"mappings":"AAAA,mFAAmF;
|
|
1
|
+
{"version":3,"file":"script-integrity.js","sourceRoot":"","sources":["../src/script-integrity.ts"],"names":[],"mappings":"AAAA,mFAAmF;AAEnF,oFAAoF;AACpF,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAEpC,yFAAyF;AACzF,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,qFAAqF;AACrF,6BAA6B;AAC7B,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,4FAA4F;AAC5F,iEAAiE;AACjE,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"}
|
|
@@ -18,8 +18,8 @@ export interface SemanticInsertAnchor {
|
|
|
18
18
|
endWord: number;
|
|
19
19
|
coverWord?: number;
|
|
20
20
|
}
|
|
21
|
-
/**
|
|
22
|
-
/**
|
|
21
|
+
/** The first word NOT covered by the insert. The default is read here and only here, or */
|
|
22
|
+
/** "coverage equals the anchor" would drift between readers. */
|
|
23
23
|
export declare function coverWordOf(anchor: {
|
|
24
24
|
endWord: number;
|
|
25
25
|
coverWord?: number | undefined;
|
|
@@ -45,8 +45,8 @@ export interface SemanticInsertResolution {
|
|
|
45
45
|
warnings: string[];
|
|
46
46
|
}
|
|
47
47
|
export declare function planSemanticInserts(script: string, instructions: readonly SemanticInsertInstruction[]): SemanticInsertPlan;
|
|
48
|
-
/**
|
|
49
|
-
/**
|
|
48
|
+
/** The number of PAID actor shots, a pure function of word indexes, so input is refused */
|
|
49
|
+
/** before speech synthesis rather than in the worker after payment. */
|
|
50
50
|
export declare function countActorShots(plan: SemanticInsertPlan): number;
|
|
51
51
|
export declare function resolveSemanticInserts(input: {
|
|
52
52
|
plan: SemanticInsertPlan;
|
package/dist/semantic-inserts.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
/**
|
|
1
|
+
/** The first word NOT covered by the insert. The default is read here and only here, or */
|
|
2
|
+
/** "coverage equals the anchor" would drift between readers. */
|
|
3
3
|
export function coverWordOf(anchor) {
|
|
4
4
|
return anchor.coverWord ?? anchor.endWord;
|
|
5
5
|
}
|
|
@@ -78,8 +78,8 @@ export function planSemanticInserts(script, instructions) {
|
|
|
78
78
|
const plan = { sourceTokens, inserts };
|
|
79
79
|
return { sourceTokens, inserts: orderedAnchors(plan) };
|
|
80
80
|
}
|
|
81
|
-
/**
|
|
82
|
-
/**
|
|
81
|
+
/** The number of PAID actor shots, a pure function of word indexes, so input is refused */
|
|
82
|
+
/** before speech synthesis rather than in the worker after payment. */
|
|
83
83
|
export function countActorShots(plan) {
|
|
84
84
|
const anchors = orderedAnchors(plan);
|
|
85
85
|
if (anchors.length === 0)
|
|
@@ -124,8 +124,8 @@ export function resolveSemanticInserts(input) {
|
|
|
124
124
|
let cursor = 0;
|
|
125
125
|
let rounded = Math.abs(totalFrames - durationSec * fps) > 1e-8;
|
|
126
126
|
for (const anchor of anchors) {
|
|
127
|
-
//
|
|
128
|
-
//
|
|
127
|
+
// A pause belongs to the owner of the preceding word: the window ends at the START of
|
|
128
|
+
// the first uncovered word, or the gap would become a paid sliver.
|
|
129
129
|
const cover = coverWordOf(anchor);
|
|
130
130
|
const head = anchor.startWord === 0;
|
|
131
131
|
const tail = cover >= lexicalWords.length;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semantic-inserts.js","sourceRoot":"","sources":["../src/semantic-inserts.ts"],"names":[],"mappings":"AAiBA,
|
|
1
|
+
{"version":3,"file":"semantic-inserts.js","sourceRoot":"","sources":["../src/semantic-inserts.ts"],"names":[],"mappings":"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"}
|