@clipwright/core 0.35.0 → 0.36.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 (178) hide show
  1. package/README.md +3 -2
  2. package/dist/account-actors.d.ts +5 -6
  3. package/dist/account-actors.js +5 -6
  4. package/dist/account-actors.js.map +1 -1
  5. package/dist/api-failure.d.ts +1 -1
  6. package/dist/api-failure.js +2 -2
  7. package/dist/api-failure.js.map +1 -1
  8. package/dist/aspect.d.ts +1 -1
  9. package/dist/aspect.js +5 -5
  10. package/dist/aspect.js.map +1 -1
  11. package/dist/assets.d.ts +13 -5
  12. package/dist/assets.js +7 -6
  13. package/dist/assets.js.map +1 -1
  14. package/dist/billing-terms.d.ts +1 -1
  15. package/dist/billing-terms.js +1 -1
  16. package/dist/billing-terms.js.map +1 -1
  17. package/dist/canvas-fit.js +1 -1
  18. package/dist/canvas-fit.js.map +1 -1
  19. package/dist/contract-dispositions.d.ts +8 -8
  20. package/dist/contract-dispositions.js +11 -11
  21. package/dist/contract-dispositions.js.map +1 -1
  22. package/dist/contracts/v1/workflow-brief.d.ts +21 -0
  23. package/dist/contracts/v1/workflow-catalog.d.ts +42 -0
  24. package/dist/contracts/v1/workflow-client.d.ts +42 -0
  25. package/dist/contracts/v1/workflow-execution.d.ts +3 -3
  26. package/dist/contracts/v1/workflow-plan.d.ts +63 -0
  27. package/dist/contracts/v1/workflow-run-read.d.ts +2 -2
  28. package/dist/edit-billing.js +1 -2
  29. package/dist/edit-billing.js.map +1 -1
  30. package/dist/edit-candidate.d.ts +2 -2
  31. package/dist/edit-candidate.js +2 -2
  32. package/dist/edit-candidate.js.map +1 -1
  33. package/dist/edit-long-form.d.ts +2 -2
  34. package/dist/edit-long-form.js +2 -2
  35. package/dist/edit-long-form.js.map +1 -1
  36. package/dist/edit-revision.d.ts +1 -1
  37. package/dist/edit-revision.js +1 -1
  38. package/dist/edit-revision.js.map +1 -1
  39. package/dist/endpoint-notes.js +12 -8
  40. package/dist/endpoint-notes.js.map +1 -1
  41. package/dist/endpoints.d.ts +1 -1
  42. package/dist/endpoints.js +4 -1
  43. package/dist/endpoints.js.map +1 -1
  44. package/dist/errors.d.ts +2 -2
  45. package/dist/errors.js +5 -2
  46. package/dist/errors.js.map +1 -1
  47. package/dist/face-billing.d.ts +1 -1
  48. package/dist/face-billing.js +3 -3
  49. package/dist/face-billing.js.map +1 -1
  50. package/dist/face-delivery.d.ts +1 -1
  51. package/dist/face-delivery.js +1 -1
  52. package/dist/face-delivery.js.map +1 -1
  53. package/dist/faceless-media-record.d.ts +1 -1
  54. package/dist/faceless-media-record.js +1 -1
  55. package/dist/faceless-media-record.js.map +1 -1
  56. package/dist/faceless-price.d.ts +25 -6
  57. package/dist/faceless-price.js +13 -6
  58. package/dist/faceless-price.js.map +1 -1
  59. package/dist/faceless-public-plan.d.ts +6 -2
  60. package/dist/faceless-public-plan.js +11 -7
  61. package/dist/faceless-public-plan.js.map +1 -1
  62. package/dist/faceless-public.d.ts +1 -1
  63. package/dist/faceless-public.js +4 -4
  64. package/dist/faceless-public.js.map +1 -1
  65. package/dist/faceless-voices.d.ts +6 -6
  66. package/dist/faceless-voices.js +5 -5
  67. package/dist/faceless-voices.js.map +1 -1
  68. package/dist/feedback.d.ts +29 -0
  69. package/dist/feedback.js +29 -0
  70. package/dist/feedback.js.map +1 -0
  71. package/dist/generations.d.ts +2 -19
  72. package/dist/generations.js +28 -48
  73. package/dist/generations.js.map +1 -1
  74. package/dist/index.d.ts +1 -0
  75. package/dist/index.js +2 -0
  76. package/dist/index.js.map +1 -1
  77. package/dist/media-timebase.js +2 -2
  78. package/dist/media-timebase.js.map +1 -1
  79. package/dist/openapi.d.ts +4 -3
  80. package/dist/openapi.js +6 -1
  81. package/dist/openapi.js.map +1 -1
  82. package/dist/parts-pricing.d.ts +3 -3
  83. package/dist/parts-pricing.js +6 -6
  84. package/dist/parts-pricing.js.map +1 -1
  85. package/dist/presenter-beats.d.ts +1 -1
  86. package/dist/presenter-beats.js +2 -2
  87. package/dist/presenter-beats.js.map +1 -1
  88. package/dist/prices.js +5 -1
  89. package/dist/prices.js.map +1 -1
  90. package/dist/public-responses.d.ts +1 -1
  91. package/dist/public-responses.js +1 -1
  92. package/dist/public-responses.js.map +1 -1
  93. package/dist/rate-limit.d.ts +2 -2
  94. package/dist/rate-limit.js +2 -2
  95. package/dist/rate-limit.js.map +1 -1
  96. package/dist/reference-analysis.d.ts +238 -6
  97. package/dist/reference-analysis.js +138 -19
  98. package/dist/reference-analysis.js.map +1 -1
  99. package/dist/reference-kinds.d.ts +3 -1
  100. package/dist/reference-kinds.js +3 -1
  101. package/dist/reference-kinds.js.map +1 -1
  102. package/dist/reference-profile.d.ts +42 -4
  103. package/dist/reference-profile.js +56 -9
  104. package/dist/reference-profile.js.map +1 -1
  105. package/dist/reference-staging.d.ts +12 -0
  106. package/dist/reference-staging.js +3 -1
  107. package/dist/reference-staging.js.map +1 -1
  108. package/dist/reference-voice.d.ts +1 -1
  109. package/dist/reference-voice.js +3 -3
  110. package/dist/reference-voice.js.map +1 -1
  111. package/dist/render-backend.d.ts +1 -1
  112. package/dist/resolved-timeline.d.ts +2 -2
  113. package/dist/resolved-timeline.js +3 -3
  114. package/dist/resolved-timeline.js.map +1 -1
  115. package/dist/run-static-warnings.js +1 -1
  116. package/dist/run-static-warnings.js.map +1 -1
  117. package/dist/runs.d.ts +3 -3
  118. package/dist/runs.js +3 -3
  119. package/dist/runs.js.map +1 -1
  120. package/dist/semantic-inserts.d.ts +1 -1
  121. package/dist/semantic-inserts.js +2 -2
  122. package/dist/semantic-inserts.js.map +1 -1
  123. package/dist/skills.d.ts +8 -8
  124. package/dist/skills.js +23 -20
  125. package/dist/skills.js.map +1 -1
  126. package/dist/templates/index.d.ts +1 -1
  127. package/dist/templates/index.js +1 -1
  128. package/dist/templates/index.js.map +1 -1
  129. package/dist/templates/size.d.ts +1 -1
  130. package/dist/templates/size.js +1 -1
  131. package/dist/templates/size.js.map +1 -1
  132. package/dist/templates/sounds.js +1 -1
  133. package/dist/templates/sounds.js.map +1 -1
  134. package/dist/ugc-call.d.ts +1 -1
  135. package/dist/ugc-call.js +2 -2
  136. package/dist/ugc-call.js.map +1 -1
  137. package/dist/ugc-delivery.d.ts +1 -1
  138. package/dist/ugc-delivery.js +1 -1
  139. package/dist/ugc-delivery.js.map +1 -1
  140. package/dist/ugc-video-media.d.ts +1 -1
  141. package/dist/ugc-video-media.js +1 -1
  142. package/dist/ugc-video-media.js.map +1 -1
  143. package/dist/uploads.d.ts +2 -2
  144. package/dist/uploads.js +2 -2
  145. package/dist/uploads.js.map +1 -1
  146. package/dist/vendor-response.d.ts +1 -1
  147. package/dist/vendor-response.js +1 -1
  148. package/dist/vendor-response.js.map +1 -1
  149. package/dist/voice-admission.d.ts +504 -497
  150. package/dist/voice-admission.js +22 -5
  151. package/dist/voice-admission.js.map +1 -1
  152. package/dist/voice-listing.d.ts +4 -4
  153. package/dist/voice-listing.js +4 -5
  154. package/dist/voice-listing.js.map +1 -1
  155. package/dist/voice-pace.js +1 -1
  156. package/dist/voice-pace.js.map +1 -1
  157. package/dist/voices.d.ts +12 -12
  158. package/dist/voices.js +41 -20
  159. package/dist/voices.js.map +1 -1
  160. package/dist/workflows/methods/faceless-explainer.d.ts +13 -2
  161. package/dist/workflows/methods/kinetic-launch.d.ts +13 -2
  162. package/dist/workflows/methods/kinetic-launch.js +1 -1
  163. package/dist/workflows/methods/product-image-story.d.ts +13 -2
  164. package/dist/workflows/methods/reference-remake.d.ts +13 -2
  165. package/dist/workflows/methods/shared.d.ts +13 -2
  166. package/dist/workflows/methods/shared.js +2 -2
  167. package/dist/workflows/methods/shared.js.map +1 -1
  168. package/dist/workflows/methods/ugc-faq-answer.d.ts +13 -2
  169. package/dist/workflows/methods/ugc-product-intro.d.ts +13 -2
  170. package/dist/workflows/methods/website-proof-demo.d.ts +13 -2
  171. package/dist/workflows/methods/website-proof-demo.js +1 -1
  172. package/dist/workflows/reference-remake.d.ts +21 -0
  173. package/dist/workflows/reference-remake.js +12 -8
  174. package/dist/workflows/reference-remake.js.map +1 -1
  175. package/dist/workflows/validate.js +4 -4
  176. package/dist/workflows/validate.js.map +1 -1
  177. package/package.json +2 -3
  178. package/CHANGELOG.md +0 -1500
@@ -9,13 +9,23 @@ export declare const ANALYZE_REFERENCE_TASK = "analyze-reference";
9
9
  /** The run skill that carries an analysis's hold and charge; not a `SKILLS` entry, since no `/v1/skills` route starts it. */
10
10
  export declare const ANALYZE_REFERENCE_SKILL = "analyze_reference";
11
11
  export declare const referenceAnalysisId: z.ZodString;
12
- /** The price of a delivered analysis (owner, 29.10, #800/#927): Argon video plus Flash stills cost us ≈ $0.23 today. */
13
- /** Argon's price doubles on 2026-12-01 (≈ $0.45, ≈ 135 credits at ×2.5): the owner reprices then; nothing changes it by itself. */
12
+ /** The price of a delivered analysis. */
14
13
  export declare const REFERENCE_ANALYSIS_CREDITS = 70;
14
+ /** The data mode: metrics, transcript and a frame sheet without the vision pass. */
15
+ export declare const REFERENCE_DATA_CREDITS = 10;
16
+ /** `full` reads the reference into a profile; `data` hands back its numbers, words and a frame sheet, with no vision call. */
17
+ export declare const REFERENCE_ANALYSIS_MODES: readonly ["full", "data"];
18
+ export type ReferenceAnalysisMode = (typeof REFERENCE_ANALYSIS_MODES)[number];
19
+ export declare const REFERENCE_ANALYSIS_MODE_CREDITS: Readonly<Record<ReferenceAnalysisMode, number>>;
15
20
  /** New analyses per account per hour: each costs us vendor money even when it fails, so the cap stays beside the price. */
16
21
  export declare const REFERENCE_ANALYSIS_PER_HOUR = 10;
22
+ /** The data mode's own cap, scope `reference_data`: cheap enough to run on every candidate reel of a search (#921). */
23
+ export declare const REFERENCE_DATA_PER_HOUR = 60;
24
+ export declare const REFERENCE_DATA_SHEET_COLUMNS = 3;
25
+ export declare const REFERENCE_DATA_SHEET_ROWS = 3;
26
+ export declare const REFERENCE_DATA_SHEET_MAX_WIDTH = 1080;
17
27
  export declare const REFERENCE_ANALYSIS_WINDOW_SECONDS = 3600;
18
- /** The worker stops its own work here, removes its temp copy and fails the analysis; under the task's ceiling. */
28
+ /** The analysis stops here and fails; under the task's ceiling. */
19
29
  export declare const REFERENCE_ANALYSIS_WORK_SECONDS = 420;
20
30
  export declare const REFERENCE_ANALYSIS_TASK_MAX_DURATION_SECONDS = 600;
21
31
  /** Past this a read calls an unfinished analysis failed: a task killed at its ceiling writes nothing. */
@@ -24,19 +34,157 @@ export declare const REFERENCE_ANALYSIS_STATES: readonly ["queued", "analyzing",
24
34
  export declare const REFERENCE_ANALYSIS_ERRORS: readonly ["timed_out", "analysis_failed", "asset_gone", "enqueue_failed"];
25
35
  export type ReferenceAnalysisError = (typeof REFERENCE_ANALYSIS_ERRORS)[number];
26
36
  export declare const REFERENCE_ANALYSIS_ERROR_MESSAGES: Readonly<Record<ReferenceAnalysisError, string>>;
27
- /** What the API hands the worker: ids only, so no file name or reference text reaches Trigger.dev's log. */
37
+ /** What starts an analysis: ids only, so no file name or reference text reaches a log. */
28
38
  export declare const analyzeReferencePayload: z.ZodObject<{
29
39
  analysisId: z.ZodString;
30
40
  accountId: z.ZodString;
31
41
  }, z.core.$strict>;
32
42
  export type AnalyzeReferencePayload = z.infer<typeof analyzeReferencePayload>;
43
+ export declare const REFERENCE_SOURCE_PLATFORMS: readonly ["instagram", "tiktok"];
44
+ export type ReferenceSourcePlatform = (typeof REFERENCE_SOURCE_PLATFORMS)[number];
45
+ /** The live analysis a link replays is found by this key; a short TikTok link has none before it is resolved. */
46
+ export declare const referenceSourceKey: z.ZodString;
47
+ export declare const REFERENCE_URL_YOUTUBE_REFUSAL = "YouTube gives no video file through our source; upload the MP4 with create_asset";
48
+ export declare const REFERENCE_URL_ACCEPTED: string;
49
+ export type ReferenceUrl = {
50
+ ok: true;
51
+ url: string;
52
+ platform: ReferenceSourcePlatform;
53
+ key: string | null;
54
+ } | {
55
+ ok: false;
56
+ message: string;
57
+ };
58
+ /** Which post a link names, read from its text alone: no network, so a refusal costs nothing (#930 S3). */
59
+ export declare function classifyReferenceUrl(raw: string): ReferenceUrl;
33
60
  export declare const analyzeReferenceRequest: z.ZodObject<{
34
- asset_id: z.ZodString;
61
+ asset_id: z.ZodOptional<z.ZodString>;
62
+ source_url: z.ZodOptional<z.ZodString>;
63
+ mode: z.ZodOptional<z.ZodEnum<{
64
+ data: "data";
65
+ full: "full";
66
+ }>>;
35
67
  }, z.core.$strict>;
36
68
  export type AnalyzeReferenceRequest = z.infer<typeof analyzeReferenceRequest>;
69
+ /** The post behind a link analysis (#930 S3): `null` is unknown, never 0, and each unknown is also a line in `warnings[]`. */
70
+ export declare const referenceSource: z.ZodObject<{
71
+ url: z.ZodString;
72
+ platform: z.ZodEnum<{
73
+ instagram: "instagram";
74
+ tiktok: "tiktok";
75
+ }>;
76
+ key: z.ZodString;
77
+ measured_at: z.ZodString;
78
+ published_at: z.ZodNullable<z.ZodString>;
79
+ duration_s: z.ZodNullable<z.ZodNumber>;
80
+ metrics: z.ZodObject<{
81
+ views: z.ZodNullable<z.ZodNumber>;
82
+ likes: z.ZodNullable<z.ZodNumber>;
83
+ comments: z.ZodNullable<z.ZodNumber>;
84
+ views_per_hour: z.ZodNullable<z.ZodNumber>;
85
+ }, z.core.$strict>;
86
+ author_median: z.ZodNullable<z.ZodObject<{
87
+ views: z.ZodNullable<z.ZodNumber>;
88
+ ratio: z.ZodNullable<z.ZodNumber>;
89
+ reels: z.ZodNumber;
90
+ window: z.ZodString;
91
+ }, z.core.$strict>>;
92
+ author_recent: z.ZodNullable<z.ZodObject<{
93
+ views: z.ZodNullable<z.ZodNumber>;
94
+ ratio: z.ZodNullable<z.ZodNumber>;
95
+ reels: z.ZodNumber;
96
+ window: z.ZodString;
97
+ }, z.core.$strict>>;
98
+ top_comments: z.ZodArray<z.ZodObject<{
99
+ text: z.ZodString;
100
+ likes: z.ZodNullable<z.ZodNumber>;
101
+ }, z.core.$strict>>;
102
+ code_words: z.ZodArray<z.ZodObject<{
103
+ word: z.ZodString;
104
+ count: z.ZodNumber;
105
+ }, z.core.$strict>>;
106
+ }, z.core.$strict>;
107
+ export type ReferenceSource = z.infer<typeof referenceSource>;
108
+ /** What a succeeded data analysis hands back (#930 S4): the probe, the transcribed words as the profile writes them, and a frame sheet. */
109
+ export declare const referenceData: z.ZodObject<{
110
+ transcript: z.ZodArray<z.ZodObject<{
111
+ text: z.ZodString;
112
+ start_s: z.ZodNumber;
113
+ end_s: z.ZodNumber;
114
+ speaker: z.ZodOptional<z.ZodString>;
115
+ }, z.core.$strict>>;
116
+ hook: z.ZodNullable<z.ZodObject<{
117
+ text: z.ZodString;
118
+ end_s: z.ZodNumber;
119
+ caption: z.ZodOptional<z.ZodString>;
120
+ }, z.core.$strict>>;
121
+ duration_s: z.ZodNumber;
122
+ width: z.ZodNumber;
123
+ height: z.ZodNumber;
124
+ fps: z.ZodNumber;
125
+ frame_sheet: z.ZodObject<{
126
+ columns: z.ZodNumber;
127
+ rows: z.ZodNumber;
128
+ times_s: z.ZodArray<z.ZodNumber>;
129
+ url: z.ZodNullable<z.ZodString>;
130
+ }, z.core.$strict>;
131
+ }, z.core.$strict>;
132
+ export type ReferenceData = z.infer<typeof referenceData>;
133
+ /** What the data pass answers: the words, the sheet it uploaded and its warnings. */
134
+ export declare const referenceDataPass: z.ZodObject<{
135
+ transcript: z.ZodArray<z.ZodObject<{
136
+ text: z.ZodString;
137
+ start_s: z.ZodNumber;
138
+ end_s: z.ZodNumber;
139
+ speaker: z.ZodOptional<z.ZodString>;
140
+ }, z.core.$strict>>;
141
+ hook: z.ZodNullable<z.ZodObject<{
142
+ text: z.ZodString;
143
+ end_s: z.ZodNumber;
144
+ caption: z.ZodOptional<z.ZodString>;
145
+ }, z.core.$strict>>;
146
+ frame_sheet: z.ZodObject<{
147
+ columns: z.ZodNumber;
148
+ rows: z.ZodNumber;
149
+ times_s: z.ZodArray<z.ZodNumber>;
150
+ }, z.core.$strict>;
151
+ cost_usd: z.ZodNumber;
152
+ warnings: z.ZodArray<z.ZodString>;
153
+ }, z.core.$strict>;
154
+ export type ReferenceDataPass = z.infer<typeof referenceDataPass>;
155
+ /** The row's `data`: the answer with the sheet's R2 key in place of its link, and our vendor cost, which no client reads. */
156
+ export declare const referenceDataStored: z.ZodObject<{
157
+ transcript: z.ZodArray<z.ZodObject<{
158
+ text: z.ZodString;
159
+ start_s: z.ZodNumber;
160
+ end_s: z.ZodNumber;
161
+ speaker: z.ZodOptional<z.ZodString>;
162
+ }, z.core.$strict>>;
163
+ hook: z.ZodNullable<z.ZodObject<{
164
+ text: z.ZodString;
165
+ end_s: z.ZodNumber;
166
+ caption: z.ZodOptional<z.ZodString>;
167
+ }, z.core.$strict>>;
168
+ duration_s: z.ZodNumber;
169
+ width: z.ZodNumber;
170
+ height: z.ZodNumber;
171
+ fps: z.ZodNumber;
172
+ frame_sheet: z.ZodObject<{
173
+ columns: z.ZodNumber;
174
+ rows: z.ZodNumber;
175
+ times_s: z.ZodArray<z.ZodNumber>;
176
+ key: z.ZodString;
177
+ }, z.core.$strict>;
178
+ cost_usd: z.ZodNumber;
179
+ }, z.core.$strict>;
180
+ export type ReferenceDataStored = z.infer<typeof referenceDataStored>;
37
181
  export declare const referenceAnalysis: z.ZodObject<{
38
182
  analysis_id: z.ZodString;
39
183
  asset_id: z.ZodString;
184
+ mode: z.ZodEnum<{
185
+ data: "data";
186
+ full: "full";
187
+ }>;
40
188
  state: z.ZodEnum<{
41
189
  analyzing: "analyzing";
42
190
  failed: "failed";
@@ -99,19 +247,24 @@ export declare const referenceAnalysis: z.ZodObject<{
99
247
  unmapped: "unmapped";
100
248
  }>;
101
249
  source_kind: z.ZodEnum<{
250
+ banner: "banner";
102
251
  before_after_split: "before_after_split";
103
252
  callout: "callout";
104
253
  checklist: "checklist";
254
+ comment_box: "comment_box";
105
255
  compare: "compare";
256
+ concept_card: "concept_card";
106
257
  end_card: "end_card";
107
258
  insert_media: "insert_media";
108
259
  layout_split: "layout_split";
260
+ logo_card: "logo_card";
109
261
  lower_third: "lower_third";
110
262
  notification: "notification";
111
263
  other: "other";
112
264
  overlay_media: "overlay_media";
113
265
  particles: "particles";
114
266
  phone_call: "phone_call";
267
+ price_card: "price_card";
115
268
  product_ui: "product_ui";
116
269
  progress: "progress";
117
270
  quote: "quote";
@@ -381,19 +534,24 @@ export declare const referenceAnalysis: z.ZodObject<{
381
534
  beat_index: z.ZodNumber;
382
535
  graphic_index: z.ZodNullable<z.ZodNumber>;
383
536
  kind: z.ZodEnum<{
537
+ banner: "banner";
384
538
  before_after_split: "before_after_split";
385
539
  callout: "callout";
386
540
  checklist: "checklist";
541
+ comment_box: "comment_box";
387
542
  compare: "compare";
543
+ concept_card: "concept_card";
388
544
  end_card: "end_card";
389
545
  insert_media: "insert_media";
390
546
  layout_split: "layout_split";
547
+ logo_card: "logo_card";
391
548
  lower_third: "lower_third";
392
549
  notification: "notification";
393
550
  other: "other";
394
551
  overlay_media: "overlay_media";
395
552
  particles: "particles";
396
553
  phone_call: "phone_call";
554
+ price_card: "price_card";
397
555
  product_ui: "product_ui";
398
556
  progress: "progress";
399
557
  quote: "quote";
@@ -633,6 +791,77 @@ export declare const referenceAnalysis: z.ZodObject<{
633
791
  }>;
634
792
  }, z.core.$strict>>;
635
793
  }, z.core.$strict>>;
794
+ transcript: z.ZodOptional<z.ZodArray<z.ZodObject<{
795
+ text: z.ZodString;
796
+ start_s: z.ZodNumber;
797
+ end_s: z.ZodNumber;
798
+ speaker: z.ZodOptional<z.ZodString>;
799
+ }, z.core.$strict>>>;
800
+ hook: z.ZodOptional<z.ZodObject<{
801
+ text: z.ZodString;
802
+ end_s: z.ZodNumber;
803
+ caption: z.ZodOptional<z.ZodString>;
804
+ }, z.core.$strict>>;
805
+ }, z.core.$strict>>;
806
+ data: z.ZodNullable<z.ZodObject<{
807
+ transcript: z.ZodArray<z.ZodObject<{
808
+ text: z.ZodString;
809
+ start_s: z.ZodNumber;
810
+ end_s: z.ZodNumber;
811
+ speaker: z.ZodOptional<z.ZodString>;
812
+ }, z.core.$strict>>;
813
+ hook: z.ZodNullable<z.ZodObject<{
814
+ text: z.ZodString;
815
+ end_s: z.ZodNumber;
816
+ caption: z.ZodOptional<z.ZodString>;
817
+ }, z.core.$strict>>;
818
+ duration_s: z.ZodNumber;
819
+ width: z.ZodNumber;
820
+ height: z.ZodNumber;
821
+ fps: z.ZodNumber;
822
+ frame_sheet: z.ZodObject<{
823
+ columns: z.ZodNumber;
824
+ rows: z.ZodNumber;
825
+ times_s: z.ZodArray<z.ZodNumber>;
826
+ url: z.ZodNullable<z.ZodString>;
827
+ }, z.core.$strict>;
828
+ }, z.core.$strict>>;
829
+ source: z.ZodNullable<z.ZodObject<{
830
+ url: z.ZodString;
831
+ platform: z.ZodEnum<{
832
+ instagram: "instagram";
833
+ tiktok: "tiktok";
834
+ }>;
835
+ key: z.ZodString;
836
+ measured_at: z.ZodString;
837
+ published_at: z.ZodNullable<z.ZodString>;
838
+ duration_s: z.ZodNullable<z.ZodNumber>;
839
+ metrics: z.ZodObject<{
840
+ views: z.ZodNullable<z.ZodNumber>;
841
+ likes: z.ZodNullable<z.ZodNumber>;
842
+ comments: z.ZodNullable<z.ZodNumber>;
843
+ views_per_hour: z.ZodNullable<z.ZodNumber>;
844
+ }, z.core.$strict>;
845
+ author_median: z.ZodNullable<z.ZodObject<{
846
+ views: z.ZodNullable<z.ZodNumber>;
847
+ ratio: z.ZodNullable<z.ZodNumber>;
848
+ reels: z.ZodNumber;
849
+ window: z.ZodString;
850
+ }, z.core.$strict>>;
851
+ author_recent: z.ZodNullable<z.ZodObject<{
852
+ views: z.ZodNullable<z.ZodNumber>;
853
+ ratio: z.ZodNullable<z.ZodNumber>;
854
+ reels: z.ZodNumber;
855
+ window: z.ZodString;
856
+ }, z.core.$strict>>;
857
+ top_comments: z.ZodArray<z.ZodObject<{
858
+ text: z.ZodString;
859
+ likes: z.ZodNullable<z.ZodNumber>;
860
+ }, z.core.$strict>>;
861
+ code_words: z.ZodArray<z.ZodObject<{
862
+ word: z.ZodString;
863
+ count: z.ZodNumber;
864
+ }, z.core.$strict>>;
636
865
  }, z.core.$strict>>;
637
866
  warnings: z.ZodArray<z.ZodString>;
638
867
  error: z.ZodNullable<z.ZodObject<{
@@ -652,7 +881,7 @@ export declare const referenceAnalysis: z.ZodObject<{
652
881
  }, z.core.$strict>;
653
882
  export type ReferenceAnalysis = z.infer<typeof referenceAnalysis>;
654
883
  export declare const analysisQuoteResponse: z.ZodObject<{
655
- asset_id: z.ZodString;
884
+ asset_id: z.ZodNullable<z.ZodString>;
656
885
  credits_estimate: z.ZodNumber;
657
886
  replays_analysis_id: z.ZodNullable<z.ZodString>;
658
887
  warnings: z.ZodArray<z.ZodString>;
@@ -671,6 +900,9 @@ export declare const referenceAnalysisRead: z.ZodObject<{
671
900
  code: z.ZodString;
672
901
  message: z.ZodString;
673
902
  }, z.core.$strip>>;
903
+ source: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
904
+ mode: z.ZodOptional<z.ZodString>;
905
+ data: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
674
906
  credits_reserved: z.ZodOptional<z.ZodNumber>;
675
907
  credits_charged: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
676
908
  balance_after_credits: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
@@ -1,7 +1,7 @@
1
1
  import { z } from "zod";
2
2
  import { assetId } from "./asset-identity.js";
3
3
  import { ASSET_VIDEO_MAX_SECONDS } from "./assets.js";
4
- import { referenceProfile } from "./reference-profile.js";
4
+ import { MAX_REFERENCE_TRANSCRIPT_WORDS, referenceHook, referenceProfile, referenceWord } from "./reference-profile.js";
5
5
  /** Reference analysis (reference-to-video S1c): an MP4 asset read into a `reference_profile`. Its status lives at its own */
6
6
  /** path, as an asset's processing does; its money (#927) rides a run of skill `analyze_reference` that holds and settles it. */
7
7
  export const REFERENCE_ANALYSES_PATH = "/v1/reference-analyses";
@@ -11,13 +11,24 @@ export const ANALYZE_REFERENCE_TASK = "analyze-reference";
11
11
  /** The run skill that carries an analysis's hold and charge; not a `SKILLS` entry, since no `/v1/skills` route starts it. */
12
12
  export const ANALYZE_REFERENCE_SKILL = "analyze_reference";
13
13
  export const referenceAnalysisId = z.string().regex(/^ref_[a-f0-9]{32}$/);
14
- /** The price of a delivered analysis (owner, 29.10, #800/#927): Argon video plus Flash stills cost us ≈ $0.23 today. */
15
- /** Argon's price doubles on 2026-12-01 (≈ $0.45, ≈ 135 credits at ×2.5): the owner reprices then; nothing changes it by itself. */
14
+ /** The price of a delivered analysis. */
16
15
  export const REFERENCE_ANALYSIS_CREDITS = 70;
16
+ /** The data mode: metrics, transcript and a frame sheet without the vision pass. */
17
+ export const REFERENCE_DATA_CREDITS = 10;
18
+ /** `full` reads the reference into a profile; `data` hands back its numbers, words and a frame sheet, with no vision call. */
19
+ export const REFERENCE_ANALYSIS_MODES = ["full", "data"];
20
+ export const REFERENCE_ANALYSIS_MODE_CREDITS = {
21
+ full: REFERENCE_ANALYSIS_CREDITS, data: REFERENCE_DATA_CREDITS,
22
+ };
17
23
  /** New analyses per account per hour: each costs us vendor money even when it fails, so the cap stays beside the price. */
18
24
  export const REFERENCE_ANALYSIS_PER_HOUR = 10;
25
+ /** The data mode's own cap, scope `reference_data`: cheap enough to run on every candidate reel of a search (#921). */
26
+ export const REFERENCE_DATA_PER_HOUR = 60;
27
+ export const REFERENCE_DATA_SHEET_COLUMNS = 3;
28
+ export const REFERENCE_DATA_SHEET_ROWS = 3;
29
+ export const REFERENCE_DATA_SHEET_MAX_WIDTH = 1080;
19
30
  export const REFERENCE_ANALYSIS_WINDOW_SECONDS = 3600;
20
- /** The worker stops its own work here, removes its temp copy and fails the analysis; under the task's ceiling. */
31
+ /** The analysis stops here and fails; under the task's ceiling. */
21
32
  export const REFERENCE_ANALYSIS_WORK_SECONDS = 420;
22
33
  export const REFERENCE_ANALYSIS_TASK_MAX_DURATION_SECONDS = 600;
23
34
  /** Past this a read calls an unfinished analysis failed: a task killed at its ceiling writes nothing. */
@@ -28,19 +39,108 @@ export const REFERENCE_ANALYSIS_ERROR_MESSAGES = {
28
39
  timed_out: "the analysis did not finish in time and was stopped; start it again",
29
40
  analysis_failed: "the reference could not be analysed; start it again or use another clip",
30
41
  asset_gone: "the asset was deleted before the analysis began",
31
- enqueue_failed: "the analysis could not be handed to the worker; start it again",
42
+ enqueue_failed: "the analysis could not be started; start it again",
32
43
  };
33
- /** What the API hands the worker: ids only, so no file name or reference text reaches Trigger.dev's log. */
44
+ /** What starts an analysis: ids only, so no file name or reference text reaches a log. */
34
45
  export const analyzeReferencePayload = z.strictObject({ analysisId: referenceAnalysisId, accountId: z.string().min(1) });
46
+ export const REFERENCE_SOURCE_PLATFORMS = ["instagram", "tiktok"];
47
+ /** The live analysis a link replays is found by this key; a short TikTok link has none before it is resolved. */
48
+ export const referenceSourceKey = z.string().regex(/^(instagram|tiktok):[A-Za-z0-9_-]{1,64}$/);
49
+ export const REFERENCE_URL_YOUTUBE_REFUSAL = "YouTube gives no video file through our source; upload the MP4 with create_asset";
50
+ export const REFERENCE_URL_ACCEPTED = "an Instagram reel or post link (instagram.com/reel/<code>, /reels/<code>, /p/<code>) or a TikTok " +
51
+ "video link (tiktok.com/@<user>/video/<id>, vm.tiktok.com/<code>)";
52
+ const INSTAGRAM_HOSTS = new Set(["instagram.com", "www.instagram.com", "m.instagram.com"]);
53
+ const TIKTOK_HOSTS = new Set(["tiktok.com", "www.tiktok.com", "m.tiktok.com"]);
54
+ const YOUTUBE_HOSTS = new Set(["youtube.com", "www.youtube.com", "m.youtube.com", "music.youtube.com", "youtu.be", "www.youtu.be"]);
55
+ /** Which post a link names, read from its text alone: no network, so a refusal costs nothing (#930 S3). */
56
+ export function classifyReferenceUrl(raw) {
57
+ let url;
58
+ try {
59
+ url = new URL(raw);
60
+ }
61
+ catch {
62
+ return { ok: false, message: `source_url is not a link; pass ${REFERENCE_URL_ACCEPTED}` };
63
+ }
64
+ const host = url.hostname.toLowerCase();
65
+ if (YOUTUBE_HOSTS.has(host))
66
+ return { ok: false, message: REFERENCE_URL_YOUTUBE_REFUSAL };
67
+ if (url.protocol === "https:" && url.username === "" && url.password === "" && (url.port === "" || url.port === "443")) {
68
+ const path = url.pathname;
69
+ const instagram = INSTAGRAM_HOSTS.has(host) ? /^\/(?:reel|reels|p)\/([A-Za-z0-9_-]{5,64})\/?$/.exec(path) : null;
70
+ if (instagram)
71
+ return { ok: true, url: url.href, platform: "instagram", key: `instagram:${instagram[1]}` };
72
+ const tiktok = TIKTOK_HOSTS.has(host) ? /^\/@[A-Za-z0-9_.-]{1,64}\/video\/(\d{5,32})\/?$/.exec(path) : null;
73
+ if (tiktok)
74
+ return { ok: true, url: url.href, platform: "tiktok", key: `tiktok:${tiktok[1]}` };
75
+ if (host === "vm.tiktok.com" && /^\/[A-Za-z0-9]{4,32}\/?$/.test(path))
76
+ return { ok: true, url: url.href, platform: "tiktok", key: null };
77
+ }
78
+ return { ok: false, message: `${host} ${url.pathname} is not a link we read; pass ${REFERENCE_URL_ACCEPTED}` };
79
+ }
35
80
  export const analyzeReferenceRequest = z.strictObject({
36
- asset_id: assetId.describe(`asset_id of an MP4 asset of this account, at most ${ASSET_VIDEO_MAX_SECONDS} s and 100 MiB`),
81
+ asset_id: assetId.optional().describe(`asset_id of an MP4 asset of this account, at most ${ASSET_VIDEO_MAX_SECONDS} s and 100 MiB`),
82
+ source_url: z.string().url().startsWith("https://").max(2048).optional()
83
+ .describe(`instead of asset_id: ${REFERENCE_URL_ACCEPTED}; YouTube is refused`),
84
+ mode: z.enum(REFERENCE_ANALYSIS_MODES).optional().describe(`full (default, ${REFERENCE_ANALYSIS_CREDITS} credits): the reference_profile. ` +
85
+ `data (${REFERENCE_DATA_CREDITS} credits): duration, size, timed transcript, hook and a 3×3 frame sheet, without the vision pass`),
86
+ }).refine((request) => (request.asset_id === undefined) !== (request.source_url === undefined), {
87
+ message: "pass exactly one of asset_id or source_url",
88
+ });
89
+ const count = z.number().int().nonnegative().nullable();
90
+ const authorMedian = z.strictObject({ views: z.number().nonnegative().nullable(), ratio: z.number().nonnegative().nullable(),
91
+ reels: z.number().int().nonnegative(), window: z.string().min(1) }).nullable();
92
+ /** The post behind a link analysis (#930 S3): `null` is unknown, never 0, and each unknown is also a line in `warnings[]`. */
93
+ export const referenceSource = z.strictObject({
94
+ url: z.string().url(),
95
+ platform: z.enum(REFERENCE_SOURCE_PLATFORMS),
96
+ key: referenceSourceKey,
97
+ measured_at: z.string().datetime(),
98
+ published_at: z.string().datetime().nullable(),
99
+ duration_s: z.number().positive().nullable(),
100
+ metrics: z.strictObject({ views: count, likes: count, comments: count, views_per_hour: z.number().nonnegative().nullable() }),
101
+ /** The median of the author's reels within ±30 days of the post, the post excluded. */
102
+ author_median: authorMedian,
103
+ /** The median of the author's 12 latest reels, the post excluded. */
104
+ author_recent: authorMedian,
105
+ top_comments: z.array(z.strictObject({ text: z.string().min(1).max(300), likes: count })).max(10),
106
+ code_words: z.array(z.strictObject({ word: z.string().min(1).max(24), count: z.number().int().min(2) })),
37
107
  });
108
+ const frameSheet = z.strictObject({
109
+ columns: z.number().int().positive(),
110
+ rows: z.number().int().positive(),
111
+ /** Each frame's second, row by row; every one inside the reel. */
112
+ times_s: z.array(z.number().nonnegative()).min(1),
113
+ });
114
+ const dataWords = { transcript: z.array(referenceWord).max(MAX_REFERENCE_TRANSCRIPT_WORDS),
115
+ /** `null` when no word starts in the first seconds; no caption, since no vision pass read the screen. */
116
+ hook: referenceHook.nullable() };
117
+ const dataProbe = { duration_s: z.number().positive(), width: z.number().int().positive(), height: z.number().int().positive(),
118
+ fps: z.number().positive() };
119
+ /** What a succeeded data analysis hands back (#930 S4): the probe, the transcribed words as the profile writes them, and a frame sheet. */
120
+ export const referenceData = z.strictObject({
121
+ ...dataProbe,
122
+ ...dataWords,
123
+ /** `url` is signed for 7 days on each read; `null` once the sheet passed the renders' 30 days in storage, said in `warnings[]`. */
124
+ frame_sheet: frameSheet.extend({ url: z.string().url().nullable() }),
125
+ });
126
+ /** What the data pass answers: the words, the sheet it uploaded and its warnings. */
127
+ export const referenceDataPass = z.strictObject({ ...dataWords, frame_sheet: frameSheet, cost_usd: z.number().nonnegative(),
128
+ warnings: z.array(z.string()) });
129
+ /** The row's `data`: the answer with the sheet's R2 key in place of its link, and our vendor cost, which no client reads. */
130
+ export const referenceDataStored = z.strictObject({ ...dataProbe, ...dataWords, frame_sheet: frameSheet.extend({ key: z.string().min(1) }),
131
+ cost_usd: z.number().nonnegative() });
38
132
  export const referenceAnalysis = z.strictObject({
39
133
  analysis_id: referenceAnalysisId,
40
134
  asset_id: assetId,
135
+ /** `full` or `data` (#930 S4); an analysis started before the modes is `full`. */
136
+ mode: z.enum(REFERENCE_ANALYSIS_MODES),
41
137
  state: z.enum(REFERENCE_ANALYSIS_STATES),
42
- /** Set once the analysis succeeded, `null` before and on failure. */
138
+ /** Set once a full analysis succeeded, `null` before, on failure and for a data analysis. */
43
139
  reference_profile: referenceProfile.nullable(),
140
+ /** Set once a data analysis succeeded, `null` before, on failure and for a full analysis. */
141
+ data: referenceData.nullable(),
142
+ /** The post's numbers, comments and code words for an analysis started by `source_url`; `null` for an asset start. */
143
+ source: referenceSource.nullable(),
44
144
  warnings: z.array(z.string()),
45
145
  error: z.strictObject({ code: z.enum(REFERENCE_ANALYSIS_ERRORS), message: z.string().min(1) }).nullable(),
46
146
  /** Held at the start; 0 for an analysis started before it was paid (#927). */
@@ -53,7 +153,8 @@ export const referenceAnalysis = z.strictObject({
53
153
  finished_at: z.string().datetime().nullable(),
54
154
  });
55
155
  export const analysisQuoteResponse = z.strictObject({
56
- asset_id: assetId,
156
+ /** The quoted asset; for a `source_url`, the asset of the analysis it replays, else `null` (its asset is made at the start). */
157
+ asset_id: assetId.nullable(),
57
158
  /** What starting it now holds and, once it succeeds, charges: 0 when the asset already has a live analysis to answer. */
58
159
  credits_estimate: z.number().int().nonnegative(),
59
160
  /** The analysis a start would answer for free, or `null` when a start would begin a new, paid one. */
@@ -65,6 +166,11 @@ export const referenceAnalysisRead = referenceAnalysis.extend({
65
166
  state: z.string(),
66
167
  reference_profile: z.record(z.string(), z.unknown()).nullable(),
67
168
  error: z.object({ code: z.string(), message: z.string() }).nullable(),
169
+ // A server from before #930 S3 sends no source; a later one may add metrics this client does not know.
170
+ source: z.record(z.string(), z.unknown()).nullable().optional(),
171
+ // A server from before #930 S4 sends neither mode nor data.
172
+ mode: z.string().optional(),
173
+ data: z.record(z.string(), z.unknown()).nullable().optional(),
68
174
  // A server from before #927 sends no money fields.
69
175
  credits_reserved: referenceAnalysis.shape.credits_reserved.optional(),
70
176
  credits_charged: referenceAnalysis.shape.credits_charged.optional(),
@@ -76,16 +182,29 @@ export function referenceAnalysisWarnings(profile) {
76
182
  }
77
183
  export const ANALYZE_REFERENCE_DESCRIPTION = "Read a reference ad into a reference_profile: its beats (role, timing as shares of the clip, whether the presenter " +
78
184
  "speaks, listens or is off screen), the graphics in our template vocabulary, captions, pacing, palette and music. " +
185
+ "It keeps the reference's words: transcript (timed words), hook (the words of its first 3 s, through the end of that sentence), each beat's spoken_summary " +
186
+ "and each graphic's label_hint. " +
79
187
  "What we cannot draw is in unmapped with a substitute and in warnings. Pass asset_id of an MP4 asset (create_asset " +
80
- `with kind: "video"), at most ${ASSET_VIDEO_MAX_SECONDS} s and 100 MiB; there is no url input. ` +
81
- `${REFERENCE_ANALYSIS_CREDITS} credits are held at the start and charged once it succeeds; a failed analysis costs ` +
82
- `nothing. ${REFERENCE_ANALYSIS_PER_HOUR} new analyses per hour per account. Answers at once with state queued; call ` +
83
- "get_reference_analysis every 10 seconds until succeeded (about a minute) or failed. The same asset returns the " +
84
- "same analysis, free, unless it failed. The asset is not changed. The profile names techniques; it copies no face, voice, " +
85
- "music or brand of the reference.";
86
- export const GET_REFERENCE_ANALYSIS_DESCRIPTION = "Read an analysis started by analyze_reference: state queued or analyzing, succeeded with reference_profile and " +
87
- "warnings, or failed with error.code and error.message (timed_out, analysis_failed, asset_gone, enqueue_failed); " +
188
+ `with kind: "video"), at most ${ASSET_VIDEO_MAX_SECONDS} s and 100 MiB, or source_url: ${REFERENCE_URL_ACCEPTED}. ` +
189
+ "A link becomes an analysis-only asset of this account (asset_id in the answer) and the answer's source carries the " +
190
+ "post's views, likes, comments, views per hour, the author's median views around it and over their 12 latest reels, each with the ratio, the top comments " +
191
+ "and the code words commenters repeat; a number the platform did not give is null and named in warnings. A YouTube " +
192
+ "link is refused: upload its MP4 with create_asset. " +
193
+ `mode: "data" skips the vision pass and answers data instead of a profile: duration, size and fps, the timed ` +
194
+ "transcript, the hook and a 3×3 frame sheet (a signed JPEG link), with source for a link as above; a reel with no " +
195
+ `speech gives an empty transcript and a warning. ${REFERENCE_ANALYSIS_CREDITS} credits for full, ${REFERENCE_DATA_CREDITS} ` +
196
+ "for data, held at the start and charged once it succeeds; a failed analysis costs nothing. " +
197
+ `${REFERENCE_ANALYSIS_PER_HOUR} new full and ${REFERENCE_DATA_PER_HOUR} new data analyses per hour per account. ` +
198
+ "Answers at once with state queued; call get_reference_analysis every 10 seconds until succeeded (about a minute) or " +
199
+ "failed. The same asset, or the same reel by its full link, in the same mode returns the same analysis, free, unless it " +
200
+ "failed; a short vm.tiktok.com link always starts a new one. The asset is not changed. The profile names techniques; it " +
201
+ "copies no face, voice, music or brand of the reference.";
202
+ export const GET_REFERENCE_ANALYSIS_DESCRIPTION = "Read an analysis started by analyze_reference: state queued or analyzing, succeeded with reference_profile (mode full) " +
203
+ "or data (mode data) and warnings, or failed with error.code and error.message (timed_out, analysis_failed, asset_gone, " +
204
+ "enqueue_failed); source holds the post's metrics for an analysis started by source_url. " +
88
205
  "credits_charged is the price once succeeded, 0 once failed. Free.";
89
- export const QUOTE_ANALYSIS_DESCRIPTION = "Price analyze_reference for an asset before starting it: credits_estimate is what a start holds and charges once it " +
90
- "succeeds, 0 when the asset already has an analysis that a start would answer (replays_analysis_id). Free; starts nothing.";
206
+ export const QUOTE_ANALYSIS_DESCRIPTION = "Price analyze_reference for an asset_id or a source_url and a mode before starting it: credits_estimate is what a start " +
207
+ `holds and charges once it succeeds (${REFERENCE_ANALYSIS_CREDITS} full, ${REFERENCE_DATA_CREDITS} data), 0 when the ` +
208
+ "asset or the reel already has an analysis in that mode that a start would answer (replays_analysis_id). A YouTube or " +
209
+ "unknown link is refused here too. Free; starts nothing.";
91
210
  //# sourceMappingURL=reference-analysis.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reference-analysis.js","sourceRoot":"","sources":["../src/reference-analysis.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reference-analysis.js","sourceRoot":"","sources":["../src/reference-analysis.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  /** Our template kinds, media laid over or instead of the presenter, a split layout, and what we cannot draw yet. */
2
2
  export declare const REFERENCE_GRAPHIC_KINDS: readonly ["tag", "lower_third", "end_card", "title_card", "quote", "stat", "callout", "checklist", "phone_call", "compare", "notification", "progress", "rating", "overlay_media", "insert_media", "layout_split", "particles", "unmapped"];
3
3
  export type ReferenceGraphicKind = (typeof REFERENCE_GRAPHIC_KINDS)[number];
4
+ /** Kinds an analysis also reads from an element's description when the model said other: what the Ana reel's answer called other (#930). */
5
+ export declare const REFERENCE_DESCRIBED_KINDS: readonly ["banner", "logo_card", "comment_box", "price_card", "concept_card"];
4
6
  /** The analyser's names for a graphic: its prompt's own list, plus ours. */
5
- export declare const REFERENCE_SOURCE_KINDS: readonly ["toggle_checklist", "phone_call", "notification", "before_after_split", "split_screen", "stat", "product_ui", "screenshot", "title_card", "end_card", "particles", "tag", "lower_third", "end_card", "title_card", "quote", "stat", "callout", "checklist", "phone_call", "compare", "notification", "progress", "rating", "overlay_media", "insert_media", "layout_split", "particles", "unmapped", "other"];
7
+ export declare const REFERENCE_SOURCE_KINDS: readonly ["toggle_checklist", "phone_call", "notification", "before_after_split", "split_screen", "stat", "product_ui", "screenshot", "title_card", "end_card", "particles", "banner", "logo_card", "comment_box", "price_card", "concept_card", "tag", "lower_third", "end_card", "title_card", "quote", "stat", "callout", "checklist", "phone_call", "compare", "notification", "progress", "rating", "overlay_media", "insert_media", "layout_split", "particles", "unmapped", "other"];
6
8
  export type ReferenceSourceKind = (typeof REFERENCE_SOURCE_KINDS)[number];
@@ -2,7 +2,9 @@ import { TEMPLATE_KIND_IDS } from "./templates/index.js";
2
2
  // A reference graphic's kinds, shared by the profile's beats and its staging (#914): their own module, so neither imports the other.
3
3
  /** Our template kinds, media laid over or instead of the presenter, a split layout, and what we cannot draw yet. */
4
4
  export const REFERENCE_GRAPHIC_KINDS = [...TEMPLATE_KIND_IDS, "overlay_media", "insert_media", "layout_split", "particles", "unmapped"];
5
+ /** Kinds an analysis also reads from an element's description when the model said other: what the Ana reel's answer called other (#930). */
6
+ export const REFERENCE_DESCRIBED_KINDS = ["banner", "logo_card", "comment_box", "price_card", "concept_card"];
5
7
  /** The analyser's names for a graphic: its prompt's own list, plus ours. */
6
8
  export const REFERENCE_SOURCE_KINDS = ["toggle_checklist", "phone_call", "notification", "before_after_split", "split_screen", "stat", "product_ui",
7
- "screenshot", "title_card", "end_card", "particles", ...REFERENCE_GRAPHIC_KINDS, "other"];
9
+ "screenshot", "title_card", "end_card", "particles", ...REFERENCE_DESCRIBED_KINDS, ...REFERENCE_GRAPHIC_KINDS, "other"];
8
10
  //# sourceMappingURL=reference-kinds.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reference-kinds.js","sourceRoot":"","sources":["../src/reference-kinds.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,qIAAqI;AAErI,oHAAoH;AACpH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,GAAG,iBAAiB,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,CAAU,CAAC;AAEjJ,4EAA4E;AAC5E,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,kBAAkB,EAAE,YAAY,EAAE,cAAc,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY;IACjJ,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,uBAAuB,EAAE,OAAO,CAAU,CAAC"}
1
+ {"version":3,"file":"reference-kinds.js","sourceRoot":"","sources":["../src/reference-kinds.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,qIAAqI;AAErI,oHAAoH;AACpH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,GAAG,iBAAiB,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,CAAU,CAAC;AAEjJ,4IAA4I;AAC5I,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,CAAU,CAAC;AACvH,4EAA4E;AAC5E,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,kBAAkB,EAAE,YAAY,EAAE,cAAc,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY;IACjJ,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,yBAAyB,EAAE,GAAG,uBAAuB,EAAE,OAAO,CAAU,CAAC"}