@agentmedia/schema 0.5.0 → 0.5.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"generators.d.ts","sourceRoot":"","sources":["../../src/v2/generators.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAO7B;;;;;;;;GAQG;AACH,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEzC,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,QAAQ,CAAC;IAEjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IAEpB,gCAAgC;IAChC,WAAW,EAAE,CAAC,CAAC,UAAU,CAAC;IAE1B,0EAA0E;IAC1E,MAAM,EAAE,WAAW,GAAG,cAAc,GAAG,qBAAqB,CAAC;IAE7D,8CAA8C;IAC9C,GAAG,CAAC,EAAE;QACJ,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;IAEF,qDAAqD;IACrD,GAAG,CAAC,EAAE;QACJ,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IAEF,sDAAsD;IACtD,IAAI,CAAC,EAAE;QACL,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC;QACvB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IAEF,yEAAyE;IACzE,OAAO,CAAC,EACJ;QAAE,KAAK,EAAE,UAAU,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,GACpE;QAAE,KAAK,EAAE,UAAU,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;CAChD;AAID,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAgGlD,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,aAAa,CAAC;AAEvD,eAAO,MAAM,gBAAgB,EAAiC,aAAa,EAAE,CAAC;AAE9E;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,GAAE;IAAE,eAAe,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,MAAM,CAMjG"}
1
+ {"version":3,"file":"generators.d.ts","sourceRoot":"","sources":["../../src/v2/generators.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAO7B;;;;;;;;GAQG;AACH,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEzC,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,QAAQ,CAAC;IAEjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IAEpB,gCAAgC;IAChC,WAAW,EAAE,CAAC,CAAC,UAAU,CAAC;IAE1B,0EAA0E;IAC1E,MAAM,EAAE,WAAW,GAAG,cAAc,GAAG,qBAAqB,CAAC;IAE7D,8CAA8C;IAC9C,GAAG,CAAC,EAAE;QACJ,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;IAEF,qDAAqD;IACrD,GAAG,CAAC,EAAE;QACJ,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IAEF,sDAAsD;IACtD,IAAI,CAAC,EAAE;QACL,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC;QACvB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IAEF,yEAAyE;IACzE,OAAO,CAAC,EACJ;QAAE,KAAK,EAAE,UAAU,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,GACpE;QAAE,KAAK,EAAE,UAAU,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;CAChD;AAID,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAwGlD,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,aAAa,CAAC;AAEvD,eAAO,MAAM,gBAAgB,EAAiC,aAAa,EAAE,CAAC;AAE9E;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,GAAE;IAAE,eAAe,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,MAAM,CAMjG"}
@@ -7,19 +7,24 @@ export const V2_GENERATORS = {
7
7
  selfie: {
8
8
  id: 'selfie',
9
9
  status: 'stable',
10
- summary: 'AI person talking to camera, handheld iPhone-style.',
10
+ summary: 'AI UGC selfie video with generated actor, character sheet, storyboard board, and Seedance.',
11
11
  description: 'Generate a 9:16 vertical TikTok-style selfie clip. Pick a saved character (--character) ' +
12
12
  'OR pass a photo + description inline. The pipeline composes a portrait → multi-pose ' +
13
- 'character sheet → per-scene wireframe, then Seedance 2.0 animates the scene with native ' +
14
- 'audio. Output: an mp4 hosted on R2.',
13
+ 'character sheet → photographic storyboard/wireframe board, then Seedance 2.0 animates ' +
14
+ 'the scene with native audio. Output: an mp4 hosted on R2. Intermediate portrait, sheet, ' +
15
+ 'and wireframe URLs are surfaced on the job status while the video runs.',
15
16
  inputSchema: SelfieSchema,
16
17
  output: 'video_url',
17
18
  cli: {
18
19
  command: 'selfie',
19
20
  fileFields: ['photo_url'],
20
21
  examples: [
21
- 'agent-media selfie --character char_8x2vqp --script "..."',
22
- 'agent-media selfie --photo me.png --description "25, ..." --script "..."',
22
+ // Lead with the description-only case (the default, no photo needed).
23
+ 'agent-media selfie --description "25yo asian woman, long wavy dark hair, soft smile" --script "I keep getting DMs about my hair oil routine" --scene-action "standing by a bright vanity, showing a small amber hair-oil bottle and scrunching one curl mid-line" --duration 10',
24
+ // Reuse a saved character across multiple videos.
25
+ 'agent-media selfie --character char_8x2vqp --script "..." --scene-action "sitting at a desk, gesturing toward an open laptop beside them" --duration 10',
26
+ // Pin an exact real-person likeness (optional — only when the user provides a photo).
27
+ 'agent-media selfie --photo me.png --description "25yo creator, casual black tee" --script "..." --duration 10',
23
28
  ],
24
29
  },
25
30
  mcp: { toolName: 'create_selfie' },
@@ -46,7 +51,10 @@ export const V2_GENERATORS = {
46
51
  command: 'character create',
47
52
  fileFields: ['photo_url'],
48
53
  examples: [
49
- 'agent-media character create --photo X.png --name "sofia" --description "..."',
54
+ // Default: description-only — agent-media generates the portrait, no photo upload.
55
+ 'agent-media character create --name "sofia" --description "25yo asian woman, long wavy dark hair, soft smile"',
56
+ // Optional: pass a real-person photo when the user wants an exact likeness.
57
+ 'agent-media character create --name "sofia" --description "..." --photo me.png',
50
58
  ],
51
59
  },
52
60
  mcp: { toolName: 'create_character' },
@@ -1 +1 @@
1
- {"version":3,"file":"generators.js","sourceRoot":"","sources":["../../src/v2/generators.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generators.js","sourceRoot":"","sources":["../../src/v2/generators.ts"],"names":[],"mappings":"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"}
@@ -1,20 +1,19 @@
1
1
  /**
2
2
  * v2 · Selfie input schema.
3
3
  *
4
- * The v1 Selfie product. Generates a 9:16 vertical TikTok-style clip
5
- * of an AI person talking to camera in a chosen "shot grammar" preset.
4
+ * Generates a 9:16 vertical TikTok-style clip via the Selfie pipeline
5
+ * (orchestration agent -> gpt-image-2 portrait -> gpt-image-2 character
6
+ * sheet -> gpt-image-2 wireframe -> Seedance 2.0 reference-to-video). See
7
+ * services/media-worker-v2/src/v2/selfie-adapter.js.
6
8
  *
7
- * Validated end-to-end by the 4-stage pipeline (gpt-image-2 portrait
8
- * sheet wireframe → Seedance 2.0 ref-to-video), see
9
- * services/media-worker-v2/src/v2/selfie-pipeline.js.
9
+ * Character inputs (one of):
10
+ * - character_id (reuse saved character)
11
+ * - description (text-only, agent-media paints the character)
12
+ * - description + photo_url (use the user's photo as a likeness ref)
10
13
  *
11
- * Two character paths:
12
- * - Bring-your-own: pass `photo_url` + `description` (we synthesize
13
- * a portrait + sheet on the fly, throwaway).
14
- * - Saved character: pass `character_id` (we load the persisted
15
- * portrait + sheet + pinned seed + voice brief from the DB).
16
- *
17
- * One of `photo_url + description` OR `character_id` is required.
14
+ * Action inputs (one or both):
15
+ * - script (what the person says - drives lip-sync and staging)
16
+ * - scene_action (what the person does - for non-speech clips)
18
17
  */
19
18
  import { z } from 'zod';
20
19
  export declare const V2_SHOT_PRESETS: readonly ["bedroom-morning-ritual", "getting-ready-mirror-edge", "bathroom-skincare-routine", "bedside-lamp-evening", "kitchen-glow-up", "backyard-morning-coffee", "picnic-blanket-outdoor", "car-quick-honest-review", "car-passenger-honest", "outdoor-walking-talking", "couch-haul-show-off", "closet-fit-check", "studio-apartment-tour", "balcony-evening-vibes", "desk-wfh-quick-pitch", "cafe-window-seat", "office-bathroom-discreet", "gym-post-workout", "salon-mirror-result", "travel-hotel-room-review"];
@@ -23,56 +22,80 @@ export declare const V2_VIBES: readonly ["excited", "calm", "sassy", "serious",
23
22
  export type V2Vibe = (typeof V2_VIBES)[number];
24
23
  export declare const V2_DURATIONS: readonly [5, 10, 15];
25
24
  export type V2Duration = (typeof V2_DURATIONS)[number];
25
+ export declare const V2_PHONE_IN_FRAME: readonly ["forbidden", "optional", "required"];
26
+ export type V2PhoneInFrame = (typeof V2_PHONE_IN_FRAME)[number];
27
+ export declare const V2_POLISH_INTENSITIES: readonly ["off", "default", "heavy"];
28
+ export type V2PolishIntensity = (typeof V2_POLISH_INTENSITIES)[number];
26
29
  export declare const SelfieSchema: z.ZodEffects<z.ZodObject<{
27
30
  character_id: z.ZodOptional<z.ZodString>;
28
31
  photo_url: z.ZodOptional<z.ZodString>;
29
32
  description: z.ZodOptional<z.ZodString>;
30
- script: z.ZodString;
31
- preset: z.ZodDefault<z.ZodEnum<["bedroom-morning-ritual", "getting-ready-mirror-edge", "bathroom-skincare-routine", "bedside-lamp-evening", "kitchen-glow-up", "backyard-morning-coffee", "picnic-blanket-outdoor", "car-quick-honest-review", "car-passenger-honest", "outdoor-walking-talking", "couch-haul-show-off", "closet-fit-check", "studio-apartment-tour", "balcony-evening-vibes", "desk-wfh-quick-pitch", "cafe-window-seat", "office-bathroom-discreet", "gym-post-workout", "salon-mirror-result", "travel-hotel-room-review"]>>;
32
- vibe: z.ZodDefault<z.ZodEnum<["excited", "calm", "sassy", "serious", "curious"]>>;
33
+ script: z.ZodOptional<z.ZodString>;
34
+ scene_action: z.ZodOptional<z.ZodString>;
35
+ background_music: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString]>>;
33
36
  duration: z.ZodDefault<z.ZodUnion<[z.ZodLiteral<5>, z.ZodLiteral<10>, z.ZodLiteral<15>]>>;
34
- voice_brief: z.ZodOptional<z.ZodString>;
35
37
  subtitles: z.ZodDefault<z.ZodBoolean>;
38
+ shot_preset: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
39
+ vibe: z.ZodOptional<z.ZodEnum<["excited", "calm", "sassy", "serious", "curious"]>>;
40
+ camera_locked: z.ZodOptional<z.ZodBoolean>;
41
+ phone_in_frame: z.ZodDefault<z.ZodEnum<["forbidden", "optional", "required"]>>;
42
+ polish: z.ZodOptional<z.ZodEnum<["off", "default", "heavy"]>>;
36
43
  }, "strip", z.ZodTypeAny, {
37
44
  duration: 5 | 10 | 15;
38
- script: string;
39
45
  subtitles: boolean;
40
- vibe: "serious" | "calm" | "excited" | "sassy" | "curious";
41
- preset: "bedroom-morning-ritual" | "getting-ready-mirror-edge" | "bathroom-skincare-routine" | "bedside-lamp-evening" | "kitchen-glow-up" | "backyard-morning-coffee" | "picnic-blanket-outdoor" | "car-quick-honest-review" | "car-passenger-honest" | "outdoor-walking-talking" | "couch-haul-show-off" | "closet-fit-check" | "studio-apartment-tour" | "balcony-evening-vibes" | "desk-wfh-quick-pitch" | "cafe-window-seat" | "office-bathroom-discreet" | "gym-post-workout" | "salon-mirror-result" | "travel-hotel-room-review";
46
+ phone_in_frame: "forbidden" | "optional" | "required";
47
+ script?: string | undefined;
42
48
  description?: string | undefined;
49
+ vibe?: "serious" | "calm" | "excited" | "sassy" | "curious" | undefined;
43
50
  character_id?: string | undefined;
44
51
  photo_url?: string | undefined;
45
- voice_brief?: string | undefined;
52
+ scene_action?: string | undefined;
53
+ background_music?: string | boolean | undefined;
54
+ shot_preset?: string | undefined;
55
+ camera_locked?: boolean | undefined;
56
+ polish?: "off" | "default" | "heavy" | undefined;
46
57
  }, {
47
- script: string;
48
58
  duration?: 5 | 10 | 15 | undefined;
59
+ script?: string | undefined;
49
60
  subtitles?: boolean | undefined;
50
61
  description?: string | undefined;
51
62
  vibe?: "serious" | "calm" | "excited" | "sassy" | "curious" | undefined;
52
63
  character_id?: string | undefined;
53
64
  photo_url?: string | undefined;
54
- preset?: "bedroom-morning-ritual" | "getting-ready-mirror-edge" | "bathroom-skincare-routine" | "bedside-lamp-evening" | "kitchen-glow-up" | "backyard-morning-coffee" | "picnic-blanket-outdoor" | "car-quick-honest-review" | "car-passenger-honest" | "outdoor-walking-talking" | "couch-haul-show-off" | "closet-fit-check" | "studio-apartment-tour" | "balcony-evening-vibes" | "desk-wfh-quick-pitch" | "cafe-window-seat" | "office-bathroom-discreet" | "gym-post-workout" | "salon-mirror-result" | "travel-hotel-room-review" | undefined;
55
- voice_brief?: string | undefined;
65
+ scene_action?: string | undefined;
66
+ background_music?: string | boolean | undefined;
67
+ shot_preset?: string | undefined;
68
+ camera_locked?: boolean | undefined;
69
+ phone_in_frame?: "forbidden" | "optional" | "required" | undefined;
70
+ polish?: "off" | "default" | "heavy" | undefined;
56
71
  }>, {
57
72
  duration: 5 | 10 | 15;
58
- script: string;
59
73
  subtitles: boolean;
60
- vibe: "serious" | "calm" | "excited" | "sassy" | "curious";
61
- preset: "bedroom-morning-ritual" | "getting-ready-mirror-edge" | "bathroom-skincare-routine" | "bedside-lamp-evening" | "kitchen-glow-up" | "backyard-morning-coffee" | "picnic-blanket-outdoor" | "car-quick-honest-review" | "car-passenger-honest" | "outdoor-walking-talking" | "couch-haul-show-off" | "closet-fit-check" | "studio-apartment-tour" | "balcony-evening-vibes" | "desk-wfh-quick-pitch" | "cafe-window-seat" | "office-bathroom-discreet" | "gym-post-workout" | "salon-mirror-result" | "travel-hotel-room-review";
74
+ phone_in_frame: "forbidden" | "optional" | "required";
75
+ script?: string | undefined;
62
76
  description?: string | undefined;
77
+ vibe?: "serious" | "calm" | "excited" | "sassy" | "curious" | undefined;
63
78
  character_id?: string | undefined;
64
79
  photo_url?: string | undefined;
65
- voice_brief?: string | undefined;
80
+ scene_action?: string | undefined;
81
+ background_music?: string | boolean | undefined;
82
+ shot_preset?: string | undefined;
83
+ camera_locked?: boolean | undefined;
84
+ polish?: "off" | "default" | "heavy" | undefined;
66
85
  }, {
67
- script: string;
68
86
  duration?: 5 | 10 | 15 | undefined;
87
+ script?: string | undefined;
69
88
  subtitles?: boolean | undefined;
70
89
  description?: string | undefined;
71
90
  vibe?: "serious" | "calm" | "excited" | "sassy" | "curious" | undefined;
72
91
  character_id?: string | undefined;
73
92
  photo_url?: string | undefined;
74
- preset?: "bedroom-morning-ritual" | "getting-ready-mirror-edge" | "bathroom-skincare-routine" | "bedside-lamp-evening" | "kitchen-glow-up" | "backyard-morning-coffee" | "picnic-blanket-outdoor" | "car-quick-honest-review" | "car-passenger-honest" | "outdoor-walking-talking" | "couch-haul-show-off" | "closet-fit-check" | "studio-apartment-tour" | "balcony-evening-vibes" | "desk-wfh-quick-pitch" | "cafe-window-seat" | "office-bathroom-discreet" | "gym-post-workout" | "salon-mirror-result" | "travel-hotel-room-review" | undefined;
75
- voice_brief?: string | undefined;
93
+ scene_action?: string | undefined;
94
+ background_music?: string | boolean | undefined;
95
+ shot_preset?: string | undefined;
96
+ camera_locked?: boolean | undefined;
97
+ phone_in_frame?: "forbidden" | "optional" | "required" | undefined;
98
+ polish?: "off" | "default" | "heavy" | undefined;
76
99
  }>;
77
100
  export type SelfieInput = z.infer<typeof SelfieSchema>;
78
101
  //# sourceMappingURL=selfie.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"selfie.d.ts","sourceRoot":"","sources":["../../src/v2/selfie.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,eAAe,yfAqBlB,CAAC;AACX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5D,eAAO,MAAM,QAAQ,6DAA8D,CAAC;AACpF,MAAM,MAAM,MAAM,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/C,eAAO,MAAM,YAAY,sBAAuB,CAAC;AACjD,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAGvD,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyDrB,CAAC;AAEL,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC"}
1
+ {"version":3,"file":"selfie.d.ts","sourceRoot":"","sources":["../../src/v2/selfie.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,eAAe,yfAqBlB,CAAC;AACX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5D,eAAO,MAAM,QAAQ,6DAA8D,CAAC;AACpF,MAAM,MAAM,MAAM,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/C,eAAO,MAAM,YAAY,sBAAuB,CAAC;AACjD,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD,eAAO,MAAM,iBAAiB,gDAAiD,CAAC;AAChF,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhE,eAAO,MAAM,qBAAqB,sCAAuC,CAAC;AAC1E,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAiBvE,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4FrB,CAAC;AAEL,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC"}
package/dist/v2/selfie.js CHANGED
@@ -2,23 +2,24 @@
2
2
  /**
3
3
  * v2 · Selfie input schema.
4
4
  *
5
- * The v1 Selfie product. Generates a 9:16 vertical TikTok-style clip
6
- * of an AI person talking to camera in a chosen "shot grammar" preset.
5
+ * Generates a 9:16 vertical TikTok-style clip via the Selfie pipeline
6
+ * (orchestration agent -> gpt-image-2 portrait -> gpt-image-2 character
7
+ * sheet -> gpt-image-2 wireframe -> Seedance 2.0 reference-to-video). See
8
+ * services/media-worker-v2/src/v2/selfie-adapter.js.
7
9
  *
8
- * Validated end-to-end by the 4-stage pipeline (gpt-image-2 portrait
9
- * sheet wireframe → Seedance 2.0 ref-to-video), see
10
- * services/media-worker-v2/src/v2/selfie-pipeline.js.
10
+ * Character inputs (one of):
11
+ * - character_id (reuse saved character)
12
+ * - description (text-only, agent-media paints the character)
13
+ * - description + photo_url (use the user's photo as a likeness ref)
11
14
  *
12
- * Two character paths:
13
- * - Bring-your-own: pass `photo_url` + `description` (we synthesize
14
- * a portrait + sheet on the fly, throwaway).
15
- * - Saved character: pass `character_id` (we load the persisted
16
- * portrait + sheet + pinned seed + voice brief from the DB).
17
- *
18
- * One of `photo_url + description` OR `character_id` is required.
15
+ * Action inputs (one or both):
16
+ * - script (what the person says - drives lip-sync and staging)
17
+ * - scene_action (what the person does - for non-speech clips)
19
18
  */
20
19
  import { z } from 'zod';
21
- // ── Shot-grammar presets (locked v1 list) ────────────────────────────────
20
+ // Re-exported for character.ts (sheet preset default) and the character
21
+ // CLI command. NOT used by the Selfie pipeline - the orchestrator
22
+ // drives composition from the script, not a fixed preset list.
22
23
  export const V2_SHOT_PRESETS = [
23
24
  'bedroom-morning-ritual',
24
25
  'getting-ready-mirror-edge',
@@ -43,7 +44,17 @@ export const V2_SHOT_PRESETS = [
43
44
  ];
44
45
  export const V2_VIBES = ['excited', 'calm', 'sassy', 'serious', 'curious'];
45
46
  export const V2_DURATIONS = [5, 10, 15];
46
- // ── Input schema ──────────────────────────────────────────────────────────
47
+ export const V2_PHONE_IN_FRAME = ['forbidden', 'optional', 'required'];
48
+ export const V2_POLISH_INTENSITIES = ['off', 'default', 'heavy'];
49
+ // shot_preset accepts a registered V2_SHOT_PRESETS key or an escape
50
+ // hatch `custom-scene:<text>` for one-off scenes that don't match the
51
+ // preset library. See realism.js resolveShotBrief() for the runtime.
52
+ const shotPresetSchema = z
53
+ .string()
54
+ .refine((v) => V2_SHOT_PRESETS.includes(v) ||
55
+ v.startsWith('custom-scene:'), {
56
+ message: 'shot_preset must be one of the registered presets, or "custom-scene:<text>"',
57
+ });
47
58
  export const SelfieSchema = z
48
59
  .object({
49
60
  // Character — one path or the other
@@ -53,29 +64,43 @@ export const SelfieSchema = z
53
64
  .optional(),
54
65
  photo_url: z.string().url().optional(),
55
66
  description: z.string().min(8).max(400).optional(),
56
- // The line being said
57
- script: z.string().min(4).max(600),
58
- // Composition
59
- preset: z.enum(V2_SHOT_PRESETS).default('bedroom-morning-ritual'),
60
- vibe: z.enum(V2_VIBES).default('excited'),
67
+ // What is said. Optional - when omitted (or empty) the pipeline
68
+ // produces a non-speech clip from scene_action. At
69
+ // least ONE of script / scene_action must be present.
70
+ script: z.string().max(600).optional(),
71
+ // What the person is doing in the scene. Drives the action_prompt
72
+ // when there is no script (dance, b-roll, ambient clips).
73
+ scene_action: z.string().min(4).max(400).optional(),
74
+ // Background-music direction. `true` for "soft upbeat music, no
75
+ // dialogue", a string for explicit direction ("lo-fi jazz, soft
76
+ // kick"). Appended to the Seedance action_prompt.
77
+ background_music: z.union([z.boolean(), z.string().min(2).max(200)]).optional(),
61
78
  duration: z
62
79
  .union([z.literal(5), z.literal(10), z.literal(15)])
63
80
  .default(10),
64
- // Voice direction (one line, natural language). Pulled from the
65
- // character record when character_id is used; user can still
66
- // override per-job.
67
- voice_brief: z.string().min(4).max(240).optional(),
68
- // Subtitles
81
+ // Burn Hormozi-style subtitles on the final clip.
69
82
  subtitles: z.boolean().default(true),
83
+ // ── Realism opt-in controls (all optional) ─────────────────────────
84
+ // shot_preset / vibe pin the scene composition + energy. When
85
+ // omitted, the orchestrator picks defaults based on the script.
86
+ shot_preset: shotPresetSchema.optional(),
87
+ vibe: z.enum(V2_VIBES).optional(),
88
+ // Default: handheld iPhone feel (the #1 realism cue). Set to true
89
+ // ONLY for product/demo shots where a stable frame is required.
90
+ camera_locked: z.boolean().optional(),
91
+ // Default 'forbidden': no visible phone/camera/selfie-arm unless
92
+ // explicitly requested for a specific composition.
93
+ // 'required' — actively compose with phone covering chin/lower face
94
+ // (the "iPhone-cover trick" — fewer face-render errors).
95
+ // 'forbidden' — strip phone from frame entirely (default behavior).
96
+ phone_in_frame: z.enum(V2_PHONE_IN_FRAME).default('forbidden'),
97
+ // Post-Seedance polish pass (ffmpeg grain + warm grade + vignette).
98
+ // Defaults to 'default'. Set to 'off' to bypass entirely.
99
+ polish: z.enum(V2_POLISH_INTENSITIES).optional(),
70
100
  })
71
101
  .superRefine((val, ctx) => {
72
102
  const hasSavedCharacter = !!val.character_id;
73
103
  const hasDescription = !!val.description;
74
- // Three valid input paths:
75
- // 1. character_id alone (reuse saved character)
76
- // 2. description alone (agent-media generates the portrait from text)
77
- // 3. photo_url + description (use the user's photo as reference)
78
- // Anything else is rejected.
79
104
  if (!hasSavedCharacter && !hasDescription) {
80
105
  ctx.addIssue({
81
106
  code: z.ZodIssueCode.custom,
@@ -88,6 +113,21 @@ export const SelfieSchema = z
88
113
  message: 'Use character_id OR description (+ optional photo_url) — not both.',
89
114
  });
90
115
  }
116
+ const hasScript = !!val.script && val.script.trim().length >= 4;
117
+ const hasSceneAction = !!val.scene_action && val.scene_action.trim().length >= 4;
118
+ if (!hasScript && !hasSceneAction) {
119
+ ctx.addIssue({
120
+ code: z.ZodIssueCode.custom,
121
+ message: 'Provide either script (what they say) or scene_action (what they do). At least one is required.',
122
+ });
123
+ }
124
+ if (val.script !== undefined && val.script.length > 0 && val.script.length < 4) {
125
+ ctx.addIssue({
126
+ code: z.ZodIssueCode.custom,
127
+ path: ['script'],
128
+ message: 'script must be at least 4 characters if provided',
129
+ });
130
+ }
91
131
  if (val.photo_url && !val.description) {
92
132
  ctx.addIssue({
93
133
  code: z.ZodIssueCode.custom,
@@ -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,7 +1,7 @@
1
1
  {
2
2
  "name": "@agentmedia/schema",
3
- "version": "0.5.0",
4
- "description": "Type-safe schema definitions for AI UGC video generation enums, Zod validation, and generator registry. Single source of truth for the agent-media platform.",
3
+ "version": "0.5.2",
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",
7
7
  "homepage": "https://agent-media.ai/docs/api-reference",
@@ -43,6 +43,16 @@
43
43
  "import": "./dist/v2/index.js"
44
44
  }
45
45
  },
46
+ "scripts": {
47
+ "build": "tsc",
48
+ "typecheck": "tsc --noEmit",
49
+ "test": "vitest run",
50
+ "generate:edge-schema": "tsx scripts/generate-edge-schema.ts",
51
+ "generate:openapi": "tsx scripts/generate-openapi.ts",
52
+ "gen:v2-docs": "tsx scripts/generate-v2-docs.ts",
53
+ "check:spec": "tsx scripts/check-spec-freshness.ts",
54
+ "check:sdk-types": "npx openapi-typescript ../../generated/openapi.json -o ../../generated/api-types.d.ts && echo '\u2713 SDK types generated'"
55
+ },
46
56
  "dependencies": {
47
57
  "zod": "^3.23.0",
48
58
  "zod-to-json-schema": "^3.25.2"
@@ -52,15 +62,5 @@
52
62
  "tsx": "^4.19.0",
53
63
  "typescript": "^5.7.3",
54
64
  "vitest": "^3.1.0"
55
- },
56
- "scripts": {
57
- "build": "tsc",
58
- "typecheck": "tsc --noEmit",
59
- "test": "vitest run",
60
- "generate:edge-schema": "tsx scripts/generate-edge-schema.ts",
61
- "generate:openapi": "tsx scripts/generate-openapi.ts",
62
- "gen:v2-docs": "tsx scripts/generate-v2-docs.ts",
63
- "check:spec": "tsx scripts/check-spec-freshness.ts",
64
- "check:sdk-types": "npx openapi-typescript ../../generated/openapi.json -o ../../generated/api-types.d.ts && echo '✓ SDK types generated'"
65
65
  }
66
- }
66
+ }