@clipwright/core 0.27.0 → 0.29.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 (111) hide show
  1. package/CHANGELOG.md +68 -0
  2. package/dist/api-failure.d.ts +70 -5
  3. package/dist/api-failure.js +108 -4
  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 +1062 -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-client.d.ts +319 -0
  14. package/dist/contracts/v1/workflow-client.js +37 -0
  15. package/dist/contracts/v1/workflow-client.js.map +1 -0
  16. package/dist/contracts/v1/workflow-dto.d.ts +18 -0
  17. package/dist/contracts/v1/workflow-dto.js +25 -0
  18. package/dist/contracts/v1/workflow-dto.js.map +1 -0
  19. package/dist/contracts/v1/workflow-evidence.d.ts +115 -0
  20. package/dist/contracts/v1/workflow-evidence.js +33 -0
  21. package/dist/contracts/v1/workflow-evidence.js.map +1 -0
  22. package/dist/contracts/v1/workflow-execution.d.ts +822 -0
  23. package/dist/contracts/v1/workflow-execution.js +64 -0
  24. package/dist/contracts/v1/workflow-execution.js.map +1 -0
  25. package/dist/contracts/v1/workflow-plan.d.ts +1078 -0
  26. package/dist/contracts/v1/workflow-plan.js +31 -0
  27. package/dist/contracts/v1/workflow-plan.js.map +1 -0
  28. package/dist/contracts/v1/workflow-primitives.d.ts +63 -0
  29. package/dist/contracts/v1/workflow-primitives.js +19 -0
  30. package/dist/contracts/v1/workflow-primitives.js.map +1 -0
  31. package/dist/contracts/v1/workflow-run-read.d.ts +929 -0
  32. package/dist/contracts/v1/workflow-run-read.js +23 -0
  33. package/dist/contracts/v1/workflow-run-read.js.map +1 -0
  34. package/dist/edit-billing.d.ts +65 -0
  35. package/dist/edit-billing.js +30 -0
  36. package/dist/edit-billing.js.map +1 -0
  37. package/dist/edit-candidate.d.ts +158 -0
  38. package/dist/edit-candidate.js +64 -0
  39. package/dist/edit-candidate.js.map +1 -0
  40. package/dist/edit-revision.d.ts +162 -0
  41. package/dist/edit-revision.js +36 -0
  42. package/dist/edit-revision.js.map +1 -0
  43. package/dist/edit.d.ts +3 -0
  44. package/dist/edit.js +4 -1
  45. package/dist/edit.js.map +1 -1
  46. package/dist/endpoints.d.ts +8 -0
  47. package/dist/endpoints.js +25 -4
  48. package/dist/endpoints.js.map +1 -1
  49. package/dist/errors.d.ts +109 -1
  50. package/dist/errors.js +92 -0
  51. package/dist/errors.js.map +1 -1
  52. package/dist/faceless-customer-anchors.d.ts +7 -0
  53. package/dist/faceless-customer-anchors.js +31 -0
  54. package/dist/faceless-customer-anchors.js.map +1 -0
  55. package/dist/faceless-image-placement.d.ts +23 -0
  56. package/dist/faceless-image-placement.js +30 -0
  57. package/dist/faceless-image-placement.js.map +1 -0
  58. package/dist/faceless-public-plan.d.ts +2 -0
  59. package/dist/faceless-public-plan.js +6 -2
  60. package/dist/faceless-public-plan.js.map +1 -1
  61. package/dist/faceless-public.d.ts +257 -0
  62. package/dist/faceless-public.js +20 -0
  63. package/dist/faceless-public.js.map +1 -1
  64. package/dist/idempotency.d.ts +4 -0
  65. package/dist/idempotency.js +17 -0
  66. package/dist/idempotency.js.map +1 -1
  67. package/dist/index.d.ts +3 -0
  68. package/dist/index.js +3 -0
  69. package/dist/index.js.map +1 -1
  70. package/dist/run-static-warnings.js +3 -0
  71. package/dist/run-static-warnings.js.map +1 -1
  72. package/dist/runs.d.ts +110 -1
  73. package/dist/runs.js +28 -2
  74. package/dist/runs.js.map +1 -1
  75. package/dist/skills.d.ts +1 -1
  76. package/dist/skills.js +1 -1
  77. package/dist/skills.js.map +1 -1
  78. package/dist/workflows/catalog.d.ts +4 -0
  79. package/dist/workflows/catalog.js +57 -0
  80. package/dist/workflows/catalog.js.map +1 -0
  81. package/dist/workflows/index.d.ts +11 -0
  82. package/dist/workflows/index.js +12 -0
  83. package/dist/workflows/index.js.map +1 -0
  84. package/dist/workflows/methods/faceless-explainer.d.ts +175 -0
  85. package/dist/workflows/methods/faceless-explainer.js +20 -0
  86. package/dist/workflows/methods/faceless-explainer.js.map +1 -0
  87. package/dist/workflows/methods/kinetic-launch.d.ts +175 -0
  88. package/dist/workflows/methods/kinetic-launch.js +19 -0
  89. package/dist/workflows/methods/kinetic-launch.js.map +1 -0
  90. package/dist/workflows/methods/product-image-story.d.ts +175 -0
  91. package/dist/workflows/methods/product-image-story.js +20 -0
  92. package/dist/workflows/methods/product-image-story.js.map +1 -0
  93. package/dist/workflows/methods/shared.d.ts +190 -0
  94. package/dist/workflows/methods/shared.js +13 -0
  95. package/dist/workflows/methods/shared.js.map +1 -0
  96. package/dist/workflows/methods/ugc-faq-answer.d.ts +175 -0
  97. package/dist/workflows/methods/ugc-faq-answer.js +19 -0
  98. package/dist/workflows/methods/ugc-faq-answer.js.map +1 -0
  99. package/dist/workflows/methods/ugc-product-intro.d.ts +175 -0
  100. package/dist/workflows/methods/ugc-product-intro.js +19 -0
  101. package/dist/workflows/methods/ugc-product-intro.js.map +1 -0
  102. package/dist/workflows/methods/website-proof-demo.d.ts +175 -0
  103. package/dist/workflows/methods/website-proof-demo.js +19 -0
  104. package/dist/workflows/methods/website-proof-demo.js.map +1 -0
  105. package/dist/workflows/validate.d.ts +10 -0
  106. package/dist/workflows/validate.js +229 -0
  107. package/dist/workflows/validate.js.map +1 -0
  108. package/dist/workflows.d.ts +1 -0
  109. package/dist/workflows.js +2 -0
  110. package/dist/workflows.js.map +1 -0
  111. package/package.json +7 -2
@@ -0,0 +1,175 @@
1
+ export declare const kineticLaunch: {
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 { compositionReasons, defineWorkflowMethod, nativeQa, verticalOutput } from './shared.js';
2
+ export const kineticLaunch = defineWorkflowMethod({
3
+ id: 'kinetic-launch', version: 1, content_digest: 'a05f94e129e64c7f16bbc9e638c9aebfbfe6c62e74b1b41a150e4a0197557063', authoring_status: 'ready', title: 'Launch a message with exact moving text',
4
+ purpose: 'Build a concise launch from accepted copy, selected narration and deliberate text emphasis, with one closing CTA.',
5
+ required_inputs: ['audience', 'message', 'script'], required_features: ['exact_script', 'authored_scenes', 'accepted_word_clock'],
6
+ script_rules: { structure: ['announcement', 'text_emphasis', 'brand', 'end_card'], instructions: [
7
+ 'Group exact accepted words by meaning, choose a few deliberate emphasis words, and finish with one brand and CTA.',
8
+ 'Preserve all numbers and punctuation. Resolve text reveals against the accepted word clock; unchanged copy reuses its accepted narration master.',
9
+ ] },
10
+ binding: { kind: 'blocked', skill: 'make_composition', profile: 'kinetic-launch-v1', reasons: compositionReasons }, output: verticalOutput,
11
+ limitations: ['Planning only until the composition profile is qualified and its tariff chosen.',
12
+ 'A missing narration master is a readiness issue. Replanning must not silently buy new speech.'],
13
+ qa_policy: [...nativeQa, 'Check glyph coverage, font availability, overflow, safe area and reveal/hold/end-card timing against measured words.'],
14
+ example: { brief: { audience: 'A small workshop community', message: 'Announce the next session', brand_intent: 'Quiet, clear typography', cta: 'Read the schedule',
15
+ script: 'The next workshop is ready. Bring one question and one idea. We will explore them together. Read the schedule and choose your session.' },
16
+ beats: [{ id: 'announce', role: 'announcement', anchor: { quote: 'The next workshop is ready' }, required: true, visual: 'Reveal the exact announcement copy' },
17
+ { id: 'cta', role: 'end_card', anchor: { quote: 'Read the schedule' }, required: true, visual: 'Hold the accepted CTA after its spoken words' }] },
18
+ });
19
+ //# sourceMappingURL=kinetic-launch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kinetic-launch.js","sourceRoot":"","sources":["../../../src/workflows/methods/kinetic-launch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEjG,MAAM,CAAC,MAAM,aAAa,GAAG,oBAAoB,CAAC;IAC9C,EAAE,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,kEAAkE,EAAE,gBAAgB,EAAE,OAAO,EAAE,KAAK,EAAE,yCAAyC;IACjM,OAAO,EAAE,mHAAmH;IAC5H,eAAe,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,iBAAiB,EAAE,CAAC,cAAc,EAAE,iBAAiB,EAAE,qBAAqB,CAAC;IACjI,YAAY,EAAE,EAAE,SAAS,EAAE,CAAC,cAAc,EAAE,eAAe,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,YAAY,EAAE;YAC7F,mHAAmH;YACnH,kJAAkJ;SACrJ,EAAE;IACH,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,kBAAkB,EAAE,EAAE,MAAM,EAAE,cAAc;IAC1I,WAAW,EAAE,CAAC,iFAAiF;QAC3F,+FAA+F,CAAC;IACpG,SAAS,EAAE,CAAC,GAAG,QAAQ,EAAE,sHAAsH,CAAC;IAChJ,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,4BAA4B,EAAE,OAAO,EAAE,2BAA2B,EAAE,YAAY,EAAE,yBAAyB,EAAE,GAAG,EAAE,mBAAmB;YAC/J,MAAM,EAAE,wIAAwI,EAAE;QAClJ,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,4BAA4B,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,oCAAoC,EAAE;YAC3J,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,8CAA8C,EAAE,CAAC,EAAE;CAC7J,CAAC,CAAC"}
@@ -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"}