@clipwright/core 0.19.0 → 0.21.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 +55 -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 +5 -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-price.d.ts +21 -0
- package/dist/faceless-price.js +25 -0
- package/dist/faceless-price.js.map +1 -0
- package/dist/faceless-public-plan.d.ts +71 -0
- package/dist/faceless-public-plan.js +166 -0
- package/dist/faceless-public-plan.js.map +1 -0
- package/dist/faceless-public.d.ts +107 -0
- package/dist/faceless-public.js +74 -0
- package/dist/faceless-public.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 +63 -0
- package/dist/faceless-storyboard-v2-timing.js +143 -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 +10 -44
- package/dist/idempotency.js +18 -44
- package/dist/idempotency.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.js +24 -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 +26 -24
- package/dist/run-static-warnings.js.map +1 -1
- package/dist/runs.d.ts +34 -55
- package/dist/runs.js +28 -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 +37 -108
- package/dist/skills.js +77 -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.generated.json +56 -54
- 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
|
+
/** Shared run stages; skill-specific workers use the stages they need. */
|
|
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;
|
|
@@ -102,6 +83,14 @@ export declare const run: z.ZodObject<{
|
|
|
102
83
|
failurePolicy: z.ZodLiteral<"verified_delivery_only">;
|
|
103
84
|
}, z.core.$strict>>]>;
|
|
104
85
|
}, z.core.$strict>>>;
|
|
86
|
+
faceless_billing: z.ZodOptional<z.ZodObject<{
|
|
87
|
+
outputFrames: z.ZodNumber;
|
|
88
|
+
baseCredits: z.ZodNumber;
|
|
89
|
+
openerCredits: z.ZodNumber;
|
|
90
|
+
totalCredits: z.ZodNumber;
|
|
91
|
+
tariffId: z.ZodLiteral<"faceless-image-i2v-v1">;
|
|
92
|
+
captions: z.ZodBoolean;
|
|
93
|
+
}, z.core.$strict>>;
|
|
105
94
|
resolved_broll_policy: z.ZodOptional<z.ZodEnum<{
|
|
106
95
|
anyone: "anyone";
|
|
107
96
|
no_actor: "no_actor";
|
|
@@ -194,29 +183,13 @@ export declare const run: z.ZodObject<{
|
|
|
194
183
|
finished_at: z.ZodNullable<z.ZodString>;
|
|
195
184
|
}, z.core.$strip>;
|
|
196
185
|
export type Run = z.infer<typeof run>;
|
|
197
|
-
/**
|
|
198
|
-
|
|
199
|
-
* истины о завершённости. ЗАЧЕМ отдельно, а не строковые литералы: до US-501
|
|
200
|
-
* терминальность проверялась `"succeeded"`/`"failed"` в трёх местах (SDK-цикл
|
|
201
|
-
* `makeUgc`, две ветки MCP `get_run`); расхождение при правке ловилось бы только
|
|
202
|
-
* в проде.
|
|
203
|
-
*/
|
|
186
|
+
/** Terminal run states as shared constants, the single source of truth about completion, */
|
|
187
|
+
/** instead of string literals repeated across consumers. */
|
|
204
188
|
export declare const SUCCEEDED_STATE: "succeeded";
|
|
205
189
|
export declare const FAILED_STATE: "failed";
|
|
206
190
|
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
|
-
*/
|
|
191
|
+
/** Tolerant READ projection: only `state` is loosened to `z.string()`, everything else is */
|
|
192
|
+
/** inherited via `run.extend`, so a new server stage does not break installed clients. */
|
|
220
193
|
export declare const runRead: z.ZodObject<{
|
|
221
194
|
run_id: z.ZodString;
|
|
222
195
|
actor: z.ZodOptional<z.ZodObject<{
|
|
@@ -248,6 +221,14 @@ export declare const runRead: z.ZodObject<{
|
|
|
248
221
|
failurePolicy: z.ZodLiteral<"verified_delivery_only">;
|
|
249
222
|
}, z.core.$strict>>]>;
|
|
250
223
|
}, z.core.$strict>>>;
|
|
224
|
+
faceless_billing: z.ZodOptional<z.ZodObject<{
|
|
225
|
+
outputFrames: z.ZodNumber;
|
|
226
|
+
baseCredits: z.ZodNumber;
|
|
227
|
+
openerCredits: z.ZodNumber;
|
|
228
|
+
totalCredits: z.ZodNumber;
|
|
229
|
+
tariffId: z.ZodLiteral<"faceless-image-i2v-v1">;
|
|
230
|
+
captions: z.ZodBoolean;
|
|
231
|
+
}, z.core.$strict>>;
|
|
251
232
|
resolved_broll_policy: z.ZodOptional<z.ZodEnum<{
|
|
252
233
|
anyone: "anyone";
|
|
253
234
|
no_actor: "no_actor";
|
|
@@ -341,14 +322,12 @@ export declare const runRead: z.ZodObject<{
|
|
|
341
322
|
state: z.ZodString;
|
|
342
323
|
}, z.core.$strip>;
|
|
343
324
|
export type RunRead = z.infer<typeof runRead>;
|
|
344
|
-
/**
|
|
345
|
-
/**
|
|
325
|
+
/** A money field of a run. Names are derived FROM THE SCHEMA: a hand list next to the MCP */
|
|
326
|
+
/** formatter kept losing them. */
|
|
346
327
|
export type RunMoneyField = Extract<keyof RunRead, `credits_${string}`>;
|
|
347
328
|
export declare const RUN_MONEY_FIELDS: readonly RunMoneyField[];
|
|
348
|
-
/**
|
|
329
|
+
/** A run's money fields as one object, for surfaces that build their own response. */
|
|
349
330
|
export declare function runMoney(read: RunRead): Pick<RunRead, RunMoneyField>;
|
|
350
|
-
/**
|
|
351
|
-
|
|
352
|
-
* поэтому неизвестный статус (расширение enum) корректно даёт `false`.
|
|
353
|
-
*/
|
|
331
|
+
/** Whether a run is terminal. Takes a `string` (the read projection), so an unknown */
|
|
332
|
+
/** status from an extended enum correctly gives `false`. */
|
|
354
333
|
export declare function isTerminal(state: string): boolean;
|
package/dist/runs.js
CHANGED
|
@@ -5,7 +5,8 @@ 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
|
+
import { facelessQuote } from "./faceless-price.js";
|
|
9
|
+
/** Shared run stages; skill-specific workers use the stages they need. */
|
|
9
10
|
export const RUN_STATES = [
|
|
10
11
|
"queued",
|
|
11
12
|
"generating",
|
|
@@ -18,8 +19,8 @@ export const RUN_STATES = [
|
|
|
18
19
|
"failed",
|
|
19
20
|
];
|
|
20
21
|
export const runState = z.enum(RUN_STATES);
|
|
21
|
-
/**
|
|
22
|
-
/**
|
|
22
|
+
/** The signature covers GET only, so `curl -I` gets 403 and reads as "the link is dead". */
|
|
23
|
+
/** Said where the link is handed out. */
|
|
23
24
|
export const VIDEO_URL_CHECK = "signed for GET only: HEAD returns 403. To check it without downloading, " +
|
|
24
25
|
'use a ranged GET (curl -r 0-0), not curl -I.';
|
|
25
26
|
export const runStep = z.object({
|
|
@@ -31,37 +32,18 @@ export const runStep = z.object({
|
|
|
31
32
|
.array(z.object({ kind: z.string(), url: z.string().url(), bytes: z.number().int() }))
|
|
32
33
|
.default([]),
|
|
33
34
|
});
|
|
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
|
-
*/
|
|
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. */
|
|
51
37
|
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
|
-
*/
|
|
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. */
|
|
58
40
|
export const AI_DISCLOSURE_OBJECT_METADATA = {
|
|
59
41
|
"ai-generated": "true",
|
|
60
42
|
generator: "clipwright",
|
|
61
43
|
"ai-disclosure": AI_DISCLOSURE_TEXT,
|
|
62
44
|
};
|
|
63
|
-
/**
|
|
64
|
-
/**
|
|
45
|
+
/** Run id shape, a separate schema because INPUT asks for it too: the MCP `get_run` tool, */
|
|
46
|
+
/** where a bare `z.string()` let garbage reach the network. */
|
|
65
47
|
export const runId = z.string().regex(/^run_[a-zA-Z0-9]+$/);
|
|
66
48
|
export const run = z.object({
|
|
67
49
|
run_id: runId,
|
|
@@ -71,24 +53,13 @@ export const run = z.object({
|
|
|
71
53
|
credits_reserved: z.number().int().nonnegative(),
|
|
72
54
|
credits_charged: z.number().int().nonnegative().nullable(),
|
|
73
55
|
billing_terms: faceBillingAdmissionTermsSchema.optional(),
|
|
56
|
+
faceless_billing: facelessQuote.optional(),
|
|
74
57
|
resolved_broll_policy: brollPolicy.optional(),
|
|
75
58
|
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
|
-
*/
|
|
59
|
+
/** The reason. A non-empty `error` does NOT imply `state: "failed"`: on a non-terminal */
|
|
60
|
+
/** run it explains a delay awaiting human review, and such a run will not finish by itself. */
|
|
90
61
|
error: z.string().nullable(),
|
|
91
|
-
/**
|
|
62
|
+
/** The result of a `create_actor` run; absent on `make_ugc`, whose result is `final_output`. */
|
|
92
63
|
created_actor: createdActor.optional(),
|
|
93
64
|
final_output: z
|
|
94
65
|
.object({
|
|
@@ -104,34 +75,16 @@ export const run = z.object({
|
|
|
104
75
|
face_credits_per_second: z.number().int().positive().optional(),
|
|
105
76
|
face_tariff_id: z.string().min(1).optional(),
|
|
106
77
|
speech_timing_gaps: speechRhythmResult.optional(),
|
|
107
|
-
/**
|
|
108
|
-
|
|
109
|
-
*
|
|
110
|
-
* `z.literal(true)` — не педантизм: опциональное поле можно забыть
|
|
111
|
-
* проставить, и ролик уедет непомеченным, а схема промолчит. Здесь она
|
|
112
|
-
* не промолчит — `run.parse` уронит терминальный ответ, и дефект
|
|
113
|
-
* обнаружится у нас, а не у получателя ролика.
|
|
114
|
-
*/
|
|
78
|
+
/** REQUIRED disclosure fields: an optional one could be forgotten and the clip ship */
|
|
79
|
+
/** unmarked, while `z.literal(true)` makes `run.parse` fail on our side first. */
|
|
115
80
|
ai_generated: z.literal(true),
|
|
116
81
|
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
|
-
*/
|
|
82
|
+
/** Three formats, not one: requested, sent to the vendor and final. Set only on the */
|
|
83
|
+
/** composition path; without it the vendor file is returned as is. */
|
|
131
84
|
requested_aspect_ratio: z.string().optional(),
|
|
132
85
|
vendor_aspect_ratio: z.string().optional(),
|
|
133
86
|
final_aspect_ratio: z.string().optional(),
|
|
134
|
-
/**
|
|
87
|
+
/** How the clip was fitted into the frame: `exact` or a background mode. */
|
|
135
88
|
composition_policy: z.string().optional(),
|
|
136
89
|
})
|
|
137
90
|
.nullable(),
|
|
@@ -139,42 +92,23 @@ export const run = z.object({
|
|
|
139
92
|
created_at: z.string().datetime(),
|
|
140
93
|
finished_at: z.string().datetime().nullable(),
|
|
141
94
|
});
|
|
142
|
-
/**
|
|
143
|
-
|
|
144
|
-
* истины о завершённости. ЗАЧЕМ отдельно, а не строковые литералы: до US-501
|
|
145
|
-
* терминальность проверялась `"succeeded"`/`"failed"` в трёх местах (SDK-цикл
|
|
146
|
-
* `makeUgc`, две ветки MCP `get_run`); расхождение при правке ловилось бы только
|
|
147
|
-
* в проде.
|
|
148
|
-
*/
|
|
95
|
+
/** Terminal run states as shared constants, the single source of truth about completion, */
|
|
96
|
+
/** instead of string literals repeated across consumers. */
|
|
149
97
|
export const SUCCEEDED_STATE = "succeeded";
|
|
150
98
|
export const FAILED_STATE = "failed";
|
|
151
|
-
//
|
|
152
|
-
//
|
|
153
|
-
// инвертировал бы успех/провал (вердикт Architect, Фаза 2 Этапа 5).
|
|
99
|
+
// Consumers tell outcomes apart ONLY through the named constants above: a positional
|
|
100
|
+
// `TERMINAL_STATES[1]` would silently invert success and failure on reorder.
|
|
154
101
|
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
|
-
*/
|
|
102
|
+
/** Tolerant READ projection: only `state` is loosened to `z.string()`, everything else is */
|
|
103
|
+
/** inherited via `run.extend`, so a new server stage does not break installed clients. */
|
|
168
104
|
export const runRead = run.extend({ state: z.string() });
|
|
169
105
|
export const RUN_MONEY_FIELDS = Object.keys(run.shape).filter((field) => field.startsWith("credits_"));
|
|
170
|
-
/**
|
|
106
|
+
/** A run's money fields as one object, for surfaces that build their own response. */
|
|
171
107
|
export function runMoney(read) {
|
|
172
108
|
return Object.fromEntries(RUN_MONEY_FIELDS.map((field) => [field, read[field]]));
|
|
173
109
|
}
|
|
174
|
-
/**
|
|
175
|
-
|
|
176
|
-
* поэтому неизвестный статус (расширение enum) корректно даёт `false`.
|
|
177
|
-
*/
|
|
110
|
+
/** Whether a run is terminal. Takes a `string` (the read projection), so an unknown */
|
|
111
|
+
/** status from an extended enum correctly gives `false`. */
|
|
178
112
|
export function isTerminal(state) {
|
|
179
113
|
return TERMINAL_STATES.includes(state);
|
|
180
114
|
}
|
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;
|
|
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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"}
|