@clipwright/core 0.24.0 → 0.26.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 +185 -0
- package/README.md +1 -1
- package/dist/contract-dispositions.d.ts +10 -4
- package/dist/contract-dispositions.js +14 -13
- package/dist/contract-dispositions.js.map +1 -1
- package/dist/endpoints.js +2 -0
- package/dist/endpoints.js.map +1 -1
- package/dist/faceless-price.d.ts +3 -1
- package/dist/faceless-price.js +4 -2
- package/dist/faceless-price.js.map +1 -1
- package/dist/faceless-public-plan.d.ts +7 -0
- package/dist/faceless-public-plan.js +15 -4
- package/dist/faceless-public-plan.js.map +1 -1
- package/dist/faceless-public.d.ts +31 -0
- package/dist/faceless-public.js +24 -1
- package/dist/faceless-public.js.map +1 -1
- package/dist/faceless-storyboard-v2-timing.d.ts +2 -1
- package/dist/faceless-storyboard-v2-timing.js +4 -2
- package/dist/faceless-storyboard-v2-timing.js.map +1 -1
- package/dist/faceless-voices.d.ts +111 -0
- package/dist/faceless-voices.js +70 -0
- package/dist/faceless-voices.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/rate-limit.d.ts +4 -2
- package/dist/rate-limit.js +4 -2
- package/dist/rate-limit.js.map +1 -1
- package/dist/run-static-warnings.js +13 -1
- package/dist/run-static-warnings.js.map +1 -1
- package/dist/runs.d.ts +16 -4
- package/dist/runs.js +26 -9
- package/dist/runs.js.map +1 -1
- package/dist/skills.d.ts +2 -2
- package/dist/skills.js +3 -3
- package/dist/skills.js.map +1 -1
- package/dist/voice-admission.d.ts +45 -0
- package/dist/voice-admission.js +19 -0
- package/dist/voice-admission.js.map +1 -1
- package/dist/voice-catalog.d.ts +11 -0
- package/dist/voice-catalog.js +9 -1
- package/dist/voice-catalog.js.map +1 -1
- package/dist/voice-listing.d.ts +10 -2
- package/dist/voice-listing.js +19 -5
- package/dist/voice-listing.js.map +1 -1
- package/dist/voices.d.ts +2 -0
- package/dist/voices.js +2 -0
- package/dist/voices.js.map +1 -1
- package/package.json +2 -2
|
@@ -34,6 +34,8 @@ export declare const makeFacelessInput: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
34
34
|
}, z.core.$strict>]>;
|
|
35
35
|
}, z.core.$strict>>>;
|
|
36
36
|
captions: z.ZodDefault<z.ZodBoolean>;
|
|
37
|
+
voice: z.ZodOptional<z.ZodString>;
|
|
38
|
+
voice_id: z.ZodOptional<z.ZodNever>;
|
|
37
39
|
input_mode: z.ZodLiteral<"script">;
|
|
38
40
|
script: z.ZodString;
|
|
39
41
|
}, z.core.$strict>, z.ZodObject<{
|
|
@@ -52,6 +54,8 @@ export declare const makeFacelessInput: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
52
54
|
}, z.core.$strict>]>;
|
|
53
55
|
}, z.core.$strict>>>;
|
|
54
56
|
captions: z.ZodDefault<z.ZodBoolean>;
|
|
57
|
+
voice: z.ZodOptional<z.ZodString>;
|
|
58
|
+
voice_id: z.ZodOptional<z.ZodNever>;
|
|
55
59
|
input_mode: z.ZodLiteral<"brief">;
|
|
56
60
|
brief: z.ZodString;
|
|
57
61
|
}, z.core.$strict>], "input_mode">;
|
|
@@ -84,7 +88,34 @@ export declare const offeredFacelessInputShape: {
|
|
|
84
88
|
}, z.core.$strict>]>;
|
|
85
89
|
}, z.core.$strict>>>;
|
|
86
90
|
captions: z.ZodDefault<z.ZodBoolean>;
|
|
91
|
+
voice: z.ZodOptional<z.ZodString>;
|
|
87
92
|
};
|
|
93
|
+
/** The flat form as a tool input: an undeclared key is refused at the tool boundary, */
|
|
94
|
+
/** a field refused by name with its registry reason. */
|
|
95
|
+
export declare const offeredFacelessInput: z.ZodObject<{
|
|
96
|
+
input_mode: z.ZodEnum<{
|
|
97
|
+
brief: "brief";
|
|
98
|
+
script: "script";
|
|
99
|
+
}>;
|
|
100
|
+
script: z.ZodOptional<z.ZodString>;
|
|
101
|
+
brief: z.ZodOptional<z.ZodString>;
|
|
102
|
+
duration_seconds: z.ZodNumber;
|
|
103
|
+
style_reference: z.ZodOptional<z.ZodString>;
|
|
104
|
+
character_reference: z.ZodOptional<z.ZodString>;
|
|
105
|
+
character_details: z.ZodOptional<z.ZodString>;
|
|
106
|
+
scene_images: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
107
|
+
image_url: z.ZodString;
|
|
108
|
+
anchor: z.ZodUnion<readonly [z.ZodObject<{
|
|
109
|
+
startWord: z.ZodNumber;
|
|
110
|
+
endWord: z.ZodNumber;
|
|
111
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
112
|
+
quote: z.ZodString;
|
|
113
|
+
occurrence: z.ZodOptional<z.ZodNumber>;
|
|
114
|
+
}, z.core.$strict>]>;
|
|
115
|
+
}, z.core.$strict>>>;
|
|
116
|
+
captions: z.ZodDefault<z.ZodBoolean>;
|
|
117
|
+
voice: z.ZodOptional<z.ZodString>;
|
|
118
|
+
}, z.core.$strict>;
|
|
88
119
|
export declare const facelessPlannerInput: z.ZodObject<{
|
|
89
120
|
script: z.ZodString;
|
|
90
121
|
outputFrames: z.ZodNumber;
|
package/dist/faceless-public.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { uploadResponse } from "./uploads.js";
|
|
3
3
|
import { MAX_URL_LENGTH } from "./skills.js";
|
|
4
|
+
import { FACELESS_REJECTED_FIELDS } from "./contract-dispositions.js";
|
|
4
5
|
import { FACELESS_MIN_OUTPUT_FRAMES, facelessQuote } from "./faceless-price.js";
|
|
6
|
+
import { DEFAULT_FACELESS_VOICE } from "./faceless-voices.js";
|
|
7
|
+
import { VOICE_NAME_PATTERN } from "./voices.js";
|
|
5
8
|
const qualifiedImageUrl = uploadResponse.shape.url.max(MAX_URL_LENGTH).refine((value) => {
|
|
6
9
|
const host = new URL(value).hostname.toLowerCase();
|
|
7
10
|
return host !== "localhost" && !host.endsWith(".localhost") &&
|
|
@@ -24,6 +27,11 @@ const common = {
|
|
|
24
27
|
character_details: z.string().trim().min(1).max(400).optional(),
|
|
25
28
|
scene_images: z.array(facelessCustomerSceneImage).max(30).optional(),
|
|
26
29
|
captions: z.boolean().default(true),
|
|
30
|
+
// A name form only: the server checks the name, so the list grows without a client release.
|
|
31
|
+
voice: z.string({ error: "voice must be a voice name from list_voices, as a string" })
|
|
32
|
+
.regex(VOICE_NAME_PATTERN, "voice is not a voice name: take one from list_voices with skill=make_faceless")
|
|
33
|
+
.optional(),
|
|
34
|
+
voice_id: z.never({ error: FACELESS_REJECTED_FIELDS.voice_id.message }).optional(),
|
|
27
35
|
};
|
|
28
36
|
const scriptInput = z.object({ ...common,
|
|
29
37
|
input_mode: z.literal("script"),
|
|
@@ -47,7 +55,7 @@ export const offeredFacelessInputShape = {
|
|
|
47
55
|
brief: briefInput.shape.brief.optional()
|
|
48
56
|
.describe("What the video is about; the narration is written from it. Required when input_mode is 'brief'; must be absent when it is 'script'."),
|
|
49
57
|
duration_seconds: common.duration_seconds
|
|
50
|
-
.describe("Selected length, 30 to 90 seconds, on a 1/25 s frame boundary. The video ends with its narration, runs at least 25 seconds and may exceed the selection by up to
|
|
58
|
+
.describe("Selected length, 30 to 90 seconds, on a 1/25 s frame boundary. The video ends with its narration, runs at least 25 seconds and may exceed the selection by up to a quarter, never beyond 90 seconds; a video more than 5 seconds longer says so in warnings[]. The charge never exceeds the quote. A script is accepted when its estimated length is 21 seconds to the selection plus 5, at most 90."),
|
|
51
59
|
style_reference: common.style_reference
|
|
52
60
|
.describe("Optional public https image whose visual style the scenes follow."),
|
|
53
61
|
character_reference: common.character_reference
|
|
@@ -57,7 +65,22 @@ export const offeredFacelessInputShape = {
|
|
|
57
65
|
scene_images: common.scene_images
|
|
58
66
|
.describe("Optional images of your own, each placed at a word range or quote of the narration."),
|
|
59
67
|
captions: common.captions.describe("Burned-in captions; on by default."),
|
|
68
|
+
voice: common.voice
|
|
69
|
+
.describe("Narration voice: a name from list_voices with skill=make_faceless (kind faceless_voice). " +
|
|
70
|
+
`Omitted means ${DEFAULT_FACELESS_VOICE}. Choose a voice in the language of the narration: a voice reads any ` +
|
|
71
|
+
"language, with the accent of its own. The API refuses an unknown name and a make_ugc voice before any charge. " +
|
|
72
|
+
"A raw voice_id is not accepted here."),
|
|
60
73
|
};
|
|
74
|
+
const rejectedFacelessField = (key) => Object.hasOwn(FACELESS_REJECTED_FIELDS, key)
|
|
75
|
+
? FACELESS_REJECTED_FIELDS[key].message
|
|
76
|
+
: undefined;
|
|
77
|
+
/** The flat form as a tool input: an undeclared key is refused at the tool boundary, */
|
|
78
|
+
/** a field refused by name with its registry reason. */
|
|
79
|
+
export const offeredFacelessInput = z.strictObject(offeredFacelessInputShape, {
|
|
80
|
+
error: (issue) => issue.code === "unrecognized_keys"
|
|
81
|
+
? issue.keys.map((key) => rejectedFacelessField(key) ?? `"${key}" is not a field of this tool`).join("; ")
|
|
82
|
+
: undefined,
|
|
83
|
+
});
|
|
61
84
|
const wordTiming = z.object({
|
|
62
85
|
word: z.string().trim().min(1),
|
|
63
86
|
startSec: z.number().nonnegative(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"faceless-public.js","sourceRoot":"","sources":["../src/faceless-public.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,0BAA0B,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"faceless-public.js","sourceRoot":"","sources":["../src/faceless-public.ts"],"names":[],"mappings":"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"}
|
|
@@ -55,9 +55,10 @@ declare const semantic: {
|
|
|
55
55
|
readonly emphasis: 1;
|
|
56
56
|
};
|
|
57
57
|
/** Shared semantic objective; duration feasibility belongs to each profile. */
|
|
58
|
+
/** `overPenalty` prices a second above the pace band; a second below it always costs the base penalty. */
|
|
58
59
|
export declare function facelessCutScore(reason: keyof typeof semantic | null, duration: number, range: {
|
|
59
60
|
p25: number | null;
|
|
60
61
|
p75: number | null;
|
|
61
|
-
}): Score;
|
|
62
|
+
}, overPenalty?: number): Score;
|
|
62
63
|
export declare function planStoryboardV2(input: StoryboardV2Proposal, words: readonly WordTiming[], narrationStartFrame: number, style: CutStyleProfile): StoryboardV2FramePlan;
|
|
63
64
|
export {};
|
|
@@ -2,14 +2,16 @@ import { assertStoryboardWords } from "./faceless-storyboard.js";
|
|
|
2
2
|
import { parseStoryboardV2 } from "./faceless-storyboard-v2.js";
|
|
3
3
|
const semantic = { place: 4, reveal: 4, action: 3, emphasis: 1 };
|
|
4
4
|
const CUT_COST = 2;
|
|
5
|
+
const PACE_PENALTY = 0.25;
|
|
5
6
|
const OUTPUT_FRAMES = 1522;
|
|
6
7
|
const FPS = 25;
|
|
7
8
|
/** Shared semantic objective; duration feasibility belongs to each profile. */
|
|
8
|
-
|
|
9
|
+
/** `overPenalty` prices a second above the pace band; a second below it always costs the base penalty. */
|
|
10
|
+
export function facelessCutScore(reason, duration, range, overPenalty = PACE_PENALTY) {
|
|
9
11
|
const value = reason === null ? 0 : semantic[reason];
|
|
10
12
|
const cost = reason === null ? 0 : CUT_COST;
|
|
11
13
|
const distance = duration < range.p25 ? range.p25 - duration : duration > range.p75 ? duration - range.p75 : 0;
|
|
12
|
-
const penalty =
|
|
14
|
+
const penalty = (duration > range.p75 ? overPenalty : PACE_PENALTY) * distance / FPS;
|
|
13
15
|
return { semanticValue: value, cutCost: cost, pacePenalty: penalty, net: value - cost - penalty };
|
|
14
16
|
}
|
|
15
17
|
function better(a, b) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"faceless-storyboard-v2-timing.js","sourceRoot":"","sources":["../src/faceless-storyboard-v2-timing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAA6B,MAAM,6BAA6B,CAAC;AA2B3F,MAAM,QAAQ,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAW,CAAC;AAC1E,MAAM,QAAQ,GAAG,CAAC,CAAC;AACnB,MAAM,aAAa,GAAG,IAAI,CAAC;AAC3B,MAAM,GAAG,GAAG,EAAE,CAAC;AAEf,+EAA+E;AAC/E,MAAM,UAAU,gBAAgB,CAAC,MAAoC,EAAE,QAAgB,EAAE,KAAiD;
|
|
1
|
+
{"version":3,"file":"faceless-storyboard-v2-timing.js","sourceRoot":"","sources":["../src/faceless-storyboard-v2-timing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import type { Gender } from "./default-actor.js";
|
|
2
|
+
import type { CatalogLanguage } from "./voice-catalog.js";
|
|
3
|
+
/** Our label for the speech model that reads `make_faceless` narration. Not a `tts_model`: `make_ugc` does not speak it. */
|
|
4
|
+
export declare const FACELESS_SPEECH_MODEL = "narrator-v1";
|
|
5
|
+
/** A narration voice of `make_faceless` by OUR name; the worker holds its vendor id and measured pace. */
|
|
6
|
+
export interface FacelessVoice {
|
|
7
|
+
language: CatalogLanguage;
|
|
8
|
+
gender: Gender;
|
|
9
|
+
description: string;
|
|
10
|
+
}
|
|
11
|
+
/** The voices `make_faceless` speaks, each measured live (docs/70, "Voice choice"). Every name starts */
|
|
12
|
+
/** with `narrator_`, which no preset, model voice or catalog slug does. */
|
|
13
|
+
export declare const FACELESS_VOICES: {
|
|
14
|
+
readonly narrator_en_wise_lady: {
|
|
15
|
+
readonly language: "en";
|
|
16
|
+
readonly gender: "female";
|
|
17
|
+
readonly description: "Wise, genial middle-aged woman with a British accent";
|
|
18
|
+
};
|
|
19
|
+
readonly narrator_en_kind_girl: {
|
|
20
|
+
readonly language: "en";
|
|
21
|
+
readonly gender: "female";
|
|
22
|
+
readonly description: "Kind, calm young woman with an American accent";
|
|
23
|
+
};
|
|
24
|
+
readonly narrator_en_firm_lady: {
|
|
25
|
+
readonly language: "en";
|
|
26
|
+
readonly gender: "female";
|
|
27
|
+
readonly description: "Mature, commanding middle-aged woman with an American accent";
|
|
28
|
+
};
|
|
29
|
+
readonly narrator_en_gentle_man: {
|
|
30
|
+
readonly language: "en";
|
|
31
|
+
readonly gender: "male";
|
|
32
|
+
readonly description: "Gentle, warm man with an American accent";
|
|
33
|
+
};
|
|
34
|
+
readonly narrator_en_deep_gentleman: {
|
|
35
|
+
readonly language: "en";
|
|
36
|
+
readonly gender: "male";
|
|
37
|
+
readonly description: "Deep-voiced, thoughtful gentleman with a British accent";
|
|
38
|
+
};
|
|
39
|
+
readonly narrator_en_storyteller: {
|
|
40
|
+
readonly language: "en";
|
|
41
|
+
readonly gender: "male";
|
|
42
|
+
readonly description: "Senior storyteller with an American accent and a cool, detached tone";
|
|
43
|
+
};
|
|
44
|
+
readonly narrator_ru_ambitious_woman: {
|
|
45
|
+
readonly language: "ru";
|
|
46
|
+
readonly gender: "female";
|
|
47
|
+
readonly description: "Demanding, ambitious woman (Russian)";
|
|
48
|
+
};
|
|
49
|
+
readonly narrator_ru_bright_queen: {
|
|
50
|
+
readonly language: "ru";
|
|
51
|
+
readonly gender: "female";
|
|
52
|
+
readonly description: "Bright, haughty woman (Russian)";
|
|
53
|
+
};
|
|
54
|
+
readonly narrator_ru_reliable_man: {
|
|
55
|
+
readonly language: "ru";
|
|
56
|
+
readonly gender: "male";
|
|
57
|
+
readonly description: "Steady, reliable middle-aged man (Russian)";
|
|
58
|
+
};
|
|
59
|
+
readonly narrator_ru_deep_man: {
|
|
60
|
+
readonly language: "ru";
|
|
61
|
+
readonly gender: "male";
|
|
62
|
+
readonly description: "Deep-voiced man (Russian)";
|
|
63
|
+
};
|
|
64
|
+
readonly narrator_es_serene_woman: {
|
|
65
|
+
readonly language: "es";
|
|
66
|
+
readonly gender: "female";
|
|
67
|
+
readonly description: "Soothing, serene young woman (Spanish)";
|
|
68
|
+
};
|
|
69
|
+
readonly narrator_es_storyteller: {
|
|
70
|
+
readonly language: "es";
|
|
71
|
+
readonly gender: "male";
|
|
72
|
+
readonly description: "Middle-aged narrator for storytelling (Spanish)";
|
|
73
|
+
};
|
|
74
|
+
readonly narrator_pt_wise_lady: {
|
|
75
|
+
readonly language: "pt";
|
|
76
|
+
readonly gender: "female";
|
|
77
|
+
readonly description: "Smooth, wise middle-aged woman (Portuguese)";
|
|
78
|
+
};
|
|
79
|
+
readonly narrator_pt_storyteller: {
|
|
80
|
+
readonly language: "pt";
|
|
81
|
+
readonly gender: "male";
|
|
82
|
+
readonly description: "Middle-aged narrator for storytelling (Portuguese)";
|
|
83
|
+
};
|
|
84
|
+
readonly narrator_fr_classic_man: {
|
|
85
|
+
readonly language: "fr";
|
|
86
|
+
readonly gender: "male";
|
|
87
|
+
readonly description: "Classic narrator for storytelling (French)";
|
|
88
|
+
};
|
|
89
|
+
readonly narrator_it_calm_woman: {
|
|
90
|
+
readonly language: "it";
|
|
91
|
+
readonly gender: "female";
|
|
92
|
+
readonly description: "Calm, diligent woman (Italian)";
|
|
93
|
+
};
|
|
94
|
+
readonly narrator_it_classic_man: {
|
|
95
|
+
readonly language: "it";
|
|
96
|
+
readonly gender: "male";
|
|
97
|
+
readonly description: "Classic middle-aged narrator (Italian)";
|
|
98
|
+
};
|
|
99
|
+
};
|
|
100
|
+
export type FacelessVoiceName = keyof typeof FACELESS_VOICES;
|
|
101
|
+
export declare const FACELESS_VOICE_NAMES: [FacelessVoiceName, ...FacelessVoiceName[]];
|
|
102
|
+
/** The voice a run speaks when it names none. */
|
|
103
|
+
export declare const DEFAULT_FACELESS_VOICE = "narrator_en_wise_lady";
|
|
104
|
+
export declare function isFacelessVoiceName(name: string): name is FacelessVoiceName;
|
|
105
|
+
/** Fires only for a voice the client named. A script is judged by the alphabet most of its letters say; a brief */
|
|
106
|
+
/** only when it holds no letter of the voice's alphabet, since it may ask for another language (docs/70, "Voice choice"). */
|
|
107
|
+
export declare function buildFacelessVoiceWarnings(input: {
|
|
108
|
+
voice?: string | undefined;
|
|
109
|
+
script?: string | undefined;
|
|
110
|
+
brief?: string | undefined;
|
|
111
|
+
}): string[];
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { detectScriptFamily, scriptLetterCounts } from "./voices.js";
|
|
2
|
+
/** Our label for the speech model that reads `make_faceless` narration. Not a `tts_model`: `make_ugc` does not speak it. */
|
|
3
|
+
export const FACELESS_SPEECH_MODEL = "narrator-v1";
|
|
4
|
+
/** The voices `make_faceless` speaks, each measured live (docs/70, "Voice choice"). Every name starts */
|
|
5
|
+
/** with `narrator_`, which no preset, model voice or catalog slug does. */
|
|
6
|
+
export const FACELESS_VOICES = {
|
|
7
|
+
narrator_en_wise_lady: { language: "en", gender: "female", description: "Wise, genial middle-aged woman with a British accent" },
|
|
8
|
+
narrator_en_kind_girl: { language: "en", gender: "female", description: "Kind, calm young woman with an American accent" },
|
|
9
|
+
narrator_en_firm_lady: { language: "en", gender: "female", description: "Mature, commanding middle-aged woman with an American accent" },
|
|
10
|
+
narrator_en_gentle_man: { language: "en", gender: "male", description: "Gentle, warm man with an American accent" },
|
|
11
|
+
narrator_en_deep_gentleman: { language: "en", gender: "male", description: "Deep-voiced, thoughtful gentleman with a British accent" },
|
|
12
|
+
narrator_en_storyteller: { language: "en", gender: "male", description: "Senior storyteller with an American accent and a cool, detached tone" },
|
|
13
|
+
narrator_ru_ambitious_woman: { language: "ru", gender: "female", description: "Demanding, ambitious woman (Russian)" },
|
|
14
|
+
narrator_ru_bright_queen: { language: "ru", gender: "female", description: "Bright, haughty woman (Russian)" },
|
|
15
|
+
narrator_ru_reliable_man: { language: "ru", gender: "male", description: "Steady, reliable middle-aged man (Russian)" },
|
|
16
|
+
narrator_ru_deep_man: { language: "ru", gender: "male", description: "Deep-voiced man (Russian)" },
|
|
17
|
+
narrator_es_serene_woman: { language: "es", gender: "female", description: "Soothing, serene young woman (Spanish)" },
|
|
18
|
+
narrator_es_storyteller: { language: "es", gender: "male", description: "Middle-aged narrator for storytelling (Spanish)" },
|
|
19
|
+
narrator_pt_wise_lady: { language: "pt", gender: "female", description: "Smooth, wise middle-aged woman (Portuguese)" },
|
|
20
|
+
narrator_pt_storyteller: { language: "pt", gender: "male", description: "Middle-aged narrator for storytelling (Portuguese)" },
|
|
21
|
+
narrator_fr_classic_man: { language: "fr", gender: "male", description: "Classic narrator for storytelling (French)" },
|
|
22
|
+
narrator_it_calm_woman: { language: "it", gender: "female", description: "Calm, diligent woman (Italian)" },
|
|
23
|
+
narrator_it_classic_man: { language: "it", gender: "male", description: "Classic middle-aged narrator (Italian)" },
|
|
24
|
+
};
|
|
25
|
+
export const FACELESS_VOICE_NAMES = Object.keys(FACELESS_VOICES);
|
|
26
|
+
/** The voice a run speaks when it names none. */
|
|
27
|
+
export const DEFAULT_FACELESS_VOICE = "narrator_en_wise_lady";
|
|
28
|
+
export function isFacelessVoiceName(name) {
|
|
29
|
+
return Object.hasOwn(FACELESS_VOICES, name);
|
|
30
|
+
}
|
|
31
|
+
/** How a warning names each offered language, and its alphabet; a language without a row does not compile. */
|
|
32
|
+
const VOICE_LANGUAGE = {
|
|
33
|
+
en: { voice: "an English voice", alphabet: "latin" },
|
|
34
|
+
ru: { voice: "a Russian voice", alphabet: "cyrillic" },
|
|
35
|
+
es: { voice: "a Spanish voice", alphabet: "latin" },
|
|
36
|
+
pt: { voice: "a Portuguese voice", alphabet: "latin" },
|
|
37
|
+
fr: { voice: "a French voice", alphabet: "latin" },
|
|
38
|
+
it: { voice: "an Italian voice", alphabet: "latin" },
|
|
39
|
+
};
|
|
40
|
+
const ALPHABET_LETTERS = { cyrillic: "Cyrillic letters", latin: "Latin letters" };
|
|
41
|
+
const LIST_HINT = "list_voices with skill=make_faceless names the voices of each language";
|
|
42
|
+
/** Fires only for a voice the client named. A script is judged by the alphabet most of its letters say; a brief */
|
|
43
|
+
/** only when it holds no letter of the voice's alphabet, since it may ask for another language (docs/70, "Voice choice"). */
|
|
44
|
+
export function buildFacelessVoiceWarnings(input) {
|
|
45
|
+
if (input.voice === undefined || !isFacelessVoiceName(input.voice))
|
|
46
|
+
return [];
|
|
47
|
+
const language = VOICE_LANGUAGE[FACELESS_VOICES[input.voice].language];
|
|
48
|
+
const named = `voice "${input.voice}" is ${language.voice}, but`;
|
|
49
|
+
if (input.script !== undefined) {
|
|
50
|
+
const alphabet = detectScriptFamily(input.script);
|
|
51
|
+
if (alphabet === "neutral" || alphabet === language.alphabet)
|
|
52
|
+
return [];
|
|
53
|
+
return [
|
|
54
|
+
`${named} the script is written in ${ALPHABET_LETTERS[alphabet]}: the voice may mispronounce it, and the video may ` +
|
|
55
|
+
`come out longer than its length limit and fail; ${LIST_HINT}`,
|
|
56
|
+
];
|
|
57
|
+
}
|
|
58
|
+
if (input.brief === undefined)
|
|
59
|
+
return [];
|
|
60
|
+
const letters = scriptLetterCounts(input.brief);
|
|
61
|
+
const other = language.alphabet === "cyrillic" ? "latin" : "cyrillic";
|
|
62
|
+
if (letters[language.alphabet] > 0 || letters[other] === 0)
|
|
63
|
+
return [];
|
|
64
|
+
return [
|
|
65
|
+
`${named} the brief is written in ${ALPHABET_LETTERS[other]}: if the narration is written in the same language as ` +
|
|
66
|
+
`the brief, ${language.voice} may mispronounce it, and the video may come out longer than its length limit and fail; ` +
|
|
67
|
+
`a brief may ask for the narration's language in words; ${LIST_HINT}`,
|
|
68
|
+
];
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=faceless-voices.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"faceless-voices.js","sourceRoot":"","sources":["../src/faceless-voices.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,+EAA+E;AAC/E,cAAc,qBAAqB,CAAC;AACpC,2FAA2F;AAC3F,sFAAsF;AACtF,cAAc,4BAA4B,CAAC;AAC3C,6FAA6F;AAC7F,cAAc,aAAa,CAAC;AAC5B,gFAAgF;AAChF,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,wFAAwF;AACxF,uCAAuC;AACvC,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,uFAAuF;AACvF,gBAAgB;AAChB,cAAc,iBAAiB,CAAC;AAChC,uFAAuF;AACvF,sBAAsB;AACtB,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,iEAAiE;AACjE,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,oFAAoF;AACpF,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,wFAAwF;AACxF,mEAAmE;AACnE,cAAc,sBAAsB,CAAC;AACrC,sFAAsF;AACtF,2CAA2C;AAC3C,cAAc,uBAAuB,CAAC;AACtC,uFAAuF;AACvF,cAAc,gBAAgB,CAAC;AAC/B,oFAAoF;AACpF,sCAAsC;AACtC,cAAc,0BAA0B,CAAC;AACzC,qEAAqE;AACrE,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,6BAA6B,CAAC;AAE5C,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AAEnC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,+EAA+E;AAC/E,cAAc,qBAAqB,CAAC;AACpC,2FAA2F;AAC3F,sFAAsF;AACtF,cAAc,4BAA4B,CAAC;AAC3C,6FAA6F;AAC7F,cAAc,aAAa,CAAC;AAC5B,gFAAgF;AAChF,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,wFAAwF;AACxF,uCAAuC;AACvC,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,uFAAuF;AACvF,gBAAgB;AAChB,cAAc,iBAAiB,CAAC;AAChC,uFAAuF;AACvF,sBAAsB;AACtB,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,iEAAiE;AACjE,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,oFAAoF;AACpF,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,wFAAwF;AACxF,mEAAmE;AACnE,cAAc,sBAAsB,CAAC;AACrC,sFAAsF;AACtF,2CAA2C;AAC3C,cAAc,uBAAuB,CAAC;AACtC,uFAAuF;AACvF,cAAc,gBAAgB,CAAC;AAC/B,oFAAoF;AACpF,sCAAsC;AACtC,cAAc,0BAA0B,CAAC;AACzC,qEAAqE;AACrE,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,6BAA6B,CAAC;AAE5C,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AAEnC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC"}
|
package/dist/rate-limit.d.ts
CHANGED
|
@@ -15,9 +15,11 @@ export declare const RATE_LIMIT_PAID_PER_MINUTE = 60;
|
|
|
15
15
|
/** FREE bucket: 300 per minute, counted separately so run polling (~12/min per run, three */
|
|
16
16
|
/** runs at once) never starves paid calls. A ceiling: a looping client hits it in seconds. */
|
|
17
17
|
export declare const RATE_LIMIT_FREE_PER_MINUTE = 300;
|
|
18
|
-
/** Concurrent renders per account: 3. Excess runs are queued (202), not refused, so agents */
|
|
19
|
-
/** need no scheduler of their own.
|
|
18
|
+
/** Concurrent presenter renders per account: 3. Excess runs are queued (202), not refused, so agents */
|
|
19
|
+
/** need no scheduler of their own. A run may also wait behind other accounts: the worker caps each line as a whole. */
|
|
20
20
|
export declare const MAX_CONCURRENT_RENDERS_PER_ACCOUNT = 3;
|
|
21
|
+
/** Concurrent faceless videos per account: 2, queued the same way. */
|
|
22
|
+
export declare const MAX_CONCURRENT_FACELESS_PER_ACCOUNT = 2;
|
|
21
23
|
/** The bucket: also the counter axis in the DB and the `bucket` column value. It lives here */
|
|
22
24
|
/** because the client-facing message names it. */
|
|
23
25
|
export type RateLimitScope = "paid" | "free";
|
package/dist/rate-limit.js
CHANGED
|
@@ -17,9 +17,11 @@ export const RATE_LIMIT_PAID_PER_MINUTE = 60;
|
|
|
17
17
|
/** FREE bucket: 300 per minute, counted separately so run polling (~12/min per run, three */
|
|
18
18
|
/** runs at once) never starves paid calls. A ceiling: a looping client hits it in seconds. */
|
|
19
19
|
export const RATE_LIMIT_FREE_PER_MINUTE = 300;
|
|
20
|
-
/** Concurrent renders per account: 3. Excess runs are queued (202), not refused, so agents */
|
|
21
|
-
/** need no scheduler of their own.
|
|
20
|
+
/** Concurrent presenter renders per account: 3. Excess runs are queued (202), not refused, so agents */
|
|
21
|
+
/** need no scheduler of their own. A run may also wait behind other accounts: the worker caps each line as a whole. */
|
|
22
22
|
export const MAX_CONCURRENT_RENDERS_PER_ACCOUNT = 3;
|
|
23
|
+
/** Concurrent faceless videos per account: 2, queued the same way. */
|
|
24
|
+
export const MAX_CONCURRENT_FACELESS_PER_ACCOUNT = 2;
|
|
23
25
|
/** 429 body. The numbers sit INSIDE `error`, like the money refusals in `errors.ts`: an */
|
|
24
26
|
/** error response has one envelope. */
|
|
25
27
|
export const rateLimitedError = z.object({
|
package/dist/rate-limit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-limit.js","sourceRoot":"","sources":["../src/rate-limit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,0FAA0F;AAC1F,+FAA+F;AAE/F,iFAAiF;AACjF,MAAM,CAAC,MAAM,uBAAuB,GAAG,mBAAmB,CAAC;AAE3D,6EAA6E;AAC7E,MAAM,CAAC,MAAM,2BAA2B,GAAG,uBAAuB,CAAC;AAEnE,2FAA2F;AAC3F,8FAA8F;AAC9F,MAAM,CAAC,MAAM,uBAAuB,GAAG,mBAAmB,CAAC;AAE3D,kEAAkE;AAClE,MAAM,CAAC,MAAM,kBAAkB,GAAG,aAAa,CAAC;AAEhD,gFAAgF;AAChF,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAC;AAE5C,iEAAiE;AACjE,MAAM,CAAC,MAAM,0BAA0B,GAAG,EAAE,CAAC;AAE7C,6FAA6F;AAC7F,8FAA8F;AAC9F,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAE9C,
|
|
1
|
+
{"version":3,"file":"rate-limit.js","sourceRoot":"","sources":["../src/rate-limit.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { buildFacelessVoiceWarnings } from "./faceless-voices.js";
|
|
1
3
|
import { parseSkill, resolvedScript, storedUgcInput } from "./skills.js";
|
|
2
4
|
import { storedCreateActorInput } from "./account-actors.js";
|
|
3
5
|
import { dispositionWarnings } from "./contract-dispositions.js";
|
|
@@ -52,13 +54,23 @@ export function derivedRunWarnings(storedInput, preflight, skill, voiceGenderOf)
|
|
|
52
54
|
case "create_actor":
|
|
53
55
|
return storedCreateActorInput.safeParse(storedInput).success ? [] : [UNREADABLE_CREATE_ACTOR_INPUT_WARNING];
|
|
54
56
|
case "make_faceless":
|
|
55
|
-
return
|
|
57
|
+
return facelessRunWarnings(storedInput);
|
|
56
58
|
case null:
|
|
57
59
|
return [UNREADABLE_RUN_INPUT_WARNING];
|
|
58
60
|
default:
|
|
59
61
|
return parsed;
|
|
60
62
|
}
|
|
61
63
|
}
|
|
64
|
+
const storedFacelessVoice = z.object({
|
|
65
|
+
voice: z.string().optional(),
|
|
66
|
+
script: z.string().optional(),
|
|
67
|
+
brief: z.string().optional(),
|
|
68
|
+
});
|
|
69
|
+
/** The one derived line of a faceless run: its chosen voice against its script or brief, as `quote` names it. */
|
|
70
|
+
function facelessRunWarnings(storedInput) {
|
|
71
|
+
const parsed = storedFacelessVoice.safeParse(storedInput);
|
|
72
|
+
return parsed.success ? buildFacelessVoiceWarnings(parsed.data) : [];
|
|
73
|
+
}
|
|
62
74
|
// The disposition registry and the preset language warning; the raw `voice_id` warning
|
|
63
75
|
// is quote-only, since the run verifies the id itself.
|
|
64
76
|
function ugcRunWarnings(storedInput, preflight, voiceGenderOf) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-static-warnings.js","sourceRoot":"","sources":["../src/run-static-warnings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAqB,MAAM,aAAa,CAAC;AAC5F,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACvF,OAAO,EAAE,wBAAwB,EAAE,4BAA4B,EAAe,MAAM,aAAa,CAAC;AAClG,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,gCAAgC,GAIjC,MAAM,oBAAoB,CAAC;AAQ5B,sFAAsF;AACtF,MAAM,CAAC,MAAM,4BAA4B,GACvC,yGAAyG,CAAC;AAE5G,4GAA4G;AAC5G,MAAM,CAAC,MAAM,qCAAqC,GAChD,gHAAgH,CAAC;AAEnH,iGAAiG;AACjG,0FAA0F;AAC1F,SAAS,0BAA0B,CAAC,IAAiC;IACnE,IAAI,IAAI,EAAE,IAAI,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACvC,MAAM,UAAU,GAAG,kBAAkB,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9E,OAAO;QACL,sBAAsB,CAAC,IAAI,CAAC,WAAW,CAAC;QACxC,GAAG,CAAC,UAAU,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/D,CAAC;AACJ,CAAC;AAED,4EAA4E;AAC5E,+EAA+E;AAC/E,SAAS,kBAAkB,CACzB,IAAiC,EACjC,KAAmB;IAEnB,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY;QAAE,OAAO,EAAE,CAAC;IAChE,iFAAiF;IACjF,sEAAsE;IACtE,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,0BAA0B,CAAC,IAAI,CAAC,CAAC;IAEpE,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,QAAiB,EAAE,CAAC;IACrF,MAAM,UAAU,GAAG,kBAAkB,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;IACjF,8FAA8F;IAC9F,IAAI,UAAU,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,EAAE,CAAC;IAC9C,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,IAAI,kBAAkB,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;IACvG,OAAO,CAAC,GAAG,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,mGAAmG;AACnG,SAAS,iBAAiB,CAAC,IAAoC;IAC7D,OAAO,IAAI,EAAE,IAAI,KAAK,oBAAoB,CAAC,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACvF,CAAC;AAED,4FAA4F;AAC5F,uDAAuD;AACvD,MAAM,UAAU,kBAAkB,CAChC,WAAoB,EACpB,SAAuB,EACvB,KAAa,EACb,aAAkC;IAElC,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACjC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,UAAU;YACb,OAAO,cAAc,CAAC,WAAW,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;QAC/D,KAAK,cAAc;YACjB,OAAO,sBAAsB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC;QAC9G,KAAK,eAAe;YAClB,OAAO,
|
|
1
|
+
{"version":3,"file":"run-static-warnings.js","sourceRoot":"","sources":["../src/run-static-warnings.ts"],"names":[],"mappings":"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"}
|
package/dist/runs.d.ts
CHANGED
|
@@ -32,11 +32,23 @@ export declare const runStep: z.ZodObject<{
|
|
|
32
32
|
bytes: z.ZodNumber;
|
|
33
33
|
}, z.core.$strip>>>;
|
|
34
34
|
}, z.core.$strip>;
|
|
35
|
-
/** AI output disclosure,
|
|
36
|
-
/**
|
|
35
|
+
/** AI output disclosure of a video with a presenter, the same on every surface: a fully */
|
|
36
|
+
/** synthetic clip says so itself. Not a claim of legal compliance. */
|
|
37
37
|
export declare const AI_DISCLOSURE_TEXT = "This video was generated with AI: the actor, the voice and the lip sync are synthetic.";
|
|
38
|
-
/**
|
|
39
|
-
|
|
38
|
+
/** A faceless video has no actor and no lip sync, so it names what it does hold (clipwright#488). */
|
|
39
|
+
export declare const FACELESS_AI_DISCLOSURE_TEXT = "This video was generated with AI: the voice, the opening clip and the images are synthetic.";
|
|
40
|
+
/** A run with `scene_images` cannot call every image synthetic. One at the opening is animated */
|
|
41
|
+
/** into the clip, and every shot may be the author's, so the sentence counts neither. */
|
|
42
|
+
export declare const FACELESS_OWN_IMAGES_AI_DISCLOSURE_TEXT: string;
|
|
43
|
+
/** The disclosure of one run, from its skill and stored input: every writer and the API */
|
|
44
|
+
/** response call this, so the sentence names what that video holds. */
|
|
45
|
+
export declare function aiDisclosureText(skill: string, input: unknown): string;
|
|
46
|
+
/** Object metadata key that says whether the tag is in the file: a reader learns it without the bytes. */
|
|
47
|
+
export declare const AI_DISCLOSURE_EMBEDDED_METADATA_KEY = "ai-disclosure-embedded";
|
|
48
|
+
/** Storage object metadata of a delivery, one builder so every writer shares the keys. Weaker */
|
|
49
|
+
/** than an embedded tag (lost on re-save), but always set, without parsing MP4 boxes. */
|
|
50
|
+
export declare function aiDisclosureObjectMetadata(text: string, embedded?: boolean): Readonly<Record<string, string>>;
|
|
51
|
+
/** The metadata of a video with a presenter. */
|
|
40
52
|
export declare const AI_DISCLOSURE_OBJECT_METADATA: Readonly<Record<string, string>>;
|
|
41
53
|
/** Run id shape, a separate schema because INPUT asks for it too: the MCP `get_run` tool, */
|
|
42
54
|
/** where a bare `z.string()` let garbage reach the network. */
|
package/dist/runs.js
CHANGED
|
@@ -32,16 +32,33 @@ export const runStep = z.object({
|
|
|
32
32
|
.array(z.object({ kind: z.string(), url: z.string().url(), bytes: z.number().int() }))
|
|
33
33
|
.default([]),
|
|
34
34
|
});
|
|
35
|
-
/** AI output disclosure,
|
|
36
|
-
/**
|
|
35
|
+
/** AI output disclosure of a video with a presenter, the same on every surface: a fully */
|
|
36
|
+
/** synthetic clip says so itself. Not a claim of legal compliance. */
|
|
37
37
|
export const AI_DISCLOSURE_TEXT = "This video was generated with AI: the actor, the voice and the lip sync are synthetic.";
|
|
38
|
-
/**
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
"
|
|
44
|
-
|
|
38
|
+
/** A faceless video has no actor and no lip sync, so it names what it does hold (clipwright#488). */
|
|
39
|
+
export const FACELESS_AI_DISCLOSURE_TEXT = "This video was generated with AI: the voice, the opening clip and the images are synthetic.";
|
|
40
|
+
/** A run with `scene_images` cannot call every image synthetic. One at the opening is animated */
|
|
41
|
+
/** into the clip, and every shot may be the author's, so the sentence counts neither. */
|
|
42
|
+
export const FACELESS_OWN_IMAGES_AI_DISCLOSURE_TEXT = "This video was generated with AI: the voice and the opening clip are synthetic, " +
|
|
43
|
+
"and so is every image its author did not supply.";
|
|
44
|
+
/** The disclosure of one run, from its skill and stored input: every writer and the API */
|
|
45
|
+
/** response call this, so the sentence names what that video holds. */
|
|
46
|
+
export function aiDisclosureText(skill, input) {
|
|
47
|
+
if (skill !== "make_faceless")
|
|
48
|
+
return AI_DISCLOSURE_TEXT;
|
|
49
|
+
const images = typeof input === "object" && input !== null ? input.scene_images : undefined;
|
|
50
|
+
return Array.isArray(images) && images.length > 0 ? FACELESS_OWN_IMAGES_AI_DISCLOSURE_TEXT : FACELESS_AI_DISCLOSURE_TEXT;
|
|
51
|
+
}
|
|
52
|
+
/** Object metadata key that says whether the tag is in the file: a reader learns it without the bytes. */
|
|
53
|
+
export const AI_DISCLOSURE_EMBEDDED_METADATA_KEY = "ai-disclosure-embedded";
|
|
54
|
+
/** Storage object metadata of a delivery, one builder so every writer shares the keys. Weaker */
|
|
55
|
+
/** than an embedded tag (lost on re-save), but always set, without parsing MP4 boxes. */
|
|
56
|
+
export function aiDisclosureObjectMetadata(text, embedded) {
|
|
57
|
+
return { "ai-generated": "true", generator: "clipwright", "ai-disclosure": text,
|
|
58
|
+
...(embedded === undefined ? {} : { [AI_DISCLOSURE_EMBEDDED_METADATA_KEY]: String(embedded) }) };
|
|
59
|
+
}
|
|
60
|
+
/** The metadata of a video with a presenter. */
|
|
61
|
+
export const AI_DISCLOSURE_OBJECT_METADATA = aiDisclosureObjectMetadata(AI_DISCLOSURE_TEXT);
|
|
45
62
|
/** Run id shape, a separate schema because INPUT asks for it too: the MCP `get_run` tool, */
|
|
46
63
|
/** where a bare `z.string()` let garbage reach the network. */
|
|
47
64
|
export const runId = z.string().regex(/^run_[a-zA-Z0-9]+$/);
|