@clipwright/core 0.33.0 → 0.35.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 (236) hide show
  1. package/CHANGELOG.md +251 -0
  2. package/README.md +3 -1
  3. package/dist/account-actors.d.ts +173 -14
  4. package/dist/account-actors.js +142 -10
  5. package/dist/account-actors.js.map +1 -1
  6. package/dist/actor-bounds.d.ts +4 -0
  7. package/dist/actor-bounds.js +4 -0
  8. package/dist/actor-bounds.js.map +1 -1
  9. package/dist/actors.d.ts +31 -0
  10. package/dist/actors.js +26 -0
  11. package/dist/actors.js.map +1 -1
  12. package/dist/api-failure.js +2 -1
  13. package/dist/api-failure.js.map +1 -1
  14. package/dist/asset-identity.d.ts +6 -0
  15. package/dist/asset-identity.js +7 -0
  16. package/dist/asset-identity.js.map +1 -0
  17. package/dist/assets.d.ts +403 -8
  18. package/dist/assets.js +132 -22
  19. package/dist/assets.js.map +1 -1
  20. package/dist/billing-terms.d.ts +69 -0
  21. package/dist/billing-terms.js +8 -0
  22. package/dist/billing-terms.js.map +1 -1
  23. package/dist/caption-language.d.ts +2 -0
  24. package/dist/caption-language.js +17 -0
  25. package/dist/caption-language.js.map +1 -0
  26. package/dist/contract-dispositions.d.ts +1617 -8
  27. package/dist/contract-dispositions.js +75 -11
  28. package/dist/contract-dispositions.js.map +1 -1
  29. package/dist/contracts/v1/workflow-brief.d.ts +3166 -78
  30. package/dist/contracts/v1/workflow-brief.js +4 -0
  31. package/dist/contracts/v1/workflow-brief.js.map +1 -1
  32. package/dist/contracts/v1/workflow-catalog.d.ts +3712 -8
  33. package/dist/contracts/v1/workflow-catalog.js +4 -2
  34. package/dist/contracts/v1/workflow-catalog.js.map +1 -1
  35. package/dist/contracts/v1/workflow-client.d.ts +2466 -4
  36. package/dist/contracts/v1/workflow-client.js +6 -3
  37. package/dist/contracts/v1/workflow-client.js.map +1 -1
  38. package/dist/contracts/v1/workflow-execution.d.ts +163 -9
  39. package/dist/contracts/v1/workflow-execution.js +15 -7
  40. package/dist/contracts/v1/workflow-execution.js.map +1 -1
  41. package/dist/contracts/v1/workflow-plan.d.ts +6014 -487
  42. package/dist/contracts/v1/workflow-primitives.d.ts +3 -1
  43. package/dist/contracts/v1/workflow-primitives.js +1 -1
  44. package/dist/contracts/v1/workflow-primitives.js.map +1 -1
  45. package/dist/contracts/v1/workflow-run-read.d.ts +114 -1
  46. package/dist/edit-billing.d.ts +12 -0
  47. package/dist/edit-billing.js +8 -0
  48. package/dist/edit-billing.js.map +1 -1
  49. package/dist/edit-long-form.d.ts +1 -1
  50. package/dist/edit-long-form.js +12 -2
  51. package/dist/edit-long-form.js.map +1 -1
  52. package/dist/endpoint-notes.d.ts +3 -0
  53. package/dist/endpoint-notes.js +66 -0
  54. package/dist/endpoint-notes.js.map +1 -0
  55. package/dist/endpoints.d.ts +4 -0
  56. package/dist/endpoints.js +15 -0
  57. package/dist/endpoints.js.map +1 -1
  58. package/dist/errors.d.ts +1 -1
  59. package/dist/errors.js +7 -0
  60. package/dist/errors.js.map +1 -1
  61. package/dist/face-billing.d.ts +55 -0
  62. package/dist/face-billing.js +22 -0
  63. package/dist/face-billing.js.map +1 -1
  64. package/dist/faceless-price.d.ts +26 -2
  65. package/dist/faceless-price.js +33 -6
  66. package/dist/faceless-price.js.map +1 -1
  67. package/dist/faceless-public.d.ts +6 -1
  68. package/dist/faceless-public.js +2 -2
  69. package/dist/faceless-public.js.map +1 -1
  70. package/dist/generations.d.ts +32 -6
  71. package/dist/generations.js +82 -27
  72. package/dist/generations.js.map +1 -1
  73. package/dist/idempotency.d.ts +2 -0
  74. package/dist/idempotency.js +7 -4
  75. package/dist/idempotency.js.map +1 -1
  76. package/dist/index.d.ts +15 -0
  77. package/dist/index.js +17 -0
  78. package/dist/index.js.map +1 -1
  79. package/dist/long-form-pricing.d.ts +7 -4
  80. package/dist/long-form-pricing.js +13 -10
  81. package/dist/long-form-pricing.js.map +1 -1
  82. package/dist/long-form-revision.js +1 -1
  83. package/dist/long-form-revision.js.map +1 -1
  84. package/dist/openapi.d.ts +154 -0
  85. package/dist/openapi.js +334 -0
  86. package/dist/openapi.js.map +1 -0
  87. package/dist/pacing.d.ts +15 -0
  88. package/dist/pacing.js +30 -0
  89. package/dist/pacing.js.map +1 -1
  90. package/dist/parts-pricing.d.ts +84 -0
  91. package/dist/parts-pricing.js +105 -0
  92. package/dist/parts-pricing.js.map +1 -0
  93. package/dist/presenter-beats.d.ts +45 -0
  94. package/dist/presenter-beats.js +144 -0
  95. package/dist/presenter-beats.js.map +1 -0
  96. package/dist/prices.d.ts +98 -0
  97. package/dist/prices.js +189 -0
  98. package/dist/prices.js.map +1 -0
  99. package/dist/public-endpoints.d.ts +2 -0
  100. package/dist/public-endpoints.js +2 -0
  101. package/dist/public-endpoints.js.map +1 -1
  102. package/dist/public-responses.d.ts +23 -0
  103. package/dist/public-responses.js +11 -0
  104. package/dist/public-responses.js.map +1 -0
  105. package/dist/reference-analysis.d.ts +683 -0
  106. package/dist/reference-analysis.js +91 -0
  107. package/dist/reference-analysis.js.map +1 -0
  108. package/dist/reference-kinds.d.ts +6 -0
  109. package/dist/reference-kinds.js +8 -0
  110. package/dist/reference-kinds.js.map +1 -0
  111. package/dist/reference-profile.d.ts +633 -0
  112. package/dist/reference-profile.js +151 -0
  113. package/dist/reference-profile.js.map +1 -0
  114. package/dist/reference-staging.d.ts +571 -0
  115. package/dist/reference-staging.js +151 -0
  116. package/dist/reference-staging.js.map +1 -0
  117. package/dist/reference-voice.d.ts +305 -0
  118. package/dist/reference-voice.js +108 -0
  119. package/dist/reference-voice.js.map +1 -0
  120. package/dist/resolved-timeline.d.ts +206 -1
  121. package/dist/resolved-timeline.js +96 -4
  122. package/dist/resolved-timeline.js.map +1 -1
  123. package/dist/run-static-warnings.js +19 -7
  124. package/dist/run-static-warnings.js.map +1 -1
  125. package/dist/runs.d.ts +75 -3
  126. package/dist/runs.js +6 -1
  127. package/dist/runs.js.map +1 -1
  128. package/dist/semantic-inserts.d.ts +7 -0
  129. package/dist/semantic-inserts.js +19 -9
  130. package/dist/semantic-inserts.js.map +1 -1
  131. package/dist/skills.d.ts +5838 -22
  132. package/dist/skills.js +380 -25
  133. package/dist/skills.js.map +1 -1
  134. package/dist/templates/callout.d.ts +34 -0
  135. package/dist/templates/callout.js +51 -0
  136. package/dist/templates/callout.js.map +1 -0
  137. package/dist/templates/checklist.d.ts +42 -0
  138. package/dist/templates/checklist.js +47 -0
  139. package/dist/templates/checklist.js.map +1 -0
  140. package/dist/templates/compare.d.ts +26 -0
  141. package/dist/templates/compare.js +35 -0
  142. package/dist/templates/compare.js.map +1 -0
  143. package/dist/templates/end-card.d.ts +16 -0
  144. package/dist/templates/end-card.js +25 -0
  145. package/dist/templates/end-card.js.map +1 -0
  146. package/dist/templates/index.d.ts +171 -0
  147. package/dist/templates/index.js +394 -0
  148. package/dist/templates/index.js.map +1 -0
  149. package/dist/templates/lower-third.d.ts +18 -0
  150. package/dist/templates/lower-third.js +26 -0
  151. package/dist/templates/lower-third.js.map +1 -0
  152. package/dist/templates/notification.d.ts +30 -0
  153. package/dist/templates/notification.js +32 -0
  154. package/dist/templates/notification.js.map +1 -0
  155. package/dist/templates/phone-call.d.ts +27 -0
  156. package/dist/templates/phone-call.js +43 -0
  157. package/dist/templates/phone-call.js.map +1 -0
  158. package/dist/templates/progress.d.ts +22 -0
  159. package/dist/templates/progress.js +42 -0
  160. package/dist/templates/progress.js.map +1 -0
  161. package/dist/templates/quote.d.ts +21 -0
  162. package/dist/templates/quote.js +29 -0
  163. package/dist/templates/quote.js.map +1 -0
  164. package/dist/templates/rating.d.ts +22 -0
  165. package/dist/templates/rating.js +29 -0
  166. package/dist/templates/rating.js.map +1 -0
  167. package/dist/templates/size.d.ts +13 -0
  168. package/dist/templates/size.js +10 -0
  169. package/dist/templates/size.js.map +1 -0
  170. package/dist/templates/slot.d.ts +10 -0
  171. package/dist/templates/slot.js +5 -0
  172. package/dist/templates/slot.js.map +1 -0
  173. package/dist/templates/sounds.d.ts +701 -0
  174. package/dist/templates/sounds.js +89 -0
  175. package/dist/templates/sounds.js.map +1 -0
  176. package/dist/templates/stat.d.ts +20 -0
  177. package/dist/templates/stat.js +33 -0
  178. package/dist/templates/stat.js.map +1 -0
  179. package/dist/templates/tag.d.ts +23 -0
  180. package/dist/templates/tag.js +31 -0
  181. package/dist/templates/tag.js.map +1 -0
  182. package/dist/templates/theme.d.ts +29 -0
  183. package/dist/templates/theme.js +47 -0
  184. package/dist/templates/theme.js.map +1 -0
  185. package/dist/templates/title-card.d.ts +21 -0
  186. package/dist/templates/title-card.js +30 -0
  187. package/dist/templates/title-card.js.map +1 -0
  188. package/dist/tts-backend.d.ts +9 -0
  189. package/dist/tts-backend.js +21 -0
  190. package/dist/tts-backend.js.map +1 -1
  191. package/dist/ugc-call.d.ts +89 -0
  192. package/dist/ugc-call.js +111 -0
  193. package/dist/ugc-call.js.map +1 -0
  194. package/dist/ugc-framing.d.ts +26 -0
  195. package/dist/ugc-framing.js +64 -0
  196. package/dist/ugc-framing.js.map +1 -0
  197. package/dist/ugc-layers.d.ts +88 -0
  198. package/dist/ugc-layers.js +142 -0
  199. package/dist/ugc-layers.js.map +1 -0
  200. package/dist/ugc-video-media.d.ts +12 -0
  201. package/dist/ugc-video-media.js +39 -0
  202. package/dist/ugc-video-media.js.map +1 -0
  203. package/dist/vendor-response.d.ts +4 -0
  204. package/dist/vendor-response.js +12 -0
  205. package/dist/vendor-response.js.map +1 -1
  206. package/dist/voice-admission.d.ts +1244 -1
  207. package/dist/voice-listing.js +7 -1
  208. package/dist/voice-listing.js.map +1 -1
  209. package/dist/voice-pace.d.ts +34 -0
  210. package/dist/voice-pace.generated.json +72 -0
  211. package/dist/voice-pace.js +34 -0
  212. package/dist/voice-pace.js.map +1 -0
  213. package/dist/voices.d.ts +21 -8
  214. package/dist/voices.js +44 -19
  215. package/dist/voices.js.map +1 -1
  216. package/dist/workflows/catalog.js +2 -1
  217. package/dist/workflows/catalog.js.map +1 -1
  218. package/dist/workflows/index.d.ts +2 -0
  219. package/dist/workflows/index.js +2 -0
  220. package/dist/workflows/index.js.map +1 -1
  221. package/dist/workflows/methods/faceless-explainer.d.ts +697 -3
  222. package/dist/workflows/methods/kinetic-launch.d.ts +697 -3
  223. package/dist/workflows/methods/product-image-story.d.ts +697 -3
  224. package/dist/workflows/methods/reference-remake.d.ts +870 -0
  225. package/dist/workflows/methods/reference-remake.js +26 -0
  226. package/dist/workflows/methods/reference-remake.js.map +1 -0
  227. package/dist/workflows/methods/shared.d.ts +697 -3
  228. package/dist/workflows/methods/ugc-faq-answer.d.ts +697 -3
  229. package/dist/workflows/methods/ugc-product-intro.d.ts +697 -3
  230. package/dist/workflows/methods/website-proof-demo.d.ts +697 -3
  231. package/dist/workflows/reference-remake.d.ts +663 -0
  232. package/dist/workflows/reference-remake.js +598 -0
  233. package/dist/workflows/reference-remake.js.map +1 -0
  234. package/dist/workflows/validate.js +19 -11
  235. package/dist/workflows/validate.js.map +1 -1
  236. package/package.json +9 -3
package/dist/prices.js ADDED
@@ -0,0 +1,189 @@
1
+ import { z } from "zod";
2
+ import { ACTOR_PORTRAIT_ASPECT, ACTOR_UNIT_CREDITS } from "./account-actors.js";
3
+ import { CANDIDATE_CHARGE_TEXT } from "./edit-candidate.js";
4
+ import { EDIT_RENDER_PRICE, EDIT_UNIT_PRICES, EDIT_ZERO_UNIT_PRICE } from "./edit-billing.js";
5
+ import { REVISION_CHARGE_TEXT } from "./edit-revision.js";
6
+ import { FACELESS_CREDITS_PER_1500_FRAMES, FACELESS_IMAGE_CREDITS, FACELESS_MAX_SELECTED_SECONDS, FACELESS_MIN_BASE_CREDITS, FACELESS_MIN_SELECTED_SECONDS, FACELESS_OPENER_CREDITS, quoteFaceless, } from "./faceless-price.js";
7
+ import { PRESENTER_ENGINES } from "./face-billing.js";
8
+ import { listGenerationModels } from "./generations.js";
9
+ import { PARTS_FACE_TARIFF, PRESENTER_ENGINE_LABELS } from "./parts-pricing.js";
10
+ import { REFERENCE_ANALYSIS_CREDITS } from "./reference-analysis.js";
11
+ /** The public price list (#927): every number is read from the constant billing charges by, never typed here. */
12
+ export const PRICES_PATH = "/v1/public/prices";
13
+ export const PRICE_UNITS = ["call", "second", "face_second", "image", "clip", "clip_second", "still"];
14
+ /** One part of a price: credits per unit. A price of several parts adds them, then applies the entry's minimum. */
15
+ export const priceEntryLine = z.strictObject({
16
+ label: z.string().min(1).nullable(),
17
+ unit: z.enum(PRICE_UNITS),
18
+ credits: z.number().int().nonnegative(),
19
+ });
20
+ export const priceEntry = z.strictObject({
21
+ action: z.string().min(1),
22
+ tool: z.string().min(1).nullable(),
23
+ /** The REST route as `endpointLabel` writes it. */
24
+ route: z.string().min(1).nullable(),
25
+ variant: z.string().min(1).nullable(),
26
+ /** Empty when the price is a formula the parts cannot state. */
27
+ lines: z.array(priceEntryLine),
28
+ formula: z.string().min(1).nullable(),
29
+ minimum_credits: z.number().int().positive().nullable(),
30
+ quote_tool: z.string().min(1).nullable(),
31
+ notes: z.string().min(1).nullable(),
32
+ }).refine((entry) => entry.lines.length > 0 || entry.formula !== null, "an entry states lines or a formula");
33
+ export const pricesResponse = z.strictObject({ prices: z.array(priceEntry).min(1) });
34
+ /** What a client reads: a unit or a field it does not know yet must not break it. */
35
+ export const pricesResponseRead = z.looseObject({ prices: z.array(z.looseObject({
36
+ action: z.string().min(1), tool: z.string().nullable(), route: z.string().nullable(), variant: z.string().nullable(),
37
+ lines: z.array(z.looseObject({ label: z.string().nullable(), unit: z.string().min(1), credits: z.number().int().nonnegative() })),
38
+ formula: z.string().nullable(), minimum_credits: z.number().int().positive().nullable(), quote_tool: z.string().nullable(),
39
+ notes: z.string().nullable(),
40
+ })) });
41
+ /** Whether calling the entry's action may cost credits. */
42
+ export const isPaidEntry = (entry) => entry.formula !== null || entry.lines.some((line) => line.credits > 0);
43
+ const paid = (entry) => ({
44
+ action: entry.variant === undefined ? entry.tool : `${entry.tool} (${entry.variant})`,
45
+ tool: entry.tool, route: entry.route, variant: entry.variant ?? null,
46
+ lines: "credits" in entry ? [{ label: null, unit: entry.unit, credits: entry.credits }] : "lines" in entry ? entry.lines : [],
47
+ formula: "formula" in entry ? entry.formula : null,
48
+ minimum_credits: entry.minimum_credits ?? null, quote_tool: entry.quote_tool, notes: entry.notes ?? null,
49
+ });
50
+ /** Every free MCP tool and the route it calls. */
51
+ const FREE_TOOLS = {
52
+ list_prices: `GET ${PRICES_PATH}`,
53
+ get_account: "GET /v1/account",
54
+ quote_ugc: "POST /v1/skills/make_ugc/quote",
55
+ quote_analysis: "POST /v1/reference-analyses/quote",
56
+ quote_faceless: "POST /v1/skills/make_faceless/quote",
57
+ quote_actor: "POST /v1/skills/create_actor/quote",
58
+ quote_image: "POST /v1/skills/generate_image/quote",
59
+ quote_video: "POST /v1/skills/generate_video/quote",
60
+ quote_revision: "POST /v1/runs/{id}/revisions/quote",
61
+ quote_candidate: "POST /v1/runs/{id}/candidates/quote",
62
+ quote_workflow_plan: "POST /v1/workflow-plans/{id}/quote",
63
+ get_run: "GET /v1/runs/{id}",
64
+ get_run_shots: "GET /v1/runs/{id}/shots",
65
+ list_voices: "GET /v1/voices",
66
+ list_template_sounds: "GET /v1/template-sounds",
67
+ list_generation_models: "GET /v1/generations/models",
68
+ list_actors: "GET /v1/actors",
69
+ delete_actor: "DELETE /v1/actors/{id}",
70
+ get_actor_defaults: "GET /v1/actors/{id}/defaults",
71
+ set_actor_defaults: "POST /v1/actors/{id}/defaults",
72
+ upload_image: "POST /v1/uploads/import",
73
+ create_upload: "POST /v1/uploads/intents",
74
+ get_upload: "GET /v1/uploads/{id}",
75
+ create_asset: "POST /v1/assets",
76
+ list_assets: "GET /v1/assets",
77
+ get_asset: "GET /v1/assets/{id}",
78
+ update_asset: "POST /v1/assets/{id}",
79
+ delete_asset: "DELETE /v1/assets/{id}",
80
+ get_reference_analysis: "GET /v1/reference-analyses/{id}",
81
+ list_workflows: "GET /v1/public/workflows",
82
+ get_workflow: "GET /v1/public/workflows/{id}",
83
+ prepare_workflow_plan: "POST /v1/workflow-plans",
84
+ plan_reference_remake: "POST /v1/workflow-plans/reference-remake",
85
+ get_workflow_plan: "GET /v1/workflow-plans/{id}",
86
+ approve_workflow_plan: "POST /v1/workflow-plans/{id}/approve",
87
+ };
88
+ const facelessAt = (seconds) => quoteFaceless({ outputFrames: seconds * 25, captions: true }).totalCredits;
89
+ function generationEntries() {
90
+ return listGenerationModels().flatMap((model) => {
91
+ const video = model.kind === "video";
92
+ const groups = new Map();
93
+ for (const row of model.rows) {
94
+ const key = `${row.resolution}|${row.unit_credits}`;
95
+ const group = groups.get(key) ?? { size: row.resolution, credits: row.unit_credits, aspects: [] };
96
+ group.aspects.push(row.aspect_ratio);
97
+ groups.set(key, group);
98
+ }
99
+ const priced = [...groups.values()];
100
+ return priced.map((group) => {
101
+ const split = priced.filter((other) => other.size === group.size).length > 1;
102
+ const variant = [model.model, group.size, split ? group.aspects.join(", ") : null].filter((part) => part !== null).join(" ");
103
+ return paid(video
104
+ ? { tool: "generate_video", route: "POST /v1/skills/generate_video/run", variant, unit: "clip_second", credits: group.credits,
105
+ quote_tool: "quote_video", notes: "Per second of the requested duration, charged once the clip is delivered." }
106
+ : { tool: "generate_image", route: "POST /v1/skills/generate_image/run", variant, unit: "image", credits: group.credits,
107
+ quote_tool: "quote_image", notes: "Charged once the image is delivered." });
108
+ });
109
+ });
110
+ }
111
+ function buildPriceList() {
112
+ const unit = EDIT_UNIT_PRICES;
113
+ const parts = PARTS_FACE_TARIFF;
114
+ return [
115
+ ...PRESENTER_ENGINES.map((engine) => paid({ tool: "make_ugc", route: "POST /v1/skills/make_ugc/run",
116
+ variant: engine === "heygen" ? "HeyGen presenter" : "OmniHuman presenter", quote_tool: "quote_ugc", minimum_credits: parts.minimumCredits,
117
+ lines: [{ label: PRESENTER_ENGINE_LABELS[engine], unit: "face_second", credits: parts.presenterCreditsPerSecond[engine] },
118
+ { label: "production (voice and render)", unit: "second", credits: parts.productionCreditsPerSecond },
119
+ { label: "live avatar on a call", unit: "still", credits: parts.liveAvatarStillCredits }],
120
+ notes: "Short and long videos alike. Presenter seconds are the seconds a presenter take fills, covered by an insert, overlay, " +
121
+ "window or template or not, counted once over the video and rounded up; the engine that renders each take sets its rate " +
122
+ (engine === "heygen" ? "(today every take renders on HeyGen). " : "(no take renders on OmniHuman today). ") +
123
+ "Production seconds are every second of the finished video. A live avatar is charged per call still in the video." })),
124
+ paid({ tool: "analyze_reference", route: "POST /v1/reference-analyses", unit: "call", credits: REFERENCE_ANALYSIS_CREDITS,
125
+ quote_tool: "quote_analysis", notes: "Held at the start and charged once the analysis succeeds; a failed one costs nothing. " +
126
+ "Starting it again on the same asset answers the same analysis for free." }),
127
+ paid({ tool: "make_faceless", route: "POST /v1/skills/make_faceless/run", quote_tool: "quote_faceless",
128
+ lines: [{ label: "generated picture", unit: "image", credits: FACELESS_IMAGE_CREDITS },
129
+ { label: "opening clip", unit: "clip", credits: FACELESS_OPENER_CREDITS },
130
+ { label: "production (story, voice and render)", unit: "second", credits: FACELESS_CREDITS_PER_1500_FRAMES / 60 }],
131
+ minimum_credits: FACELESS_MIN_BASE_CREDITS,
132
+ notes: `Pictures we generated for the delivered video and its seconds, never above the selected length. The quote is the most a ` +
133
+ `selection is charged, every picture it may generate: ${facelessAt(FACELESS_MIN_SELECTED_SECONDS)} for ` +
134
+ `${FACELESS_MIN_SELECTED_SECONDS} s, ${facelessAt(FACELESS_MAX_SELECTED_SECONDS)} for ${FACELESS_MAX_SELECTED_SECONDS} s. ` +
135
+ "Captions do not change the price." }),
136
+ paid({ tool: "revise_run", route: "POST /v1/runs/{id}/revisions", quote_tool: "quote_revision",
137
+ formula: `each shot generated anew: picture ${unit.picture}, clip ${unit.clip}, clip with a new picture ${unit.clip_with_new_picture}; ` +
138
+ `plus ${EDIT_RENDER_PRICE} to render. A revision that generates nothing: ${EDIT_ZERO_UNIT_PRICE}. A kept candidate adds nothing`,
139
+ notes: REVISION_CHARGE_TEXT }),
140
+ ...[["picture", "image", unit.picture], ["clip", "clip", unit.clip], ["clip with a new picture", "clip", unit.clip_with_new_picture]]
141
+ .map(([variant, priceUnit, credits]) => paid({ tool: "create_candidate", route: "POST /v1/runs/{id}/candidates", variant,
142
+ unit: priceUnit, credits, quote_tool: "quote_candidate", notes: CANDIDATE_CHARGE_TEXT })),
143
+ ...Object.entries(ACTOR_UNIT_CREDITS).flatMap(([quality, credits]) => [
144
+ paid({ tool: "create_actor", route: "POST /v1/skills/create_actor/run", variant: `${quality} portrait`, unit: "image",
145
+ credits: credits.portrait, quote_tool: "quote_actor", notes: "Each published image; a refused description or an unusable portrait costs nothing." }),
146
+ paid({ tool: "create_actor", route: "POST /v1/skills/create_actor/run", variant: `${quality} other format`, unit: "image",
147
+ credits: credits.variant, quote_tool: "quote_actor", notes: `Each requested format besides the ${ACTOR_PORTRAIT_ASPECT} portrait, once published.` }),
148
+ ]),
149
+ ...generationEntries(),
150
+ paid({ tool: "run_workflow_plan", route: "POST /v1/workflow-plans/{id}/run", quote_tool: "quote_workflow_plan",
151
+ formula: "the price of the native run it starts, make_ugc or make_faceless, as its quote states it" }),
152
+ ...Object.entries(FREE_TOOLS).map(([tool, route]) => ({ action: tool, tool, route, variant: null,
153
+ lines: [{ label: null, unit: "call", credits: 0 }], formula: null, minimum_credits: null, quote_tool: null, notes: null })),
154
+ ];
155
+ }
156
+ export const PRICE_LIST = Object.freeze(pricesResponse.parse({ prices: buildPriceList() }).prices);
157
+ const UNIT_TEXT = {
158
+ call: "call", second: "second of video", face_second: "second the presenter is in the video, covered or not", image: "image", clip: "clip",
159
+ clip_second: "second of clip", still: "call still in the video",
160
+ };
161
+ /** Past this many one-line prices of one unit, the sentence names their range and list_prices names each. */
162
+ const LISTED_PRICES = 4;
163
+ /** One entry's price in words: its lines added up and its minimum, or its formula. */
164
+ export const priceText = (entry) => entry.lines.length === 0 ? entry.formula ?? "" :
165
+ entry.lines.map((line) => `${line.label === null ? "" : `${line.label} `}${line.credits} credits per ${UNIT_TEXT[line.unit]}`).join(" plus ") +
166
+ (entry.minimum_credits === null ? "" : `, at least ${entry.minimum_credits}`);
167
+ /** The price sentence a billed tool's description ends with; `null` for a free tool. */
168
+ export function priceLine(tool, list = PRICE_LIST) {
169
+ const entries = list.filter((entry) => entry.tool === tool && isPaidEntry(entry));
170
+ const [first] = entries;
171
+ if (first === undefined)
172
+ return null;
173
+ const unit = first.lines[0]?.unit;
174
+ const single = entries.flatMap((entry) => (entry.formula === null && entry.lines.length === 1 && entry.lines[0].unit === unit
175
+ ? [entry.lines[0].credits] : []));
176
+ const text = unit !== undefined && single.length === entries.length && single.length > LISTED_PRICES
177
+ ? `${Math.min(...single)} to ${Math.max(...single)} credits per ${UNIT_TEXT[unit]}, by model and size`
178
+ : entries.map((entry) => `${entry.variant === null ? "" : `${entry.variant}: `}${priceText(entry)}`)
179
+ .join("; ");
180
+ return `Price: ${text}. Quote first with ${first.quote_tool}; list_prices names every price.`;
181
+ }
182
+ /** A billed tool's description with its price line at the end. */
183
+ export const withPriceLine = (tool, description, list = PRICE_LIST) => {
184
+ const line = priceLine(tool, list);
185
+ if (line === null)
186
+ throw new Error(`${tool} has no price in PRICE_LIST`);
187
+ return `${description} ${line}`;
188
+ };
189
+ //# sourceMappingURL=prices.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prices.js","sourceRoot":"","sources":["../src/prices.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,8 @@
4
4
  export declare const PUBLIC_API_BASE_URL = "https://api.clipwright.io";
5
5
  /** The dashboard; paths are appended to it. NOT `APP_ORIGIN`, which comes from the environment. */
6
6
  export declare const PUBLIC_APP_BASE_URL = "https://app.clipwright.io";
7
+ /** The hosted MCP server; the `@clipwright/mcp-server` README names the same address. */
8
+ export declare const PUBLIC_MCP_URL = "https://mcp.clipwright.io/mcp";
7
9
  /** npm packages the product is called through. The landing page, `--help` and docs print */
8
10
  /** these names, so they are contract, not page copy. */
9
11
  export declare const CLI_PACKAGE = "@clipwright/cli";
@@ -4,6 +4,8 @@
4
4
  export const PUBLIC_API_BASE_URL = "https://api.clipwright.io";
5
5
  /** The dashboard; paths are appended to it. NOT `APP_ORIGIN`, which comes from the environment. */
6
6
  export const PUBLIC_APP_BASE_URL = "https://app.clipwright.io";
7
+ /** The hosted MCP server; the `@clipwright/mcp-server` README names the same address. */
8
+ export const PUBLIC_MCP_URL = "https://mcp.clipwright.io/mcp";
7
9
  /** npm packages the product is called through. The landing page, `--help` and docs print */
8
10
  /** these names, so they are contract, not page copy. */
9
11
  export const CLI_PACKAGE = "@clipwright/cli";
@@ -1 +1 @@
1
- {"version":3,"file":"public-endpoints.js","sourceRoot":"","sources":["../src/public-endpoints.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,kCAAkC;AAElC,uFAAuF;AACvF,MAAM,CAAC,MAAM,mBAAmB,GAAG,2BAA2B,CAAC;AAE/D,mGAAmG;AACnG,MAAM,CAAC,MAAM,mBAAmB,GAAG,2BAA2B,CAAC;AAE/D,4FAA4F;AAC5F,wDAAwD;AACxD,MAAM,CAAC,MAAM,WAAW,GAAG,iBAAiB,CAAC;AAC7C,MAAM,CAAC,MAAM,OAAO,GAAG,YAAY,CAAC;AACpC,MAAM,CAAC,MAAM,WAAW,GAAG,wBAAwB,CAAC;AACpD,MAAM,CAAC,MAAM,WAAW,GAAG,iBAAiB,CAAC;AAE7C,+EAA+E;AAC/E,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AAEjC,sFAAsF;AACtF,8DAA8D;AAC9D,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AAE3E,gGAAgG;AAChG,wFAAwF;AACxF,MAAM,UAAU,iBAAiB,CAAC,GAAuB;IACvD,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IAEtD,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,oCAAoC,GAAG,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC;IAC1C,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAO,GAAG,CAAC;IAE7E,MAAM,IAAI,KAAK,CACb,gEAAgE,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,QAAQ,IAAI;QAC/F,yEAAyE,CAC5E,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"public-endpoints.js","sourceRoot":"","sources":["../src/public-endpoints.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,kCAAkC;AAElC,uFAAuF;AACvF,MAAM,CAAC,MAAM,mBAAmB,GAAG,2BAA2B,CAAC;AAE/D,mGAAmG;AACnG,MAAM,CAAC,MAAM,mBAAmB,GAAG,2BAA2B,CAAC;AAE/D,yFAAyF;AACzF,MAAM,CAAC,MAAM,cAAc,GAAG,+BAA+B,CAAC;AAE9D,4FAA4F;AAC5F,wDAAwD;AACxD,MAAM,CAAC,MAAM,WAAW,GAAG,iBAAiB,CAAC;AAC7C,MAAM,CAAC,MAAM,OAAO,GAAG,YAAY,CAAC;AACpC,MAAM,CAAC,MAAM,WAAW,GAAG,wBAAwB,CAAC;AACpD,MAAM,CAAC,MAAM,WAAW,GAAG,iBAAiB,CAAC;AAE7C,+EAA+E;AAC/E,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AAEjC,sFAAsF;AACtF,8DAA8D;AAC9D,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AAE3E,gGAAgG;AAChG,wFAAwF;AACxF,MAAM,UAAU,iBAAiB,CAAC,GAAuB;IACvD,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IAEtD,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,oCAAoC,GAAG,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC;IAC1C,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAO,GAAG,CAAC;IAE7E,MAAM,IAAI,KAAK,CACb,gEAAgE,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,QAAQ,IAAI;QAC/F,yEAAyE,CAC5E,CAAC;AACJ,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { z } from "zod";
2
+ /** `GET /health`: the API process answers. */
3
+ export declare const healthResponse: z.ZodObject<{
4
+ ok: z.ZodLiteral<true>;
5
+ }, z.core.$strict>;
6
+ /** `GET /v1/public/skills`: the skills this deployment runs, without a key; a closed skill is absent. */
7
+ export declare const publicSkillsResponse: z.ZodObject<{
8
+ skills: z.ZodArray<z.ZodObject<{
9
+ slug: z.ZodEnum<{
10
+ create_actor: "create_actor";
11
+ edit_shot: "edit_shot";
12
+ generate_image: "generate_image";
13
+ generate_video: "generate_video";
14
+ make_faceless: "make_faceless";
15
+ make_ugc: "make_ugc";
16
+ revise_long_form: "revise_long_form";
17
+ }>;
18
+ name: z.ZodString;
19
+ version: z.ZodString;
20
+ description: z.ZodString;
21
+ }, z.core.$strict>>;
22
+ }, z.core.$strict>;
23
+ export type PublicSkillsResponse = z.infer<typeof publicSkillsResponse>;
@@ -0,0 +1,11 @@
1
+ import { z } from "zod";
2
+ import { SKILLS } from "./skills.js";
3
+ /** `GET /health`: the API process answers. */
4
+ export const healthResponse = z.strictObject({ ok: z.literal(true) });
5
+ /** `GET /v1/public/skills`: the skills this deployment runs, without a key; a closed skill is absent. */
6
+ export const publicSkillsResponse = z.strictObject({
7
+ skills: z.array(z.strictObject({
8
+ slug: z.enum(SKILLS), name: z.string().min(1), version: z.string().min(1), description: z.string().min(1),
9
+ })),
10
+ });
11
+ //# sourceMappingURL=public-responses.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-responses.js","sourceRoot":"","sources":["../src/public-responses.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,8CAA8C;AAC9C,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAEtE,yGAAyG;AACzG,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,YAAY,CAAC;IACjD,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC;QAC7B,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;KAC1G,CAAC,CAAC;CACJ,CAAC,CAAC"}