@clipwright/core 0.33.0 → 0.35.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 +251 -0
- package/README.md +3 -1
- package/dist/account-actors.d.ts +173 -14
- package/dist/account-actors.js +142 -10
- package/dist/account-actors.js.map +1 -1
- package/dist/actor-bounds.d.ts +4 -0
- package/dist/actor-bounds.js +4 -0
- package/dist/actor-bounds.js.map +1 -1
- package/dist/actors.d.ts +31 -0
- package/dist/actors.js +26 -0
- package/dist/actors.js.map +1 -1
- package/dist/api-failure.js +2 -1
- package/dist/api-failure.js.map +1 -1
- package/dist/asset-identity.d.ts +6 -0
- package/dist/asset-identity.js +7 -0
- package/dist/asset-identity.js.map +1 -0
- package/dist/assets.d.ts +403 -8
- package/dist/assets.js +132 -22
- package/dist/assets.js.map +1 -1
- package/dist/billing-terms.d.ts +69 -0
- package/dist/billing-terms.js +8 -0
- package/dist/billing-terms.js.map +1 -1
- package/dist/caption-language.d.ts +2 -0
- package/dist/caption-language.js +17 -0
- package/dist/caption-language.js.map +1 -0
- package/dist/contract-dispositions.d.ts +1617 -8
- package/dist/contract-dispositions.js +75 -11
- package/dist/contract-dispositions.js.map +1 -1
- package/dist/contracts/v1/workflow-brief.d.ts +3166 -78
- package/dist/contracts/v1/workflow-brief.js +4 -0
- package/dist/contracts/v1/workflow-brief.js.map +1 -1
- package/dist/contracts/v1/workflow-catalog.d.ts +3712 -8
- package/dist/contracts/v1/workflow-catalog.js +4 -2
- package/dist/contracts/v1/workflow-catalog.js.map +1 -1
- package/dist/contracts/v1/workflow-client.d.ts +2466 -4
- package/dist/contracts/v1/workflow-client.js +6 -3
- package/dist/contracts/v1/workflow-client.js.map +1 -1
- package/dist/contracts/v1/workflow-execution.d.ts +163 -9
- package/dist/contracts/v1/workflow-execution.js +15 -7
- package/dist/contracts/v1/workflow-execution.js.map +1 -1
- package/dist/contracts/v1/workflow-plan.d.ts +6014 -487
- package/dist/contracts/v1/workflow-primitives.d.ts +3 -1
- package/dist/contracts/v1/workflow-primitives.js +1 -1
- package/dist/contracts/v1/workflow-primitives.js.map +1 -1
- package/dist/contracts/v1/workflow-run-read.d.ts +114 -1
- package/dist/edit-billing.d.ts +12 -0
- package/dist/edit-billing.js +8 -0
- package/dist/edit-billing.js.map +1 -1
- package/dist/edit-long-form.d.ts +1 -1
- package/dist/edit-long-form.js +12 -2
- package/dist/edit-long-form.js.map +1 -1
- package/dist/endpoint-notes.d.ts +3 -0
- package/dist/endpoint-notes.js +66 -0
- package/dist/endpoint-notes.js.map +1 -0
- package/dist/endpoints.d.ts +4 -0
- package/dist/endpoints.js +15 -0
- package/dist/endpoints.js.map +1 -1
- package/dist/errors.d.ts +1 -1
- package/dist/errors.js +7 -0
- package/dist/errors.js.map +1 -1
- package/dist/face-billing.d.ts +55 -0
- package/dist/face-billing.js +22 -0
- package/dist/face-billing.js.map +1 -1
- package/dist/faceless-price.d.ts +26 -2
- package/dist/faceless-price.js +33 -6
- package/dist/faceless-price.js.map +1 -1
- package/dist/faceless-public.d.ts +6 -1
- package/dist/faceless-public.js +2 -2
- package/dist/faceless-public.js.map +1 -1
- package/dist/generations.d.ts +32 -6
- package/dist/generations.js +82 -27
- package/dist/generations.js.map +1 -1
- package/dist/idempotency.d.ts +2 -0
- package/dist/idempotency.js +7 -4
- package/dist/idempotency.js.map +1 -1
- package/dist/index.d.ts +15 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -1
- package/dist/long-form-pricing.d.ts +7 -4
- package/dist/long-form-pricing.js +13 -10
- package/dist/long-form-pricing.js.map +1 -1
- package/dist/long-form-revision.js +1 -1
- package/dist/long-form-revision.js.map +1 -1
- package/dist/openapi.d.ts +154 -0
- package/dist/openapi.js +334 -0
- package/dist/openapi.js.map +1 -0
- package/dist/pacing.d.ts +15 -0
- package/dist/pacing.js +30 -0
- package/dist/pacing.js.map +1 -1
- package/dist/parts-pricing.d.ts +84 -0
- package/dist/parts-pricing.js +105 -0
- package/dist/parts-pricing.js.map +1 -0
- package/dist/presenter-beats.d.ts +45 -0
- package/dist/presenter-beats.js +144 -0
- package/dist/presenter-beats.js.map +1 -0
- package/dist/prices.d.ts +98 -0
- package/dist/prices.js +189 -0
- package/dist/prices.js.map +1 -0
- package/dist/public-endpoints.d.ts +2 -0
- package/dist/public-endpoints.js +2 -0
- package/dist/public-endpoints.js.map +1 -1
- package/dist/public-responses.d.ts +23 -0
- package/dist/public-responses.js +11 -0
- package/dist/public-responses.js.map +1 -0
- package/dist/reference-analysis.d.ts +683 -0
- package/dist/reference-analysis.js +91 -0
- package/dist/reference-analysis.js.map +1 -0
- package/dist/reference-kinds.d.ts +6 -0
- package/dist/reference-kinds.js +8 -0
- package/dist/reference-kinds.js.map +1 -0
- package/dist/reference-profile.d.ts +633 -0
- package/dist/reference-profile.js +151 -0
- package/dist/reference-profile.js.map +1 -0
- package/dist/reference-staging.d.ts +571 -0
- package/dist/reference-staging.js +151 -0
- package/dist/reference-staging.js.map +1 -0
- package/dist/reference-voice.d.ts +305 -0
- package/dist/reference-voice.js +108 -0
- package/dist/reference-voice.js.map +1 -0
- package/dist/resolved-timeline.d.ts +206 -1
- package/dist/resolved-timeline.js +96 -4
- package/dist/resolved-timeline.js.map +1 -1
- package/dist/run-static-warnings.js +19 -7
- package/dist/run-static-warnings.js.map +1 -1
- package/dist/runs.d.ts +75 -3
- package/dist/runs.js +6 -1
- package/dist/runs.js.map +1 -1
- package/dist/semantic-inserts.d.ts +7 -0
- package/dist/semantic-inserts.js +19 -9
- package/dist/semantic-inserts.js.map +1 -1
- package/dist/skills.d.ts +5838 -22
- package/dist/skills.js +380 -25
- package/dist/skills.js.map +1 -1
- package/dist/templates/callout.d.ts +34 -0
- package/dist/templates/callout.js +51 -0
- package/dist/templates/callout.js.map +1 -0
- package/dist/templates/checklist.d.ts +42 -0
- package/dist/templates/checklist.js +47 -0
- package/dist/templates/checklist.js.map +1 -0
- package/dist/templates/compare.d.ts +26 -0
- package/dist/templates/compare.js +35 -0
- package/dist/templates/compare.js.map +1 -0
- package/dist/templates/end-card.d.ts +16 -0
- package/dist/templates/end-card.js +25 -0
- package/dist/templates/end-card.js.map +1 -0
- package/dist/templates/index.d.ts +171 -0
- package/dist/templates/index.js +394 -0
- package/dist/templates/index.js.map +1 -0
- package/dist/templates/lower-third.d.ts +18 -0
- package/dist/templates/lower-third.js +26 -0
- package/dist/templates/lower-third.js.map +1 -0
- package/dist/templates/notification.d.ts +30 -0
- package/dist/templates/notification.js +32 -0
- package/dist/templates/notification.js.map +1 -0
- package/dist/templates/phone-call.d.ts +27 -0
- package/dist/templates/phone-call.js +43 -0
- package/dist/templates/phone-call.js.map +1 -0
- package/dist/templates/progress.d.ts +22 -0
- package/dist/templates/progress.js +42 -0
- package/dist/templates/progress.js.map +1 -0
- package/dist/templates/quote.d.ts +21 -0
- package/dist/templates/quote.js +29 -0
- package/dist/templates/quote.js.map +1 -0
- package/dist/templates/rating.d.ts +22 -0
- package/dist/templates/rating.js +29 -0
- package/dist/templates/rating.js.map +1 -0
- package/dist/templates/size.d.ts +13 -0
- package/dist/templates/size.js +10 -0
- package/dist/templates/size.js.map +1 -0
- package/dist/templates/slot.d.ts +10 -0
- package/dist/templates/slot.js +5 -0
- package/dist/templates/slot.js.map +1 -0
- package/dist/templates/sounds.d.ts +701 -0
- package/dist/templates/sounds.js +89 -0
- package/dist/templates/sounds.js.map +1 -0
- package/dist/templates/stat.d.ts +20 -0
- package/dist/templates/stat.js +33 -0
- package/dist/templates/stat.js.map +1 -0
- package/dist/templates/tag.d.ts +23 -0
- package/dist/templates/tag.js +31 -0
- package/dist/templates/tag.js.map +1 -0
- package/dist/templates/theme.d.ts +29 -0
- package/dist/templates/theme.js +47 -0
- package/dist/templates/theme.js.map +1 -0
- package/dist/templates/title-card.d.ts +21 -0
- package/dist/templates/title-card.js +30 -0
- package/dist/templates/title-card.js.map +1 -0
- package/dist/tts-backend.d.ts +9 -0
- package/dist/tts-backend.js +21 -0
- package/dist/tts-backend.js.map +1 -1
- package/dist/ugc-call.d.ts +89 -0
- package/dist/ugc-call.js +111 -0
- package/dist/ugc-call.js.map +1 -0
- package/dist/ugc-framing.d.ts +26 -0
- package/dist/ugc-framing.js +64 -0
- package/dist/ugc-framing.js.map +1 -0
- package/dist/ugc-layers.d.ts +88 -0
- package/dist/ugc-layers.js +142 -0
- package/dist/ugc-layers.js.map +1 -0
- package/dist/ugc-video-media.d.ts +12 -0
- package/dist/ugc-video-media.js +39 -0
- package/dist/ugc-video-media.js.map +1 -0
- package/dist/vendor-response.d.ts +4 -0
- package/dist/vendor-response.js +12 -0
- package/dist/vendor-response.js.map +1 -1
- package/dist/voice-admission.d.ts +1244 -1
- package/dist/voice-listing.js +7 -1
- package/dist/voice-listing.js.map +1 -1
- package/dist/voice-pace.d.ts +34 -0
- package/dist/voice-pace.generated.json +72 -0
- package/dist/voice-pace.js +34 -0
- package/dist/voice-pace.js.map +1 -0
- package/dist/voices.d.ts +21 -8
- package/dist/voices.js +44 -19
- package/dist/voices.js.map +1 -1
- package/dist/workflows/catalog.js +2 -1
- package/dist/workflows/catalog.js.map +1 -1
- package/dist/workflows/index.d.ts +2 -0
- package/dist/workflows/index.js +2 -0
- package/dist/workflows/index.js.map +1 -1
- package/dist/workflows/methods/faceless-explainer.d.ts +697 -3
- package/dist/workflows/methods/kinetic-launch.d.ts +697 -3
- package/dist/workflows/methods/product-image-story.d.ts +697 -3
- package/dist/workflows/methods/reference-remake.d.ts +870 -0
- package/dist/workflows/methods/reference-remake.js +26 -0
- package/dist/workflows/methods/reference-remake.js.map +1 -0
- package/dist/workflows/methods/shared.d.ts +697 -3
- package/dist/workflows/methods/ugc-faq-answer.d.ts +697 -3
- package/dist/workflows/methods/ugc-product-intro.d.ts +697 -3
- package/dist/workflows/methods/website-proof-demo.d.ts +697 -3
- package/dist/workflows/reference-remake.d.ts +663 -0
- package/dist/workflows/reference-remake.js +598 -0
- package/dist/workflows/reference-remake.js.map +1 -0
- package/dist/workflows/validate.js +19 -11
- package/dist/workflows/validate.js.map +1 -1
- package/package.json +9 -3
package/dist/assets.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
import { ASSET_KINDS, ASSET_MEDIA_TYPES, assetId } from "./asset-identity.js";
|
|
2
3
|
import { runId } from "./runs.js";
|
|
3
|
-
import { UPLOAD_MEDIA_TYPES, uploadId } from "./uploads.js";
|
|
4
|
-
/** Account assets (clipwright#724 F2): pictures kept until the customer deletes them, under a cap per account. */
|
|
4
|
+
import { UPLOAD_MAX_BYTES, UPLOAD_MEDIA_TYPES, uploadId } from "./uploads.js";
|
|
5
|
+
/** Account assets (clipwright#724 F2): pictures and clips kept until the customer deletes them, under a cap per account. */
|
|
5
6
|
export const ASSETS_PATH = "/v1/assets";
|
|
6
|
-
/** Raw bytes of one picture, for the cabinet; role, name and the rights confirmation travel in the query. */
|
|
7
|
+
/** Raw bytes of one picture or clip, for the cabinet; role, name and the rights confirmation travel in the query. */
|
|
7
8
|
export const ASSET_BYTES_PATH = "/v1/assets/bytes";
|
|
8
9
|
export const ASSET_ITEM_PATH = "/v1/assets/:id";
|
|
9
10
|
export const ASSET_ACCOUNT_MAX_COUNT = 2000;
|
|
@@ -19,36 +20,76 @@ export const ASSET_URL_TTL_SECONDS = 3600;
|
|
|
19
20
|
export const ASSET_DELETE_GRACE_DAYS = 7;
|
|
20
21
|
export const ASSET_NAME_MAX_CHARS = 80;
|
|
21
22
|
export const ASSET_LIST_MAX_LIMIT = 100;
|
|
23
|
+
/** A customer clip (owner, 2026-10-20): up to 100 MiB and 120 s, a non-fragmented MP4 in h264 or hevc. */
|
|
24
|
+
export const ASSET_VIDEO_MAX_BYTES = 100 * 1024 * 1024;
|
|
25
|
+
export const ASSET_VIDEO_MAX_SECONDS = 120;
|
|
26
|
+
export const ASSET_VIDEO_CODECS = ["h264", "hevc"];
|
|
27
|
+
/** A clip sent as the body of `POST /v1/assets/bytes`: the API holds the body in memory before staging it. */
|
|
28
|
+
export const ASSET_BYTES_ROUTE_VIDEO_MAX_BYTES = 32 * 1024 * 1024;
|
|
29
|
+
/** How long a clip in processing may take before reads call it failed: a 90 s download inside a 5 minute task. */
|
|
30
|
+
export const ASSET_PROCESSING_SECONDS = 600;
|
|
31
|
+
export const ASSET_VIDEO_DOWNLOAD_DEADLINE_MS = 90_000;
|
|
32
|
+
export const ASSET_INGEST_TASK_MAX_DURATION_SECONDS = 300;
|
|
33
|
+
export const ASSET_PUT_MEDIA_TYPES = ["image/png", "image/jpeg", "video/mp4"];
|
|
34
|
+
/** The worker task that downloads or reads a staged file, checks it and publishes the asset. */
|
|
35
|
+
export const INGEST_ASSET_MEDIA_TASK = "ingest-asset-media";
|
|
36
|
+
/** The cabinet's preview of an asset (S4a): a WebP at `assets/<account>/<id>/preview.webp`, long side at most 512, no upscale. */
|
|
37
|
+
export const ASSET_PREVIEW_TASK = "make-asset-preview";
|
|
38
|
+
export const ASSET_PREVIEW_MAX_SIDE = 512;
|
|
39
|
+
export const ASSET_PREVIEW_QUALITY = 75;
|
|
40
|
+
export const ASSET_PREVIEW_SWEEP_BATCH = 200;
|
|
41
|
+
/** Past this many attempts a row leaves the queue as `gave_up`: an OOM or a hung R2 never loops for ever. */
|
|
42
|
+
export const ASSET_PREVIEW_MAX_ATTEMPTS = 6;
|
|
43
|
+
/** How long creating an asset waits to queue its preview; past it the hourly sweep picks the row up. */
|
|
44
|
+
export const ASSET_PREVIEW_ENQUEUE_TIMEOUT_MS = 2000;
|
|
45
|
+
/** Terminal codes only; a passing failure throws, and the next attempt or the sweep repeats it. */
|
|
46
|
+
export const ASSET_PREVIEW_ERRORS = ["decode_failed", "size_mismatch", "empty_output", "gave_up"];
|
|
22
47
|
export const ASSET_ROLES = ["character", "location", "style", "prop", "other"];
|
|
23
|
-
export
|
|
24
|
-
/** WebP is kept only as a generation's own output: its dimensions are not read from customer bytes. */
|
|
25
|
-
export const ASSET_MEDIA_TYPES = ["image/png", "image/jpeg", "image/webp", "video/mp4"];
|
|
48
|
+
export { ASSET_KINDS, ASSET_MEDIA_TYPES, assetId };
|
|
26
49
|
export const ASSET_SOURCE_TYPES = ["generation", "upload", "url", "base64", "bytes", "put"];
|
|
27
|
-
export const assetId = z.string().regex(/^ast_[a-f0-9]{32}$/);
|
|
28
50
|
// biome-ignore lint/suspicious/noControlCharactersInRegex: the class names exactly the characters a name may not hold.
|
|
29
51
|
const CONTROL_CHARACTERS = /[\u0000-\u001f\u007f-\u009f]/;
|
|
30
52
|
export const assetName = z.string().trim().min(1).max(ASSET_NAME_MAX_CHARS)
|
|
31
53
|
.refine((name) => !CONTROL_CHARACTERS.test(name), "a name holds no control characters");
|
|
32
|
-
|
|
54
|
+
const sha256Hex = z.string().regex(/^[a-f0-9]{64}$/);
|
|
55
|
+
/** A file the client PUTs itself: its type, exact size and sha256, checked against the bytes before the asset exists. */
|
|
56
|
+
export const assetPutSource = z.strictObject({
|
|
57
|
+
media_type: z.enum(ASSET_PUT_MEDIA_TYPES),
|
|
58
|
+
bytes: z.number().int().positive().max(ASSET_VIDEO_MAX_BYTES),
|
|
59
|
+
sha256: sha256Hex,
|
|
60
|
+
}).refine((put) => put.media_type === "video/mp4" || put.bytes <= UPLOAD_MAX_BYTES, `a picture is at most ${UPLOAD_MAX_BYTES} bytes`);
|
|
61
|
+
/** Where the asset's bytes come from: an own generation, an own upload, a public https url (`kind: "video"` for a clip), */
|
|
62
|
+
/** inline base64, or a presigned PUT. */
|
|
33
63
|
export const assetSource = z.union([
|
|
34
64
|
z.strictObject({ run_id: runId }),
|
|
35
65
|
z.strictObject({ upload_id: uploadId }),
|
|
36
|
-
z.strictObject({ url: z.string().url().startsWith("https://").max(2048) }),
|
|
66
|
+
z.strictObject({ url: z.string().url().startsWith("https://").max(2048), kind: z.enum(ASSET_KINDS).optional() }),
|
|
37
67
|
z.strictObject({ base64: z.string().min(1).max(ASSET_BASE64_MAX_CHARS).regex(/^[A-Za-z0-9+/]+={0,2}$/),
|
|
38
68
|
media_type: z.enum(UPLOAD_MEDIA_TYPES) }),
|
|
69
|
+
z.strictObject({ put: assetPutSource }),
|
|
39
70
|
]);
|
|
40
|
-
/**
|
|
71
|
+
/** Why a render or generation refuses an analysis-only asset (#884); the caller prefixes the field and the id. */
|
|
72
|
+
export const ANALYSIS_ONLY_ASSET_REFUSAL = "is an analysis-only asset: analyze_reference reads it, but it never reaches a render or a " +
|
|
73
|
+
"generation; to use the material, create it again with rights_confirmed: true";
|
|
74
|
+
/** The customer's own material needs `rights_confirmed` (stated once, at creation) or `analysis_only`, which keeps it out of every render. */
|
|
41
75
|
export const createAssetRequest = z.strictObject({
|
|
42
76
|
source: assetSource,
|
|
43
77
|
role: z.enum(ASSET_ROLES),
|
|
44
78
|
name: assetName,
|
|
45
79
|
rights_confirmed: z.literal(true).optional(),
|
|
80
|
+
analysis_only: z.literal(true).optional()
|
|
81
|
+
.describe("Keep it for analyze_reference only, without rights_confirmed: it never reaches a render or a generation."),
|
|
82
|
+
}).refine((request) => !(request.rights_confirmed && request.analysis_only), {
|
|
83
|
+
path: ["analysis_only"], message: "pass rights_confirmed or analysis_only, not both",
|
|
84
|
+
}).refine((request) => !(request.analysis_only && "run_id" in request.source), {
|
|
85
|
+
path: ["analysis_only"], message: "a generation of this account is already yours to use; analysis_only is for your own material",
|
|
46
86
|
});
|
|
47
87
|
/** The query of `POST /v1/assets/bytes`. */
|
|
48
88
|
export const assetBytesQuery = z.strictObject({
|
|
49
89
|
role: z.enum(ASSET_ROLES),
|
|
50
90
|
name: assetName,
|
|
51
91
|
rights_confirmed: z.literal("true").optional(),
|
|
92
|
+
analysis_only: z.literal("true").optional(),
|
|
52
93
|
});
|
|
53
94
|
export const updateAssetRequest = z.strictObject({
|
|
54
95
|
name: assetName.optional(),
|
|
@@ -62,6 +103,7 @@ export const assetListQuery = z.strictObject({
|
|
|
62
103
|
});
|
|
63
104
|
export const asset = z.strictObject({
|
|
64
105
|
asset_id: assetId,
|
|
106
|
+
state: z.literal("ready"),
|
|
65
107
|
kind: z.enum(ASSET_KINDS),
|
|
66
108
|
role: z.enum(ASSET_ROLES),
|
|
67
109
|
name: z.string().min(1),
|
|
@@ -71,30 +113,87 @@ export const asset = z.strictObject({
|
|
|
71
113
|
height: z.number().int().positive(),
|
|
72
114
|
duration_frames: z.number().int().positive().nullable(),
|
|
73
115
|
fps: z.number().int().positive().nullable(),
|
|
74
|
-
|
|
116
|
+
codec: z.string().min(1).nullable(),
|
|
117
|
+
pix_fmt: z.string().min(1).nullable(),
|
|
118
|
+
content_digest: sha256Hex,
|
|
75
119
|
source_type: z.enum(ASSET_SOURCE_TYPES),
|
|
120
|
+
/** Kept for analysis only (#884): no render or generation takes it. */
|
|
121
|
+
analysis_only: z.boolean(),
|
|
76
122
|
url: z.string().url().startsWith("https://"),
|
|
77
123
|
expires_at: z.string().datetime(),
|
|
78
124
|
created_at: z.string().datetime(),
|
|
79
125
|
updated_at: z.string().datetime(),
|
|
80
126
|
});
|
|
127
|
+
/** Where a PUT goes: signed for 15 minutes with exactly these two headers, and finished within a day. */
|
|
128
|
+
export const assetPutUpload = z.strictObject({
|
|
129
|
+
put_url: z.string().url().startsWith("https://"),
|
|
130
|
+
put_headers: z.strictObject({ "content-type": z.enum(ASSET_PUT_MEDIA_TYPES), "content-length": z.string().regex(/^\d+$/) }),
|
|
131
|
+
expires_at: z.string().datetime(),
|
|
132
|
+
finish_by: z.string().datetime(),
|
|
133
|
+
});
|
|
134
|
+
/** An asset before it exists: waiting for its PUT, being checked by the worker, or refused with the reason. */
|
|
135
|
+
export const ASSET_PENDING_STATES = ["awaiting_upload", "processing", "failed"];
|
|
136
|
+
export const pendingAsset = z.strictObject({
|
|
137
|
+
asset_id: assetId,
|
|
138
|
+
state: z.enum(ASSET_PENDING_STATES),
|
|
139
|
+
kind: z.enum(ASSET_KINDS),
|
|
140
|
+
role: z.enum(ASSET_ROLES),
|
|
141
|
+
name: z.string().min(1),
|
|
142
|
+
source_type: z.enum(ASSET_SOURCE_TYPES),
|
|
143
|
+
analysis_only: z.boolean(),
|
|
144
|
+
error: z.strictObject({ code: z.string().min(1), message: z.string().min(1) }).nullable(),
|
|
145
|
+
processing_deadline: z.string().datetime().nullable(),
|
|
146
|
+
created_at: z.string().datetime(),
|
|
147
|
+
/** Only in the answer that created the asset, or its repeat. */
|
|
148
|
+
upload: assetPutUpload.optional(),
|
|
149
|
+
});
|
|
150
|
+
export const assetItem = z.union([asset, pendingAsset]);
|
|
151
|
+
/** Why a pending asset failed, as `error.code`; these never come as an HTTP error of their own. */
|
|
152
|
+
export const ASSET_INGEST_FAILURE_CODES = [
|
|
153
|
+
"upload_expired", "upload_size_mismatch", "upload_digest_mismatch", "unsupported_media_type", "invalid_image", "invalid_video",
|
|
154
|
+
"payload_too_large", "url_fetch_refused", "url_fetch_failed", "asset_cap_exceeded", "asset_ingest_cap_exceeded",
|
|
155
|
+
"url_import_disabled", "ingest_timed_out", "ingest_enqueue_failed", "ingest_failed",
|
|
156
|
+
];
|
|
157
|
+
/** What the API hands the worker: which pending asset, and whether its bytes are at a url or already staged. */
|
|
158
|
+
export const ingestAssetMediaPayload = z.strictObject({
|
|
159
|
+
assetId,
|
|
160
|
+
accountId: z.string().regex(/^[A-Za-z0-9_-]{1,64}$/),
|
|
161
|
+
source: z.enum(["url", "staging"]),
|
|
162
|
+
});
|
|
163
|
+
/** The preview task takes the id only; it reads the account from the row. */
|
|
164
|
+
export const assetPreviewPayload = z.strictObject({ assetId });
|
|
165
|
+
/** One run per asset across every caller: created with `scope: "global"`, since a raw string inside a task is per run. */
|
|
166
|
+
export const assetPreviewIdempotencyKey = (id) => `asset-preview:${id}`;
|
|
167
|
+
export const assetPreviewKey = (accountId, id) => `assets/${accountId}/${id}/preview.webp`;
|
|
81
168
|
export const assetUsage = z.strictObject({
|
|
82
169
|
count: z.number().int().nonnegative(),
|
|
83
170
|
bytes: z.number().int().nonnegative(),
|
|
84
171
|
max_count: z.number().int().positive(),
|
|
85
172
|
max_bytes: z.number().int().positive(),
|
|
86
173
|
});
|
|
174
|
+
/** `pending` holds the account's assets still in progress and those refused within the day; the first page only. */
|
|
87
175
|
export const assetList = z.strictObject({
|
|
88
176
|
assets: z.array(asset),
|
|
177
|
+
pending: z.array(pendingAsset),
|
|
89
178
|
next_cursor: z.string().nullable(),
|
|
90
179
|
usage: assetUsage,
|
|
91
180
|
contract_version: z.string().min(1),
|
|
92
181
|
});
|
|
93
182
|
// What installed clients parse: open strings for the enums, and unknown keys are kept.
|
|
94
183
|
export const assetRead = asset.extend({
|
|
95
|
-
kind: z.string().min(1), role: z.string().min(1), media_type: z.string().min(1), source_type: z.string().min(1),
|
|
184
|
+
state: z.literal("ready"), kind: z.string().min(1), role: z.string().min(1), media_type: z.string().min(1), source_type: z.string().min(1),
|
|
185
|
+
analysis_only: z.boolean().optional(),
|
|
186
|
+
}).loose();
|
|
187
|
+
export const pendingAssetRead = pendingAsset.extend({
|
|
188
|
+
state: z.string().min(1), kind: z.string().min(1), role: z.string().min(1), source_type: z.string().min(1),
|
|
189
|
+
analysis_only: z.boolean().optional(),
|
|
190
|
+
error: z.object({ code: z.string().min(1), message: z.string() }).loose().nullable(),
|
|
191
|
+
upload: assetPutUpload.extend({ put_headers: z.record(z.string(), z.string()) }).loose().optional(),
|
|
192
|
+
}).loose();
|
|
193
|
+
export const assetItemRead = z.union([assetRead, pendingAssetRead]);
|
|
194
|
+
export const assetListRead = assetList.extend({
|
|
195
|
+
assets: z.array(assetRead), pending: z.array(pendingAssetRead).optional(), usage: assetUsage.loose(),
|
|
96
196
|
}).loose();
|
|
97
|
-
export const assetListRead = assetList.extend({ assets: z.array(assetRead), usage: assetUsage.loose() }).loose();
|
|
98
197
|
/** The asset's own object: a new id per asset, so a copy never overwrites another asset. */
|
|
99
198
|
export function assetKey(accountId, id, sha256, mediaType) {
|
|
100
199
|
const extension = { "image/png": "png", "image/jpeg": "jpg", "image/webp": "webp", "video/mp4": "mp4" }[mediaType];
|
|
@@ -102,18 +201,29 @@ export function assetKey(accountId, id, sha256, mediaType) {
|
|
|
102
201
|
}
|
|
103
202
|
export const ASSET_TOOL_TERMS = "Assets are free: creating, storing and using one spends no credits. An account keeps up to " +
|
|
104
203
|
`${ASSET_ACCOUNT_MAX_COUNT} assets and 20 GB, and makes up to ${ASSET_INGEST_DAILY_CAP} new ones per day.`;
|
|
105
|
-
export const CREATE_ASSET_DESCRIPTION = "Save a picture as an asset of this account, kept until you delete it: a character, location, style, prop
|
|
106
|
-
"other, with a name. source is {run_id} of a succeeded generate_image run of this account,
|
|
107
|
-
"upload from upload_image or create_upload, a public https {url} the server downloads
|
|
108
|
-
`of a PNG or JPEG up to ${ASSET_BASE64_MAX_BYTES} bytes
|
|
109
|
-
"
|
|
110
|
-
"
|
|
111
|
-
"
|
|
204
|
+
export const CREATE_ASSET_DESCRIPTION = "Save a picture or a clip as an asset of this account, kept until you delete it: a character, location, style, prop " +
|
|
205
|
+
"or other, with a name. source is {run_id} of a succeeded generate_image or generate_video run of this account, " +
|
|
206
|
+
"{upload_id} of an upload from upload_image or create_upload, a public https {url} the server downloads (add " +
|
|
207
|
+
`kind: "video" for an MP4), {base64, media_type} of a PNG or JPEG up to ${ASSET_BASE64_MAX_BYTES} bytes, or ` +
|
|
208
|
+
"{put: {media_type, bytes, sha256}} to PUT a local file yourself: the answer carries upload.put_url and put_headers; " +
|
|
209
|
+
"run `curl -X PUT -H 'content-type: <media_type>' --data-binary @<file> '<put_url>'` within 15 minutes, then call " +
|
|
210
|
+
"get_asset. On a server running on your machine also {path} of a local PNG, JPEG or MP4. A clip is an MP4 in h264 " +
|
|
211
|
+
`or hevc, up to ${ASSET_VIDEO_MAX_SECONDS} seconds and 100 MB; a url clip or a PUT is checked in the background, ` +
|
|
212
|
+
"so the answer says state: \"processing\" (or \"awaiting_upload\") and get_asset says ready or failed within " +
|
|
213
|
+
"minutes. For your own material (upload_id, url, base64, put, path) pass rights_confirmed: true, which states once " +
|
|
214
|
+
"that you may use the people and works in it. A reference you only want analysed, such as someone else's ad for " +
|
|
215
|
+
"analyze_reference, takes analysis_only: true instead: no rights claim, and no render or generation ever takes it. " +
|
|
216
|
+
"Use a picture's asset_id as {asset_id} in references, first_frame or " +
|
|
217
|
+
"last_frame of quote_image, generate_image, quote_video and generate_video; clips are kept for assembly and are " +
|
|
218
|
+
"no generation reference yet. " + ASSET_TOOL_TERMS;
|
|
112
219
|
export const LIST_ASSETS_DESCRIPTION = "List the assets of this account, newest first, each with a freshly signed url, its role, name, size and " +
|
|
113
|
-
"content_digest; filter by role and kind, and pass next_cursor as cursor for the next page.
|
|
220
|
+
"content_digest; filter by role and kind, and pass next_cursor as cursor for the next page. pending lists assets " +
|
|
221
|
+
"still awaiting their upload or processing, and those that failed today with the reason. usage says how much " +
|
|
114
222
|
`of the ${ASSET_ACCOUNT_MAX_COUNT} assets and 20 GB is used. Free.`;
|
|
115
223
|
export const GET_ASSET_DESCRIPTION = "Read one asset by asset_id with a freshly signed url (valid for an hour), its role, name, media_type, bytes, " +
|
|
116
|
-
"width, height and
|
|
224
|
+
"width, height, content_digest and, for a clip, duration_frames, fps, codec and pix_fmt. An asset still in " +
|
|
225
|
+
"progress answers state awaiting_upload (PUT the file, then read again) or processing (read again in a few " +
|
|
226
|
+
"seconds); a refused one answers state failed with error.code. A deleted asset answers asset_not_found. Free.";
|
|
117
227
|
export const UPDATE_ASSET_DESCRIPTION = "Rename an asset or change its role; the picture itself does not change. Free.";
|
|
118
228
|
export const DELETE_ASSET_DESCRIPTION = "Delete an asset by asset_id. It leaves the list at once and a new generation can no longer use it; its file is " +
|
|
119
229
|
`removed from our storage by a daily cleanup once ${ASSET_DELETE_GRACE_DAYS} days have passed. Runs already made with it ` +
|
package/dist/assets.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assets.js","sourceRoot":"","sources":["../src/assets.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"assets.js","sourceRoot":"","sources":["../src/assets.ts"],"names":[],"mappings":"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"}
|
package/dist/billing-terms.d.ts
CHANGED
|
@@ -14,6 +14,75 @@ export declare const faceBillingAdmissionTermsSchema: z.ZodReadonly<z.ZodObject<
|
|
|
14
14
|
minimumCredits: z.ZodNumber;
|
|
15
15
|
rounding: z.ZodLiteral<"ceil_aggregate_seconds">;
|
|
16
16
|
failurePolicy: z.ZodLiteral<"verified_delivery_only">;
|
|
17
|
+
}, z.core.$strict>>, z.ZodReadonly<z.ZodObject<{
|
|
18
|
+
version: z.ZodLiteral<3>;
|
|
19
|
+
pricingVersion: z.ZodString;
|
|
20
|
+
presenterCreditsPerSecond: z.ZodReadonly<z.ZodObject<{
|
|
21
|
+
heygen: z.ZodNumber;
|
|
22
|
+
omnihuman: z.ZodNumber;
|
|
23
|
+
}, z.core.$strict>>;
|
|
24
|
+
productionCreditsPerSecond: z.ZodNumber;
|
|
25
|
+
liveAvatarStillCredits: z.ZodNumber;
|
|
26
|
+
minimumCredits: z.ZodNumber;
|
|
27
|
+
rounding: z.ZodLiteral<"ceil_aggregate_seconds">;
|
|
28
|
+
failurePolicy: z.ZodLiteral<"verified_delivery_only">;
|
|
17
29
|
}, z.core.$strict>>]>;
|
|
18
30
|
}, z.core.$strict>>;
|
|
19
31
|
export type FaceBillingAdmissionTerms = z.infer<typeof faceBillingAdmissionTermsSchema>;
|
|
32
|
+
/** A short run's parts tariff (#800): billed by its measured duration on the short run's settlement path. */
|
|
33
|
+
export declare const durationPartsAdmissionTermsSchema: z.ZodReadonly<z.ZodObject<{
|
|
34
|
+
mode: z.ZodLiteral<"duration_parts">;
|
|
35
|
+
tariffSnapshot: z.ZodReadonly<z.ZodObject<{
|
|
36
|
+
version: z.ZodLiteral<1>;
|
|
37
|
+
pricingVersion: z.ZodString;
|
|
38
|
+
presenterCreditsPerSecond: z.ZodReadonly<z.ZodObject<{
|
|
39
|
+
heygen: z.ZodNumber;
|
|
40
|
+
omnihuman: z.ZodNumber;
|
|
41
|
+
}, z.core.$strict>>;
|
|
42
|
+
productionCreditsPerSecond: z.ZodNumber;
|
|
43
|
+
minimumCredits: z.ZodNumber;
|
|
44
|
+
}, z.core.$strict>>;
|
|
45
|
+
}, z.core.$strict>>;
|
|
46
|
+
export type DurationPartsAdmissionTerms = z.infer<typeof durationPartsAdmissionTermsSchema>;
|
|
47
|
+
/** Every mode a `run_billing_terms` row may hold. */
|
|
48
|
+
export declare const runBillingAdmissionTermsSchema: z.ZodUnion<readonly [z.ZodReadonly<z.ZodObject<{
|
|
49
|
+
mode: z.ZodLiteral<"face_seconds">;
|
|
50
|
+
tariffSnapshot: z.ZodUnion<readonly [z.ZodReadonly<z.ZodObject<{
|
|
51
|
+
version: z.ZodLiteral<1>;
|
|
52
|
+
id: z.ZodString;
|
|
53
|
+
creditsPerSecond: z.ZodNumber;
|
|
54
|
+
rounding: z.ZodLiteral<"ceil_aggregate_seconds">;
|
|
55
|
+
}, z.core.$strict>>, z.ZodReadonly<z.ZodObject<{
|
|
56
|
+
version: z.ZodLiteral<2>;
|
|
57
|
+
pricingVersion: z.ZodString;
|
|
58
|
+
rateCreditsPerFaceSecond: z.ZodNumber;
|
|
59
|
+
minimumCredits: z.ZodNumber;
|
|
60
|
+
rounding: z.ZodLiteral<"ceil_aggregate_seconds">;
|
|
61
|
+
failurePolicy: z.ZodLiteral<"verified_delivery_only">;
|
|
62
|
+
}, z.core.$strict>>, z.ZodReadonly<z.ZodObject<{
|
|
63
|
+
version: z.ZodLiteral<3>;
|
|
64
|
+
pricingVersion: z.ZodString;
|
|
65
|
+
presenterCreditsPerSecond: z.ZodReadonly<z.ZodObject<{
|
|
66
|
+
heygen: z.ZodNumber;
|
|
67
|
+
omnihuman: z.ZodNumber;
|
|
68
|
+
}, z.core.$strict>>;
|
|
69
|
+
productionCreditsPerSecond: z.ZodNumber;
|
|
70
|
+
liveAvatarStillCredits: z.ZodNumber;
|
|
71
|
+
minimumCredits: z.ZodNumber;
|
|
72
|
+
rounding: z.ZodLiteral<"ceil_aggregate_seconds">;
|
|
73
|
+
failurePolicy: z.ZodLiteral<"verified_delivery_only">;
|
|
74
|
+
}, z.core.$strict>>]>;
|
|
75
|
+
}, z.core.$strict>>, z.ZodReadonly<z.ZodObject<{
|
|
76
|
+
mode: z.ZodLiteral<"duration_parts">;
|
|
77
|
+
tariffSnapshot: z.ZodReadonly<z.ZodObject<{
|
|
78
|
+
version: z.ZodLiteral<1>;
|
|
79
|
+
pricingVersion: z.ZodString;
|
|
80
|
+
presenterCreditsPerSecond: z.ZodReadonly<z.ZodObject<{
|
|
81
|
+
heygen: z.ZodNumber;
|
|
82
|
+
omnihuman: z.ZodNumber;
|
|
83
|
+
}, z.core.$strict>>;
|
|
84
|
+
productionCreditsPerSecond: z.ZodNumber;
|
|
85
|
+
minimumCredits: z.ZodNumber;
|
|
86
|
+
}, z.core.$strict>>;
|
|
87
|
+
}, z.core.$strict>>]>;
|
|
88
|
+
export type RunBillingAdmissionTerms = z.infer<typeof runBillingAdmissionTermsSchema>;
|
package/dist/billing-terms.js
CHANGED
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { faceBillingTariffSchema } from "./face-billing.js";
|
|
3
|
+
import { durationPartsTariffSchema } from "./parts-pricing.js";
|
|
3
4
|
/** Server-authored terms, exposed read-only on runs; never accepted as skill input. */
|
|
4
5
|
export const faceBillingAdmissionTermsSchema = z.object({
|
|
5
6
|
mode: z.literal("face_seconds"),
|
|
6
7
|
tariffSnapshot: faceBillingTariffSchema,
|
|
7
8
|
}).strict().readonly();
|
|
9
|
+
/** A short run's parts tariff (#800): billed by its measured duration on the short run's settlement path. */
|
|
10
|
+
export const durationPartsAdmissionTermsSchema = z.object({
|
|
11
|
+
mode: z.literal("duration_parts"),
|
|
12
|
+
tariffSnapshot: durationPartsTariffSchema,
|
|
13
|
+
}).strict().readonly();
|
|
14
|
+
/** Every mode a `run_billing_terms` row may hold. */
|
|
15
|
+
export const runBillingAdmissionTermsSchema = z.union([faceBillingAdmissionTermsSchema, durationPartsAdmissionTermsSchema]);
|
|
8
16
|
//# sourceMappingURL=billing-terms.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"billing-terms.js","sourceRoot":"","sources":["../src/billing-terms.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"billing-terms.js","sourceRoot":"","sources":["../src/billing-terms.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,uFAAuF;AACvF,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,CAAC,MAAM,CAAC;IACtD,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC;IAC/B,cAAc,EAAE,uBAAuB;CACxC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;AAIvB,6GAA6G;AAC7G,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,CAAC,MAAM,CAAC;IACxD,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC;IACjC,cAAc,EAAE,yBAAyB;CAC1C,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;AAIvB,qDAAqD;AACrD,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,+BAA+B,EAAE,iCAAiC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/** The caption language as the font table reads it, from the letters the script is written in (in core for template text, #778 S3). */
|
|
2
|
+
export function captionLanguageOf(script) {
|
|
3
|
+
const count = (pattern) => script.match(pattern)?.length ?? 0;
|
|
4
|
+
const scripts = [
|
|
5
|
+
["ru", count(/\p{Script=Cyrillic}/gu)], ["el", count(/\p{Script=Greek}/gu)], ["ja", count(/[\p{Script=Hiragana}\p{Script=Katakana}]/gu)],
|
|
6
|
+
["zh", count(/\p{Script=Han}/gu)], ["ko", count(/\p{Script=Hangul}/gu)], ["ar", count(/\p{Script=Arabic}/gu)],
|
|
7
|
+
["hi", count(/\p{Script=Devanagari}/gu)], ["ta", count(/\p{Script=Tamil}/gu)], ["latin", count(/\p{Script=Latin}/gu)],
|
|
8
|
+
];
|
|
9
|
+
const [top] = scripts.sort((a, b) => b[1] - a[1]);
|
|
10
|
+
if (top[0] !== "latin" && top[1] > 0)
|
|
11
|
+
return top[0];
|
|
12
|
+
if (/[ăâđêôơưạ-ỹ]/iu.test(script))
|
|
13
|
+
return "vi";
|
|
14
|
+
// A Latin letter outside ASCII needs latin-ext; Polish stands for every such language in the table.
|
|
15
|
+
return /[^a-z]/iu.test(script.replace(/[^\p{Script=Latin}]/gu, "")) ? "pl" : "en";
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=caption-language.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"caption-language.js","sourceRoot":"","sources":["../src/caption-language.ts"],"names":[],"mappings":"AAAA,uIAAuI;AACvI,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC9C,MAAM,KAAK,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC;IACtE,MAAM,OAAO,GAA4B;QACvC,CAAC,IAAI,EAAE,KAAK,CAAC,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,4CAA4C,CAAC,CAAC;QACxI,CAAC,IAAI,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAC7G,CAAC,IAAI,EAAE,KAAK,CAAC,yBAAyB,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC;KACtH,CAAC;IACF,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,IAAI,GAAI,CAAC,CAAC,CAAC,KAAK,OAAO,IAAI,GAAI,CAAC,CAAC,CAAC,GAAG,CAAC;QAAE,OAAO,GAAI,CAAC,CAAC,CAAC,CAAC;IACvD,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/C,oGAAoG;IACpG,OAAO,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACpF,CAAC"}
|