@clipwright/core 0.27.0 → 0.28.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.
Files changed (87) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/dist/api-failure.d.ts +49 -2
  3. package/dist/api-failure.js +82 -1
  4. package/dist/api-failure.js.map +1 -1
  5. package/dist/contract-dispositions.js +3 -3
  6. package/dist/contract-dispositions.js.map +1 -1
  7. package/dist/contracts/v1/workflow-brief.d.ts +402 -0
  8. package/dist/contracts/v1/workflow-brief.js +40 -0
  9. package/dist/contracts/v1/workflow-brief.js.map +1 -0
  10. package/dist/contracts/v1/workflow-catalog.d.ts +1060 -0
  11. package/dist/contracts/v1/workflow-catalog.js +45 -0
  12. package/dist/contracts/v1/workflow-catalog.js.map +1 -0
  13. package/dist/contracts/v1/workflow-dto.d.ts +18 -0
  14. package/dist/contracts/v1/workflow-dto.js +25 -0
  15. package/dist/contracts/v1/workflow-dto.js.map +1 -0
  16. package/dist/contracts/v1/workflow-evidence.d.ts +115 -0
  17. package/dist/contracts/v1/workflow-evidence.js +33 -0
  18. package/dist/contracts/v1/workflow-evidence.js.map +1 -0
  19. package/dist/contracts/v1/workflow-execution.d.ts +235 -0
  20. package/dist/contracts/v1/workflow-execution.js +33 -0
  21. package/dist/contracts/v1/workflow-execution.js.map +1 -0
  22. package/dist/contracts/v1/workflow-plan.d.ts +1057 -0
  23. package/dist/contracts/v1/workflow-plan.js +26 -0
  24. package/dist/contracts/v1/workflow-plan.js.map +1 -0
  25. package/dist/contracts/v1/workflow-primitives.d.ts +62 -0
  26. package/dist/contracts/v1/workflow-primitives.js +16 -0
  27. package/dist/contracts/v1/workflow-primitives.js.map +1 -0
  28. package/dist/edit-billing.d.ts +65 -0
  29. package/dist/edit-billing.js +30 -0
  30. package/dist/edit-billing.js.map +1 -0
  31. package/dist/edit-revision.d.ts +162 -0
  32. package/dist/edit-revision.js +36 -0
  33. package/dist/edit-revision.js.map +1 -0
  34. package/dist/edit.d.ts +2 -0
  35. package/dist/edit.js +3 -1
  36. package/dist/edit.js.map +1 -1
  37. package/dist/endpoints.js +6 -4
  38. package/dist/endpoints.js.map +1 -1
  39. package/dist/errors.d.ts +95 -1
  40. package/dist/errors.js +87 -0
  41. package/dist/errors.js.map +1 -1
  42. package/dist/faceless-public.d.ts +254 -0
  43. package/dist/faceless-public.js +11 -0
  44. package/dist/faceless-public.js.map +1 -1
  45. package/dist/idempotency.d.ts +2 -0
  46. package/dist/idempotency.js +9 -0
  47. package/dist/idempotency.js.map +1 -1
  48. package/dist/index.d.ts +1 -0
  49. package/dist/index.js +1 -0
  50. package/dist/index.js.map +1 -1
  51. package/dist/runs.d.ts +52 -0
  52. package/dist/runs.js +15 -2
  53. package/dist/runs.js.map +1 -1
  54. package/dist/workflows/catalog.d.ts +4 -0
  55. package/dist/workflows/catalog.js +57 -0
  56. package/dist/workflows/catalog.js.map +1 -0
  57. package/dist/workflows/index.d.ts +9 -0
  58. package/dist/workflows/index.js +10 -0
  59. package/dist/workflows/index.js.map +1 -0
  60. package/dist/workflows/methods/faceless-explainer.d.ts +175 -0
  61. package/dist/workflows/methods/faceless-explainer.js +20 -0
  62. package/dist/workflows/methods/faceless-explainer.js.map +1 -0
  63. package/dist/workflows/methods/kinetic-launch.d.ts +175 -0
  64. package/dist/workflows/methods/kinetic-launch.js +19 -0
  65. package/dist/workflows/methods/kinetic-launch.js.map +1 -0
  66. package/dist/workflows/methods/product-image-story.d.ts +175 -0
  67. package/dist/workflows/methods/product-image-story.js +20 -0
  68. package/dist/workflows/methods/product-image-story.js.map +1 -0
  69. package/dist/workflows/methods/shared.d.ts +190 -0
  70. package/dist/workflows/methods/shared.js +13 -0
  71. package/dist/workflows/methods/shared.js.map +1 -0
  72. package/dist/workflows/methods/ugc-faq-answer.d.ts +175 -0
  73. package/dist/workflows/methods/ugc-faq-answer.js +19 -0
  74. package/dist/workflows/methods/ugc-faq-answer.js.map +1 -0
  75. package/dist/workflows/methods/ugc-product-intro.d.ts +175 -0
  76. package/dist/workflows/methods/ugc-product-intro.js +19 -0
  77. package/dist/workflows/methods/ugc-product-intro.js.map +1 -0
  78. package/dist/workflows/methods/website-proof-demo.d.ts +175 -0
  79. package/dist/workflows/methods/website-proof-demo.js +19 -0
  80. package/dist/workflows/methods/website-proof-demo.js.map +1 -0
  81. package/dist/workflows/validate.d.ts +10 -0
  82. package/dist/workflows/validate.js +203 -0
  83. package/dist/workflows/validate.js.map +1 -0
  84. package/dist/workflows.d.ts +1 -0
  85. package/dist/workflows.js +2 -0
  86. package/dist/workflows.js.map +1 -0
  87. package/package.json +5 -1
@@ -0,0 +1,175 @@
1
+ export declare const productImageStory: {
2
+ id: "faceless-explainer" | "kinetic-launch" | "product-image-story" | "ugc-faq-answer" | "ugc-product-intro" | "website-proof-demo";
3
+ version: number;
4
+ content_digest: string;
5
+ authoring_status: "ready";
6
+ title: string;
7
+ purpose: string;
8
+ required_inputs: ("assets" | "audience" | "message" | "product" | "question" | "script" | "topic")[];
9
+ required_features: string[];
10
+ script_rules: {
11
+ structure: string[];
12
+ instructions: string[];
13
+ };
14
+ binding: {
15
+ kind: "native";
16
+ skill: "make_faceless" | "make_ugc";
17
+ profile: string;
18
+ visual_beats: "advisory";
19
+ } | {
20
+ kind: "blocked";
21
+ skill: "make_composition";
22
+ profile: string;
23
+ reasons: {
24
+ kind: string;
25
+ path: string;
26
+ message: string;
27
+ }[];
28
+ };
29
+ output: {
30
+ formats: {
31
+ aspect_ratio: "16:9" | "1:1" | "9:16";
32
+ resolution: "1080p" | "4k" | "720p";
33
+ }[];
34
+ timing: string;
35
+ };
36
+ limitations: string[];
37
+ qa_policy: string[];
38
+ example: {
39
+ brief: {
40
+ audience: string;
41
+ message: string;
42
+ script?: string | undefined;
43
+ cta?: string | undefined;
44
+ question?: string | undefined;
45
+ product?: string | undefined;
46
+ topic?: string | undefined;
47
+ brand_intent?: string | undefined;
48
+ required_terms: string[];
49
+ requirements: {
50
+ feature: string;
51
+ required: boolean;
52
+ }[];
53
+ requested_format?: {
54
+ aspect_ratio: "16:9" | "1:1" | "9:16";
55
+ resolution: "1080p" | "4k" | "720p";
56
+ } | undefined;
57
+ native?: {
58
+ skill: "make_ugc";
59
+ input: {
60
+ script?: string | undefined;
61
+ inserts?: {
62
+ id: string;
63
+ media_url: string;
64
+ media_type: "image" | "video";
65
+ anchor: {
66
+ startWord: number;
67
+ endWord: number;
68
+ } | {
69
+ quote: string;
70
+ occurrence?: number | undefined;
71
+ };
72
+ cover_words?: number | undefined;
73
+ image_motion?: {
74
+ direction: "in" | "out";
75
+ amount: number;
76
+ } | undefined;
77
+ }[] | undefined;
78
+ person?: string | undefined;
79
+ actor_id?: string | undefined;
80
+ image?: string | undefined;
81
+ actor_gender?: "female" | "male" | undefined;
82
+ character?: string | undefined;
83
+ name?: string | undefined;
84
+ broll_url?: string | undefined;
85
+ broll_policy?: "anyone" | "no_actor" | "no_people" | undefined;
86
+ captions: boolean;
87
+ caption_style: "hormozi" | "minimal" | "tiktok";
88
+ look: "commercial" | "natural" | "raw_iphone";
89
+ aspect_ratio?: "16:9" | "1:1" | "9:16" | undefined;
90
+ resolution?: "1080p" | "4k" | "720p" | undefined;
91
+ voice?: string | undefined;
92
+ voice_id?: string | undefined;
93
+ tts_model?: "eleven_flash_v2_5" | "eleven_turbo_v2_5" | "eleven_v3" | "eleven_v4" | "gemini-3.8-flash-tts" | undefined;
94
+ webhook_url?: string | undefined;
95
+ disclosure_overlay?: boolean | undefined;
96
+ background?: "blur" | "contain" | "white" | undefined;
97
+ segments?: {
98
+ kind: "actor" | "media";
99
+ script?: string | undefined;
100
+ media_url?: string | undefined;
101
+ media_type?: "image" | "video" | undefined;
102
+ duration_seconds?: number | undefined;
103
+ image_motion?: {
104
+ direction: "in" | "out";
105
+ amount: number;
106
+ } | undefined;
107
+ }[] | undefined;
108
+ };
109
+ } | {
110
+ skill: "make_faceless";
111
+ input: {
112
+ duration_seconds: number;
113
+ style_reference?: string | undefined;
114
+ character_reference?: string | undefined;
115
+ character_details?: string | undefined;
116
+ scene_images?: {
117
+ image_url: string;
118
+ anchor: {
119
+ startWord: number;
120
+ endWord: number;
121
+ } | {
122
+ quote: string;
123
+ occurrence?: number | undefined;
124
+ };
125
+ }[] | undefined;
126
+ captions: boolean;
127
+ voice?: string | undefined;
128
+ voice_id?: undefined;
129
+ input_mode: "brief";
130
+ brief: string;
131
+ } | {
132
+ duration_seconds: number;
133
+ style_reference?: string | undefined;
134
+ character_reference?: string | undefined;
135
+ character_details?: string | undefined;
136
+ scene_images?: {
137
+ image_url: string;
138
+ anchor: {
139
+ startWord: number;
140
+ endWord: number;
141
+ } | {
142
+ quote: string;
143
+ occurrence?: number | undefined;
144
+ };
145
+ }[] | undefined;
146
+ captions: boolean;
147
+ voice?: string | undefined;
148
+ voice_id?: undefined;
149
+ input_mode: "script";
150
+ script: string;
151
+ };
152
+ } | undefined;
153
+ references: {
154
+ kind: "capture" | "owner" | "url";
155
+ reference: string;
156
+ url?: string | undefined;
157
+ observed_at?: string | undefined;
158
+ product_state?: string | undefined;
159
+ }[];
160
+ };
161
+ beats: {
162
+ id: string;
163
+ role: string;
164
+ anchor: {
165
+ startWord: number;
166
+ endWord: number;
167
+ } | {
168
+ quote: string;
169
+ occurrence?: number | undefined;
170
+ };
171
+ required: boolean;
172
+ visual?: string | undefined;
173
+ }[];
174
+ };
175
+ };
@@ -0,0 +1,20 @@
1
+ import { defineWorkflowMethod, nativeLimitations, nativeQa, verticalOutput } from './shared.js';
2
+ const script = 'This ceramic mug is shown in the supplied photograph. Start with its overall shape, then look at the wide handle in the second view. These pictures show the actual item, while the opening animation is only an illustration. Check the visible details against the supplied images. If a detail is not shown, ask for another photograph rather than guessing what it looks like.';
3
+ export const productImageStory = defineWorkflowMethod({
4
+ id: 'product-image-story', version: 1, content_digest: 'f073ff5a7147a5f95add0ae90f168dc9e99ba1e2430daedbf84bfbb7e9abfa16', authoring_status: 'ready', title: 'Tell a product story with supplied images',
5
+ purpose: 'Bind original product images to the exact words describing visible facts, preserving the distinction between proof and illustration.',
6
+ required_inputs: ['audience', 'message', 'product', 'script', 'assets'], required_features: ['exact_script', 'voice', 'word_anchors', 'scene_images'],
7
+ script_rules: { structure: ['product_context', 'visible_fact', 'image_evidence', 'decision'], instructions: [
8
+ 'Describe only product facts supported by the approved original images. Bind each image instance to a nonoverlapping word range or unambiguous quote.',
9
+ 'Reuse one asset through distinct instance IDs. Keep important product areas visible and make the illustrative opening explicit.',
10
+ ] },
11
+ binding: { kind: 'native', skill: 'make_faceless', profile: 'faceless-native-v1', visual_beats: 'advisory' }, output: verticalOutput,
12
+ limitations: [...nativeLimitations, 'B1 places originals in supported IMAGE shots. The generated opener is illustrative and never exact product proof.',
13
+ 'An exact still-only slideshow or customer-only opener is unsupported and must block launch when required.',
14
+ 'Crop, motion and protected product area need placement preflight; this card does not itself verify media bytes.'], qa_policy: [...nativeQa, 'Compare product shots to the approved source bytes and protected areas.'],
15
+ example: { brief: { audience: 'People comparing handmade mugs', message: 'Inspect the shape and handle', product: 'Photographed ceramic mug', script,
16
+ native: { skill: 'make_faceless', input: { input_mode: 'script', script, duration_seconds: 30 } } },
17
+ beats: [{ id: 'shape', role: 'visible_fact', anchor: { quote: 'ceramic mug' }, required: false },
18
+ { id: 'handle', role: 'image_evidence', anchor: { quote: 'wide handle' }, required: false }] },
19
+ });
20
+ //# sourceMappingURL=product-image-story.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"product-image-story.js","sourceRoot":"","sources":["../../../src/workflows/methods/product-image-story.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEhG,MAAM,MAAM,GAAG,qXAAqX,CAAC;AACrY,MAAM,CAAC,MAAM,iBAAiB,GAAG,oBAAoB,CAAC;IAClD,EAAE,EAAE,qBAAqB,EAAE,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,kEAAkE,EAAE,gBAAgB,EAAE,OAAO,EAAE,KAAK,EAAE,2CAA2C;IACxM,OAAO,EAAE,sIAAsI;IAC/I,eAAe,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,iBAAiB,EAAE,CAAC,cAAc,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,CAAC;IACrJ,YAAY,EAAE,EAAE,SAAS,EAAE,CAAC,iBAAiB,EAAE,cAAc,EAAE,gBAAgB,EAAE,UAAU,CAAC,EAAE,YAAY,EAAE;YACxG,sJAAsJ;YACtJ,iIAAiI;SACpI,EAAE;IACH,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,cAAc;IACpI,WAAW,EAAE,CAAC,GAAG,iBAAiB,EAAE,mHAAmH;QACnJ,2GAA2G;QAC3G,iHAAiH,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,QAAQ,EAAE,yEAAyE,CAAC;IAC3N,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,gCAAgC,EAAE,OAAO,EAAE,8BAA8B,EAAE,OAAO,EAAE,0BAA0B,EAAE,MAAM;YAChJ,MAAM,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAAE,EAAE,EAAE,EAAE;QACnG,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;YAC5F,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE;CACzG,CAAC,CAAC"}
@@ -0,0 +1,190 @@
1
+ import { type MethodDescriptorArgs } from '../../contracts/v1/workflow-catalog.js';
2
+ export declare const verticalOutput: {
3
+ formats: {
4
+ aspect_ratio: '9:16';
5
+ resolution: '1080p';
6
+ }[];
7
+ timing: string;
8
+ };
9
+ export declare const nativeLimitations: string[];
10
+ export declare const nativeQa: string[];
11
+ export declare const compositionReasons: {
12
+ kind: string;
13
+ path: string;
14
+ message: string;
15
+ }[];
16
+ export declare function defineWorkflowMethod(value: MethodDescriptorArgs): {
17
+ id: "faceless-explainer" | "kinetic-launch" | "product-image-story" | "ugc-faq-answer" | "ugc-product-intro" | "website-proof-demo";
18
+ version: number;
19
+ content_digest: string;
20
+ authoring_status: "ready";
21
+ title: string;
22
+ purpose: string;
23
+ required_inputs: ("assets" | "audience" | "message" | "product" | "question" | "script" | "topic")[];
24
+ required_features: string[];
25
+ script_rules: {
26
+ structure: string[];
27
+ instructions: string[];
28
+ };
29
+ binding: {
30
+ kind: "native";
31
+ skill: "make_faceless" | "make_ugc";
32
+ profile: string;
33
+ visual_beats: "advisory";
34
+ } | {
35
+ kind: "blocked";
36
+ skill: "make_composition";
37
+ profile: string;
38
+ reasons: {
39
+ kind: string;
40
+ path: string;
41
+ message: string;
42
+ }[];
43
+ };
44
+ output: {
45
+ formats: {
46
+ aspect_ratio: "16:9" | "1:1" | "9:16";
47
+ resolution: "1080p" | "4k" | "720p";
48
+ }[];
49
+ timing: string;
50
+ };
51
+ limitations: string[];
52
+ qa_policy: string[];
53
+ example: {
54
+ brief: {
55
+ audience: string;
56
+ message: string;
57
+ script?: string | undefined;
58
+ cta?: string | undefined;
59
+ question?: string | undefined;
60
+ product?: string | undefined;
61
+ topic?: string | undefined;
62
+ brand_intent?: string | undefined;
63
+ required_terms: string[];
64
+ requirements: {
65
+ feature: string;
66
+ required: boolean;
67
+ }[];
68
+ requested_format?: {
69
+ aspect_ratio: "16:9" | "1:1" | "9:16";
70
+ resolution: "1080p" | "4k" | "720p";
71
+ } | undefined;
72
+ native?: {
73
+ skill: "make_ugc";
74
+ input: {
75
+ script?: string | undefined;
76
+ inserts?: {
77
+ id: string;
78
+ media_url: string;
79
+ media_type: "image" | "video";
80
+ anchor: {
81
+ startWord: number;
82
+ endWord: number;
83
+ } | {
84
+ quote: string;
85
+ occurrence?: number | undefined;
86
+ };
87
+ cover_words?: number | undefined;
88
+ image_motion?: {
89
+ direction: "in" | "out";
90
+ amount: number;
91
+ } | undefined;
92
+ }[] | undefined;
93
+ person?: string | undefined;
94
+ actor_id?: string | undefined;
95
+ image?: string | undefined;
96
+ actor_gender?: "female" | "male" | undefined;
97
+ character?: string | undefined;
98
+ name?: string | undefined;
99
+ broll_url?: string | undefined;
100
+ broll_policy?: "anyone" | "no_actor" | "no_people" | undefined;
101
+ captions: boolean;
102
+ caption_style: "hormozi" | "minimal" | "tiktok";
103
+ look: "commercial" | "natural" | "raw_iphone";
104
+ aspect_ratio?: "16:9" | "1:1" | "9:16" | undefined;
105
+ resolution?: "1080p" | "4k" | "720p" | undefined;
106
+ voice?: string | undefined;
107
+ voice_id?: string | undefined;
108
+ tts_model?: "eleven_flash_v2_5" | "eleven_turbo_v2_5" | "eleven_v3" | "eleven_v4" | "gemini-3.8-flash-tts" | undefined;
109
+ webhook_url?: string | undefined;
110
+ disclosure_overlay?: boolean | undefined;
111
+ background?: "blur" | "contain" | "white" | undefined;
112
+ segments?: {
113
+ kind: "actor" | "media";
114
+ script?: string | undefined;
115
+ media_url?: string | undefined;
116
+ media_type?: "image" | "video" | undefined;
117
+ duration_seconds?: number | undefined;
118
+ image_motion?: {
119
+ direction: "in" | "out";
120
+ amount: number;
121
+ } | undefined;
122
+ }[] | undefined;
123
+ };
124
+ } | {
125
+ skill: "make_faceless";
126
+ input: {
127
+ duration_seconds: number;
128
+ style_reference?: string | undefined;
129
+ character_reference?: string | undefined;
130
+ character_details?: string | undefined;
131
+ scene_images?: {
132
+ image_url: string;
133
+ anchor: {
134
+ startWord: number;
135
+ endWord: number;
136
+ } | {
137
+ quote: string;
138
+ occurrence?: number | undefined;
139
+ };
140
+ }[] | undefined;
141
+ captions: boolean;
142
+ voice?: string | undefined;
143
+ voice_id?: undefined;
144
+ input_mode: "brief";
145
+ brief: string;
146
+ } | {
147
+ duration_seconds: number;
148
+ style_reference?: string | undefined;
149
+ character_reference?: string | undefined;
150
+ character_details?: string | undefined;
151
+ scene_images?: {
152
+ image_url: string;
153
+ anchor: {
154
+ startWord: number;
155
+ endWord: number;
156
+ } | {
157
+ quote: string;
158
+ occurrence?: number | undefined;
159
+ };
160
+ }[] | undefined;
161
+ captions: boolean;
162
+ voice?: string | undefined;
163
+ voice_id?: undefined;
164
+ input_mode: "script";
165
+ script: string;
166
+ };
167
+ } | undefined;
168
+ references: {
169
+ kind: "capture" | "owner" | "url";
170
+ reference: string;
171
+ url?: string | undefined;
172
+ observed_at?: string | undefined;
173
+ product_state?: string | undefined;
174
+ }[];
175
+ };
176
+ beats: {
177
+ id: string;
178
+ role: string;
179
+ anchor: {
180
+ startWord: number;
181
+ endWord: number;
182
+ } | {
183
+ quote: string;
184
+ occurrence?: number | undefined;
185
+ };
186
+ required: boolean;
187
+ visual?: string | undefined;
188
+ }[];
189
+ };
190
+ };
@@ -0,0 +1,13 @@
1
+ import { methodDescriptor } from '../../contracts/v1/workflow-catalog.js';
2
+ export const verticalOutput = { formats: [{ aspect_ratio: '9:16', resolution: '1080p' }],
3
+ timing: 'Selected duration is a target. Actual duration follows the accepted speech and is reported separately.' };
4
+ export const nativeLimitations = ['Planning, validation and approval create no paid work. Launch requires the native admission checks.',
5
+ 'Proposed visual beats are advisory. The current executor chooses its own actual shot layout.'];
6
+ export const nativeQa = ['Keep the exact accepted script, numbers, required terms and pronunciation.',
7
+ 'Check delivery, actual geometry and duration separately from human creative acceptance.'];
8
+ export const compositionReasons = [
9
+ { kind: 'composition_not_qualified', path: 'binding', message: 'The composition executor and this output profile have not been qualified.' },
10
+ { kind: 'tariff_not_chosen', path: 'binding', message: 'The owner has not selected a composition tariff. This method supports planning only.' },
11
+ ];
12
+ export function defineWorkflowMethod(value) { return methodDescriptor.parse(value); }
13
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/workflows/methods/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAA6B,MAAM,wCAAwC,CAAC;AAErG,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,MAAe,EAAE,UAAU,EAAE,OAAgB,EAAE,CAAC;IACtG,MAAM,EAAE,wGAAwG,EAAE,CAAC;AACvH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,qGAAqG;IACnI,8FAA8F,CAAC,CAAC;AACpG,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,4EAA4E;IACjG,yFAAyF,CAAC,CAAC;AAC/F,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAC9B,EAAE,IAAI,EAAE,2BAA2B,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,2EAA2E,EAAE;IAC5I,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,sFAAsF,EAAE;CAClJ,CAAC;AACF,MAAM,UAAU,oBAAoB,CAAC,KAA2B,IAAI,OAAO,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,175 @@
1
+ export declare const ugcFaqAnswer: {
2
+ id: "faceless-explainer" | "kinetic-launch" | "product-image-story" | "ugc-faq-answer" | "ugc-product-intro" | "website-proof-demo";
3
+ version: number;
4
+ content_digest: string;
5
+ authoring_status: "ready";
6
+ title: string;
7
+ purpose: string;
8
+ required_inputs: ("assets" | "audience" | "message" | "product" | "question" | "script" | "topic")[];
9
+ required_features: string[];
10
+ script_rules: {
11
+ structure: string[];
12
+ instructions: string[];
13
+ };
14
+ binding: {
15
+ kind: "native";
16
+ skill: "make_faceless" | "make_ugc";
17
+ profile: string;
18
+ visual_beats: "advisory";
19
+ } | {
20
+ kind: "blocked";
21
+ skill: "make_composition";
22
+ profile: string;
23
+ reasons: {
24
+ kind: string;
25
+ path: string;
26
+ message: string;
27
+ }[];
28
+ };
29
+ output: {
30
+ formats: {
31
+ aspect_ratio: "16:9" | "1:1" | "9:16";
32
+ resolution: "1080p" | "4k" | "720p";
33
+ }[];
34
+ timing: string;
35
+ };
36
+ limitations: string[];
37
+ qa_policy: string[];
38
+ example: {
39
+ brief: {
40
+ audience: string;
41
+ message: string;
42
+ script?: string | undefined;
43
+ cta?: string | undefined;
44
+ question?: string | undefined;
45
+ product?: string | undefined;
46
+ topic?: string | undefined;
47
+ brand_intent?: string | undefined;
48
+ required_terms: string[];
49
+ requirements: {
50
+ feature: string;
51
+ required: boolean;
52
+ }[];
53
+ requested_format?: {
54
+ aspect_ratio: "16:9" | "1:1" | "9:16";
55
+ resolution: "1080p" | "4k" | "720p";
56
+ } | undefined;
57
+ native?: {
58
+ skill: "make_ugc";
59
+ input: {
60
+ script?: string | undefined;
61
+ inserts?: {
62
+ id: string;
63
+ media_url: string;
64
+ media_type: "image" | "video";
65
+ anchor: {
66
+ startWord: number;
67
+ endWord: number;
68
+ } | {
69
+ quote: string;
70
+ occurrence?: number | undefined;
71
+ };
72
+ cover_words?: number | undefined;
73
+ image_motion?: {
74
+ direction: "in" | "out";
75
+ amount: number;
76
+ } | undefined;
77
+ }[] | undefined;
78
+ person?: string | undefined;
79
+ actor_id?: string | undefined;
80
+ image?: string | undefined;
81
+ actor_gender?: "female" | "male" | undefined;
82
+ character?: string | undefined;
83
+ name?: string | undefined;
84
+ broll_url?: string | undefined;
85
+ broll_policy?: "anyone" | "no_actor" | "no_people" | undefined;
86
+ captions: boolean;
87
+ caption_style: "hormozi" | "minimal" | "tiktok";
88
+ look: "commercial" | "natural" | "raw_iphone";
89
+ aspect_ratio?: "16:9" | "1:1" | "9:16" | undefined;
90
+ resolution?: "1080p" | "4k" | "720p" | undefined;
91
+ voice?: string | undefined;
92
+ voice_id?: string | undefined;
93
+ tts_model?: "eleven_flash_v2_5" | "eleven_turbo_v2_5" | "eleven_v3" | "eleven_v4" | "gemini-3.8-flash-tts" | undefined;
94
+ webhook_url?: string | undefined;
95
+ disclosure_overlay?: boolean | undefined;
96
+ background?: "blur" | "contain" | "white" | undefined;
97
+ segments?: {
98
+ kind: "actor" | "media";
99
+ script?: string | undefined;
100
+ media_url?: string | undefined;
101
+ media_type?: "image" | "video" | undefined;
102
+ duration_seconds?: number | undefined;
103
+ image_motion?: {
104
+ direction: "in" | "out";
105
+ amount: number;
106
+ } | undefined;
107
+ }[] | undefined;
108
+ };
109
+ } | {
110
+ skill: "make_faceless";
111
+ input: {
112
+ duration_seconds: number;
113
+ style_reference?: string | undefined;
114
+ character_reference?: string | undefined;
115
+ character_details?: string | undefined;
116
+ scene_images?: {
117
+ image_url: string;
118
+ anchor: {
119
+ startWord: number;
120
+ endWord: number;
121
+ } | {
122
+ quote: string;
123
+ occurrence?: number | undefined;
124
+ };
125
+ }[] | undefined;
126
+ captions: boolean;
127
+ voice?: string | undefined;
128
+ voice_id?: undefined;
129
+ input_mode: "brief";
130
+ brief: string;
131
+ } | {
132
+ duration_seconds: number;
133
+ style_reference?: string | undefined;
134
+ character_reference?: string | undefined;
135
+ character_details?: string | undefined;
136
+ scene_images?: {
137
+ image_url: string;
138
+ anchor: {
139
+ startWord: number;
140
+ endWord: number;
141
+ } | {
142
+ quote: string;
143
+ occurrence?: number | undefined;
144
+ };
145
+ }[] | undefined;
146
+ captions: boolean;
147
+ voice?: string | undefined;
148
+ voice_id?: undefined;
149
+ input_mode: "script";
150
+ script: string;
151
+ };
152
+ } | undefined;
153
+ references: {
154
+ kind: "capture" | "owner" | "url";
155
+ reference: string;
156
+ url?: string | undefined;
157
+ observed_at?: string | undefined;
158
+ product_state?: string | undefined;
159
+ }[];
160
+ };
161
+ beats: {
162
+ id: string;
163
+ role: string;
164
+ anchor: {
165
+ startWord: number;
166
+ endWord: number;
167
+ } | {
168
+ quote: string;
169
+ occurrence?: number | undefined;
170
+ };
171
+ required: boolean;
172
+ visual?: string | undefined;
173
+ }[];
174
+ };
175
+ };
@@ -0,0 +1,19 @@
1
+ import { defineWorkflowMethod, nativeLimitations, nativeQa, verticalOutput } from './shared.js';
2
+ export const ugcFaqAnswer = defineWorkflowMethod({
3
+ id: 'ugc-faq-answer', version: 1, content_digest: 'eaea5436b436c7b2df7512aa5b8a9077203a53f520817195208290ef9eed9d3a', authoring_status: 'ready', title: 'Answer one product question',
4
+ purpose: 'Answer a single audience question directly, explain the supplied facts, and give a useful next step.',
5
+ required_inputs: ['audience', 'message', 'question', 'script'], required_features: ['exact_script', 'actor', 'voice'],
6
+ script_rules: { structure: ['answer', 'explanation', 'next_step'], instructions: [
7
+ 'Start with the answer to the supplied question. Explain only supplied facts, then state a concrete next step.',
8
+ 'Preserve product terms, numbers and pronunciation. Mark an unknown answer as unresolved instead of inventing reassurance.',
9
+ ] },
10
+ binding: { kind: 'native', skill: 'make_ugc', profile: 'ugc-native-v1', visual_beats: 'advisory' }, output: verticalOutput,
11
+ limitations: [...nativeLimitations, 'The presenter is synthetic and must not be described as a real customer.',
12
+ 'Captions and look follow native UGC dispositions; they are not made available by this method.'], qa_policy: nativeQa,
13
+ example: { brief: { audience: 'New Clipwright users', message: 'Explain the download step', question: 'Can I download the finished video?', cta: 'Open the completed run',
14
+ script: 'Yes, you can download the finished MP4. Open the completed run and use its video link. Keep the file for your own review.',
15
+ native: { skill: 'make_ugc', input: { script: 'Yes, you can download the finished MP4. Open the completed run and use its video link. Keep the file for your own review.', actor_id: 'actor_male' } } },
16
+ beats: [{ id: 'direct-answer', role: 'answer', anchor: { quote: 'Yes, you can download the finished MP4' }, required: false },
17
+ { id: 'how', role: 'next_step', anchor: { quote: 'Open the completed run' }, required: false }] },
18
+ });
19
+ //# sourceMappingURL=ugc-faq-answer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ugc-faq-answer.js","sourceRoot":"","sources":["../../../src/workflows/methods/ugc-faq-answer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEhG,MAAM,CAAC,MAAM,YAAY,GAAG,oBAAoB,CAAC;IAC7C,EAAE,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,kEAAkE,EAAE,gBAAgB,EAAE,OAAO,EAAE,KAAK,EAAE,6BAA6B;IACrL,OAAO,EAAE,sGAAsG;IAC/G,eAAe,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,iBAAiB,EAAE,CAAC,cAAc,EAAE,OAAO,EAAE,OAAO,CAAC;IACrH,YAAY,EAAE,EAAE,SAAS,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,WAAW,CAAC,EAAE,YAAY,EAAE;YAC7E,+GAA+G;YAC/G,2HAA2H;SAC9H,EAAE;IACH,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,cAAc;IAC1H,WAAW,EAAE,CAAC,GAAG,iBAAiB,EAAE,0EAA0E;QAC1G,+FAA+F,CAAC,EAAE,SAAS,EAAE,QAAQ;IACzH,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,sBAAsB,EAAE,OAAO,EAAE,2BAA2B,EAAE,QAAQ,EAAE,oCAAoC,EAAE,GAAG,EAAE,wBAAwB;YACrK,MAAM,EAAE,2HAA2H;YACnI,MAAM,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,2HAA2H,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,EAAE;QACvM,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,wCAAwC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;YACzH,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,wBAAwB,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE;CAC5G,CAAC,CAAC"}