@clipwright/cli 0.19.0 → 0.21.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.
package/CHANGELOG.md CHANGED
@@ -16,6 +16,61 @@ a customer reading it should not miss what appeared in the product. Like *Server
16
16
  they are live from the day the web app was deployed, not from the package release they are
17
17
  listed under.
18
18
 
19
+ ## [0.21.0] - 2026-09-27
20
+
21
+ Faceless videos: an agent can now make a video of up to 90 seconds without an on-camera presenter, from a script or
22
+ from a short brief, and see the price before anything is made.
23
+
24
+ ### Added
25
+
26
+ - `quote_faceless` and `make_faceless` MCP tools, `quoteFaceless` and `startFaceless` in the SDK, and the
27
+ `quote-faceless` and `make-faceless` CLI commands. The video is narration over an opening animated clip and image
28
+ scenes, with captions on by default. `duration_seconds` (30 to 90) is a target: the video ends with its narration
29
+ and runs from 25 seconds to 5 seconds past `duration_seconds`, never past 90. `quote_faceless` is free;
30
+ `make_faceless` returns a `run_id`, and `get_run` reports progress. The MCP server now lists fourteen tools.
31
+
32
+ ### Server-side
33
+
34
+ - A faceless run is charged for the video it delivers, by its actual length, and never more than its quote: seconds
35
+ past `duration_seconds` are free. A failed
36
+ run is charged nothing, including one we stop ourselves because a step did not meet our checks. A run held for
37
+ review keeps its credit hold until it is resolved.
38
+ - Captions drop surrounding punctuation, keep accents and other diacritics, and show numbers as written (`$3.50`,
39
+ `10:30`, `1,000`, `50%`, `-20`).
40
+ - With captions on, the script is checked against the caption font before speech is generated; a character the font
41
+ cannot draw fails the run without a customer charge.
42
+ - Narration uses automatic language detection.
43
+ - Pictures change about every three seconds, between spoken words.
44
+
45
+ ### Changed
46
+
47
+ - *Server-side* Voice catalog: `cs_female_jana` is now listed with use case `advertisement` (was `narrative_story`);
48
+ the notice period is 4015 days for `en_female_cassidy` (was 730) and 730 days for `fi_male_jaakko` (was 365).
49
+ `es_male_benjamin` is unchanged and remains available.
50
+
51
+ ### Known limits
52
+
53
+ - The voice reads some abbreviations literally: write "1.5 million" rather than "1.5M".
54
+ - A generated picture can come out as a collage of two or three panels, and small character details (glasses,
55
+ for instance) can change between pictures.
56
+ - Narration is not loudness-normalized yet, so a video can play quieter than other clips in the same feed.
57
+ - *Server-side* A faceless run can fail when the opening clip shows a pattern our text check mistakes for lettering
58
+ (a chain, for instance). The run is charged nothing; running it again produces a new video.
59
+
60
+ ## [0.20.0] - 2026-09-25
61
+
62
+ The MCP server is ready for directories: it has a name in the official MCP
63
+ Registry, and every tool tells the host whether it only reads or writes.
64
+
65
+ ### Added
66
+
67
+ - Every MCP tool now carries a `title` and the `readOnlyHint`/`destructiveHint`
68
+ annotations: quotes, lists and reads are read-only, `delete_actor` is
69
+ destructive, and `make_ugc`, `create_actor`, `upload_image` and
70
+ `set_actor_defaults` write.
71
+ - `@clipwright/mcp-server` declares `mcpName: io.clipwright/mcp` for the official
72
+ MCP Registry.
73
+
19
74
  ## [0.19.0] - 2026-09-22
20
75
 
21
76
  A paid video that arrived after we stopped waiting can now be collected: the run
package/README.md CHANGED
@@ -25,6 +25,8 @@ above name the package with `-p`, so they resolve here either way.
25
25
  | `actors` | Lists the actors this account can use: the Clipwright catalog and your own. Free. |
26
26
  | `quote-actor` | Estimates the cost of a personal actor. Spends nothing. |
27
27
  | `create-actor` | Creates a personal actor from a description. **Costs credits** — one charge per requested format. Prints the run; follow it with `runs <id>`. |
28
+ | `quote-faceless` | Estimates the cost of a faceless video. Spends nothing. |
29
+ | `make-faceless` | Starts a faceless video: narration over an opening animated clip and image scenes. **Costs credits.** Prints the run; follow it with `runs <id>`. |
28
30
  | `delete-actor <id>` | Deletes a personal actor of this account. Videos already made with it stay as they are. Free. |
29
31
 
30
32
  `quote` and `make` take the actor's photo as `--image <url>` or `--image-file <path>`
@@ -47,6 +49,18 @@ Every preset and catalog voice speaks `eleven_v3`. `--tts-model` overrides it wi
47
49
  `eleven_flash_v2_5` or `eleven_turbo_v2_5`, which cost less but misread Russian stress
48
50
  marks. In a Russian script, mark stress with a capital vowel inside the word: `потОм`.
49
51
 
52
+ `quote-faceless` and `make-faceless` take the narration as `--script <text>`,
53
+ `--script-file <path>` or `--brief <text>` (a short description the narration is
54
+ written from), plus a required `--duration <seconds>` from 30 to 90. The video
55
+ ends with the narration, runs at least 25 seconds and may exceed the selection
56
+ by up to 5 seconds, never beyond 90 seconds. A script must fit this output
57
+ range. The charge follows the delivered duration and never exceeds the quote;
58
+ the minimum remains 200 base credits plus 150 for the opening clip.
59
+ Captions are on; `--no-captions`
60
+ turns them off. `--style-reference <url>` and `--character-reference <url>` take
61
+ public https images. Quote first: both commands take the same flags, so the
62
+ quote prices exactly the request `make-faceless` would send.
63
+
50
64
  `make` retries are explicit: `--retry 2` deliberately starts a *new* run for the
51
65
  same script. Without it a repeated call returns the run you already paid for,
52
66
  because every request carries an idempotency key derived from the input and from
package/dist/format.js CHANGED
@@ -1,14 +1,6 @@
1
1
  import { FAILED_STATE, isTerminal } from "@clipwright/core";
2
- /**
3
- * Чистый форматтер вывода `clipwright runs <id>` — вынесен из команды, чтобы
4
- * тестировать терминальные/нетерминальные/неизвестные стадии без сети
5
- * (US-502, заметка Critic №1: выделенный тест CLI-поверхности, а не только
6
- * транзитивное покрытие через SDK).
7
- *
8
- * Терминальность определяется через `isTerminal`/`FAILED_STATE` из core, а
9
- * не строковыми литералами: неизвестная стадия (расширение enum на сервере,
10
- * напр. `"publishing"`) просто печатается как есть и НЕ роняет команду.
11
- */
2
+ /** Pure formatter for `clipwright runs <id>`. Terminality comes from core, so an */
3
+ /** unknown server stage (e.g. `"publishing"`) prints as is and does not crash. */
12
4
  export function formatRun(run) {
13
5
  const lines = [];
14
6
  if (isTerminal(run.state)) {
@@ -29,24 +21,8 @@ export function formatRun(run) {
29
21
  }
30
22
  return lines.join("\n");
31
23
  }
32
- /**
33
- * Чистый форматтер `clipwright voices` (US-516) — тестируемый без сети, тот
34
- * же паттерн, что `formatRun`. Каталог курируемый по дизайну (план §5): это
35
- * не полный список голосов вендора, остальные достижимы сырым `voice_id`.
36
- */
37
- /**
38
- * Отказ API для ЧЕЛОВЕКА (US-622) — из того же развёртывания, что видит агент.
39
- *
40
- * ЧИСЛА БЕРУТСЯ ИЗ `report()`, А НЕ СОБИРАЮТСЯ ЗДЕСЬ ЗАНОВО. Соблазн написать
41
- * `Balance: ${err.failure.balanceCredits}` велик и стоил бы третьего источника
42
- * правды о том, что значит отказ: MCP говорил бы агенту одно, CLI человеку —
43
- * другое, и разошлись бы они молча, при первой же правке формулировки.
44
- *
45
- * ЧТО ДОБАВЛЯЕТ CLI СВЕРХ ОТЧЁТА — только оформление: код отказа отдельной
46
- * строкой (человек ищет его в доках) и `next_action` как совет. Стек-трейс не
47
- * печатается: у отказа сервера он показывает наши внутренности вместо ответа на
48
- * вопрос «что делать».
49
- */
24
+ /** An API refusal for a human, built from the same `report()` the agent sees so */
25
+ /** CLI and MCP cannot drift. No stack trace: it answers nothing about what to do. */
50
26
  export function formatApiError(error) {
51
27
  const report = error.report();
52
28
  const lines = [`error: ${report.message}`, `code: ${report.code} (HTTP ${error.status})`];
@@ -54,21 +30,8 @@ export function formatApiError(error) {
54
30
  lines.push(report.next_action);
55
31
  return lines.join("\n");
56
32
  }
57
- /**
58
- * Отказ СХЕМЫ для человека (US-622, внешнее ревью круга 8).
59
- *
60
- * Вход отвергается схемой ещё до сети: `--script ""` короче минимума,
61
- * `--voice-id nosuch` не проходит формат вендорского идентификатора. До этой
62
- * ветки такой отказ долетал до пользователя необработанным `ZodError` — стеком
63
- * с путями `core/dist/idempotency.js` и внутренностями регулярок. Человек
64
- * спрашивал про видео, а получал наши кадры стека.
65
- *
66
- * ОПОЗНАЁТСЯ ПО ИМЕНИ, А НЕ ЧЕРЕЗ `instanceof`, и это не небрежность. `zod`
67
- * приходит сюда транзитивно через два пакета, и при разных копиях модуля в
68
- * дереве `instanceof` вернул бы `false` — проверка молча перестала бы работать
69
- * ровно там, где её труднее всего заметить: у потребителя после установки, а не
70
- * у нас. Имя класса и форма `issues` — часть публичного контракта zod.
71
- */
33
+ /** A schema refusal for a human instead of a raw `ZodError` stack. Matched by */
34
+ /** name, not `instanceof`: two zod copies in one install would break `instanceof`. */
72
35
  export function formatSchemaError(error) {
73
36
  if (!(error instanceof Error) || error.name !== "ZodError")
74
37
  return undefined;
@@ -81,8 +44,9 @@ export function formatSchemaError(error) {
81
44
  });
82
45
  return ["error: the request was rejected before it was sent", ...lines].join("\n");
83
46
  }
84
- // Описание голоса каталога бывает абзацем: в строку списка идёт его начало.
47
+ // A catalog description can be a paragraph; the list line shows its start.
85
48
  const VOICE_DESCRIPTION_WIDTH = 100;
49
+ /** Pure formatter for `clipwright voices`. */
86
50
  export function formatVoices(voices) {
87
51
  return voices
88
52
  .map((v) => {
@@ -1 +1 @@
1
- {"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -6,7 +6,7 @@ import { Command, Option } from "commander";
6
6
  import { ACTOR_GENDERS_ACCEPTED, ACTOR_QUALITIES_ACCEPTED, apiBaseUrlFromEnv, ASPECT_RATIOS, CATALOG_GENDERS, CATALOG_LANGUAGES, PUBLIC_APP_BASE_URL, RESOLUTIONS, TTS_MODELS, UPLOAD_MAX_BYTES, VOICE_NAME_PATTERN, VOICE_PRESET_NAMES, sniffUploadMediaType, } from "@clipwright/core";
7
7
  import { ClipwrightApiError, ClipwrightClient, ClipwrightResponseError } from "@clipwright/sdk";
8
8
  import { formatApiError, formatRun, formatSchemaError, formatVoices } from "./format.js";
9
- // Версия — из манифеста: литерал расходился с ним молча, а импорт JSON не проходит `rootDir`.
9
+ // Version from the manifest: a literal drifts, and a JSON import breaks `rootDir`.
10
10
  const { version } = createRequire(import.meta.url)("../package.json");
11
11
  const program = new Command();
12
12
  program.name("clipwright").description("UGC video platform CLI").version(version);
@@ -27,7 +27,7 @@ function client() {
27
27
  }
28
28
  return new ClipwrightClient({ apiKey, baseUrl });
29
29
  }
30
- /** Файл читается и проверяется по сигнатуре ДО сети: расширению и заголовку веры нет. */
30
+ /** Reads the file and checks its signature BEFORE the network; extensions are not trusted. */
31
31
  async function uploadFile(path) {
32
32
  const bytes = new Uint8Array(readFileSync(path));
33
33
  const mediaType = sniffUploadMediaType(bytes);
@@ -46,19 +46,31 @@ async function uploadFile(path) {
46
46
  async function resolveImage(opts) {
47
47
  return opts.imageFile ? uploadFile(opts.imageFile) : opts.image;
48
48
  }
49
- /** Картинка и формат общие у `quote` и `make`: оценка обязана видеть тот же источник, что рендер. */
49
+ /** Image and format options shared by `quote` and `make`, so the quote sees the render's source. */
50
50
  function withSourceOptions(command) {
51
51
  return command
52
52
  .addOption(new Option("--actor-id <id>", "saved actor from the actors catalog").conflicts(["image", "imageFile", "person", "actorGender"]))
53
53
  .addOption(new Option("--image <url>", "public https url of the actor's photo").conflicts("imageFile"))
54
54
  .option("--image-file <path>", "local PNG/JPEG: uploaded first (POST /v1/uploads), then used as --image")
55
- // «Только с --image» Commander не выражает: этот отказ приходит от схемы до сети.
55
+ // Commander cannot express "only with --image"; the schema rejects it before the network.
56
56
  .addOption(new Option("--actor-gender <gender>", "gender of the face in --image; picks the default voice of that gender")
57
57
  .choices(["female", "male"])
58
58
  .conflicts("actorId"))
59
59
  .addOption(new Option("--aspect-ratio <ratio>", "output format; pass it explicitly with a picture").choices(ASPECT_RATIOS))
60
60
  .addOption(new Option("--resolution <size>", "output resolution").choices(RESOLUTIONS));
61
61
  }
62
+ /** --retry is an attempt NUMBER, parsed strictly: the value enters the */
63
+ /** idempotency key, so a lenient parse could buy a second render. */
64
+ function parseRetry(raw) {
65
+ // Same bound as the SDK's `attemptSuffix`: a leading `[1-9]` rejects zero,
66
+ // `isSafeInteger` rejects values too large to stay distinct.
67
+ const parsed = Number.parseInt(raw, 10);
68
+ if (!/^[1-9]\d*$/.test(raw) || !Number.isSafeInteger(parsed)) {
69
+ console.error(`--retry expects a whole number of 1 or more, got ${raw}`);
70
+ process.exit(1);
71
+ }
72
+ return parsed;
73
+ }
62
74
  program
63
75
  .command("upload <path>")
64
76
  .description("upload a local PNG/JPEG and print the https url to pass as --image")
@@ -84,13 +96,10 @@ withSourceOptions(program
84
96
  .description("generate a UGC video and wait for the result")
85
97
  .requiredOption("--script <text>", "the spoken script"))
86
98
  .option("--person <description>", "who says it, in words")
87
- // `--character` СНЯТ вместе с прокидыванием: диспозиция поля — `rejected`
88
- // (реестр в @clipwright/core), сервер отбивает его четырёхсотым. Флаг,
89
- // оставшийся в `--help`, предлагал бы пользователю то, за что мы его
90
- // накажем (блокер B4). Вернётся вместе с персистентными персонажами.
99
+ // No `--character`: the server rejects that field, so offering it would invite a 400.
91
100
  .option("--captions", "burn in word-synced captions")
92
- // Каталог даёт `clipwright voices`; `--voice-id` — escape hatch для голосов вне каталога.
93
- // Здесь проверяется только форма имени: список знает сервер и отвечает 400 до резерва (#164).
101
+ // Only the name's shape is checked here; the server knows the catalog and
102
+ // answers 400 before reserving credits.
94
103
  .option("--voice <name>", `voice name from "clipwright voices" (presets: ${VOICE_PRESET_NAMES.join(", ")})`, (raw) => {
95
104
  if (!VOICE_NAME_PATTERN.test(raw)) {
96
105
  console.error(`--voice expects a voice name (letters, digits, "_" or "-"), got ${JSON.stringify(raw)}; ` +
@@ -99,35 +108,11 @@ withSourceOptions(program
99
108
  }
100
109
  return raw;
101
110
  })
102
- // Взаимную исключительность ловит Commander, а НЕ сервер (внешнее ревью,
103
- // круг 6). Пропусти мы оба флага дальше — `makeUgcInput.parse` отверг бы их
104
- // `ZodError`, который CLI не обрабатывает, и человек вместо «эти два флага
105
- // несовместимы» получил бы стек.
111
+ // Commander catches the conflict, so the user gets "incompatible flags"
112
+ // instead of a schema error.
106
113
  .addOption(new Option("--voice-id <id>", "raw vendor voice id, for voices outside the catalog").conflicts("voice"))
107
114
  .addOption(new Option("--tts-model <model>", "speech model; omitted = the preset's model").choices(TTS_MODELS))
108
- // --retry — НОМЕР попытки (не булев флаг): булев упёрся бы в attempt=2 навсегда
109
- // и второй ретрай вернул бы тот же ран.
110
- //
111
- // РАЗБОР СТРОГИЙ, И ЭТО ДЕНЕЖНЫЙ ВОПРОС. Прежний `parseInt` молча возвращал
112
- // `NaN` на `--retry banana` и `2` на `--retry 2junk`. `NaN` доезжал до
113
- // суффикса ключа идемпотентности, ключ отличался от обычного, и сервер
114
- // запускал ВТОРОЙ платный рендер вместо того, чтобы отбить опечатку.
115
- .option("--retry <n>", "retry attempt number (forces a fresh run)", (raw) => {
116
- // ПРОВЕРЯЕТСЯ И ФОРМА ЗАПИСИ, И САМО ЧИСЛО — граница здесь ровно та же, что
117
- // в `attemptSuffix` у SDK, и разъехаться им нельзя: расхождение означает
118
- // стек вместо отказа.
119
- // `[1-9]` в начале, а не `\d` — иначе ноль проезжал регулярку и падал уже
120
- // в SDK (внешнее ревью, круг 6);
121
- // `isSafeInteger` после разбора — иначе строка из трёхсот девяток давала
122
- // `Infinity`, а соседние огромные целые сливались в одно и переставали
123
- // различать попытки (круг 7).
124
- const parsed = Number.parseInt(raw, 10);
125
- if (!/^[1-9]\d*$/.test(raw) || !Number.isSafeInteger(parsed)) {
126
- console.error(`--retry expects a whole number of 1 or more, got ${raw}`);
127
- process.exit(1);
128
- }
129
- return parsed;
130
- })
115
+ .option("--retry <n>", "retry attempt number (forces a fresh run)", parseRetry)
131
116
  .action(async (opts) => {
132
117
  const run = await client().makeUgc({
133
118
  script: opts.script,
@@ -142,10 +127,8 @@ withSourceOptions(program
142
127
  voice_id: opts.voiceId,
143
128
  tts_model: opts.ttsModel,
144
129
  }, { attempt: opts.retry }, (r) => console.error(`state: ${r.state}`));
145
- // Warnings — в stderr, ролик — в stdout: несоблюдённый параметр обязан
146
- // быть виден человеку, но не должен попадать в пайп, из которого читают
147
- // URL. Молча их проглатывать нельзя (правило проекта №3): CLI —
148
- // единственная поверхность, где их больше никто не покажет.
130
+ // Warnings go to stderr, the URL to stdout: visible to the human, kept
131
+ // out of the pipe that reads the URL.
149
132
  for (const warning of run.warnings) {
150
133
  console.error(`warning: ${warning}`);
151
134
  }
@@ -161,8 +144,7 @@ program
161
144
  program.command("actors").description("list saved actors and verified formats").action(async () => {
162
145
  console.log(JSON.stringify({ actors: await client().listActors() }, null, 2));
163
146
  });
164
- /** Опции описания актёра — одни и те же у оценки и у создания. */
165
- /** Разойдись они, оценка считала бы цену не того, что потом создаётся. */
147
+ /** Actor options shared by quote and create, so the quote prices what gets created. */
166
148
  const withActorOptions = (command) => command
167
149
  .requiredOption("--name <text>", "name shown in the actor list")
168
150
  .requiredOption("--description <text>", "words describing a fictional adult")
@@ -189,6 +171,40 @@ withActorOptions(program.command("quote-actor").description("estimate credits fo
189
171
  withActorOptions(program.command("create-actor").description("create a personal actor from a description (paid)")).action(async (opts) => {
190
172
  console.log(JSON.stringify(await client().createActor(actorInput(opts)), null, 2));
191
173
  });
174
+ /** Faceless options shared by quote and make, so the quote prices what gets made. */
175
+ const withFacelessOptions = (command) => command
176
+ .addOption(new Option("--script <text>", "narration, read as written").conflicts(["scriptFile", "brief"]))
177
+ .addOption(new Option("--script-file <path>", "read the narration from a file").conflicts("brief"))
178
+ .option("--brief <text>", "what the video is about; the narration is written from it")
179
+ .requiredOption("--duration <seconds>", "target length, 30 to 90 seconds")
180
+ .option("--no-captions", "turn off burned-in captions (on by default)")
181
+ .option("--style-reference <url>", "public https image whose visual style the scenes follow")
182
+ .option("--character-reference <url>", "public https image of a person or figure to keep across scenes");
183
+ function facelessInput(opts) {
184
+ const common = {
185
+ duration_seconds: Number(opts.duration),
186
+ captions: opts.captions,
187
+ ...(opts.styleReference === undefined ? {} : { style_reference: opts.styleReference }),
188
+ ...(opts.characterReference === undefined ? {} : { character_reference: opts.characterReference }),
189
+ };
190
+ if (opts.brief !== undefined)
191
+ return { ...common, input_mode: "brief", brief: opts.brief };
192
+ const script = opts.scriptFile === undefined ? opts.script : readFileSync(opts.scriptFile, "utf8");
193
+ if (script === undefined) {
194
+ console.error("pass one of --script, --script-file or --brief");
195
+ process.exit(1);
196
+ }
197
+ return { ...common, input_mode: "script", script };
198
+ }
199
+ withFacelessOptions(program.command("quote-faceless").description("estimate credits for a faceless video without spending them")).action(async (opts) => {
200
+ console.log(JSON.stringify(await client().quoteFaceless(facelessInput(opts)), null, 2));
201
+ });
202
+ withFacelessOptions(program.command("make-faceless").description("start a 30-90 second faceless video (paid); prints the run"))
203
+ .option("--retry <n>", "retry attempt number (forces a fresh run)", parseRetry)
204
+ .action(async (opts) => {
205
+ const run = await client().startFaceless(facelessInput(opts), { attempt: opts.retry });
206
+ console.log(JSON.stringify(run, null, 2));
207
+ });
192
208
  program
193
209
  .command("delete-actor <id>")
194
210
  .description("delete a personal actor of this account")
@@ -220,54 +236,28 @@ program
220
236
  });
221
237
  console.log(formatVoices(voices));
222
238
  });
223
- /**
224
- * Отказ API печатается ответом, а не стек-трейсом (US-622).
225
- *
226
- * До этой обработки `clipwright make` на 402 падал необработанным промисом: имя
227
- * класса, стек до `node:internal`, код выхода 1. Числа отказа в этой куче есть,
228
- * но найти их человек не обязан — он спрашивал про видео, а не про наши кадры
229
- * стека. Прочие ошибки (сеть, отсутствующий `CLIPWRIGHT_CLIENT_ID`) намеренно
230
- * летят как раньше: у них стек и есть полезная часть.
231
- */
232
- /**
233
- * ПРОГРАММА ЭКСПОРТИРУЕТСЯ, А АВТОЗАПУСК ОХРАНЯЕТСЯ (US-614, круг 13 внешней
234
- * приёмки).
235
- *
236
- * ЗАЧЕМ. Лендинг утверждает, что продукт вызывается из CLI, и приёмка
237
- * справедливо возразила: опорой стояли имя пакета и реестр команд, то есть
238
- * ИМЕНА. Мутант «оставить команду, а действие заменить выводом фиктивного
239
- * идентификатора» их не трогал. Проверить поведение можно только вызвав
240
- * программу — а вызвать её из теста было нельзя: `parseAsync()` исполнялся НА
241
- * ИМПОРТЕ, и тест запускал бы саму команду.
242
- *
243
- * Охрана сравнивает исполняемый файл процесса с этим модулем: под `node
244
- * dist/index.js` (и под `bin` пакета) автозапуск происходит как раньше, а
245
- * `import` из теста его не вызывает. Публичное поведение не меняется —
246
- * `bin` остаётся тем же файлом.
247
- */
239
+ /** Exported so tests can drive the program; autorun happens only when this */
240
+ /** module is the process entry point, so importing it runs nothing. */
248
241
  export { program };
249
242
  const isDirectRun = () => {
250
243
  const entry = process.argv[1];
251
244
  if (entry === undefined)
252
245
  return false;
253
- // ⚠️ СРАВНИВАЮТСЯ РЕАЛЬНЫЕ ПУТИ, А НЕ СТРОКИ URL (блокер внешней приёмки,
254
- // круг 14). Первая редакция сравнивала `import.meta.url` с `argv[1]` как есть, и
255
- // под установленным `bin` это ломалось: npm кладёт СИМВОЛЬНУЮ ССЫЛКУ, Node
256
- // разрешает главный модуль до настоящего файла (см. `--preserve-symlinks-main`),
257
- // и пути расходились — то есть `clipwright make` молча не делал ничего. Тест это
258
- // не поймал, потому что звал `program.parseAsync()` в обход охраны; теперь есть
259
- // кейс, запускающий CLI ЧЕРЕЗ ССЫЛКУ.
246
+ // Real paths, not URL strings: npm installs `bin` as a symlink, and Node
247
+ // resolves the main module to the real file.
260
248
  try {
261
249
  return realpathSync(fileURLToPath(import.meta.url)) === realpathSync(entry);
262
250
  }
263
251
  catch {
264
- // Путь не разрешился (файл удалён на ходу) — считаем запуск прямым: молчащий
265
- // CLI хуже лишнего запуска.
252
+ // Unresolvable path (file removed mid-run): assume a direct run, since a
253
+ // silent CLI is worse than an extra run.
266
254
  return true;
267
255
  }
268
256
  };
269
257
  if (isDirectRun())
270
258
  run();
259
+ /** API refusals print as an answer, not a stack; network and other errors */
260
+ /** still throw, since their stack is the useful part. */
271
261
  function run() {
272
262
  program.parseAsync().catch((error) => {
273
263
  if (error instanceof ClipwrightApiError) {
@@ -275,15 +265,14 @@ function run() {
275
265
  process.exitCode = 1;
276
266
  return;
277
267
  }
278
- // Битый ответ сервера — НЕ отказ ввода, и путать их нельзя (внешнее ревью,
279
- // круг 9): на `POST /run` запрос уже ушёл, ран мог быть создан и оплачен.
280
- // Собственное сообщение класса это и говорит; стек тут ничего не добавит.
268
+ // A broken server response is NOT an input error: after `POST /run` the run
269
+ // may be charged, and the class's own message says so.
281
270
  if (error instanceof ClipwrightResponseError) {
282
271
  console.error(`error: ${error.message}`);
283
272
  process.exitCode = 1;
284
273
  return;
285
274
  }
286
- // Отказ схемы — тоже ответ пользователю, а не наш баг (внешнее ревью, круг 8).
275
+ // A schema refusal is an answer to the user too, not our bug.
287
276
  const schema = formatSchemaError(error);
288
277
  if (schema !== undefined) {
289
278
  console.error(schema);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clipwright/cli",
3
- "version": "0.19.0",
3
+ "version": "0.21.0",
4
4
  "description": "Command-line client for the Clipwright UGC video API",
5
5
  "keywords": [
6
6
  "cli",
@@ -28,8 +28,8 @@
28
28
  },
29
29
  "dependencies": {
30
30
  "commander": "^15.0.0",
31
- "@clipwright/core": "0.19.0",
32
- "@clipwright/sdk": "0.19.0"
31
+ "@clipwright/core": "0.21.0",
32
+ "@clipwright/sdk": "0.21.0"
33
33
  },
34
34
  "devDependencies": {
35
35
  "@types/node": "^26.1.1"