@clipwright/core 0.19.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 +14 -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 +69 -160
- 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
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
declare const profile: z.ZodObject<{
|
|
3
|
+
schema: z.ZodLiteral<"cut_style_profile_v1">;
|
|
4
|
+
fps: z.ZodLiteral<25>;
|
|
5
|
+
style_id: z.ZodString;
|
|
6
|
+
sources: z.ZodArray<z.ZodObject<{
|
|
7
|
+
sha256: z.ZodString;
|
|
8
|
+
reviewed_shots: z.ZodNumber;
|
|
9
|
+
image_shots: z.ZodNumber;
|
|
10
|
+
aligned_cuts: z.ZodNumber;
|
|
11
|
+
}, z.core.$strict>>;
|
|
12
|
+
speech_rules_available: z.ZodBoolean;
|
|
13
|
+
pacing: z.ZodObject<{
|
|
14
|
+
global_image_frames: z.ZodObject<{
|
|
15
|
+
p25: z.ZodNullable<z.ZodNumber>;
|
|
16
|
+
p50: z.ZodNullable<z.ZodNumber>;
|
|
17
|
+
p75: z.ZodNullable<z.ZodNumber>;
|
|
18
|
+
n: z.ZodNumber;
|
|
19
|
+
}, z.core.$strict>;
|
|
20
|
+
by_phase: z.ZodRecord<z.ZodEnum<{
|
|
21
|
+
climax: "climax";
|
|
22
|
+
development: "development";
|
|
23
|
+
resolution: "resolution";
|
|
24
|
+
setup: "setup";
|
|
25
|
+
}> & z.core.$partial, z.ZodObject<{
|
|
26
|
+
p25: z.ZodNullable<z.ZodNumber>;
|
|
27
|
+
p50: z.ZodNullable<z.ZodNumber>;
|
|
28
|
+
p75: z.ZodNullable<z.ZodNumber>;
|
|
29
|
+
n: z.ZodNumber;
|
|
30
|
+
}, z.core.$strict>>;
|
|
31
|
+
short_bursts: z.ZodObject<{
|
|
32
|
+
shot_count: z.ZodNumber;
|
|
33
|
+
n: z.ZodNumber;
|
|
34
|
+
}, z.core.$strict>;
|
|
35
|
+
}, z.core.$strict>;
|
|
36
|
+
motion: z.ZodObject<{
|
|
37
|
+
pan_flip_probability: z.ZodNullable<z.ZodNumber>;
|
|
38
|
+
pan_transition_n: z.ZodNumber;
|
|
39
|
+
pan_travel_fraction: z.ZodNullable<z.ZodNumber>;
|
|
40
|
+
pan_travel_n: z.ZodNumber;
|
|
41
|
+
}, z.core.$strict>;
|
|
42
|
+
opening_video: z.ZodObject<{
|
|
43
|
+
share: z.ZodNumber;
|
|
44
|
+
n: z.ZodNumber;
|
|
45
|
+
duration_frames: z.ZodObject<{
|
|
46
|
+
p25: z.ZodNullable<z.ZodNumber>;
|
|
47
|
+
p50: z.ZodNullable<z.ZodNumber>;
|
|
48
|
+
p75: z.ZodNullable<z.ZodNumber>;
|
|
49
|
+
n: z.ZodNumber;
|
|
50
|
+
}, z.core.$strict>;
|
|
51
|
+
}, z.core.$strict>;
|
|
52
|
+
captions: z.ZodObject<{
|
|
53
|
+
n: z.ZodNumber;
|
|
54
|
+
style: z.ZodNullable<z.ZodString>;
|
|
55
|
+
style_n: z.ZodNumber;
|
|
56
|
+
position_fraction: z.ZodNullable<z.ZodNumber>;
|
|
57
|
+
position_fraction_n: z.ZodNumber;
|
|
58
|
+
color: z.ZodNullable<z.ZodString>;
|
|
59
|
+
color_n: z.ZodNumber;
|
|
60
|
+
accent: z.ZodNullable<z.ZodString>;
|
|
61
|
+
accent_n: z.ZodNumber;
|
|
62
|
+
changes_per_sec: z.ZodObject<{
|
|
63
|
+
p25: z.ZodNullable<z.ZodNumber>;
|
|
64
|
+
p50: z.ZodNullable<z.ZodNumber>;
|
|
65
|
+
p75: z.ZodNullable<z.ZodNumber>;
|
|
66
|
+
n: z.ZodNumber;
|
|
67
|
+
}, z.core.$strict>;
|
|
68
|
+
}, z.core.$strict>;
|
|
69
|
+
speech: z.ZodNullable<z.ZodObject<{
|
|
70
|
+
n: z.ZodNumber;
|
|
71
|
+
unknown: z.ZodNumber;
|
|
72
|
+
class_counts: z.ZodRecord<z.ZodEnum<{
|
|
73
|
+
mid_word: "mid_word";
|
|
74
|
+
pause: "pause";
|
|
75
|
+
phrase: "phrase";
|
|
76
|
+
sentence: "sentence";
|
|
77
|
+
word: "word";
|
|
78
|
+
}> & z.core.$partial, z.ZodNumber>;
|
|
79
|
+
offset_frames: z.ZodObject<{
|
|
80
|
+
sentence: z.ZodObject<{
|
|
81
|
+
p25: z.ZodNullable<z.ZodNumber>;
|
|
82
|
+
p50: z.ZodNullable<z.ZodNumber>;
|
|
83
|
+
p75: z.ZodNullable<z.ZodNumber>;
|
|
84
|
+
n: z.ZodNumber;
|
|
85
|
+
}, z.core.$strict>;
|
|
86
|
+
phrase: z.ZodObject<{
|
|
87
|
+
p25: z.ZodNullable<z.ZodNumber>;
|
|
88
|
+
p50: z.ZodNullable<z.ZodNumber>;
|
|
89
|
+
p75: z.ZodNullable<z.ZodNumber>;
|
|
90
|
+
n: z.ZodNumber;
|
|
91
|
+
}, z.core.$strict>;
|
|
92
|
+
pause: z.ZodObject<{
|
|
93
|
+
p25: z.ZodNullable<z.ZodNumber>;
|
|
94
|
+
p50: z.ZodNullable<z.ZodNumber>;
|
|
95
|
+
p75: z.ZodNullable<z.ZodNumber>;
|
|
96
|
+
n: z.ZodNumber;
|
|
97
|
+
}, z.core.$strict>;
|
|
98
|
+
word: z.ZodObject<{
|
|
99
|
+
p25: z.ZodNullable<z.ZodNumber>;
|
|
100
|
+
p50: z.ZodNullable<z.ZodNumber>;
|
|
101
|
+
p75: z.ZodNullable<z.ZodNumber>;
|
|
102
|
+
n: z.ZodNumber;
|
|
103
|
+
}, z.core.$strict>;
|
|
104
|
+
mid_word: z.ZodObject<{
|
|
105
|
+
p25: z.ZodNullable<z.ZodNumber>;
|
|
106
|
+
p50: z.ZodNullable<z.ZodNumber>;
|
|
107
|
+
p75: z.ZodNullable<z.ZodNumber>;
|
|
108
|
+
n: z.ZodNumber;
|
|
109
|
+
}, z.core.$strict>;
|
|
110
|
+
}, z.core.$strict>;
|
|
111
|
+
}, z.core.$strict>>;
|
|
112
|
+
}, z.core.$strict>;
|
|
113
|
+
export type CutStyleProfile = z.infer<typeof profile>;
|
|
114
|
+
export declare function parseCutStyle(input: unknown): CutStyleProfile;
|
|
115
|
+
export {};
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
const count = z.number().int().nonnegative().safe();
|
|
3
|
+
const positiveCount = count.positive();
|
|
4
|
+
const finite = z.number().finite();
|
|
5
|
+
const nonnegative = finite.nonnegative();
|
|
6
|
+
const fraction = nonnegative.max(1);
|
|
7
|
+
const nonblank = z.string().trim().min(1);
|
|
8
|
+
const phase = z.enum(["setup", "development", "climax", "resolution"]);
|
|
9
|
+
const customIssue = "custom";
|
|
10
|
+
function quantiles(value) {
|
|
11
|
+
return z.strictObject({
|
|
12
|
+
p25: value.nullable(), p50: value.nullable(), p75: value.nullable(), n: count,
|
|
13
|
+
}).superRefine((q, ctx) => {
|
|
14
|
+
if (q.n === 0) {
|
|
15
|
+
if (q.p25 !== null || q.p50 !== null || q.p75 !== null) {
|
|
16
|
+
ctx.addIssue({ code: customIssue, message: "empty quantiles require null values" });
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
else if (q.p25 === null || q.p50 === null || q.p75 === null || q.p25 > q.p50 || q.p50 > q.p75) {
|
|
20
|
+
ctx.addIssue({ code: customIssue, message: "quantiles must be finite and ordered" });
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
const frameQuantiles = quantiles(count);
|
|
25
|
+
const signedQuantiles = quantiles(z.number().int().safe());
|
|
26
|
+
const speechClasses = ["sentence", "phrase", "pause", "word", "mid_word"];
|
|
27
|
+
const speechCounts = z.partialRecord(z.enum(speechClasses), count);
|
|
28
|
+
const speechOffsets = z.strictObject({
|
|
29
|
+
sentence: signedQuantiles,
|
|
30
|
+
phrase: signedQuantiles,
|
|
31
|
+
pause: signedQuantiles,
|
|
32
|
+
word: signedQuantiles,
|
|
33
|
+
mid_word: signedQuantiles,
|
|
34
|
+
});
|
|
35
|
+
const speech = z.strictObject({
|
|
36
|
+
n: positiveCount,
|
|
37
|
+
unknown: count,
|
|
38
|
+
class_counts: speechCounts,
|
|
39
|
+
offset_frames: speechOffsets,
|
|
40
|
+
}).superRefine((s, ctx) => {
|
|
41
|
+
if (Object.values(s.class_counts).reduce((sum, n) => sum + n, 0) !== s.n) {
|
|
42
|
+
ctx.addIssue({ code: customIssue, message: "speech class counts must equal n" });
|
|
43
|
+
}
|
|
44
|
+
for (const name of speechClasses) {
|
|
45
|
+
if (s.offset_frames[name].n !== (s.class_counts[name] ?? 0)) {
|
|
46
|
+
ctx.addIssue({ code: customIssue, message: `speech offset count differs for ${name}` });
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
const profile = z.strictObject({
|
|
51
|
+
schema: z.literal("cut_style_profile_v1"),
|
|
52
|
+
fps: z.literal(25),
|
|
53
|
+
style_id: nonblank,
|
|
54
|
+
sources: z.array(z.strictObject({
|
|
55
|
+
sha256: z.string().regex(/^[a-fA-F0-9]{64}$/),
|
|
56
|
+
reviewed_shots: positiveCount,
|
|
57
|
+
image_shots: count,
|
|
58
|
+
aligned_cuts: count,
|
|
59
|
+
})).min(1),
|
|
60
|
+
speech_rules_available: z.boolean(),
|
|
61
|
+
pacing: z.strictObject({
|
|
62
|
+
global_image_frames: frameQuantiles,
|
|
63
|
+
by_phase: z.partialRecord(phase, frameQuantiles),
|
|
64
|
+
short_bursts: z.strictObject({ shot_count: count, n: count }),
|
|
65
|
+
}),
|
|
66
|
+
motion: z.strictObject({
|
|
67
|
+
pan_flip_probability: fraction.nullable(),
|
|
68
|
+
pan_transition_n: count,
|
|
69
|
+
pan_travel_fraction: fraction.nullable(),
|
|
70
|
+
pan_travel_n: count,
|
|
71
|
+
}),
|
|
72
|
+
opening_video: z.strictObject({
|
|
73
|
+
share: fraction,
|
|
74
|
+
n: count,
|
|
75
|
+
duration_frames: frameQuantiles,
|
|
76
|
+
}),
|
|
77
|
+
captions: z.strictObject({
|
|
78
|
+
n: count,
|
|
79
|
+
style: nonblank.nullable(), style_n: count,
|
|
80
|
+
position_fraction: fraction.nullable(), position_fraction_n: count,
|
|
81
|
+
color: nonblank.nullable(), color_n: count,
|
|
82
|
+
accent: nonblank.nullable(), accent_n: count,
|
|
83
|
+
changes_per_sec: quantiles(nonnegative),
|
|
84
|
+
}),
|
|
85
|
+
speech: speech.nullable(),
|
|
86
|
+
}).superRefine((p, ctx) => {
|
|
87
|
+
if (p.pacing.global_image_frames.n === 0) {
|
|
88
|
+
ctx.addIssue({ code: customIssue, message: "global image pace needs observations" });
|
|
89
|
+
}
|
|
90
|
+
if (p.speech_rules_available !== (p.speech !== null)) {
|
|
91
|
+
ctx.addIssue({ code: customIssue, message: "speech availability requires measured speech" });
|
|
92
|
+
}
|
|
93
|
+
if (p.speech !== null && p.speech.n + p.speech.unknown !==
|
|
94
|
+
p.sources.reduce((sum, source) => sum + source.aligned_cuts, 0)) {
|
|
95
|
+
ctx.addIssue({ code: customIssue, message: "speech samples must match aligned source cuts" });
|
|
96
|
+
}
|
|
97
|
+
for (const source of p.sources) {
|
|
98
|
+
if (source.aligned_cuts > Math.max(0, source.reviewed_shots - 1)) {
|
|
99
|
+
ctx.addIssue({ code: customIssue, message: "aligned cuts exceed reviewed shot boundaries" });
|
|
100
|
+
}
|
|
101
|
+
if (source.image_shots > source.reviewed_shots) {
|
|
102
|
+
ctx.addIssue({ code: customIssue, message: "image shots exceed reviewed shots" });
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
export function parseCutStyle(input) {
|
|
107
|
+
return profile.parse(input);
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=faceless-cut-style.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"faceless-cut-style.js","sourceRoot":"","sources":["../src/faceless-cut-style.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
declare const plan: z.ZodObject<{
|
|
3
|
+
version: z.ZodLiteral<"faceless_image_v1">;
|
|
4
|
+
script: z.ZodString;
|
|
5
|
+
aspectRatio: z.ZodLiteral<"9:16">;
|
|
6
|
+
resolution: z.ZodLiteral<"1080p">;
|
|
7
|
+
brollPolicy: z.ZodEnum<{
|
|
8
|
+
anyone: "anyone";
|
|
9
|
+
no_actor: "no_actor";
|
|
10
|
+
no_people: "no_people";
|
|
11
|
+
}>;
|
|
12
|
+
assets: z.ZodArray<z.ZodObject<{
|
|
13
|
+
id: z.ZodString;
|
|
14
|
+
role: z.ZodEnum<{
|
|
15
|
+
character: "character";
|
|
16
|
+
scene: "scene";
|
|
17
|
+
style: "style";
|
|
18
|
+
}>;
|
|
19
|
+
source: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
20
|
+
kind: z.ZodLiteral<"supplied">;
|
|
21
|
+
url: z.ZodURL;
|
|
22
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
23
|
+
kind: z.ZodLiteral<"generated">;
|
|
24
|
+
prompt: z.ZodString;
|
|
25
|
+
styleId: z.ZodOptional<z.ZodString>;
|
|
26
|
+
characterIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
27
|
+
}, z.core.$strict>], "kind">;
|
|
28
|
+
}, z.core.$strict>>;
|
|
29
|
+
scenes: z.ZodArray<z.ZodObject<{
|
|
30
|
+
id: z.ZodString;
|
|
31
|
+
assetId: z.ZodString;
|
|
32
|
+
durationFrames: z.ZodNumber;
|
|
33
|
+
motion: z.ZodOptional<z.ZodObject<{
|
|
34
|
+
direction: z.ZodEnum<{
|
|
35
|
+
in: "in";
|
|
36
|
+
out: "out";
|
|
37
|
+
}>;
|
|
38
|
+
amount: z.ZodNumber;
|
|
39
|
+
}, z.core.$strict>>;
|
|
40
|
+
}, z.core.$strict>>;
|
|
41
|
+
}, z.core.$strict>;
|
|
42
|
+
export type FacelessImagePlan = z.infer<typeof plan>;
|
|
43
|
+
export declare function parseFacelessImagePlan(input: unknown): FacelessImagePlan;
|
|
44
|
+
export declare function quoteFacelessImage(input: unknown): {
|
|
45
|
+
pricingVersion: "faceless-image-v1-shadow";
|
|
46
|
+
aspectRatio: "9:16";
|
|
47
|
+
resolution: "1080p";
|
|
48
|
+
outputFrames: number;
|
|
49
|
+
outputSeconds: number;
|
|
50
|
+
credits: number;
|
|
51
|
+
customerCreditCeiling: number;
|
|
52
|
+
baseGeneratedImages: number;
|
|
53
|
+
maxGeneratedImages: number;
|
|
54
|
+
retryHeadroom: number;
|
|
55
|
+
costBreakdown: {
|
|
56
|
+
generatedImages: {
|
|
57
|
+
status: "unmeasured";
|
|
58
|
+
usd: null;
|
|
59
|
+
exposureBasis: "hypothetical_two_attempts_per_generated_asset_within_shared_allowance";
|
|
60
|
+
maxPaidAttemptsPerAsset: number;
|
|
61
|
+
maxPaidImageCalls: number;
|
|
62
|
+
};
|
|
63
|
+
tts: {
|
|
64
|
+
status: "unmeasured";
|
|
65
|
+
usd: null;
|
|
66
|
+
};
|
|
67
|
+
rendering: {
|
|
68
|
+
status: "unmeasured";
|
|
69
|
+
usd: null;
|
|
70
|
+
};
|
|
71
|
+
storage: {
|
|
72
|
+
status: "unmeasured";
|
|
73
|
+
usd: null;
|
|
74
|
+
};
|
|
75
|
+
paymentFees: {
|
|
76
|
+
status: "unmeasured";
|
|
77
|
+
usd: null;
|
|
78
|
+
};
|
|
79
|
+
paidFailures: {
|
|
80
|
+
status: "unmeasured";
|
|
81
|
+
usd: null;
|
|
82
|
+
};
|
|
83
|
+
};
|
|
84
|
+
totalCostUsd: null;
|
|
85
|
+
contributionMargin: null;
|
|
86
|
+
costQualified: boolean;
|
|
87
|
+
marginQualified: boolean;
|
|
88
|
+
sceneCount: number;
|
|
89
|
+
sceneSources: {
|
|
90
|
+
sceneId: string;
|
|
91
|
+
assetId: string;
|
|
92
|
+
sourceKind: "generated" | "supplied";
|
|
93
|
+
}[];
|
|
94
|
+
maxPaidAttempts: 0;
|
|
95
|
+
maxUsdSpend: 0;
|
|
96
|
+
};
|
|
97
|
+
export {};
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { brollPolicy } from "./broll-policy.js";
|
|
3
|
+
import { CANVAS_FPS } from "./media-timebase.js";
|
|
4
|
+
import { MAX_URL_LENGTH } from "./skills.js";
|
|
5
|
+
import { DEFAULT_TTS_MODEL, speechTextFor, TTS_MODEL_CHAR_CAP } from "./voices.js";
|
|
6
|
+
const id = z.string().min(1);
|
|
7
|
+
const suppliedSource = z.strictObject({
|
|
8
|
+
kind: z.literal("supplied"),
|
|
9
|
+
// Offline source eligibility only: remote bytes and geometry remain unqualified.
|
|
10
|
+
url: z.url().max(MAX_URL_LENGTH).refine(url => {
|
|
11
|
+
const source = new URL(url);
|
|
12
|
+
return source.protocol === "https:" && /\.(png|jpe?g)$/i.test(source.pathname);
|
|
13
|
+
}, "supplied image URL must use HTTPS with a PNG or JPEG path suffix"),
|
|
14
|
+
});
|
|
15
|
+
const generatedSource = z.strictObject({
|
|
16
|
+
kind: z.literal("generated"),
|
|
17
|
+
prompt: z.string().trim().min(1),
|
|
18
|
+
styleId: id.optional(),
|
|
19
|
+
characterIds: z.array(id).optional(),
|
|
20
|
+
});
|
|
21
|
+
const asset = z.strictObject({
|
|
22
|
+
id,
|
|
23
|
+
role: z.enum(["scene", "style", "character"]),
|
|
24
|
+
source: z.discriminatedUnion("kind", [suppliedSource, generatedSource]),
|
|
25
|
+
});
|
|
26
|
+
const scene = z.strictObject({
|
|
27
|
+
id,
|
|
28
|
+
assetId: id,
|
|
29
|
+
durationFrames: z.number().int().positive().refine(Number.isSafeInteger, "durationFrames must be a safe integer"),
|
|
30
|
+
motion: z.strictObject({ direction: z.enum(["in", "out"]), amount: z.number().min(0).lt(1) }).optional(),
|
|
31
|
+
});
|
|
32
|
+
const plan = z.strictObject({
|
|
33
|
+
version: z.literal("faceless_image_v1"),
|
|
34
|
+
script: z.string().trim().min(1).refine(text => speechTextFor(text, DEFAULT_TTS_MODEL).length <= TTS_MODEL_CHAR_CAP[DEFAULT_TTS_MODEL], `script exceeds ${DEFAULT_TTS_MODEL} limit of ${TTS_MODEL_CHAR_CAP[DEFAULT_TTS_MODEL]} characters after stress normalization`),
|
|
35
|
+
aspectRatio: z.literal("9:16"),
|
|
36
|
+
resolution: z.literal("1080p"),
|
|
37
|
+
brollPolicy,
|
|
38
|
+
assets: z.array(asset).min(1),
|
|
39
|
+
scenes: z.array(scene).min(1).max(100),
|
|
40
|
+
});
|
|
41
|
+
export function parseFacelessImagePlan(input) {
|
|
42
|
+
const parsed = plan.parse(input);
|
|
43
|
+
const assets = new Map();
|
|
44
|
+
for (const entry of parsed.assets) {
|
|
45
|
+
if (assets.has(entry.id))
|
|
46
|
+
throw new Error(`duplicate faceless IMAGE asset ID: ${entry.id}`);
|
|
47
|
+
if (entry.role !== "scene" && entry.source.kind === "generated" &&
|
|
48
|
+
(entry.source.styleId !== undefined || entry.source.characterIds !== undefined)) {
|
|
49
|
+
throw new Error(`faceless IMAGE references belong on scene assets: ${entry.id}`);
|
|
50
|
+
}
|
|
51
|
+
assets.set(entry.id, entry);
|
|
52
|
+
}
|
|
53
|
+
const used = new Set();
|
|
54
|
+
const sceneIds = new Set();
|
|
55
|
+
let sharedStyleId;
|
|
56
|
+
for (const entry of parsed.scenes) {
|
|
57
|
+
if (sceneIds.has(entry.id))
|
|
58
|
+
throw new Error(`duplicate faceless IMAGE scene ID: ${entry.id}`);
|
|
59
|
+
sceneIds.add(entry.id);
|
|
60
|
+
const image = assets.get(entry.assetId);
|
|
61
|
+
if (image?.role !== "scene")
|
|
62
|
+
throw new Error(`faceless IMAGE scene asset missing or wrong role: ${entry.assetId}`);
|
|
63
|
+
used.add(image.id);
|
|
64
|
+
if (image.source.kind === "generated") {
|
|
65
|
+
const style = image.source.styleId === undefined ? undefined : assets.get(image.source.styleId);
|
|
66
|
+
if (style?.role !== "style")
|
|
67
|
+
throw new Error(`faceless IMAGE style asset missing or wrong role: ${image.id}`);
|
|
68
|
+
if (sharedStyleId !== undefined && sharedStyleId !== style.id)
|
|
69
|
+
throw new Error("faceless IMAGE scenes require one shared style anchor");
|
|
70
|
+
sharedStyleId = style.id;
|
|
71
|
+
used.add(style.id);
|
|
72
|
+
const characters = image.source.characterIds ?? [];
|
|
73
|
+
if (parsed.brollPolicy !== "anyone" && characters.length > 0)
|
|
74
|
+
throw new Error("character references require the anyone policy");
|
|
75
|
+
if (new Set(characters).size !== characters.length)
|
|
76
|
+
throw new Error(`duplicate character reference: ${image.id}`);
|
|
77
|
+
for (const characterId of characters) {
|
|
78
|
+
const character = assets.get(characterId);
|
|
79
|
+
if (character?.role !== "character")
|
|
80
|
+
throw new Error(`faceless IMAGE character asset missing or wrong role: ${characterId}`);
|
|
81
|
+
used.add(characterId);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
for (const entry of parsed.assets) {
|
|
86
|
+
if (!used.has(entry.id))
|
|
87
|
+
throw new Error(`unreferenced faceless IMAGE asset: ${entry.id}`);
|
|
88
|
+
}
|
|
89
|
+
const outputFrames = parsed.scenes.reduce((sum, entry) => sum + entry.durationFrames, 0);
|
|
90
|
+
if (!Number.isSafeInteger(outputFrames) || outputFrames > 300 * CANVAS_FPS)
|
|
91
|
+
throw new Error("faceless IMAGE exceeds 300 seconds");
|
|
92
|
+
const maxGeneratedImages = Math.floor((24 * outputFrames) / (60 * CANVAS_FPS));
|
|
93
|
+
const baseGeneratedImages = parsed.assets.filter(entry => entry.source.kind === "generated").length;
|
|
94
|
+
if (baseGeneratedImages > maxGeneratedImages)
|
|
95
|
+
throw new Error("faceless IMAGE exceeds generated image allowance");
|
|
96
|
+
return parsed;
|
|
97
|
+
}
|
|
98
|
+
export function quoteFacelessImage(input) {
|
|
99
|
+
const parsed = parseFacelessImagePlan(input);
|
|
100
|
+
const outputFrames = parsed.scenes.reduce((sum, entry) => sum + entry.durationFrames, 0);
|
|
101
|
+
const maxGeneratedImages = Math.floor((24 * outputFrames) / (60 * CANVAS_FPS));
|
|
102
|
+
const baseGeneratedImages = parsed.assets.filter(entry => entry.source.kind === "generated").length;
|
|
103
|
+
const raw = (180n * BigInt(outputFrames) + BigInt(60 * CANVAS_FPS - 1)) / BigInt(60 * CANVAS_FPS);
|
|
104
|
+
const credits = Number(raw > 200n ? raw : 200n);
|
|
105
|
+
const assetById = new Map(parsed.assets.map(entry => [entry.id, entry]));
|
|
106
|
+
return {
|
|
107
|
+
pricingVersion: "faceless-image-v1-shadow",
|
|
108
|
+
aspectRatio: parsed.aspectRatio,
|
|
109
|
+
resolution: parsed.resolution,
|
|
110
|
+
outputFrames,
|
|
111
|
+
outputSeconds: outputFrames / CANVAS_FPS,
|
|
112
|
+
credits,
|
|
113
|
+
customerCreditCeiling: credits,
|
|
114
|
+
baseGeneratedImages,
|
|
115
|
+
maxGeneratedImages,
|
|
116
|
+
retryHeadroom: maxGeneratedImages - baseGeneratedImages,
|
|
117
|
+
costBreakdown: {
|
|
118
|
+
generatedImages: {
|
|
119
|
+
status: "unmeasured",
|
|
120
|
+
usd: null,
|
|
121
|
+
exposureBasis: "hypothetical_two_attempts_per_generated_asset_within_shared_allowance",
|
|
122
|
+
maxPaidAttemptsPerAsset: 2,
|
|
123
|
+
maxPaidImageCalls: Math.min(maxGeneratedImages, 2 * baseGeneratedImages),
|
|
124
|
+
},
|
|
125
|
+
tts: { status: "unmeasured", usd: null },
|
|
126
|
+
rendering: { status: "unmeasured", usd: null },
|
|
127
|
+
storage: { status: "unmeasured", usd: null },
|
|
128
|
+
paymentFees: { status: "unmeasured", usd: null },
|
|
129
|
+
paidFailures: { status: "unmeasured", usd: null },
|
|
130
|
+
},
|
|
131
|
+
totalCostUsd: null,
|
|
132
|
+
contributionMargin: null,
|
|
133
|
+
costQualified: false,
|
|
134
|
+
marginQualified: false,
|
|
135
|
+
sceneCount: parsed.scenes.length,
|
|
136
|
+
sceneSources: parsed.scenes.map(entry => ({
|
|
137
|
+
sceneId: entry.id,
|
|
138
|
+
assetId: entry.assetId,
|
|
139
|
+
sourceKind: assetById.get(entry.assetId).source.kind,
|
|
140
|
+
})),
|
|
141
|
+
maxPaidAttempts: 0,
|
|
142
|
+
maxUsdSpend: 0,
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=faceless-image-qualification.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"faceless-image-qualification.js","sourceRoot":"","sources":["../src/faceless-image-qualification.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const SHORT61_BOUNDARIES: readonly [0, 93, 162, 309, 412, 472, 562, 643, 753, 822, 902, 948, 1010, 1081, 1192, 1243, 1316, 1344, 1373, 1410, 1447, 1484, 1522];
|
|
3
|
+
declare const plan: z.ZodObject<{
|
|
4
|
+
version: z.ZodLiteral<"faceless_short_61_v1">;
|
|
5
|
+
pricingVersion: z.ZodLiteral<"faceless-image-v1-shadow">;
|
|
6
|
+
budgetVersion: z.ZodLiteral<"short61-five-usd-provisional-v1">;
|
|
7
|
+
aspectRatio: z.ZodLiteral<"9:16">;
|
|
8
|
+
resolution: z.ZodLiteral<"1080p">;
|
|
9
|
+
brollPolicy: z.ZodEnum<{
|
|
10
|
+
anyone: "anyone";
|
|
11
|
+
no_actor: "no_actor";
|
|
12
|
+
no_people: "no_people";
|
|
13
|
+
}>;
|
|
14
|
+
script: z.ZodString;
|
|
15
|
+
voice: z.ZodObject<{
|
|
16
|
+
model: z.ZodEnum<{
|
|
17
|
+
eleven_flash_v2_5: "eleven_flash_v2_5";
|
|
18
|
+
eleven_turbo_v2_5: "eleven_turbo_v2_5";
|
|
19
|
+
eleven_v3: "eleven_v3";
|
|
20
|
+
}>;
|
|
21
|
+
voiceId: z.ZodString;
|
|
22
|
+
}, z.core.$strict>;
|
|
23
|
+
styleAssetId: z.ZodString;
|
|
24
|
+
characterAssetId: z.ZodString;
|
|
25
|
+
imageAssets: z.ZodArray<z.ZodObject<{
|
|
26
|
+
id: z.ZodString;
|
|
27
|
+
role: z.ZodEnum<{
|
|
28
|
+
character: "character";
|
|
29
|
+
scene: "scene";
|
|
30
|
+
style: "style";
|
|
31
|
+
}>;
|
|
32
|
+
prompt: z.ZodString;
|
|
33
|
+
origin: z.ZodEnum<{
|
|
34
|
+
new: "new";
|
|
35
|
+
prior_probe: "prior_probe";
|
|
36
|
+
}>;
|
|
37
|
+
styleAssetId: z.ZodOptional<z.ZodString>;
|
|
38
|
+
characterAssetIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
39
|
+
}, z.core.$strict>>;
|
|
40
|
+
replacementAttempts: z.ZodArray<z.ZodObject<{
|
|
41
|
+
id: z.ZodString;
|
|
42
|
+
replacesAssetId: z.ZodString;
|
|
43
|
+
prompt: z.ZodString;
|
|
44
|
+
}, z.core.$strict>>;
|
|
45
|
+
openingVideo: z.ZodObject<{
|
|
46
|
+
assetId: z.ZodString;
|
|
47
|
+
prompt: z.ZodString;
|
|
48
|
+
}, z.core.$strict>;
|
|
49
|
+
shots: z.ZodArray<z.ZodObject<{
|
|
50
|
+
id: z.ZodString;
|
|
51
|
+
mediaType: z.ZodEnum<{
|
|
52
|
+
image: "image";
|
|
53
|
+
video: "video";
|
|
54
|
+
}>;
|
|
55
|
+
assetId: z.ZodString;
|
|
56
|
+
startFrame: z.ZodNumber;
|
|
57
|
+
endFrame: z.ZodNumber;
|
|
58
|
+
motion: z.ZodOptional<z.ZodEnum<{
|
|
59
|
+
PAN_DOWN: "PAN_DOWN";
|
|
60
|
+
PAN_UP: "PAN_UP";
|
|
61
|
+
}>>;
|
|
62
|
+
}, z.core.$strict>>;
|
|
63
|
+
captionPhrases: z.ZodArray<z.ZodObject<{
|
|
64
|
+
wordStart: z.ZodNumber;
|
|
65
|
+
wordEnd: z.ZodNumber;
|
|
66
|
+
accentWord: z.ZodNumber;
|
|
67
|
+
}, z.core.$strict>>;
|
|
68
|
+
}, z.core.$strict>;
|
|
69
|
+
export type Short61Plan = z.infer<typeof plan>;
|
|
70
|
+
export type Short61Report = {
|
|
71
|
+
outputFrames: 1522;
|
|
72
|
+
imageAllowance: 24;
|
|
73
|
+
baseGeneratedImages: number;
|
|
74
|
+
replacementAttempts: number;
|
|
75
|
+
retryHeadroom: number;
|
|
76
|
+
imageOnlyComparisonCredits: 200;
|
|
77
|
+
videoPriceStatus: "unpriced";
|
|
78
|
+
maxPaidAttempts: 0;
|
|
79
|
+
maxUsdSpend: 0;
|
|
80
|
+
};
|
|
81
|
+
export declare function parseShort61Plan(input: unknown): Short61Plan;
|
|
82
|
+
export declare function reportShort61(input: unknown): Short61Report;
|
|
83
|
+
export {};
|