@agentmedia/schema 0.5.2 → 0.5.3
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/dist/v2/selfie.d.ts +3 -3
- package/dist/v2/selfie.js +6 -6
- package/dist/v2/selfie.js.map +1 -1
- package/package.json +1 -1
- package/scripts/generate-v2-docs.ts +3 -3
- package/src/v2/selfie.ts +6 -6
package/dist/v2/selfie.d.ts
CHANGED
|
@@ -37,12 +37,13 @@ export declare const SelfieSchema: z.ZodEffects<z.ZodObject<{
|
|
|
37
37
|
subtitles: z.ZodDefault<z.ZodBoolean>;
|
|
38
38
|
shot_preset: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
|
|
39
39
|
vibe: z.ZodOptional<z.ZodEnum<["excited", "calm", "sassy", "serious", "curious"]>>;
|
|
40
|
-
camera_locked: z.
|
|
40
|
+
camera_locked: z.ZodDefault<z.ZodBoolean>;
|
|
41
41
|
phone_in_frame: z.ZodDefault<z.ZodEnum<["forbidden", "optional", "required"]>>;
|
|
42
42
|
polish: z.ZodOptional<z.ZodEnum<["off", "default", "heavy"]>>;
|
|
43
43
|
}, "strip", z.ZodTypeAny, {
|
|
44
44
|
duration: 5 | 10 | 15;
|
|
45
45
|
subtitles: boolean;
|
|
46
|
+
camera_locked: boolean;
|
|
46
47
|
phone_in_frame: "forbidden" | "optional" | "required";
|
|
47
48
|
script?: string | undefined;
|
|
48
49
|
description?: string | undefined;
|
|
@@ -52,7 +53,6 @@ export declare const SelfieSchema: z.ZodEffects<z.ZodObject<{
|
|
|
52
53
|
scene_action?: string | undefined;
|
|
53
54
|
background_music?: string | boolean | undefined;
|
|
54
55
|
shot_preset?: string | undefined;
|
|
55
|
-
camera_locked?: boolean | undefined;
|
|
56
56
|
polish?: "off" | "default" | "heavy" | undefined;
|
|
57
57
|
}, {
|
|
58
58
|
duration?: 5 | 10 | 15 | undefined;
|
|
@@ -71,6 +71,7 @@ export declare const SelfieSchema: z.ZodEffects<z.ZodObject<{
|
|
|
71
71
|
}>, {
|
|
72
72
|
duration: 5 | 10 | 15;
|
|
73
73
|
subtitles: boolean;
|
|
74
|
+
camera_locked: boolean;
|
|
74
75
|
phone_in_frame: "forbidden" | "optional" | "required";
|
|
75
76
|
script?: string | undefined;
|
|
76
77
|
description?: string | undefined;
|
|
@@ -80,7 +81,6 @@ export declare const SelfieSchema: z.ZodEffects<z.ZodObject<{
|
|
|
80
81
|
scene_action?: string | undefined;
|
|
81
82
|
background_music?: string | boolean | undefined;
|
|
82
83
|
shot_preset?: string | undefined;
|
|
83
|
-
camera_locked?: boolean | undefined;
|
|
84
84
|
polish?: "off" | "default" | "heavy" | undefined;
|
|
85
85
|
}, {
|
|
86
86
|
duration?: 5 | 10 | 15 | undefined;
|
package/dist/v2/selfie.js
CHANGED
|
@@ -85,14 +85,14 @@ export const SelfieSchema = z
|
|
|
85
85
|
// omitted, the orchestrator picks defaults based on the script.
|
|
86
86
|
shot_preset: shotPresetSchema.optional(),
|
|
87
87
|
vibe: z.enum(V2_VIBES).optional(),
|
|
88
|
-
// Default:
|
|
89
|
-
//
|
|
90
|
-
camera_locked: z.boolean().
|
|
91
|
-
// Default 'forbidden': no
|
|
92
|
-
//
|
|
88
|
+
// Default: stable/locked framing to avoid jitter. Set false only
|
|
89
|
+
// when the user explicitly requests handheld camera movement.
|
|
90
|
+
camera_locked: z.boolean().default(true),
|
|
91
|
+
// Default 'forbidden': no phone/camera/selfie-stick visible unless
|
|
92
|
+
// the user explicitly requests it.
|
|
93
93
|
// 'required' — actively compose with phone covering chin/lower face
|
|
94
94
|
// (the "iPhone-cover trick" — fewer face-render errors).
|
|
95
|
-
// 'forbidden' — strip phone from frame entirely (
|
|
95
|
+
// 'forbidden' — strip phone from frame entirely (legacy behavior).
|
|
96
96
|
phone_in_frame: z.enum(V2_PHONE_IN_FRAME).default('forbidden'),
|
|
97
97
|
// Post-Seedance polish pass (ffmpeg grain + warm grade + vignette).
|
|
98
98
|
// Defaults to 'default'. Set to 'off' to bypass entirely.
|
package/dist/v2/selfie.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selfie.js","sourceRoot":"","sources":["../../src/v2/selfie.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"selfie.js","sourceRoot":"","sources":["../../src/v2/selfie.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentmedia/schema",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.3",
|
|
4
4
|
"description": "Type-safe schema definitions for AI UGC video generation \u2014 enums, Zod validation, and generator registry. Single source of truth for the agent-media platform.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -209,7 +209,7 @@ function renderSkillIndex(): string {
|
|
|
209
209
|
'2. **Walk the user through 4 gates IN ORDER, one message each** — do not bulk-fire:',
|
|
210
210
|
' - **Gate 1:** confirm the exact script (verbatim — typos land in the video)',
|
|
211
211
|
' - **Gate 2:** confirm character. YOU run `agent-media character list --json` (do not ask the user "do you have a saved character?" — they don\'t know that\'s a thing). If the list is empty, just confirm the description from their original prompt. If non-empty, present each saved character BY NAME (not by `char_xxx` id — that format is internal). The user picks by NAME or says "new"; you map name → id internally. 🛑 NEVER auto-pick. NEVER show `char_xxx` ids to the user. Never ask for a photo by default.',
|
|
212
|
-
' - **Gate 3:** propose a full **director\'s brief** with pre-filled fields in 3 sections — **A. Intent+Performance**, **B. Scene+Look**, **C. Output**. Put visual direction into `--description` and action/product handling into `--scene-action`. The shot composition and energy are inferred from the brief; you can OPTIONALLY pin them with `--shot-preset` and `--vibe`, or override the realism defaults with `--camera-locked` / `--phone-in-frame` / `--polish` (rare — only when the user explicitly asks for a stable shot, a phone-in-hand composition, or a different polish look).
|
|
212
|
+
' - **Gate 3:** propose a full **director\'s brief** with pre-filled fields in 3 sections — **A. Intent+Performance**, **B. Scene+Look**, **C. Output**. Put visual direction into `--description` and action/product handling into `--scene-action`. The shot composition and energy are inferred from the brief; you can OPTIONALLY pin them with `--shot-preset` and `--vibe`, or override the realism defaults with `--camera-locked` / `--phone-in-frame` / `--polish` (rare — only when the user explicitly asks for a stable shot, a phone-in-hand composition, or a different polish look).',
|
|
213
213
|
' - **Gate 4:** duration + **script-pacing check**. Count the words in the script and PROPOSE the duration that fits (5s ≈ 10-20 words, 10s ≈ 20-40 words, 15s ≈ 30-60 words at the natural 2-4 words/sec pace).',
|
|
214
214
|
'3. Only then call the CLI.',
|
|
215
215
|
'',
|
|
@@ -334,7 +334,7 @@ function renderConversationFlow(): string {
|
|
|
334
334
|
'- `--shot-preset <name>` — pin the scene composition (e.g. `car-quick-honest-review`, `bedroom-morning-ritual`, `gym-post-workout`). Pass `custom-scene:<text>` for one-offs. Useful when the user names a specific location and you want to lock it.',
|
|
335
335
|
'- `--vibe <name>` — pin the actor\'s energy/tone (`excited`, `calm`, `sassy`, `serious`, `curious`). Useful when the user says e.g. "make it sassy" or "keep it serious".',
|
|
336
336
|
'- `--camera-locked` — lock the camera (no handheld motion). Use for product/demo shots where a stable frame matters. Default is handheld — leave it off for normal UGC.',
|
|
337
|
-
'- `--phone-in-frame <forbidden|optional|required>` — control whether the actor holds a phone on screen. Default `
|
|
337
|
+
'- `--phone-in-frame <forbidden|optional|required>` — control whether the actor holds a phone on screen. Default `optional` (phone may appear if natural). Use `required` when the user asks for a "talking to phone" or "iPhone-cover" composition, `forbidden` when the user explicitly wants no phone visible.',
|
|
338
338
|
'- `--polish <off|default|heavy>` — final-look intensity. Default `default` (recommended). Use `heavy` for a more stylized vintage look, `off` if the user wants the raw model output.',
|
|
339
339
|
'',
|
|
340
340
|
'When in doubt, OMIT these flags. The director\'s brief is doing the heavy lifting.',
|
|
@@ -444,7 +444,7 @@ function renderConversationFlow(): string {
|
|
|
444
444
|
'- ❌ **Mismatching script length and duration** (e.g. 10-word script + 15s duration without enough visual action). Normal speech is 2-4 words/sec. Size duration to fit the script and action plan.',
|
|
445
445
|
'- ❌ Passing removed flags such as `--preset`, `--voice-brief`, or `--sync` to the current v2 Selfie CLI. (Note: `--shot-preset` and `--vibe` ARE supported as optional overrides — use them only when the user explicitly pins a scene or tone.)',
|
|
446
446
|
'- ❌ **Overriding the handheld camera default with `--camera-locked` for normal UGC.** Default handheld feel is the #1 realism cue — only lock the camera for product/demo shots where stability is essential.',
|
|
447
|
-
'- ❌ **
|
|
447
|
+
'- ❌ **Forbidding phone-in-frame by default.** Default is `optional` — phone may appear if natural. Only set `--phone-in-frame forbidden` when the user explicitly says "no phone in frame".',
|
|
448
448
|
'- ❌ **Disabling polish with `--polish off` unless the user asks for raw output.** The default polish pass is what makes the clip feel like real iPhone footage instead of a model render.',
|
|
449
449
|
'- ❌ Waiting silently until the final video when intermediate URLs are available. Surface portrait, sheet, wireframe, and final video as each completes.',
|
|
450
450
|
'- ❌ Asking for a photo when the user only gave a text description.',
|
package/src/v2/selfie.ts
CHANGED
|
@@ -111,15 +111,15 @@ export const SelfieSchema = z
|
|
|
111
111
|
shot_preset: shotPresetSchema.optional(),
|
|
112
112
|
vibe: z.enum(V2_VIBES).optional(),
|
|
113
113
|
|
|
114
|
-
// Default:
|
|
115
|
-
//
|
|
116
|
-
camera_locked: z.boolean().
|
|
114
|
+
// Default: stable/locked framing to avoid jitter. Set false only
|
|
115
|
+
// when the user explicitly requests handheld camera movement.
|
|
116
|
+
camera_locked: z.boolean().default(true),
|
|
117
117
|
|
|
118
|
-
// Default 'forbidden': no
|
|
119
|
-
//
|
|
118
|
+
// Default 'forbidden': no phone/camera/selfie-stick visible unless
|
|
119
|
+
// the user explicitly requests it.
|
|
120
120
|
// 'required' — actively compose with phone covering chin/lower face
|
|
121
121
|
// (the "iPhone-cover trick" — fewer face-render errors).
|
|
122
|
-
// 'forbidden' — strip phone from frame entirely (
|
|
122
|
+
// 'forbidden' — strip phone from frame entirely (legacy behavior).
|
|
123
123
|
phone_in_frame: z.enum(V2_PHONE_IN_FRAME).default('forbidden'),
|
|
124
124
|
|
|
125
125
|
// Post-Seedance polish pass (ffmpeg grain + warm grade + vignette).
|