@clipwright/core 0.34.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 (237) hide show
  1. package/README.md +6 -3
  2. package/dist/account-actors.d.ts +173 -15
  3. package/dist/account-actors.js +142 -11
  4. package/dist/account-actors.js.map +1 -1
  5. package/dist/actor-bounds.d.ts +4 -0
  6. package/dist/actor-bounds.js +4 -0
  7. package/dist/actor-bounds.js.map +1 -1
  8. package/dist/actors.d.ts +31 -0
  9. package/dist/actors.js +26 -0
  10. package/dist/actors.js.map +1 -1
  11. package/dist/api-failure.d.ts +1 -1
  12. package/dist/api-failure.js +2 -2
  13. package/dist/api-failure.js.map +1 -1
  14. package/dist/aspect.d.ts +1 -1
  15. package/dist/aspect.js +5 -5
  16. package/dist/aspect.js.map +1 -1
  17. package/dist/assets.d.ts +30 -6
  18. package/dist/assets.js +26 -8
  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/canvas-fit.js +1 -1
  24. package/dist/canvas-fit.js.map +1 -1
  25. package/dist/contract-dispositions.d.ts +493 -9
  26. package/dist/contract-dispositions.js +38 -14
  27. package/dist/contract-dispositions.js.map +1 -1
  28. package/dist/contracts/v1/workflow-brief.d.ts +1441 -0
  29. package/dist/contracts/v1/workflow-brief.js +4 -0
  30. package/dist/contracts/v1/workflow-brief.js.map +1 -1
  31. package/dist/contracts/v1/workflow-catalog.d.ts +2181 -103
  32. package/dist/contracts/v1/workflow-catalog.js +4 -2
  33. package/dist/contracts/v1/workflow-catalog.js.map +1 -1
  34. package/dist/contracts/v1/workflow-client.d.ts +1673 -3
  35. package/dist/contracts/v1/workflow-client.js +6 -3
  36. package/dist/contracts/v1/workflow-client.js.map +1 -1
  37. package/dist/contracts/v1/workflow-execution.d.ts +164 -12
  38. package/dist/contracts/v1/workflow-execution.js +15 -7
  39. package/dist/contracts/v1/workflow-execution.js.map +1 -1
  40. package/dist/contracts/v1/workflow-plan.d.ts +3228 -140
  41. package/dist/contracts/v1/workflow-primitives.d.ts +3 -1
  42. package/dist/contracts/v1/workflow-primitives.js +1 -1
  43. package/dist/contracts/v1/workflow-primitives.js.map +1 -1
  44. package/dist/contracts/v1/workflow-run-read.d.ts +116 -3
  45. package/dist/edit-billing.d.ts +12 -0
  46. package/dist/edit-billing.js +7 -0
  47. package/dist/edit-billing.js.map +1 -1
  48. package/dist/edit-candidate.d.ts +2 -2
  49. package/dist/edit-candidate.js +2 -2
  50. package/dist/edit-candidate.js.map +1 -1
  51. package/dist/edit-long-form.d.ts +3 -3
  52. package/dist/edit-long-form.js +14 -4
  53. package/dist/edit-long-form.js.map +1 -1
  54. package/dist/edit-revision.d.ts +1 -1
  55. package/dist/edit-revision.js +1 -1
  56. package/dist/edit-revision.js.map +1 -1
  57. package/dist/endpoint-notes.d.ts +3 -0
  58. package/dist/endpoint-notes.js +70 -0
  59. package/dist/endpoint-notes.js.map +1 -0
  60. package/dist/endpoints.d.ts +4 -0
  61. package/dist/endpoints.js +16 -0
  62. package/dist/endpoints.js.map +1 -1
  63. package/dist/errors.d.ts +2 -2
  64. package/dist/errors.js +11 -2
  65. package/dist/errors.js.map +1 -1
  66. package/dist/face-billing.d.ts +55 -0
  67. package/dist/face-billing.js +24 -2
  68. package/dist/face-billing.js.map +1 -1
  69. package/dist/face-delivery.d.ts +1 -1
  70. package/dist/face-delivery.js +1 -1
  71. package/dist/face-delivery.js.map +1 -1
  72. package/dist/faceless-media-record.d.ts +1 -1
  73. package/dist/faceless-media-record.js +1 -1
  74. package/dist/faceless-media-record.js.map +1 -1
  75. package/dist/faceless-price.d.ts +49 -6
  76. package/dist/faceless-price.js +44 -10
  77. package/dist/faceless-price.js.map +1 -1
  78. package/dist/faceless-public-plan.d.ts +6 -2
  79. package/dist/faceless-public-plan.js +11 -7
  80. package/dist/faceless-public-plan.js.map +1 -1
  81. package/dist/faceless-public.d.ts +7 -2
  82. package/dist/faceless-public.js +5 -5
  83. package/dist/faceless-public.js.map +1 -1
  84. package/dist/faceless-voices.d.ts +6 -6
  85. package/dist/faceless-voices.js +5 -5
  86. package/dist/faceless-voices.js.map +1 -1
  87. package/dist/feedback.d.ts +29 -0
  88. package/dist/feedback.js +29 -0
  89. package/dist/feedback.js.map +1 -0
  90. package/dist/generations.d.ts +2 -19
  91. package/dist/generations.js +28 -49
  92. package/dist/generations.js.map +1 -1
  93. package/dist/idempotency.d.ts +2 -0
  94. package/dist/idempotency.js +7 -4
  95. package/dist/idempotency.js.map +1 -1
  96. package/dist/index.d.ts +12 -0
  97. package/dist/index.js +15 -0
  98. package/dist/index.js.map +1 -1
  99. package/dist/long-form-pricing.d.ts +7 -4
  100. package/dist/long-form-pricing.js +13 -10
  101. package/dist/long-form-pricing.js.map +1 -1
  102. package/dist/long-form-revision.js +1 -1
  103. package/dist/long-form-revision.js.map +1 -1
  104. package/dist/media-timebase.js +2 -2
  105. package/dist/media-timebase.js.map +1 -1
  106. package/dist/openapi.d.ts +155 -0
  107. package/dist/openapi.js +339 -0
  108. package/dist/openapi.js.map +1 -0
  109. package/dist/pacing.d.ts +15 -0
  110. package/dist/pacing.js +30 -0
  111. package/dist/pacing.js.map +1 -1
  112. package/dist/parts-pricing.d.ts +84 -0
  113. package/dist/parts-pricing.js +105 -0
  114. package/dist/parts-pricing.js.map +1 -0
  115. package/dist/presenter-beats.d.ts +45 -0
  116. package/dist/presenter-beats.js +144 -0
  117. package/dist/presenter-beats.js.map +1 -0
  118. package/dist/prices.d.ts +98 -0
  119. package/dist/prices.js +193 -0
  120. package/dist/prices.js.map +1 -0
  121. package/dist/public-responses.d.ts +23 -0
  122. package/dist/public-responses.js +11 -0
  123. package/dist/public-responses.js.map +1 -0
  124. package/dist/rate-limit.d.ts +2 -2
  125. package/dist/rate-limit.js +2 -2
  126. package/dist/rate-limit.js.map +1 -1
  127. package/dist/reference-analysis.d.ts +915 -0
  128. package/dist/reference-analysis.js +210 -0
  129. package/dist/reference-analysis.js.map +1 -0
  130. package/dist/reference-kinds.d.ts +8 -0
  131. package/dist/reference-kinds.js +10 -0
  132. package/dist/reference-kinds.js.map +1 -0
  133. package/dist/reference-profile.d.ts +671 -0
  134. package/dist/reference-profile.js +198 -0
  135. package/dist/reference-profile.js.map +1 -0
  136. package/dist/reference-staging.d.ts +583 -0
  137. package/dist/reference-staging.js +153 -0
  138. package/dist/reference-staging.js.map +1 -0
  139. package/dist/reference-voice.d.ts +305 -0
  140. package/dist/reference-voice.js +108 -0
  141. package/dist/reference-voice.js.map +1 -0
  142. package/dist/render-backend.d.ts +1 -1
  143. package/dist/resolved-timeline.d.ts +54 -2
  144. package/dist/resolved-timeline.js +52 -6
  145. package/dist/resolved-timeline.js.map +1 -1
  146. package/dist/run-static-warnings.js +15 -6
  147. package/dist/run-static-warnings.js.map +1 -1
  148. package/dist/runs.d.ts +78 -6
  149. package/dist/runs.js +9 -4
  150. package/dist/runs.js.map +1 -1
  151. package/dist/semantic-inserts.d.ts +1 -1
  152. package/dist/semantic-inserts.js +2 -2
  153. package/dist/semantic-inserts.js.map +1 -1
  154. package/dist/skills.d.ts +1810 -29
  155. package/dist/skills.js +148 -35
  156. package/dist/skills.js.map +1 -1
  157. package/dist/templates/callout.d.ts +2 -2
  158. package/dist/templates/callout.js +6 -6
  159. package/dist/templates/callout.js.map +1 -1
  160. package/dist/templates/checklist.js +2 -2
  161. package/dist/templates/checklist.js.map +1 -1
  162. package/dist/templates/index.d.ts +15 -8
  163. package/dist/templates/index.js +30 -18
  164. package/dist/templates/index.js.map +1 -1
  165. package/dist/templates/notification.js +2 -2
  166. package/dist/templates/notification.js.map +1 -1
  167. package/dist/templates/phone-call.d.ts +3 -0
  168. package/dist/templates/phone-call.js +14 -7
  169. package/dist/templates/phone-call.js.map +1 -1
  170. package/dist/templates/progress.js +2 -2
  171. package/dist/templates/progress.js.map +1 -1
  172. package/dist/templates/size.d.ts +1 -1
  173. package/dist/templates/size.js +1 -1
  174. package/dist/templates/size.js.map +1 -1
  175. package/dist/templates/sounds.d.ts +357 -7
  176. package/dist/templates/sounds.js +34 -12
  177. package/dist/templates/sounds.js.map +1 -1
  178. package/dist/ugc-call.d.ts +89 -0
  179. package/dist/ugc-call.js +111 -0
  180. package/dist/ugc-call.js.map +1 -0
  181. package/dist/ugc-delivery.d.ts +1 -1
  182. package/dist/ugc-delivery.js +1 -1
  183. package/dist/ugc-delivery.js.map +1 -1
  184. package/dist/ugc-framing.d.ts +26 -0
  185. package/dist/ugc-framing.js +64 -0
  186. package/dist/ugc-framing.js.map +1 -0
  187. package/dist/ugc-layers.d.ts +5 -1
  188. package/dist/ugc-layers.js +6 -1
  189. package/dist/ugc-layers.js.map +1 -1
  190. package/dist/ugc-video-media.d.ts +1 -1
  191. package/dist/ugc-video-media.js +1 -1
  192. package/dist/ugc-video-media.js.map +1 -1
  193. package/dist/uploads.d.ts +2 -2
  194. package/dist/uploads.js +2 -2
  195. package/dist/uploads.js.map +1 -1
  196. package/dist/vendor-response.d.ts +4 -0
  197. package/dist/vendor-response.js +12 -0
  198. package/dist/vendor-response.js.map +1 -1
  199. package/dist/voice-admission.d.ts +836 -420
  200. package/dist/voice-admission.js +22 -5
  201. package/dist/voice-admission.js.map +1 -1
  202. package/dist/voice-listing.d.ts +4 -4
  203. package/dist/voice-listing.js +11 -6
  204. package/dist/voice-listing.js.map +1 -1
  205. package/dist/voice-pace.d.ts +34 -0
  206. package/dist/voice-pace.generated.json +72 -0
  207. package/dist/voice-pace.js +34 -0
  208. package/dist/voice-pace.js.map +1 -0
  209. package/dist/voices.d.ts +32 -19
  210. package/dist/voices.js +81 -35
  211. package/dist/voices.js.map +1 -1
  212. package/dist/workflows/catalog.js +2 -1
  213. package/dist/workflows/catalog.js.map +1 -1
  214. package/dist/workflows/index.d.ts +2 -0
  215. package/dist/workflows/index.js +2 -0
  216. package/dist/workflows/index.js.map +1 -1
  217. package/dist/workflows/methods/faceless-explainer.d.ts +388 -10
  218. package/dist/workflows/methods/kinetic-launch.d.ts +388 -10
  219. package/dist/workflows/methods/kinetic-launch.js +1 -1
  220. package/dist/workflows/methods/product-image-story.d.ts +388 -10
  221. package/dist/workflows/methods/reference-remake.d.ts +881 -0
  222. package/dist/workflows/methods/reference-remake.js +26 -0
  223. package/dist/workflows/methods/reference-remake.js.map +1 -0
  224. package/dist/workflows/methods/shared.d.ts +388 -10
  225. package/dist/workflows/methods/shared.js +2 -2
  226. package/dist/workflows/methods/shared.js.map +1 -1
  227. package/dist/workflows/methods/ugc-faq-answer.d.ts +388 -10
  228. package/dist/workflows/methods/ugc-product-intro.d.ts +388 -10
  229. package/dist/workflows/methods/website-proof-demo.d.ts +388 -10
  230. package/dist/workflows/methods/website-proof-demo.js +1 -1
  231. package/dist/workflows/reference-remake.d.ts +684 -0
  232. package/dist/workflows/reference-remake.js +602 -0
  233. package/dist/workflows/reference-remake.js.map +1 -0
  234. package/dist/workflows/validate.js +10 -7
  235. package/dist/workflows/validate.js.map +1 -1
  236. package/package.json +9 -4
  237. package/CHANGELOG.md +0 -1393
package/dist/prices.js ADDED
@@ -0,0 +1,193 @@
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, REFERENCE_DATA_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
+ send_feedback: "POST /v1/feedback",
55
+ quote_ugc: "POST /v1/skills/make_ugc/quote",
56
+ quote_analysis: "POST /v1/reference-analyses/quote",
57
+ quote_faceless: "POST /v1/skills/make_faceless/quote",
58
+ quote_actor: "POST /v1/skills/create_actor/quote",
59
+ quote_image: "POST /v1/skills/generate_image/quote",
60
+ quote_video: "POST /v1/skills/generate_video/quote",
61
+ quote_revision: "POST /v1/runs/{id}/revisions/quote",
62
+ quote_candidate: "POST /v1/runs/{id}/candidates/quote",
63
+ quote_workflow_plan: "POST /v1/workflow-plans/{id}/quote",
64
+ get_run: "GET /v1/runs/{id}",
65
+ get_run_shots: "GET /v1/runs/{id}/shots",
66
+ list_voices: "GET /v1/voices",
67
+ list_template_sounds: "GET /v1/template-sounds",
68
+ list_generation_models: "GET /v1/generations/models",
69
+ list_actors: "GET /v1/actors",
70
+ delete_actor: "DELETE /v1/actors/{id}",
71
+ get_actor_defaults: "GET /v1/actors/{id}/defaults",
72
+ set_actor_defaults: "POST /v1/actors/{id}/defaults",
73
+ upload_image: "POST /v1/uploads/import",
74
+ create_upload: "POST /v1/uploads/intents",
75
+ get_upload: "GET /v1/uploads/{id}",
76
+ create_asset: "POST /v1/assets",
77
+ list_assets: "GET /v1/assets",
78
+ get_asset: "GET /v1/assets/{id}",
79
+ update_asset: "POST /v1/assets/{id}",
80
+ delete_asset: "DELETE /v1/assets/{id}",
81
+ get_reference_analysis: "GET /v1/reference-analyses/{id}",
82
+ list_workflows: "GET /v1/public/workflows",
83
+ get_workflow: "GET /v1/public/workflows/{id}",
84
+ prepare_workflow_plan: "POST /v1/workflow-plans",
85
+ plan_reference_remake: "POST /v1/workflow-plans/reference-remake",
86
+ get_workflow_plan: "GET /v1/workflow-plans/{id}",
87
+ approve_workflow_plan: "POST /v1/workflow-plans/{id}/approve",
88
+ };
89
+ const facelessAt = (seconds) => quoteFaceless({ outputFrames: seconds * 25, captions: true }).totalCredits;
90
+ function generationEntries() {
91
+ return listGenerationModels().flatMap((model) => {
92
+ const video = model.kind === "video";
93
+ const groups = new Map();
94
+ for (const row of model.rows) {
95
+ const key = `${row.resolution}|${row.unit_credits}`;
96
+ const group = groups.get(key) ?? { size: row.resolution, credits: row.unit_credits, aspects: [] };
97
+ group.aspects.push(row.aspect_ratio);
98
+ groups.set(key, group);
99
+ }
100
+ const priced = [...groups.values()];
101
+ return priced.map((group) => {
102
+ const split = priced.filter((other) => other.size === group.size).length > 1;
103
+ const variant = [model.model, group.size, split ? group.aspects.join(", ") : null].filter((part) => part !== null).join(" ");
104
+ return paid(video
105
+ ? { tool: "generate_video", route: "POST /v1/skills/generate_video/run", variant, unit: "clip_second", credits: group.credits,
106
+ quote_tool: "quote_video", notes: "Per second of the requested duration, charged once the clip is delivered." }
107
+ : { tool: "generate_image", route: "POST /v1/skills/generate_image/run", variant, unit: "image", credits: group.credits,
108
+ quote_tool: "quote_image", notes: "Charged once the image is delivered." });
109
+ });
110
+ });
111
+ }
112
+ function buildPriceList() {
113
+ const unit = EDIT_UNIT_PRICES;
114
+ const parts = PARTS_FACE_TARIFF;
115
+ return [
116
+ ...PRESENTER_ENGINES.map((engine) => paid({ tool: "make_ugc", route: "POST /v1/skills/make_ugc/run",
117
+ variant: engine === "heygen" ? "HeyGen presenter" : "OmniHuman presenter", quote_tool: "quote_ugc", minimum_credits: parts.minimumCredits,
118
+ lines: [{ label: PRESENTER_ENGINE_LABELS[engine], unit: "face_second", credits: parts.presenterCreditsPerSecond[engine] },
119
+ { label: "production (voice and render)", unit: "second", credits: parts.productionCreditsPerSecond },
120
+ { label: "live avatar on a call", unit: "still", credits: parts.liveAvatarStillCredits }],
121
+ notes: "Short and long videos alike. Presenter seconds are the seconds a presenter take fills, covered by an insert, overlay, " +
122
+ "window or template or not, counted once over the video and rounded up; the engine that renders each take sets its rate " +
123
+ (engine === "heygen" ? "(today every take renders on HeyGen). " : "(no take renders on OmniHuman today). ") +
124
+ "Production seconds are every second of the finished video. A live avatar is charged per call still in the video." })),
125
+ paid({ tool: "analyze_reference", route: "POST /v1/reference-analyses", unit: "call", credits: REFERENCE_ANALYSIS_CREDITS,
126
+ quote_tool: "quote_analysis", notes: "Held at the start and charged once the analysis succeeds; a failed one costs nothing. " +
127
+ "Starting it again on the same asset answers the same analysis for free." }),
128
+ paid({ tool: "analyze_reference", route: "POST /v1/reference-analyses", variant: "data mode", unit: "call", credits: REFERENCE_DATA_CREDITS,
129
+ quote_tool: "quote_analysis", notes: "mode: \"data\": duration, size, timed transcript, hook and a frame sheet, without the vision pass. " +
130
+ "Held at the start and charged once it succeeds; a failed one costs nothing." }),
131
+ paid({ tool: "make_faceless", route: "POST /v1/skills/make_faceless/run", quote_tool: "quote_faceless",
132
+ lines: [{ label: "generated picture", unit: "image", credits: FACELESS_IMAGE_CREDITS },
133
+ { label: "opening clip", unit: "clip", credits: FACELESS_OPENER_CREDITS },
134
+ { label: "production (story, voice and render)", unit: "second", credits: FACELESS_CREDITS_PER_1500_FRAMES / 60 }],
135
+ minimum_credits: FACELESS_MIN_BASE_CREDITS,
136
+ notes: `Pictures we generated for the delivered video and its seconds, never above the selected length. The quote is the most a ` +
137
+ `selection is charged, every picture it may generate: ${facelessAt(FACELESS_MIN_SELECTED_SECONDS)} for ` +
138
+ `${FACELESS_MIN_SELECTED_SECONDS} s, ${facelessAt(FACELESS_MAX_SELECTED_SECONDS)} for ${FACELESS_MAX_SELECTED_SECONDS} s. ` +
139
+ "Captions do not change the price." }),
140
+ paid({ tool: "revise_run", route: "POST /v1/runs/{id}/revisions", quote_tool: "quote_revision",
141
+ formula: `each shot generated anew: picture ${unit.picture}, clip ${unit.clip}, clip with a new picture ${unit.clip_with_new_picture}; ` +
142
+ `plus ${EDIT_RENDER_PRICE} to render. A revision that generates nothing: ${EDIT_ZERO_UNIT_PRICE}. A kept candidate adds nothing`,
143
+ notes: REVISION_CHARGE_TEXT }),
144
+ ...[["picture", "image", unit.picture], ["clip", "clip", unit.clip], ["clip with a new picture", "clip", unit.clip_with_new_picture]]
145
+ .map(([variant, priceUnit, credits]) => paid({ tool: "create_candidate", route: "POST /v1/runs/{id}/candidates", variant,
146
+ unit: priceUnit, credits, quote_tool: "quote_candidate", notes: CANDIDATE_CHARGE_TEXT })),
147
+ ...Object.entries(ACTOR_UNIT_CREDITS).flatMap(([quality, credits]) => [
148
+ paid({ tool: "create_actor", route: "POST /v1/skills/create_actor/run", variant: `${quality} portrait`, unit: "image",
149
+ credits: credits.portrait, quote_tool: "quote_actor", notes: "Each published image; a refused description or an unusable portrait costs nothing." }),
150
+ paid({ tool: "create_actor", route: "POST /v1/skills/create_actor/run", variant: `${quality} other format`, unit: "image",
151
+ credits: credits.variant, quote_tool: "quote_actor", notes: `Each requested format besides the ${ACTOR_PORTRAIT_ASPECT} portrait, once published.` }),
152
+ ]),
153
+ ...generationEntries(),
154
+ paid({ tool: "run_workflow_plan", route: "POST /v1/workflow-plans/{id}/run", quote_tool: "quote_workflow_plan",
155
+ formula: "the price of the native run it starts, make_ugc or make_faceless, as its quote states it" }),
156
+ ...Object.entries(FREE_TOOLS).map(([tool, route]) => ({ action: tool, tool, route, variant: null,
157
+ lines: [{ label: null, unit: "call", credits: 0 }], formula: null, minimum_credits: null, quote_tool: null, notes: null })),
158
+ ];
159
+ }
160
+ export const PRICE_LIST = Object.freeze(pricesResponse.parse({ prices: buildPriceList() }).prices);
161
+ const UNIT_TEXT = {
162
+ call: "call", second: "second of video", face_second: "second the presenter is in the video, covered or not", image: "image", clip: "clip",
163
+ clip_second: "second of clip", still: "call still in the video",
164
+ };
165
+ /** Past this many one-line prices of one unit, the sentence names their range and list_prices names each. */
166
+ const LISTED_PRICES = 4;
167
+ /** One entry's price in words: its lines added up and its minimum, or its formula. */
168
+ export const priceText = (entry) => entry.lines.length === 0 ? entry.formula ?? "" :
169
+ entry.lines.map((line) => `${line.label === null ? "" : `${line.label} `}${line.credits} credits per ${UNIT_TEXT[line.unit]}`).join(" plus ") +
170
+ (entry.minimum_credits === null ? "" : `, at least ${entry.minimum_credits}`);
171
+ /** The price sentence a billed tool's description ends with; `null` for a free tool. */
172
+ export function priceLine(tool, list = PRICE_LIST) {
173
+ const entries = list.filter((entry) => entry.tool === tool && isPaidEntry(entry));
174
+ const [first] = entries;
175
+ if (first === undefined)
176
+ return null;
177
+ const unit = first.lines[0]?.unit;
178
+ const single = entries.flatMap((entry) => (entry.formula === null && entry.lines.length === 1 && entry.lines[0].unit === unit
179
+ ? [entry.lines[0].credits] : []));
180
+ const text = unit !== undefined && single.length === entries.length && single.length > LISTED_PRICES
181
+ ? `${Math.min(...single)} to ${Math.max(...single)} credits per ${UNIT_TEXT[unit]}, by model and size`
182
+ : entries.map((entry) => `${entry.variant === null ? "" : `${entry.variant}: `}${priceText(entry)}`)
183
+ .join("; ");
184
+ return `Price: ${text}. Quote first with ${first.quote_tool}; list_prices names every price.`;
185
+ }
186
+ /** A billed tool's description with its price line at the end. */
187
+ export const withPriceLine = (tool, description, list = PRICE_LIST) => {
188
+ const line = priceLine(tool, list);
189
+ if (line === null)
190
+ throw new Error(`${tool} has no price in PRICE_LIST`);
191
+ return `${description} ${line}`;
192
+ };
193
+ //# sourceMappingURL=prices.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prices.js","sourceRoot":"","sources":["../src/prices.ts"],"names":[],"mappings":"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"}
@@ -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 open right now, 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 open right now, 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,mGAAmG;AACnG,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"}
@@ -16,7 +16,7 @@ export declare const RATE_LIMIT_PAID_PER_MINUTE = 60;
16
16
  /** runs at once) never starves paid calls. A ceiling: a looping client hits it in seconds. */
17
17
  export declare const RATE_LIMIT_FREE_PER_MINUTE = 300;
18
18
  /** Concurrent presenter renders per account: 3. Excess runs are queued (202), not refused, so agents */
19
- /** need no scheduler of their own. A run may also wait behind other accounts: the worker caps each line as a whole. */
19
+ /** need no scheduler of their own. A run may also wait behind other accounts: our service caps each line as a whole. */
20
20
  export declare const MAX_CONCURRENT_RENDERS_PER_ACCOUNT = 3;
21
21
  /** Concurrent faceless videos per account: 2, queued the same way. */
22
22
  export declare const MAX_CONCURRENT_FACELESS_PER_ACCOUNT = 2;
@@ -54,7 +54,7 @@ export declare function authThrottledBody(args: {
54
54
  retryAfterSeconds: number;
55
55
  }): RateLimitedError;
56
56
  /** Per-account `create_actor` limits over a sliding day. Creations count runs of any */
57
- /** outcome; refusals and unusable portraits count worker events. */
57
+ /** outcome; refusals and unusable portraits count as well. */
58
58
  export declare const ACTOR_LIMIT_WINDOW_SECONDS = 86400;
59
59
  export declare const ACTOR_LIMIT_KINDS: readonly ["creations", "prompt_refusals", "unusable_portraits"];
60
60
  export type ActorLimitKind = (typeof ACTOR_LIMIT_KINDS)[number];
@@ -18,7 +18,7 @@ export const RATE_LIMIT_PAID_PER_MINUTE = 60;
18
18
  /** runs at once) never starves paid calls. A ceiling: a looping client hits it in seconds. */
19
19
  export const RATE_LIMIT_FREE_PER_MINUTE = 300;
20
20
  /** Concurrent presenter renders per account: 3. Excess runs are queued (202), not refused, so agents */
21
- /** need no scheduler of their own. A run may also wait behind other accounts: the worker caps each line as a whole. */
21
+ /** need no scheduler of their own. A run may also wait behind other accounts: our service caps each line as a whole. */
22
22
  export const MAX_CONCURRENT_RENDERS_PER_ACCOUNT = 3;
23
23
  /** Concurrent faceless videos per account: 2, queued the same way. */
24
24
  export const MAX_CONCURRENT_FACELESS_PER_ACCOUNT = 2;
@@ -77,7 +77,7 @@ export function authThrottledBody(args) {
77
77
  });
78
78
  }
79
79
  /** Per-account `create_actor` limits over a sliding day. Creations count runs of any */
80
- /** outcome; refusals and unusable portraits count worker events. */
80
+ /** outcome; refusals and unusable portraits count as well. */
81
81
  export const ACTOR_LIMIT_WINDOW_SECONDS = 86_400;
82
82
  export const ACTOR_LIMIT_KINDS = ["creations", "prompt_refusals", "unusable_portraits"];
83
83
  export const ACTOR_LIMITS = {
@@ -1 +1 @@
1
- {"version":3,"file":"rate-limit.js","sourceRoot":"","sources":["../src/rate-limit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rate-limit.js","sourceRoot":"","sources":["../src/rate-limit.ts"],"names":[],"mappings":"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"}