@clipwright/core 0.23.0 → 0.25.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 +73 -0
- package/README.md +1 -1
- package/dist/actors.d.ts +3 -0
- package/dist/actors.js +10 -2
- package/dist/actors.js.map +1 -1
- package/dist/contract-dispositions.d.ts +4 -4
- package/dist/contract-dispositions.js +6 -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-short-61.js +2 -2
- package/dist/faceless-short-61.js.map +1 -1
- package/dist/runs.d.ts +10 -2
- package/dist/runs.js +16 -2
- package/dist/runs.js.map +1 -1
- package/dist/skills.d.ts +19 -2
- package/dist/skills.js +57 -8
- package/dist/skills.js.map +1 -1
- package/dist/voice-admission.d.ts +2 -1
- package/dist/voice-admission.js +7 -3
- package/dist/voice-admission.js.map +1 -1
- package/dist/voice-catalog-data.d.ts +1 -1
- package/dist/voice-catalog.d.ts +4 -0
- package/dist/voice-catalog.js +6 -4
- package/dist/voice-catalog.js.map +1 -1
- package/dist/voice-listing.d.ts +6 -1
- package/dist/voice-listing.js +18 -5
- package/dist/voice-listing.js.map +1 -1
- package/dist/voices.d.ts +155 -6
- package/dist/voices.js +105 -14
- package/dist/voices.js.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -16,6 +16,79 @@ a customer reading it should not miss what appeared in the product. Like *Server
|
|
|
16
16
|
they are live from the day the web app was deployed, not from the package release they are
|
|
17
17
|
listed under.
|
|
18
18
|
|
|
19
|
+
## [0.25.0] - 2026-10-04
|
|
20
|
+
|
|
21
|
+
The AI disclosure names what each video holds, and the clients show it: `get_run` of the MCP server and
|
|
22
|
+
`clipwright runs <id>` carry `ai_disclosure`. The visible "AI-generated" label is gone, and the clients no longer
|
|
23
|
+
offer `disclosure_overlay`.
|
|
24
|
+
|
|
25
|
+
### Removed
|
|
26
|
+
|
|
27
|
+
- **Breaking:** *Server-side:* `disclosure_overlay` is gone: no video carries the visible "AI-generated" label. Quote
|
|
28
|
+
and run refuse the field with 400 `rejected_field` before any charge, and the refusal says where the disclosure is:
|
|
29
|
+
the run response and the file metadata. Clients up to 0.24.0 still list the field in their input schema; stop
|
|
30
|
+
passing it. Label the publication with the platform's own control. The contract version is `2026-10-04`.
|
|
31
|
+
(clipwright#488)
|
|
32
|
+
|
|
33
|
+
### Changed
|
|
34
|
+
|
|
35
|
+
- *Dashboard:* The Privacy Policy says that we keep the site that referred you and any marker in the link that
|
|
36
|
+
brought you to sign-up, and that a notification of each sign-up, with the email address, reaches us through
|
|
37
|
+
Telegram. (clipwright#482)
|
|
38
|
+
- *Server-side:* `ai_disclosure` of a faceless run names what that video holds: "This video was generated with AI:
|
|
39
|
+
the voice, the opening clip and the images are synthetic." A faceless run with `scene_images` says instead that the
|
|
40
|
+
voice and the opening clip are synthetic, and so is every image its author did not supply. Until now a faceless run
|
|
41
|
+
carried the sentence of a video with a presenter, about an actor and lip sync it does not have. A run with a
|
|
42
|
+
presenter keeps its sentence. (clipwright#488)
|
|
43
|
+
- `get_run` of the MCP server returns `ai_disclosure` with a finished video, and `clipwright runs <id>` prints it
|
|
44
|
+
under the video link. Until now neither showed the statement. (clipwright#488)
|
|
45
|
+
- *Server-side:* a run accepted with `disclosure_overlay: true` before the label was removed and composed after it
|
|
46
|
+
says so in `warnings[]`. (clipwright#488)
|
|
47
|
+
- `@clipwright/core` exports `aiDisclosureText(skill, input)` and the two faceless sentences,
|
|
48
|
+
`FACELESS_AI_DISCLOSURE_TEXT` and `FACELESS_OWN_IMAGES_AI_DISCLOSURE_TEXT`. `AI_DISCLOSURE_TEXT` stays the sentence
|
|
49
|
+
of a video with a presenter. (clipwright#488)
|
|
50
|
+
- *Dashboard:* The AI Disclosure page gives the three wordings of the statement, says that a faceless file carries a
|
|
51
|
+
storage flag alone, and no longer describes a visible label. (clipwright#488)
|
|
52
|
+
|
|
53
|
+
## [0.24.0] - 2026-10-03
|
|
54
|
+
|
|
55
|
+
A second speech model, `gemini-3.8-flash-tts`, with thirty voices of its own and a sample of each in English and
|
|
56
|
+
Russian. Nothing changes unless you name the model or one of its voices. The CLI and the MCP server accept the new
|
|
57
|
+
`tts_model` value from this release on.
|
|
58
|
+
|
|
59
|
+
### Added
|
|
60
|
+
|
|
61
|
+
- `tts_model` accepts `gemini-3.8-flash-tts`, a speech model of a second vendor. Nothing changes unless you name it:
|
|
62
|
+
every default stays as it was, and Russian speech without `tts_model` still uses `eleven_v4`. The model speaks only
|
|
63
|
+
its own voices: without `voice`, `kore` for a female actor and `charon` otherwise. It reads Russian stress marks,
|
|
64
|
+
and it gets the text with `<break time="…" />` tags cut, which the response names in a warning. Its script limit is
|
|
65
|
+
5,000 characters. The price per finished second is the same as on every other model. (clipwright#453)
|
|
66
|
+
- `voice` accepts the thirty voices of `gemini-3.8-flash-tts` by name: `kore`, `puck`, `zephyr` and the rest, as
|
|
67
|
+
`list_voices` returns them. Naming one selects that model without `tts_model`, and the quote names the model.
|
|
68
|
+
`clipwright voices` prints the model on the line of such a voice. (clipwright#453)
|
|
69
|
+
- *Server-side:* `list_voices` returns those thirty voices after the presets as entries of kind `model_voice`. Each
|
|
70
|
+
names one model in `model` and `supported_models`, has no `language`, and carries `gender` only where it is known:
|
|
71
|
+
`kore` is female and `charon` is male. The filters `model=gemini-3.8-flash-tts`, `language=ru` and `language=en`
|
|
72
|
+
find them; any other language does not. (clipwright#453)
|
|
73
|
+
- *Server-side:* each of those thirty voices carries `preview_url`, a short sample spoken by that voice on its model.
|
|
74
|
+
The sample is in English; a request filtered by `language=ru` gets the Russian one. `clipwright voices` prints the
|
|
75
|
+
link under the voice, as it does for every other voice with a sample. (clipwright#453)
|
|
76
|
+
- *Server-side:* with `gemini-3.8-flash-tts` the API refuses a preset or catalog `voice`, `voice_id`, `captions=true`,
|
|
77
|
+
`segments` and `inserts` before any charge: the model does not speak the preset and catalog voices and returns no
|
|
78
|
+
word timings. It refuses the same when a voice names the model instead of `tts_model`, and it refuses one of the
|
|
79
|
+
model's voices next to any other `tts_model`. Each refusal names what to pass instead. `list_voices` lists the
|
|
80
|
+
model in `models[]` with the languages `en` and `ru`; no preset or catalog voice names it in `supported_models`.
|
|
81
|
+
(clipwright#453)
|
|
82
|
+
- *Server-side:* a warning about stress marks on `eleven_flash_v2_5` or `eleven_turbo_v2_5` names only the models
|
|
83
|
+
that speak the voice of the run: with an explicit `voice` or `voice_id` these are `eleven_v3` and `eleven_v4`.
|
|
84
|
+
(clipwright#453)
|
|
85
|
+
- *Server-side:* the quote and the reserve for a Russian script on `gemini-3.8-flash-tts` assume 2.2 words per second,
|
|
86
|
+
the pace measured on its two default voices: 153 Russian words are quoted at 70 seconds and 2,100 credits. A script
|
|
87
|
+
in Latin letters on this model is quoted at 2.6 words per second, as on every other model. The charge follows the
|
|
88
|
+
measured duration. (clipwright#453)
|
|
89
|
+
- *Dashboard:* the Privacy Policy, the Cookie Policy and the AI disclosure page name the speech provider of a run
|
|
90
|
+
that chooses this model. (clipwright#453)
|
|
91
|
+
|
|
19
92
|
## [0.23.0] - 2026-10-02
|
|
20
93
|
|
|
21
94
|
Russian speech moves to `eleven_v4`: the server names it by default, and the client texts say which voices speak it.
|
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# @clipwright/core
|
|
2
2
|
|
|
3
3
|
Zod schemas and the shared request/response contract of the
|
|
4
|
-
[Clipwright](https://clipwright.io) UGC and faceless video API. Published because
|
|
4
|
+
[Clipwright](https://clipwright.io/?ref=npm) UGC and faceless video API. Published because
|
|
5
5
|
the SDK and the MCP server depend on it; the API validates against these same
|
|
6
6
|
schemas, so they are the contract rather than a copy of it.
|
|
7
7
|
|
package/dist/actors.d.ts
CHANGED
|
@@ -38,6 +38,7 @@ export interface VoiceGenderInput {
|
|
|
38
38
|
actor_gender?: Gender | undefined;
|
|
39
39
|
voice?: string | undefined;
|
|
40
40
|
voice_id?: string | undefined;
|
|
41
|
+
tts_model?: string | undefined;
|
|
41
42
|
}
|
|
42
43
|
/** Gender for the default voice: `actor_id` → pin; `image` → `actor_gender`; else the default actor. */
|
|
43
44
|
/** Only from the same actor's pin, not the catalog: personal actors are not in it. */
|
|
@@ -46,6 +47,8 @@ export declare function voiceGenderFor(input: VoiceGenderInput, pin?: {
|
|
|
46
47
|
gender: Gender;
|
|
47
48
|
} | undefined): Gender | undefined;
|
|
48
49
|
export declare const IMAGE_DEFAULT_VOICE_WARNING: string;
|
|
50
|
+
/** The same warning for the run's model: a model with its own voices names its default and where its voices are listed. */
|
|
51
|
+
export declare function imageDefaultVoiceWarning(ttsModel: string | undefined): string;
|
|
49
52
|
export declare function actorGenderIgnoredWarning(field: "voice" | "voice_id"): string;
|
|
50
53
|
export declare function voiceActorGenderWarning(voice: string, voiceGender: Gender, actorGender: Gender): string;
|
|
51
54
|
/** An explicit voice is used as requested, but a mismatch with the actor's gender is */
|
package/dist/actors.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { actorId, ASPECT_RATIOS } from "./skills.js";
|
|
3
|
-
import { DEFAULT_VOICE_PRESET, VOICE_PRESETS } from "./voices.js";
|
|
3
|
+
import { defaultVoiceOf, DEFAULT_VOICE_PRESET, speaksOwnVoices, VOICE_PRESETS } from "./voices.js";
|
|
4
4
|
export const ACTORS_PATH = "/v1/actors";
|
|
5
5
|
/** An account's personal actor: the quote is free, the run is paid. The API routes repeat */
|
|
6
6
|
/** these paths as literals, and a test keeps them equal. */
|
|
@@ -36,6 +36,14 @@ export function voiceGenderFor(input, pin) {
|
|
|
36
36
|
}
|
|
37
37
|
export const IMAGE_DEFAULT_VOICE_WARNING = `no voice was chosen for the face in image: the default ${VOICE_PRESETS[DEFAULT_VOICE_PRESET].gender} ` +
|
|
38
38
|
`voice "${DEFAULT_VOICE_PRESET}" is used; pass voice (from list_voices) or actor_gender to match the face`;
|
|
39
|
+
/** The same warning for the run's model: a model with its own voices names its default and where its voices are listed. */
|
|
40
|
+
export function imageDefaultVoiceWarning(ttsModel) {
|
|
41
|
+
if (!speaksOwnVoices(ttsModel))
|
|
42
|
+
return IMAGE_DEFAULT_VOICE_WARNING;
|
|
43
|
+
const voice = defaultVoiceOf(ttsModel, undefined);
|
|
44
|
+
return (`no voice was chosen for the face in image: the default ${voice.gender} voice "${voice.name}" of ${ttsModel} ` +
|
|
45
|
+
`is used; pass voice (from list_voices with model=${ttsModel}) or actor_gender to match the face`);
|
|
46
|
+
}
|
|
39
47
|
export function actorGenderIgnoredWarning(field) {
|
|
40
48
|
return `actor_gender did not change the voice: the explicit ${field} is used as requested`;
|
|
41
49
|
}
|
|
@@ -67,7 +75,7 @@ export function buildActorGenderWarnings(input) {
|
|
|
67
75
|
if (input.actor_gender !== undefined) {
|
|
68
76
|
return explicit === undefined ? [] : [actorGenderIgnoredWarning(explicit)];
|
|
69
77
|
}
|
|
70
|
-
return input.image !== undefined && explicit === undefined ? [
|
|
78
|
+
return input.image !== undefined && explicit === undefined ? [imageDefaultVoiceWarning(input.tts_model)] : [];
|
|
71
79
|
}
|
|
72
80
|
export const actorSelection = z.object({
|
|
73
81
|
actor_id: actorId,
|
package/dist/actors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actors.js","sourceRoot":"","sources":["../src/actors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"actors.js","sourceRoot":"","sources":["../src/actors.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { makeUgcInputShape } from "./skills.js";
|
|
|
4
4
|
/** decision. The type guards completeness; the egress test proves truth. */
|
|
5
5
|
/** Public contract version, sent as the `X-Clipwright-Contract` header and as `contract_version` */
|
|
6
6
|
/** in the quote response. Every breaking change must bump it. */
|
|
7
|
-
export declare const CONTRACT_VERSION = "2026-10-
|
|
7
|
+
export declare const CONTRACT_VERSION = "2026-10-04";
|
|
8
8
|
export declare const CONTRACT_VERSION_HEADER = "X-Clipwright-Contract";
|
|
9
9
|
/** `implemented`: reaches the vendor or the composition tree; `rejected`: 400 before any run or reserve; */
|
|
10
10
|
/** `warned`: accepted with a `warnings[]` entry. `triggersWhen` keeps defaulted fields quiet on the happy path. */
|
|
@@ -107,8 +107,8 @@ export declare const FIELD_DISPOSITIONS: {
|
|
|
107
107
|
readonly message: "broll_url is not supported yet: b-roll requires segmented composition. Omit it";
|
|
108
108
|
};
|
|
109
109
|
readonly disclosure_overlay: {
|
|
110
|
-
readonly kind: "
|
|
111
|
-
readonly
|
|
110
|
+
readonly kind: "rejected";
|
|
111
|
+
readonly message: "disclosure_overlay is not supported: the visible label was removed. The output is still marked in the run contract and in the file metadata; label the publication with the platform's own control";
|
|
112
112
|
};
|
|
113
113
|
readonly background: {
|
|
114
114
|
readonly kind: "implemented";
|
|
@@ -246,8 +246,8 @@ export declare const offeredUgcInput: z.ZodObject<{
|
|
|
246
246
|
eleven_turbo_v2_5: "eleven_turbo_v2_5";
|
|
247
247
|
eleven_v3: "eleven_v3";
|
|
248
248
|
eleven_v4: "eleven_v4";
|
|
249
|
+
"gemini-3.8-flash-tts": "gemini-3.8-flash-tts";
|
|
249
250
|
}>>;
|
|
250
|
-
disclosure_overlay: z.ZodOptional<z.ZodBoolean>;
|
|
251
251
|
background: z.ZodOptional<z.ZodEnum<{
|
|
252
252
|
blur: "blur";
|
|
253
253
|
contain: "contain";
|
|
@@ -5,7 +5,7 @@ import { BROLL_POLICY_DESCRIPTION } from "./broll-policy.js";
|
|
|
5
5
|
/** decision. The type guards completeness; the egress test proves truth. */
|
|
6
6
|
/** Public contract version, sent as the `X-Clipwright-Contract` header and as `contract_version` */
|
|
7
7
|
/** in the quote response. Every breaking change must bump it. */
|
|
8
|
-
export const CONTRACT_VERSION = "2026-10-
|
|
8
|
+
export const CONTRACT_VERSION = "2026-10-04";
|
|
9
9
|
export const CONTRACT_VERSION_HEADER = "X-Clipwright-Contract";
|
|
10
10
|
/** `satisfies` guards completeness; `as const` keeps literal types, from which the rejected */
|
|
11
11
|
/** set is derived below instead of being listed by hand. */
|
|
@@ -60,9 +60,11 @@ export const FIELD_DISPOSITIONS = {
|
|
|
60
60
|
kind: "rejected",
|
|
61
61
|
message: "broll_url is not supported yet: b-roll requires segmented composition. Omit it",
|
|
62
62
|
},
|
|
63
|
-
//
|
|
64
|
-
|
|
65
|
-
|
|
63
|
+
// The visible label is gone (clipwright#488); the refusal says where the disclosure lives.
|
|
64
|
+
disclosure_overlay: {
|
|
65
|
+
kind: "rejected",
|
|
66
|
+
message: "disclosure_overlay is not supported: the visible label was removed. The output is still marked in the run contract and in the file metadata; label the publication with the platform's own control",
|
|
67
|
+
},
|
|
66
68
|
// Applied by composition and gated by `CLIPWRIGHT_COMPOSE`, like `image` is gated
|
|
67
69
|
// by `CLIPWRIGHT_REMOTE_FETCH`.
|
|
68
70
|
background: { kind: "implemented", provenBy: "composition" },
|
|
@@ -108,11 +110,6 @@ const COMPOSE_DISABLED = {
|
|
|
108
110
|
kind: "rejected",
|
|
109
111
|
message: "background is not available: composition is disabled on this deployment. Request an aspect_ratio close to your image instead",
|
|
110
112
|
};
|
|
111
|
-
/** Refusal for `disclosure_overlay` when the composition stage is off. */
|
|
112
|
-
const DISCLOSURE_OVERLAY_DISABLED = {
|
|
113
|
-
kind: "rejected",
|
|
114
|
-
message: "disclosure_overlay is not available: composition is disabled on this deployment. The output is still marked in the run contract and in the file metadata",
|
|
115
|
-
};
|
|
116
113
|
/** Long-form prerequisites in ONE expression for all its fields: two copies could */
|
|
117
114
|
/** open `segments` while `inserts` stay closed. */
|
|
118
115
|
function longFormReady(flags) {
|
|
@@ -138,10 +135,6 @@ export function resolveDispositions(flags) {
|
|
|
138
135
|
},
|
|
139
136
|
// With composition off nothing can apply a background, so the field is rejected.
|
|
140
137
|
background: flags.compose ? FIELD_DISPOSITIONS.background : COMPOSE_DISABLED,
|
|
141
|
-
// Same gating as `background`: the visible overlay is burned in by composition.
|
|
142
|
-
disclosure_overlay: flags.compose
|
|
143
|
-
? FIELD_DISPOSITIONS.disclosure_overlay
|
|
144
|
-
: DISCLOSURE_OVERLAY_DISABLED,
|
|
145
138
|
};
|
|
146
139
|
}
|
|
147
140
|
/** The process's effective table, from which every surface is built: `FIELD_DISPOSITIONS` */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract-dispositions.js","sourceRoot":"","sources":["../src/contract-dispositions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,yFAAyF;AACzF,4EAA4E;AAE5E,oGAAoG;AACpG,iEAAiE;AACjE,MAAM,CAAC,MAAM,gBAAgB,GAAG,YAAY,CAAC;AAC7C,MAAM,CAAC,MAAM,uBAAuB,GAAG,uBAAuB,CAAC;AAc/D,+FAA+F;AAC/F,4DAA4D;AAC5D,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,MAAM,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE;IACnD,KAAK,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE;IAClD,QAAQ,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE;IACrD,SAAS,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE;IAEtD,uEAAuE;IACvE,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,OAAO,EACL,8IAA8I;QAChJ,YAAY,EAAE,SAAS;KACxB;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,yDAAyD;QAClE,YAAY,EAAE,SAAS;KACxB;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,yDAAyD;QAClE,YAAY,EAAE,sBAAsB;KACrC;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,iEAAiE;QAC1E,YAAY,EAAE,sBAAsB;KACrC;IACD,aAAa,EAAE;QACb,IAAI,EAAE,QAAQ;QACd,OAAO,EACL,qFAAqF;QACvF,YAAY,EAAE,sBAAsB;KACrC;IAED,iFAAiF;IACjF,6CAA6C;IAC7C,UAAU,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE;IACvD,YAAY,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE;IAEzD,6FAA6F;IAC7F,KAAK,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE;IAClD,QAAQ,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE;IACrD,YAAY,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE;IACzD,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,wBAAwB,EAAE;IAEnE,sEAAsE;IACtE,QAAQ,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAE;IAC1D,OAAO,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAE;IACzD,SAAS,EAAE;QACT,IAAI,EAAE,UAAU;QAChB,OAAO,EACL,8IAA8I;KACjJ;IACD,SAAS,EAAE;QACT,IAAI,EAAE,UAAU;QAChB,OAAO,EACL,gFAAgF;KACnF;IACD,
|
|
1
|
+
{"version":3,"file":"contract-dispositions.js","sourceRoot":"","sources":["../src/contract-dispositions.ts"],"names":[],"mappings":"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"}
|
package/dist/endpoints.js
CHANGED
|
@@ -5,6 +5,8 @@ export const API_ENDPOINTS = [
|
|
|
5
5
|
{ method: "POST", path: "/v1/skills/make_faceless/quote", billed: false, onQuickstart: false, jsonBody: true },
|
|
6
6
|
{ method: "POST", path: "/v1/skills/make_faceless/run", billed: true, onQuickstart: false, jsonBody: true },
|
|
7
7
|
{ method: "GET", path: "/health", billed: false, onQuickstart: true, jsonBody: false },
|
|
8
|
+
{ method: "GET", path: "/", billed: false, onQuickstart: false, jsonBody: false },
|
|
9
|
+
{ method: "GET", path: "/robots.txt", billed: false, onQuickstart: false, jsonBody: false },
|
|
8
10
|
{ method: "GET", path: "/v1/voices", billed: false, onQuickstart: true, jsonBody: false },
|
|
9
11
|
{ method: "GET", path: "/v1/account", billed: false, onQuickstart: true, jsonBody: false },
|
|
10
12
|
{ method: "POST", path: "/v1/skills/make_ugc/quote", billed: false, onQuickstart: true, jsonBody: true },
|
package/dist/endpoints.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"endpoints.js","sourceRoot":"","sources":["../src/endpoints.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"endpoints.js","sourceRoot":"","sources":["../src/endpoints.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { brollPolicy } from "./broll-policy.js";
|
|
3
3
|
import { CANVAS_FPS } from "./media-timebase.js";
|
|
4
|
-
import { speechTextFor, TTS_MODEL_CHAR_CAP
|
|
4
|
+
import { ELEVENLABS_TTS_MODELS, speechTextFor, TTS_MODEL_CHAR_CAP } from "./voices.js";
|
|
5
5
|
export const SHORT61_BOUNDARIES = [
|
|
6
6
|
0, 93, 162, 309, 412, 472, 562, 643, 753, 822, 902, 948,
|
|
7
7
|
1010, 1081, 1192, 1243, 1316, 1344, 1373, 1410, 1447, 1484, 1522,
|
|
@@ -41,7 +41,7 @@ const plan = z.strictObject({
|
|
|
41
41
|
resolution: z.literal("1080p"),
|
|
42
42
|
brollPolicy,
|
|
43
43
|
script: z.string().trim().min(1),
|
|
44
|
-
voice: z.strictObject({ model: z.enum(
|
|
44
|
+
voice: z.strictObject({ model: z.enum(ELEVENLABS_TTS_MODELS), voiceId: id }),
|
|
45
45
|
styleAssetId: id,
|
|
46
46
|
characterAssetId: id,
|
|
47
47
|
imageAssets: z.array(imageAsset),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"faceless-short-61.js","sourceRoot":"","sources":["../src/faceless-short-61.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"faceless-short-61.js","sourceRoot":"","sources":["../src/faceless-short-61.ts"],"names":[],"mappings":"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"}
|
package/dist/runs.d.ts
CHANGED
|
@@ -32,9 +32,17 @@ 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
|
+
/** 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;
|
|
38
46
|
/** Storage object metadata, one constant so writer and readers share keys. Weaker than an */
|
|
39
47
|
/** embedded tag (lost on re-save), but always set, without parsing MP4 boxes. */
|
|
40
48
|
export declare const AI_DISCLOSURE_OBJECT_METADATA: Readonly<Record<string, string>>;
|
package/dist/runs.js
CHANGED
|
@@ -32,9 +32,23 @@ 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
|
+
/** 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
|
+
}
|
|
38
52
|
/** Storage object metadata, one constant so writer and readers share keys. Weaker than an */
|
|
39
53
|
/** embedded tag (lost on re-save), but always set, without parsing MP4 boxes. */
|
|
40
54
|
export const AI_DISCLOSURE_OBJECT_METADATA = {
|
package/dist/runs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runs.js","sourceRoot":"","sources":["../src/runs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,+BAA+B,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,0EAA0E;AAC1E,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,QAAQ;IACR,YAAY;IACZ,WAAW;IACX,KAAK;IACL,QAAQ;IACR,aAAa;IACb,WAAW;IACX,WAAW;IACX,QAAQ;CACA,CAAC;AAEX,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAG3C,4FAA4F;AAC5F,yCAAyC;AACzC,MAAM,CAAC,MAAM,eAAe,GAC1B,0EAA0E;IAC1E,8CAA8C,CAAC;AAEjD,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC5D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC5C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC7C,SAAS,EAAE,CAAC;SACT,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;SACrF,OAAO,CAAC,EAAE,CAAC;CACf,CAAC,CAAC;AAEH,2FAA2F;AAC3F,
|
|
1
|
+
{"version":3,"file":"runs.js","sourceRoot":"","sources":["../src/runs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,+BAA+B,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,0EAA0E;AAC1E,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,QAAQ;IACR,YAAY;IACZ,WAAW;IACX,KAAK;IACL,QAAQ;IACR,aAAa;IACb,WAAW;IACX,WAAW;IACX,QAAQ;CACA,CAAC;AAEX,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAG3C,4FAA4F;AAC5F,yCAAyC;AACzC,MAAM,CAAC,MAAM,eAAe,GAC1B,0EAA0E;IAC1E,8CAA8C,CAAC;AAEjD,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC5D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC5C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC7C,SAAS,EAAE,CAAC;SACT,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;SACrF,OAAO,CAAC,EAAE,CAAC;CACf,CAAC,CAAC;AAEH,2FAA2F;AAC3F,sEAAsE;AACtE,MAAM,CAAC,MAAM,kBAAkB,GAC7B,wFAAwF,CAAC;AAE3F,qGAAqG;AACrG,MAAM,CAAC,MAAM,2BAA2B,GACtC,6FAA6F,CAAC;AAEhG,kGAAkG;AAClG,yFAAyF;AACzF,MAAM,CAAC,MAAM,sCAAsC,GACjD,kFAAkF;IAClF,kDAAkD,CAAC;AAErD,2FAA2F;AAC3F,uEAAuE;AACvE,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAE,KAAc;IAC5D,IAAI,KAAK,KAAK,eAAe;QAAE,OAAO,kBAAkB,CAAC;IACzD,MAAM,MAAM,GAAG,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAE,KAAoC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5H,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,2BAA2B,CAAC;AAC3H,CAAC;AAED,6FAA6F;AAC7F,iFAAiF;AACjF,MAAM,CAAC,MAAM,6BAA6B,GAAqC;IAC7E,cAAc,EAAE,MAAM;IACtB,SAAS,EAAE,YAAY;IACvB,eAAe,EAAE,kBAAkB;CACpC,CAAC;AAEF,6FAA6F;AAC7F,+DAA+D;AAC/D,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;AAE5D,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1B,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,cAAc,CAAC,QAAQ,EAAE;IAChC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,KAAK,EAAE,QAAQ;IACf,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IAChD,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IAC1D,aAAa,EAAE,+BAA+B,CAAC,QAAQ,EAAE;IACzD,gBAAgB,EAAE,aAAa,CAAC,QAAQ,EAAE;IAC1C,qBAAqB,EAAE,WAAW,CAAC,QAAQ,EAAE;IAC7C,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACzC,0FAA0F;IAC1F,+FAA+F;IAC/F,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,gGAAgG;IAChG,aAAa,EAAE,YAAY,CAAC,QAAQ,EAAE;IACtC,YAAY,EAAE,CAAC;SACZ,MAAM,CAAC;QACN,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;QAC3B,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;QAClD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;QACzC,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;QAChD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACnC,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACvC,iBAAiB,EAAE,4BAA4B,CAAC,QAAQ,EAAE;QAC1D,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;QAC1D,4BAA4B,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;QAC9D,uBAAuB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;QAC/D,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QAC5C,kBAAkB,EAAE,kBAAkB,CAAC,QAAQ,EAAE;QACjD,uFAAuF;QACvF,kFAAkF;QAClF,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;QAC7B,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAChC,uFAAuF;QACvF,sEAAsE;QACtE,sBAAsB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7C,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC1C,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACzC,4EAA4E;QAC5E,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC1C,CAAC;SACD,QAAQ,EAAE;IACb,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACnC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CAC9C,CAAC,CAAC;AAGH,4FAA4F;AAC5F,4DAA4D;AAC5D,MAAM,CAAC,MAAM,eAAe,GAAG,WAAoB,CAAC;AACpD,MAAM,CAAC,MAAM,YAAY,GAAG,QAAiB,CAAC;AAE9C,qFAAqF;AACrF,6EAA6E;AAC7E,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,eAAe,EAAE,YAAY,CAAU,CAAC;AAExE,6FAA6F;AAC7F,0FAA0F;AAC1F,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAOzD,MAAM,CAAC,MAAM,gBAAgB,GAA6B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CACrF,CAAC,KAAK,EAA0B,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,CAChE,CAAC;AAEF,sFAAsF;AACtF,MAAM,UAAU,QAAQ,CAAC,IAAa;IACpC,OAAO,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAG9E,CAAC;AACJ,CAAC;AAED,uFAAuF;AACvF,4DAA4D;AAC5D,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,OAAQ,eAAqC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC"}
|
package/dist/skills.d.ts
CHANGED
|
@@ -175,10 +175,11 @@ export declare const makeUgcInputShape: {
|
|
|
175
175
|
eleven_turbo_v2_5: "eleven_turbo_v2_5";
|
|
176
176
|
eleven_v3: "eleven_v3";
|
|
177
177
|
eleven_v4: "eleven_v4";
|
|
178
|
+
"gemini-3.8-flash-tts": "gemini-3.8-flash-tts";
|
|
178
179
|
}>>;
|
|
179
180
|
readonly webhook_url: z.ZodOptional<z.ZodString>;
|
|
180
|
-
/**
|
|
181
|
-
/**
|
|
181
|
+
/** Removed visible label (clipwright#488). The key stays in the shape so that the refusal */
|
|
182
|
+
/** names its reason instead of answering `unknown_field`. */
|
|
182
183
|
readonly disclosure_overlay: z.ZodOptional<z.ZodBoolean>;
|
|
183
184
|
/** How to fill a frame the clip does not cover. No `.default()`: absence means no layout */
|
|
184
185
|
/** is needed. `contain` fits whole, `white` pads white, `blur` fills with the blurred frame. */
|
|
@@ -281,6 +282,7 @@ export declare const makeUgcInput: z.ZodObject<{
|
|
|
281
282
|
eleven_turbo_v2_5: "eleven_turbo_v2_5";
|
|
282
283
|
eleven_v3: "eleven_v3";
|
|
283
284
|
eleven_v4: "eleven_v4";
|
|
285
|
+
"gemini-3.8-flash-tts": "gemini-3.8-flash-tts";
|
|
284
286
|
}>>;
|
|
285
287
|
webhook_url: z.ZodOptional<z.ZodString>;
|
|
286
288
|
disclosure_overlay: z.ZodOptional<z.ZodBoolean>;
|
|
@@ -290,6 +292,20 @@ export declare const makeUgcInput: z.ZodObject<{
|
|
|
290
292
|
white: "white";
|
|
291
293
|
}>>;
|
|
292
294
|
}, z.core.$strip>;
|
|
295
|
+
export interface SpeechModelRefusal {
|
|
296
|
+
field: "voice" | "voice_id" | "captions" | "segments" | "inserts";
|
|
297
|
+
message: string;
|
|
298
|
+
}
|
|
299
|
+
/** What a model with its own voices and no word timings refuses, each line naming what to pass instead. */
|
|
300
|
+
/** One list for the input schema and for the worker's check before its first paid step. */
|
|
301
|
+
export declare function speechModelRefusals(input: {
|
|
302
|
+
tts_model?: string | undefined;
|
|
303
|
+
voice?: string | undefined;
|
|
304
|
+
voice_id?: string | undefined;
|
|
305
|
+
captions?: boolean | undefined;
|
|
306
|
+
segments?: unknown;
|
|
307
|
+
inserts?: unknown;
|
|
308
|
+
}): SpeechModelRefusal[];
|
|
293
309
|
/** API input: the server's `voiceRefusal` checks the voice name. The catalog is not imported */
|
|
294
310
|
/** here, since clients read this barrel; the server uses `@clipwright/core/voice-admission`. */
|
|
295
311
|
export declare function serverUgcInputWith(voiceRefusal: (voice: string) => string | undefined): z.ZodObject<{
|
|
@@ -380,6 +396,7 @@ export declare function serverUgcInputWith(voiceRefusal: (voice: string) => stri
|
|
|
380
396
|
eleven_turbo_v2_5: "eleven_turbo_v2_5";
|
|
381
397
|
eleven_v3: "eleven_v3";
|
|
382
398
|
eleven_v4: "eleven_v4";
|
|
399
|
+
"gemini-3.8-flash-tts": "gemini-3.8-flash-tts";
|
|
383
400
|
}>>;
|
|
384
401
|
webhook_url: z.ZodOptional<z.ZodString>;
|
|
385
402
|
disclosure_overlay: z.ZodOptional<z.ZodBoolean>;
|
package/dist/skills.js
CHANGED
|
@@ -3,7 +3,7 @@ import { longFormQuoteSchema } from "./long-form-pricing.js";
|
|
|
3
3
|
import { RESOLVED_TIMELINE_MAX_SLOTS } from "./long-form-profile.js";
|
|
4
4
|
import { brollPolicy } from "./broll-policy.js";
|
|
5
5
|
import { countWords } from "./pacing.js";
|
|
6
|
-
import { cutToNothingError, DEFAULT_TTS_MODEL, resolveTtsModel, RUSSIAN_TTS_MODEL, MAX_SCRIPT_CHARS, SCRIPT_LENGTH_DESCRIPTION, STRESS_MARKING_DESCRIPTION, ttsScriptLimitError, TTS_MODELS, isVoicePresetName, VOICE_ID_PATTERN, VOICE_NAME_PATTERN, VOICE_PRESET_NAMES, } from "./voices.js";
|
|
6
|
+
import { cutToNothingError, DEFAULT_TTS_MODEL, GOOGLE_TTS_MODEL, isModelVoiceName, MODEL_DEFAULT_VOICE_BY_GENDER, MODEL_VOICE_MODEL, resolveTtsModel, RUSSIAN_TTS_MODEL, MAX_SCRIPT_CHARS, SCRIPT_LENGTH_DESCRIPTION, speaksOwnVoices, STRESS_MARKING_DESCRIPTION, ttsScriptLimitError, TTS_MODELS, isVoicePresetName, VOICE_ID_PATTERN, VOICE_NAME_PATTERN, VOICE_PRESET_NAMES, } from "./voices.js";
|
|
7
7
|
export const CAPTION_STYLES = ["hormozi", "tiktok", "minimal"];
|
|
8
8
|
export const LOOKS = ["natural", "commercial", "raw_iphone"];
|
|
9
9
|
/** Public formats = formats MEASURED live, not the vendor docs: declaring more would */
|
|
@@ -155,7 +155,8 @@ export const makeUgcInputShape = {
|
|
|
155
155
|
.enum(["female", "male"])
|
|
156
156
|
.optional()
|
|
157
157
|
.describe("Gender of the face in image: female | male. Only with image: picks the default voice of that " +
|
|
158
|
-
|
|
158
|
+
`gender (female: sarah, male: george; on ${GOOGLE_TTS_MODEL}: ${MODEL_DEFAULT_VOICE_BY_GENDER.female} and ` +
|
|
159
|
+
`${MODEL_DEFAULT_VOICE_BY_GENDER.male}). Refused with actor_id (its gender is known) and without ` +
|
|
159
160
|
"image. An explicit voice or voice_id wins and the response warns that actor_gender changed nothing."),
|
|
160
161
|
character: z.string().regex(/^char_[a-zA-Z0-9]+$/).optional(),
|
|
161
162
|
name: z.string().max(100).optional(),
|
|
@@ -189,27 +190,36 @@ export const makeUgcInputShape = {
|
|
|
189
190
|
"return, before any charge. Omitted means the default voice for the actor's gender: the " +
|
|
190
191
|
"gender of actor_id, actor_gender with image, or george for the default actor and for image " +
|
|
191
192
|
"without actor_gender. " +
|
|
193
|
+
`${MODEL_VOICE_MODEL} speaks only its own voices (kind model_voice in list_voices, such as ` +
|
|
194
|
+
`${MODEL_DEFAULT_VOICE_BY_GENDER.female}): naming one selects that model, and a voice is refused with a ` +
|
|
195
|
+
"tts_model that does not speak it, before any charge. " +
|
|
192
196
|
"Mutually exclusive with voice_id."),
|
|
193
197
|
voice_id: z
|
|
194
198
|
.string({ error: "voice_id must be a vendor voice id, as a string" })
|
|
195
199
|
.regex(VOICE_ID_PATTERN, "voice_id is not a vendor voice id: 16 to 32 letters and digits")
|
|
196
200
|
.optional()
|
|
197
201
|
.describe("Raw vendor voice id (16–32 letters and digits) for a voice outside the catalog. Checked " +
|
|
198
|
-
|
|
202
|
+
`lazily: an unknown id fails the run, not the request. Refused with tts_model=${GOOGLE_TTS_MODEL}. ` +
|
|
203
|
+
"Mutually exclusive with voice."),
|
|
199
204
|
tts_model: z
|
|
200
205
|
.enum(TTS_MODELS)
|
|
201
206
|
.optional()
|
|
202
207
|
.describe(`Speech model: ${TTS_MODELS.join(" | ")}. Omitted means the model of the chosen voice ` +
|
|
203
208
|
`(list_voices shows it): ${RUSSIAN_TTS_MODEL} for the Russian presets and for catalog voices named ru_*, ` +
|
|
209
|
+
`${MODEL_VOICE_MODEL} for its own voices, ` +
|
|
204
210
|
`${DEFAULT_TTS_MODEL} for every other preset and catalog voice. A raw voice_id speaks ${RUSSIAN_TTS_MODEL} ` +
|
|
205
211
|
`when the script is mostly Cyrillic and ${DEFAULT_TTS_MODEL} otherwise. An explicit tts_model always wins. ` +
|
|
206
|
-
|
|
212
|
+
`eleven_v4, eleven_v3 and ${GOOGLE_TTS_MODEL} read stress marks ` +
|
|
207
213
|
"(a capital vowel inside a Russian word, \"потОм\", becomes one; see script); " +
|
|
208
214
|
"eleven_flash_v2_5 and eleven_turbo_v2_5 are cheaper alternatives for languages other than " +
|
|
209
|
-
|
|
215
|
+
`Russian. ${GOOGLE_TTS_MODEL} speaks only its own voices (list_voices with model=${GOOGLE_TTS_MODEL}; without ` +
|
|
216
|
+
`voice, ${MODEL_DEFAULT_VOICE_BY_GENDER.female} for a female actor and ${MODEL_DEFAULT_VOICE_BY_GENDER.male} otherwise) ` +
|
|
217
|
+
"and returns no word timings: a preset or catalog voice, voice_id, captions=true, " +
|
|
218
|
+
"segments and inserts are refused with it before any charge. Audio tags in square brackets are an " +
|
|
219
|
+
"eleven_v3 and eleven_v4 convention and are not measured on it. " + SCRIPT_LENGTH_DESCRIPTION),
|
|
210
220
|
webhook_url: z.string().url().max(MAX_URL_LENGTH).optional(),
|
|
211
|
-
/**
|
|
212
|
-
/**
|
|
221
|
+
/** Removed visible label (clipwright#488). The key stays in the shape so that the refusal */
|
|
222
|
+
/** names its reason instead of answering `unknown_field`. */
|
|
213
223
|
disclosure_overlay: z.boolean().optional(),
|
|
214
224
|
/** How to fill a frame the clip does not cover. No `.default()`: absence means no layout */
|
|
215
225
|
/** is needed. `contain` fits whole, `white` pads white, `blur` fills with the blurred frame. */
|
|
@@ -229,6 +239,11 @@ export const makeUgcInput = z
|
|
|
229
239
|
})
|
|
230
240
|
.refine(v => v.inserts === undefined || (v.script !== undefined && v.segments === undefined), {
|
|
231
241
|
path: ["inserts"], message: "inserts requires script and cannot be combined with segments",
|
|
242
|
+
})
|
|
243
|
+
.superRefine((v, context) => {
|
|
244
|
+
for (const refusal of speechModelRefusals(v)) {
|
|
245
|
+
context.addIssue({ code: z.ZodIssueCode.custom, path: [refusal.field], message: refusal.message });
|
|
246
|
+
}
|
|
232
247
|
})
|
|
233
248
|
// The character cap depends on the model; refused here, before any reserve or vendor call.
|
|
234
249
|
// Only the server knows the model of a voice unknown to the client, and checks it there.
|
|
@@ -279,7 +294,41 @@ function speechTextRefusal(input) {
|
|
|
279
294
|
return ttsScriptLimitError(text, model) ?? spokenUnitsOf(input).map((unit) => cutToNothingError(unit, model)).find(Boolean);
|
|
280
295
|
}
|
|
281
296
|
function modelUnknownToClient(v) {
|
|
282
|
-
return v.tts_model === undefined && v.voice !== undefined && !isVoicePresetName(v.voice);
|
|
297
|
+
return v.tts_model === undefined && v.voice !== undefined && !isVoicePresetName(v.voice) && !isModelVoiceName(v.voice);
|
|
298
|
+
}
|
|
299
|
+
/** What a model with its own voices and no word timings refuses, each line naming what to pass instead. */
|
|
300
|
+
/** One list for the input schema and for the worker's check before its first paid step. */
|
|
301
|
+
export function speechModelRefusals(input) {
|
|
302
|
+
// The model the voice name selects, by the function quote and the worker call; a script never decides it.
|
|
303
|
+
const model = input.tts_model ?? resolveTtsModel({ voice: input.voice, script: "" });
|
|
304
|
+
const ownVoice = input.voice !== undefined && isModelVoiceName(input.voice);
|
|
305
|
+
if (!speaksOwnVoices(model)) {
|
|
306
|
+
if (!ownVoice)
|
|
307
|
+
return [];
|
|
308
|
+
return [{
|
|
309
|
+
field: "voice",
|
|
310
|
+
message: `voice "${input.voice}" is a voice of ${MODEL_VOICE_MODEL} and is not spoken by ${model}: omit tts_model to speak it ` +
|
|
311
|
+
`with ${MODEL_VOICE_MODEL}, or choose a voice from list_voices with model=${model}`,
|
|
312
|
+
}];
|
|
313
|
+
}
|
|
314
|
+
const ownVoices = `from list_voices with model=${model}`;
|
|
315
|
+
const defaultVoice = "to get the model's default voice for the actor's gender";
|
|
316
|
+
// With tts_model named too, a voice of another model alone would be refused against that tts_model.
|
|
317
|
+
const dropModel = input.tts_model === undefined ? "" : " and omit tts_model";
|
|
318
|
+
const otherModel = ownVoice ? `or choose a voice of another speech model from list_voices${dropModel}` : "or choose another tts_model";
|
|
319
|
+
const candidates = [
|
|
320
|
+
["voice", input.voice !== undefined && !ownVoice,
|
|
321
|
+
`voice "${input.voice}" is not spoken by ${model}: choose one of its voices ${ownVoices}, omit voice ${defaultVoice}, ${otherModel}`],
|
|
322
|
+
["voice_id", input.voice_id !== undefined,
|
|
323
|
+
`voice_id is not accepted with ${model}: pass voice with a name ${ownVoices}, omit voice_id ${defaultVoice}, ${otherModel}`],
|
|
324
|
+
["captions", input.captions === true,
|
|
325
|
+
`captions are not available with ${model}: it returns no word timings; pass captions=false`],
|
|
326
|
+
["segments", input.segments !== undefined,
|
|
327
|
+
`segments are not available with ${model}: pass script for a single take, ${otherModel}`],
|
|
328
|
+
["inserts", input.inserts !== undefined,
|
|
329
|
+
`inserts are not available with ${model}: it returns no word timings to anchor them; omit inserts, ${otherModel}`],
|
|
330
|
+
];
|
|
331
|
+
return candidates.filter(([, refused]) => refused).map(([field, , message]) => ({ field, message }));
|
|
283
332
|
}
|
|
284
333
|
/** API input: the server's `voiceRefusal` checks the voice name. The catalog is not imported */
|
|
285
334
|
/** here, since clients read this barrel; the server uses `@clipwright/core/voice-admission`. */
|