@naparnik/mcp 0.10.58 → 0.10.63

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
@@ -1,5 +1,33 @@
1
1
  # Изменения @naparnik/mcp
2
2
 
3
+ ## 0.10.63 — 2026-09-25. Готовый ролик сразу на виду
4
+
5
+ Смонтировал — Claude кладёт файл в Outputs и даёт на него ссылку в ответе.
6
+ Искать по папкам не нужно.
7
+
8
+ ## 0.10.62 — 2026-09-25. Своё не теряется
9
+
10
+ Чего нет в наборе — заставку, анимацию — Claude делает сам и кладёт в папку
11
+ Напарника, а не во временную. В следующий раз находит готовое.
12
+
13
+ ## 0.10.61 — 2026-09-25. Свои шрифты
14
+
15
+ Субтитры и графика рисуются шрифтом вашего стиля. Можно назвать шрифт,
16
+ который стоит у вас на компьютере, или прислать файл шрифта в чат — он
17
+ ляжет к вашим шрифтам.
18
+
19
+ ## 0.10.60 — 2026-09-25. Видно, что происходит
20
+
21
+ На любую долгую работу — монтаж, картинку, что угодно — Claude заводит
22
+ список шагов справа, отмечает каждый и пишет, что сейчас и сколько ждать.
23
+
24
+ ## 0.10.59 — 2026-09-25. Один ролик — одна сборка
25
+
26
+ Попросили собрать ролик ещё раз, пока он собирается, — Напарник не
27
+ начинает заново, а показывает ту же сборку. Поправили ролик и сказали
28
+ «да» — прежняя сборка останавливается, и начинается новая, уже с
29
+ правками. Пять версий для пробного режима — тоже одна сборка.
30
+
3
31
  ## 0.10.58 — 2026-09-25. Ролик — в вашей папке
4
32
 
5
33
  Видео лежит в «Загрузках», а подключена другая папка — ролик всё равно
@@ -754,7 +754,7 @@ function parsePositiveInt(raw, fallback) {
754
754
  }
755
755
 
756
756
  // src/version.ts
757
- var VERSION = "0.10.58";
757
+ var VERSION = "0.10.63";
758
758
  var USER_AGENT = `naparnik-mcp/${VERSION}`;
759
759
  var MIN_ENGINE = "2026.09.24-478";
760
760
  var LAUNCHER_PROTOCOL = 1;
@@ -2074,12 +2074,14 @@ var Engine = class {
2074
2074
  * по своему, и вместе они давали вдвое больше тяжёлой работы, чем разрешено.
2075
2075
  */
2076
2076
  async background(opts) {
2077
- let id;
2077
+ let started;
2078
2078
  try {
2079
- id = await this.asString(opts.place, opts.startJob, opts.key);
2079
+ started = readStarted(await this.asString(opts.place, opts.startJob, opts.key));
2080
2080
  } catch (err) {
2081
2081
  return { refusal: `\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0437\u0430\u0432\u0435\u0441\u0442\u0438 \u0437\u0430\u0434\u0430\u0447\u0443: ${details(err)}` };
2082
2082
  }
2083
+ if (started.verdict === "same") return started;
2084
+ const id = started.id;
2083
2085
  const log = this.openLog(id);
2084
2086
  const child = spawn(opts.executable, opts.args(id), {
2085
2087
  // Та же развилка, что и в `run`: несуществующая папка пака роняет
@@ -2110,7 +2112,7 @@ var Engine = class {
2110
2112
  child.once("error", done);
2111
2113
  }
2112
2114
  this.watch(child, opts.place, id, opts.advice, log.file);
2113
- return { id };
2115
+ return started;
2114
2116
  }
2115
2117
  /**
2116
2118
  * Файл, куда фоновая работа пишет свой stderr.
@@ -2224,6 +2226,14 @@ function parseFailure(err, fallback) {
2224
2226
  function details(err) {
2225
2227
  return parseFailure(err, "").text.trim();
2226
2228
  }
2229
+ function readStarted(line) {
2230
+ if (!line.startsWith("{")) return { id: line, verdict: "new", replaced: [] };
2231
+ const said = JSON.parse(line);
2232
+ if (typeof said.id !== "string" || said.id === "") throw new Error(`\u0434\u0432\u0438\u0436\u043E\u043A \u043D\u0435 \u043D\u0430\u0437\u0432\u0430\u043B \u043D\u043E\u043C\u0435\u0440: ${line}`);
2233
+ const verdict = said.verdict === "same" || said.verdict === "replaced" ? said.verdict : "new";
2234
+ const replaced = Array.isArray(said.replaced) ? said.replaced.filter((i) => typeof i === "string") : [];
2235
+ return { id: said.id, verdict, replaced };
2236
+ }
2227
2237
  function lastLine(output) {
2228
2238
  const lines = output.trim().split("\n");
2229
2239
  return (lines[lines.length - 1] ?? "").trim();
@@ -18604,8 +18614,11 @@ async function startDocumentRender(engine, reel, key, tell, trials = {}) {
18604
18614
  reel,
18605
18615
  "--what",
18606
18616
  what,
18617
+ // `reuse` — просьба к движку решить «та же / заменить / новая» по
18618
+ // заданиям на диске (решение владельца 2026-09-25): решает он, потому что
18619
+ // видит и задания соседнего процесса оболочки.
18607
18620
  "--command",
18608
- JSON.stringify({ tool: "render", args: trials })
18621
+ JSON.stringify({ tool: "render", args: trials, reuse: true })
18609
18622
  ],
18610
18623
  args: (id) => [
18611
18624
  place.consolePy,
@@ -18622,8 +18635,8 @@ async function startDocumentRender(engine, reel, key, tell, trials = {}) {
18622
18635
  });
18623
18636
  if ("refusal" in launch) return toolError(launch.refusal);
18624
18637
  return toolSuccess(
18625
- `\u0417\u0430\u0434\u0430\u0447\u0430 ${launch.id}: ${what}
18626
- \u0414\u0430\u043B\u044C\u0448\u0435 \u043F\u043E\u0437\u043E\u0432\u0438 wait \u0441 \u044D\u0442\u0438\u043C \u043D\u043E\u043C\u0435\u0440\u043E\u043C. ${AWAY_NOTE}`,
18638
+ `${turnWords(launch)}\u0417\u0430\u0434\u0430\u0447\u0430 ${launch.id}: ${what}
18639
+ ` + (launch.verdict === "same" ? "\u0423\u0436\u0435 \u0441\u043E\u0431\u0438\u0440\u0430\u044E \u044D\u0442\u043E\u0442 \u0440\u043E\u043B\u0438\u043A \u2014 \u0436\u0434\u0438 wait \u0441 \u044D\u0442\u0438\u043C \u043D\u043E\u043C\u0435\u0440\u043E\u043C, render \u043F\u043E\u0432\u0442\u043E\u0440\u043D\u043E \u043D\u0435 \u0437\u043E\u0432\u0438." : `\u0414\u0430\u043B\u044C\u0448\u0435 \u043F\u043E\u0437\u043E\u0432\u0438 wait \u0441 \u044D\u0442\u0438\u043C \u043D\u043E\u043C\u0435\u0440\u043E\u043C. ${AWAY_NOTE}`),
18627
18640
  startedJob({
18628
18641
  id: launch.id,
18629
18642
  // Лестница и заголовок — слова человеку: полоса показывает их как есть.
@@ -18633,6 +18646,12 @@ async function startDocumentRender(engine, reel, key, tell, trials = {}) {
18633
18646
  })
18634
18647
  );
18635
18648
  }
18649
+ function turnWords(launch) {
18650
+ const replaced = launch.replaced ?? [];
18651
+ if (launch.verdict !== "replaced" || replaced.length === 0) return "";
18652
+ return `\u041F\u0440\u0435\u0436\u043D\u044E\u044E \u0441\u0431\u043E\u0440\u043A\u0443 (${replaced.join(", ")}) \u043E\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u043B, \u0441\u043E\u0431\u0438\u0440\u0430\u044E \u043F\u043E \u043D\u043E\u0432\u044B\u043C \u043F\u0440\u0430\u0432\u043A\u0430\u043C.
18653
+ `;
18654
+ }
18636
18655
  var RENDER_LADDER = [
18637
18656
  "\u041F\u0440\u043E\u0432\u0435\u0440\u044E, \u0447\u0442\u043E \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442 \u0441\u043E\u0433\u043B\u0430\u0441\u043E\u0432\u0430\u043D \u0438 \u043D\u0435 \u043F\u0440\u0430\u0432\u043B\u0435\u043D \u043C\u0438\u043C\u043E plan_edit.",
18638
18657
  "\u041F\u043E\u0441\u0447\u0438\u0442\u0430\u044E \u044D\u0444\u0444\u0435\u043A\u0442\u044B \u0438\u0441\u0445\u043E\u0434\u043D\u0438\u043A\u0430 (\u0432\u044B\u0440\u0435\u0437 \u0433\u0435\u0440\u043E\u044F, \u0448\u0443\u043C\u043E\u0434\u0430\u0432) \u0442\u0430\u043C, \u0433\u0434\u0435 \u0438\u0445 \u0432\u0438\u0434\u043D\u043E, \u2014 \u043F\u043E\u0442\u043E\u043C \u0441\u043E\u0431\u0435\u0440\u0443 \u043A\u0430\u0440\u0442\u0438\u043D\u043A\u0443 \u0438 \u0437\u0432\u0443\u043A."
@@ -18670,7 +18689,16 @@ async function followAny(engine, asked, pace, tell) {
18670
18689
  const job = readJob(state.text);
18671
18690
  return job === null ? toolSuccess(words) : toolSuccess(words, job);
18672
18691
  }
18673
- return asJobResult(state);
18692
+ return shownFile(state);
18693
+ }
18694
+ function shownFile(state) {
18695
+ const job = state.ok ? readJob(state.text) : null;
18696
+ if (job === null || job.status !== "done" || job.file === "") return asJobResult(state);
18697
+ return toolSuccess(
18698
+ `${state.text}
18699
+ \u0413\u043E\u0442\u043E\u0432\u044B\u0439 \u0444\u0430\u0439\u043B: ${job.file}. \u041F\u043E\u043A\u0430\u0436\u0438 \u0435\u0433\u043E \u0447\u0435\u043B\u043E\u0432\u0435\u043A\u0443: \u043F\u043E\u043B\u043E\u0436\u0438 \u0432 Outputs \u0441\u0432\u043E\u0438\u043C \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043E\u043C, \u0435\u0441\u043B\u0438 \u043E\u043D\u043E \u0443 \u0442\u0435\u0431\u044F \u0435\u0441\u0442\u044C, \u0438 \u0434\u0430\u0439 \u043F\u0443\u0442\u044C \u0441\u0441\u044B\u043B\u043A\u043E\u0439 \u0432 \u043E\u0442\u0432\u0435\u0442\u0435 \u2014 \u0438\u0441\u043A\u0430\u0442\u044C \u043F\u043E \u043F\u0430\u043F\u043A\u0430\u043C \u0435\u043C\u0443 \u043D\u0435 \u043D\u0430\u0434\u043E.`,
18700
+ job
18701
+ );
18674
18702
  }
18675
18703
  async function listJobs(engine, asked) {
18676
18704
  return asToolResult(
@@ -18685,7 +18713,7 @@ function renderTool(engine, _passport, key) {
18685
18713
  return defineTool({
18686
18714
  name: "render",
18687
18715
  title: "\u0421\u043E\u0431\u0440\u0430\u0442\u044C \u0440\u043E\u043B\u0438\u043A",
18688
- description: '\u0421\u043E\u0431\u0438\u0440\u0430\u0435\u0442 \u0441\u043E\u0433\u043B\u0430\u0441\u043E\u0432\u0430\u043D\u043D\u044B\u0439 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442 \u0440\u043E\u043B\u0438\u043A\u0430 \u043D\u0430 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0435 \u0447\u0435\u043B\u043E\u0432\u0435\u043A\u0430: \u044D\u0444\u0444\u0435\u043A\u0442\u044B \u0438\u0441\u0445\u043E\u0434\u043D\u0438\u043A\u0430 (\u0432\u044B\u0440\u0435\u0437 \u0433\u0435\u0440\u043E\u044F, \u0448\u0443\u043C\u043E\u0434\u0430\u0432), \u043A\u0430\u0440\u0442\u0438\u043D\u043A\u0443, \u0437\u0432\u0443\u043A, \u0433\u043E\u0442\u043E\u0432\u044B\u0439 \u0444\u0430\u0439\u043B. \u0417\u043E\u0432\u0438 \u041F\u041E\u0421\u041B\u0415 \u0442\u043E\u0433\u043E, \u043A\u0430\u043A \u0447\u0435\u043B\u043E\u0432\u0435\u043A \u0441\u043A\u0430\u0437\u0430\u043B \xAB\u0434\u0430\xBB \u043D\u0430 \u0447\u0435\u0440\u043D\u043E\u0432\u0438\u043A \u0438\u0437 plan \u0438 \u0442\u044B \u0437\u0430\u043F\u0438\u0441\u0430\u043B \u044D\u0442\u043E plan_edit \u0441 {"op": "agree"}. \u0421\u043E\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044F \u0422\u041E\u041B\u042C\u041A\u041E \u0441\u043E\u0433\u043B\u0430\u0441\u043E\u0432\u0430\u043D\u043D\u044B\u0439 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442, \u0438 \u0442\u043E\u043B\u044C\u043A\u043E \u0437\u0430\u043F\u0438\u0441\u0430\u043D\u043D\u044B\u0439 \u0447\u0435\u0440\u0435\u0437 plan_edit: \u0444\u0430\u0439\u043B, \u043F\u043E\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u043D\u044B\u0439 \u043C\u0438\u043C\u043E \u043D\u0435\u0433\u043E, \u0434\u0432\u0438\u0436\u043E\u043A \u043D\u0435 \u0441\u043E\u0431\u0435\u0440\u0451\u0442 \u2014 \xAB\u043F\u0440\u0438\u0448\u043B\u0438 \u043F\u0440\u0430\u0432\u043A\u0443 \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u044F\u043C\u0438\xBB.\n\u041E\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043D\u043E\u043C\u0435\u0440\u043E\u043C \u0437\u0430\u0434\u0430\u0447\u0438 \u2014 \u0434\u0430\u043B\u044C\u0448\u0435 wait, \u043E\u043D \u043F\u043E\u0434\u043E\u0436\u0434\u0451\u0442 \u0438 \u0440\u0430\u0441\u0441\u043A\u0430\u0436\u0435\u0442 \u0445\u043E\u0434. \u041F\u043E\u0432\u0442\u043E\u0440 \u0431\u0435\u0437 \u043F\u0440\u0430\u0432\u043E\u043A \u043E\u0442\u0434\u0430\u0451\u0442 \u0433\u043E\u0442\u043E\u0432\u043E\u0435 \u0441\u0440\u0430\u0437\u0443.\n\u041F\u0440\u043E\u0441\u044F\u0442 \xAB\u0441\u0434\u0435\u043B\u0430\u0439 \u0435\u0449\u0451 5 \u0434\u043B\u044F \u043F\u0440\u043E\u0431\u043D\u043E\u0433\u043E \u0440\u0435\u0436\u0438\u043C\u0430\xBB (Instagram) \u2014 variants=5: \u0441\u043D\u0430\u0447\u0430\u043B\u0430 \u043E\u0441\u043D\u043E\u0432\u043D\u043E\u0439 \u0440\u043E\u043B\u0438\u043A (\u0433\u043E\u0442\u043E\u0432\u044B\u0439 \u0432\u043E\u0437\u044C\u043C\u0451\u0442\u0441\u044F \u0441\u0440\u0430\u0437\u0443), \u043F\u043E\u0442\u043E\u043C \u0432\u0435\u0440\u0441\u0438\u0438 \u0440\u044F\u0434\u043E\u043C \u0441 \u043D\u0438\u043C \u0444\u0430\u0439\u043B\u0430\u043C\u0438 -trial-1\u2026-trial-5. \u0420\u0435\u0447\u044C, \u0440\u0435\u0437\u044B \u0438 \u0437\u0432\u0443\u043A \u0442\u0435 \u0436\u0435, \u043E\u0442\u043B\u0438\u0447\u0430\u044E\u0442\u0441\u044F \u0434\u0432\u0438\u0436\u0435\u043D\u0438\u0435, \u0432\u0440\u0435\u043C\u044F \u0432\u0441\u0442\u0430\u0432\u043E\u043A, \u043C\u0435\u0441\u0442\u0430 \u0438 \u043A\u0440\u0443\u043F\u043D\u043E\u0441\u0442\u044C; \u0446\u0432\u0435\u0442 \u2014 \u0442\u043E\u043B\u044C\u043A\u043E \u043A\u043E\u0433\u0434\u0430 \u0447\u0435\u043B\u043E\u0432\u0435\u043A \u0441\u043A\u0430\u0437\u0430\u043B \xAB\u0438 \u0446\u0432\u0435\u0442 \u0440\u0430\u0437\u043D\u044B\u0439\xBB: vary \u0441 color. \u041E\u0442\u0434\u0435\u043B\u044C\u043D\u043E\u0433\u043E \xAB\u0434\u0430\xBB \u043D\u0430 \u0432\u0435\u0440\u0441\u0438\u0438 \u043D\u0435 \u043D\u0443\u0436\u043D\u043E. \u041C\u0435\u043D\u044F\u0442\u044C\u0441\u044F \u043D\u0435\u0447\u0435\u043C\u0443 \u2014 \u0434\u0432\u0438\u0436\u043E\u043A \u0441\u043A\u0430\u0436\u0435\u0442, \u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0432\u044B\u0448\u043B\u043E, \u0431\u043B\u0438\u0437\u043D\u0435\u0446\u043E\u0432 \u043D\u0435 \u0431\u0443\u0434\u0435\u0442.\n\u041F\u0440\u043E\u0441\u044F\u0442 \xAB\u043F\u0440\u043E\u0441\u0442\u043E \u0443\u0431\u0435\u0440\u0438 \u043F\u0430\u0443\u0437\u044B\xBB \u2014 only_pauses=true \u0441 video: \u0447\u0435\u0440\u043D\u043E\u0432\u0438\u043A \u0441 \u043E\u0434\u043D\u0438\u043C\u0438 \u043F\u0430\u0443\u0437\u0430\u043C\u0438, \u0441\u043E\u0433\u043B\u0430\u0441\u0438\u0435 \u0438 \u0441\u0431\u043E\u0440\u043A\u0430 \u043E\u0434\u043D\u0438\u043C \u0432\u044B\u0437\u043E\u0432\u043E\u043C; tempo \u0440\u044F\u0434\u043E\u043C \u2014 \xAB\u0438 \u0443\u0441\u043A\u043E\u0440\u044C\xBB. \u041F\u0430\u0443\u0437\u044B \u0443\u0431\u0438\u0440\u0430\u044E\u0442\u0441\u044F \u043F\u043E \u0441\u043B\u043E\u0432\u0430\u043C, \u043F\u043E\u044D\u0442\u043E\u043C\u0443 \u043D\u0443\u0436\u043D\u0430 \u0440\u0430\u0441\u043F\u043E\u0437\u043D\u0430\u043D\u043D\u0430\u044F \u0440\u0435\u0447\u044C.\n\u0420\u0430\u0431\u043E\u0442\u0430 \u0438\u0434\u0451\u0442 \u043D\u0430 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0435 \u0447\u0435\u043B\u043E\u0432\u0435\u043A\u0430, \u043A \u043D\u0430\u043C \u0432\u0438\u0434\u0435\u043E \u043D\u0435 \u0443\u0445\u043E\u0434\u0438\u0442 \u2014 \u043D\u0430\u0432\u0435\u0440\u0445 \u0438\u0434\u0451\u0442 \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0430 \u043F\u043E\u0434\u043F\u0438\u0441\u043A\u0438 \u043F\u043E \u043A\u043B\u044E\u0447\u0443.',
18716
+ description: '\u0421\u043E\u0431\u0438\u0440\u0430\u0435\u0442 \u0441\u043E\u0433\u043B\u0430\u0441\u043E\u0432\u0430\u043D\u043D\u044B\u0439 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442 \u0440\u043E\u043B\u0438\u043A\u0430 \u043D\u0430 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0435 \u0447\u0435\u043B\u043E\u0432\u0435\u043A\u0430: \u044D\u0444\u0444\u0435\u043A\u0442\u044B \u0438\u0441\u0445\u043E\u0434\u043D\u0438\u043A\u0430 (\u0432\u044B\u0440\u0435\u0437 \u0433\u0435\u0440\u043E\u044F, \u0448\u0443\u043C\u043E\u0434\u0430\u0432), \u043A\u0430\u0440\u0442\u0438\u043D\u043A\u0443, \u0437\u0432\u0443\u043A, \u0433\u043E\u0442\u043E\u0432\u044B\u0439 \u0444\u0430\u0439\u043B. \u0417\u043E\u0432\u0438 \u041F\u041E\u0421\u041B\u0415 \u0442\u043E\u0433\u043E, \u043A\u0430\u043A \u0447\u0435\u043B\u043E\u0432\u0435\u043A \u0441\u043A\u0430\u0437\u0430\u043B \xAB\u0434\u0430\xBB \u043D\u0430 \u0447\u0435\u0440\u043D\u043E\u0432\u0438\u043A \u0438\u0437 plan \u0438 \u0442\u044B \u0437\u0430\u043F\u0438\u0441\u0430\u043B \u044D\u0442\u043E plan_edit \u0441 {"op": "agree"}. \u0421\u043E\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044F \u0422\u041E\u041B\u042C\u041A\u041E \u0441\u043E\u0433\u043B\u0430\u0441\u043E\u0432\u0430\u043D\u043D\u044B\u0439 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442, \u0438 \u0442\u043E\u043B\u044C\u043A\u043E \u0437\u0430\u043F\u0438\u0441\u0430\u043D\u043D\u044B\u0439 \u0447\u0435\u0440\u0435\u0437 plan_edit: \u0444\u0430\u0439\u043B, \u043F\u043E\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u043D\u044B\u0439 \u043C\u0438\u043C\u043E \u043D\u0435\u0433\u043E, \u0434\u0432\u0438\u0436\u043E\u043A \u043D\u0435 \u0441\u043E\u0431\u0435\u0440\u0451\u0442 \u2014 \xAB\u043F\u0440\u0438\u0448\u043B\u0438 \u043F\u0440\u0430\u0432\u043A\u0443 \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u044F\u043C\u0438\xBB.\n\u041E\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043D\u043E\u043C\u0435\u0440\u043E\u043C \u0437\u0430\u0434\u0430\u0447\u0438 \u2014 \u0434\u0430\u043B\u044C\u0448\u0435 wait, \u043E\u043D \u043F\u043E\u0434\u043E\u0436\u0434\u0451\u0442 \u0438 \u0440\u0430\u0441\u0441\u043A\u0430\u0436\u0435\u0442 \u0445\u043E\u0434. \u041F\u043E\u043A\u0430 \u0441\u0431\u043E\u0440\u043A\u0430 \u0438\u0434\u0451\u0442, render \u043F\u043E\u0432\u0442\u043E\u0440\u043D\u043E \u043D\u0435 \u0437\u043E\u0432\u0438: \u0442\u043E\u0442 \u0436\u0435 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442 \u0432\u0435\u0440\u043D\u0451\u0442 \u0442\u0443 \u0436\u0435 \u0437\u0430\u0434\u0430\u0447\u0443, \u0430 \u043F\u043E\u0441\u043B\u0435 \u043D\u043E\u0432\u044B\u0445 \u043F\u0440\u0430\u0432\u043E\u043A \u0438 \xAB\u0434\u0430\xBB \u043F\u0440\u0435\u0436\u043D\u044F\u044F \u0441\u0431\u043E\u0440\u043A\u0430 \u043E\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u0441\u044F \u0438 \u043D\u0430\u0447\u043D\u0451\u0442\u0441\u044F \u043D\u043E\u0432\u0430\u044F. \u041F\u043E\u0432\u0442\u043E\u0440 \u0431\u0435\u0437 \u043F\u0440\u0430\u0432\u043E\u043A \u043F\u043E\u0441\u043B\u0435 \u043A\u043E\u043D\u0446\u0430 \u043E\u0442\u0434\u0430\u0451\u0442 \u0433\u043E\u0442\u043E\u0432\u043E\u0435 \u0441\u0440\u0430\u0437\u0443.\n\u041F\u0440\u043E\u0441\u044F\u0442 \xAB\u0441\u0434\u0435\u043B\u0430\u0439 \u0435\u0449\u0451 5 \u0434\u043B\u044F \u043F\u0440\u043E\u0431\u043D\u043E\u0433\u043E \u0440\u0435\u0436\u0438\u043C\u0430\xBB (Instagram) \u2014 variants=5: \u0441\u043D\u0430\u0447\u0430\u043B\u0430 \u043E\u0441\u043D\u043E\u0432\u043D\u043E\u0439 \u0440\u043E\u043B\u0438\u043A (\u0433\u043E\u0442\u043E\u0432\u044B\u0439 \u0432\u043E\u0437\u044C\u043C\u0451\u0442\u0441\u044F \u0441\u0440\u0430\u0437\u0443), \u043F\u043E\u0442\u043E\u043C \u0432\u0435\u0440\u0441\u0438\u0438 \u0440\u044F\u0434\u043E\u043C \u0441 \u043D\u0438\u043C \u0444\u0430\u0439\u043B\u0430\u043C\u0438 -trial-1\u2026-trial-5. \u0420\u0435\u0447\u044C, \u0440\u0435\u0437\u044B \u0438 \u0437\u0432\u0443\u043A \u0442\u0435 \u0436\u0435, \u043E\u0442\u043B\u0438\u0447\u0430\u044E\u0442\u0441\u044F \u0434\u0432\u0438\u0436\u0435\u043D\u0438\u0435, \u0432\u0440\u0435\u043C\u044F \u0432\u0441\u0442\u0430\u0432\u043E\u043A, \u043C\u0435\u0441\u0442\u0430 \u0438 \u043A\u0440\u0443\u043F\u043D\u043E\u0441\u0442\u044C; \u0446\u0432\u0435\u0442 \u2014 \u0442\u043E\u043B\u044C\u043A\u043E \u043A\u043E\u0433\u0434\u0430 \u0447\u0435\u043B\u043E\u0432\u0435\u043A \u0441\u043A\u0430\u0437\u0430\u043B \xAB\u0438 \u0446\u0432\u0435\u0442 \u0440\u0430\u0437\u043D\u044B\u0439\xBB: vary \u0441 color. \u041E\u0442\u0434\u0435\u043B\u044C\u043D\u043E\u0433\u043E \xAB\u0434\u0430\xBB \u043D\u0430 \u0432\u0435\u0440\u0441\u0438\u0438 \u043D\u0435 \u043D\u0443\u0436\u043D\u043E. \u041C\u0435\u043D\u044F\u0442\u044C\u0441\u044F \u043D\u0435\u0447\u0435\u043C\u0443 \u2014 \u0434\u0432\u0438\u0436\u043E\u043A \u0441\u043A\u0430\u0436\u0435\u0442, \u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0432\u044B\u0448\u043B\u043E, \u0431\u043B\u0438\u0437\u043D\u0435\u0446\u043E\u0432 \u043D\u0435 \u0431\u0443\u0434\u0435\u0442.\n\u041F\u0440\u043E\u0441\u044F\u0442 \xAB\u043F\u0440\u043E\u0441\u0442\u043E \u0443\u0431\u0435\u0440\u0438 \u043F\u0430\u0443\u0437\u044B\xBB \u2014 only_pauses=true \u0441 video: \u0447\u0435\u0440\u043D\u043E\u0432\u0438\u043A \u0441 \u043E\u0434\u043D\u0438\u043C\u0438 \u043F\u0430\u0443\u0437\u0430\u043C\u0438, \u0441\u043E\u0433\u043B\u0430\u0441\u0438\u0435 \u0438 \u0441\u0431\u043E\u0440\u043A\u0430 \u043E\u0434\u043D\u0438\u043C \u0432\u044B\u0437\u043E\u0432\u043E\u043C; tempo \u0440\u044F\u0434\u043E\u043C \u2014 \xAB\u0438 \u0443\u0441\u043A\u043E\u0440\u044C\xBB. \u041F\u0430\u0443\u0437\u044B \u0443\u0431\u0438\u0440\u0430\u044E\u0442\u0441\u044F \u043F\u043E \u0441\u043B\u043E\u0432\u0430\u043C, \u043F\u043E\u044D\u0442\u043E\u043C\u0443 \u043D\u0443\u0436\u043D\u0430 \u0440\u0430\u0441\u043F\u043E\u0437\u043D\u0430\u043D\u043D\u0430\u044F \u0440\u0435\u0447\u044C.\n\u0420\u0430\u0431\u043E\u0442\u0430 \u0438\u0434\u0451\u0442 \u043D\u0430 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0435 \u0447\u0435\u043B\u043E\u0432\u0435\u043A\u0430, \u043A \u043D\u0430\u043C \u0432\u0438\u0434\u0435\u043E \u043D\u0435 \u0443\u0445\u043E\u0434\u0438\u0442 \u2014 \u043D\u0430\u0432\u0435\u0440\u0445 \u0438\u0434\u0451\u0442 \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0430 \u043F\u043E\u0434\u043F\u0438\u0441\u043A\u0438 \u043F\u043E \u043A\u043B\u044E\u0447\u0443.',
18689
18717
  // Полоса хода работы: монтаж идёт минутами, и всё это время в ленте не
18690
18718
  // происходило бы ничего. ⚠ Ожидание — у `wait`, и полосы там нет: иначе
18691
18719
  // каждая проверка рисовала бы новую поверх этой.
@@ -19484,6 +19512,13 @@ var DOORS = {
19484
19512
  keys: ["fonts", "alphabet"],
19485
19513
  how: "\u043F\u0435\u0440\u0435\u0447\u0438\u0441\u043B\u044F\u0435\u0442 \u043D\u0430\u0431\u043E\u0440 \u0448\u0440\u0438\u0444\u0442\u043E\u0432 \u0438\u043C\u0435\u043D\u0430\u043C\u0438; \u0440\u043E\u043B\u0438\u043A \u0435\u043C\u0443 \u043D\u0435 \u043D\u0443\u0436\u0435\u043D"
19486
19514
  },
19515
+ // ⚠ ПУТЬ ДАЁТ ЧЕЛОВЕК, А ДВИЖОК КЛАДЁТ КОПИЮ. В стиль путь не пишется никогда
19516
+ // (запрет пути у вариантов, `choices/form.check_variant_edits`): файл
19517
+ // ложится в свои шрифты, и дальше шрифт зовут ИМЕНЕМ, как шрифт набора.
19518
+ font_file: {
19519
+ keys: ["font_file"],
19520
+ how: "\u043A\u043B\u0430\u0434\u0451\u0442 \u0444\u0430\u0439\u043B \u0448\u0440\u0438\u0444\u0442\u0430, \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u0434\u0430\u043B \u0447\u0435\u043B\u043E\u0432\u0435\u043A, \u043A \u0435\u0433\u043E \u0448\u0440\u0438\u0444\u0442\u0430\u043C; \u0440\u043E\u043B\u0438\u043A \u0435\u043C\u0443 \u043D\u0435 \u043D\u0443\u0436\u0435\u043D"
19521
+ },
19487
19522
  style_new: {
19488
19523
  keys: ["style_new"],
19489
19524
  how: "\u0437\u0430\u0432\u043E\u0434\u0438\u0442 \u0447\u0435\u043B\u043E\u0432\u0435\u043A\u0443 \u0441\u0432\u043E\u0439 \u043F\u0430\u043A \u0441\u0442\u0438\u043B\u044F \u0438 \u043E\u0431\u044A\u044F\u0432\u043B\u044F\u0435\u0442 \u0435\u0433\u043E \u0440\u0430\u0431\u043E\u0447\u0438\u043C"
@@ -19508,6 +19543,7 @@ var DOOR_WORDS = {
19508
19543
  cards: "\u043F\u043E\u043A\u0430\u0437 \u043A\u0430\u0440\u0442\u043E\u0447\u0435\u043A",
19509
19544
  style: "\u0440\u0430\u0441\u0441\u043A\u0430\u0437 \u043E \u0441\u0442\u0438\u043B\u0435",
19510
19545
  fonts: "\u043D\u0430\u0431\u043E\u0440 \u0448\u0440\u0438\u0444\u0442\u043E\u0432",
19546
+ font_file: "\u043F\u0440\u0438\u0451\u043C \u0444\u0430\u0439\u043B\u0430 \u0448\u0440\u0438\u0444\u0442\u0430",
19511
19547
  style_new: "\u0437\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u0435 \u0441\u0432\u043E\u0435\u0433\u043E \u0441\u0442\u0438\u043B\u044F",
19512
19548
  style_use: "\u043F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u0435 \u0441\u0442\u0438\u043B\u044F",
19513
19549
  grade: "\u0446\u0432\u0435\u0442 \u043F\u043E \u0434\u0432\u0443\u043C \u043A\u0430\u0434\u0440\u0430\u043C",
@@ -19516,6 +19552,7 @@ var DOOR_WORDS = {
19516
19552
  function doorOf(given2) {
19517
19553
  const opened = [];
19518
19554
  if (given2["fonts"] !== void 0) opened.push("fonts");
19555
+ if (given2["font_file"] !== void 0) opened.push("font_file");
19519
19556
  if (given2["style_new"] !== void 0) opened.push("style_new");
19520
19557
  if (given2["style_use"] !== void 0) opened.push("style_use");
19521
19558
  if (given2["grade_before"] !== void 0 || given2["grade_after"] !== void 0) opened.push("grade");
@@ -19624,7 +19661,7 @@ function chooseVariantTool(engine, key) {
19624
19661
  return defineTool({
19625
19662
  name: "choose_variant",
19626
19663
  title: "\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0432\u0438\u0434 \u0438 \u0441\u0442\u0438\u043B\u044C",
19627
- description: '\u041E\u0434\u043D\u0430 \u0434\u0432\u0435\u0440\u044C \u043A\u043E \u0432\u0441\u0435\u043C\u0443, \u043A\u0430\u043A \u0431\u0443\u0434\u0435\u0442 \u0432\u044B\u0433\u043B\u044F\u0434\u0435\u0442\u044C \u0440\u043E\u043B\u0438\u043A. \u0427\u0442\u043E \u0434\u0435\u043B\u0430\u044E \u2014 \u0440\u0435\u0448\u0430\u044E\u0442 \u0430\u0440\u0433\u0443\u043C\u0435\u043D\u0442\u044B. (1) \u0421 video \u2014 \u0444\u043E\u0440\u043C\u0430 \u0432\u044B\u0431\u043E\u0440\u0430: \u043A\u0430\u0440\u0442\u043E\u0447\u043A\u0438 \u0441 \u043E\u0431\u0440\u0430\u0437\u0446\u0430\u043C\u0438 \u041D\u0410 \u041A\u0410\u0414\u0420\u0415 \u0435\u0433\u043E \u0440\u043E\u043B\u0438\u043A\u0430, \u0447\u0435\u043B\u043E\u0432\u0435\u043A \u0442\u044B\u043A\u0430\u0435\u0442 \u0438 \u0436\u043C\u0451\u0442 \xAB\u0413\u043E\u0442\u043E\u0432\u043E\xBB. \u0417\u043E\u0432\u0438 \u0442\u0430\u043A \u043D\u0430 \u043F\u0435\u0440\u0432\u043E\u043C \u0440\u043E\u043B\u0438\u043A\u0435, \u043A\u043E\u0433\u0434\u0430 \u0447\u0435\u043B\u043E\u0432\u0435\u043A \u043E\u0442\u0432\u0435\u0442\u0438\u043B \u043D\u0430 \u0442\u0432\u043E\u0439 \u0432\u043E\u043F\u0440\u043E\u0441, \u0447\u0442\u043E \u0435\u043C\u0443 \u043D\u0443\u0436\u043D\u043E (questions \u043F\u043E \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u043C \u0440\u0430\u0437\u0434\u0435\u043B\u0430\u043C, \u0438\u043C\u0435\u043D\u0430 \u043B\u0430\u0442\u0438\u043D\u0438\u0446\u0435\u0439 \u0438\u0437 \u043A\u0430\u0442\u0430\u043B\u043E\u0433\u0430 setup, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440 ["captions"]), \u0438 \u043F\u0435\u0440\u0432\u044B\u043C \u043E\u0442\u0432\u0435\u0442\u043E\u043C \u043D\u0430 \xAB\u043F\u043E\u043A\u0430\u0436\u0438 \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u044B \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043E\u0432\xBB, \xAB\u043A\u0430\u043A\u0438\u0435 \u0431\u044B\u0432\u0430\u044E\u0442\xBB, \xAB\u043F\u043E\u043A\u0430\u0436\u0438 \u043E\u0431\u0440\u0430\u0437\u0446\u044B\xBB. (2) \u0411\u0415\u0417 \u0410\u0420\u0413\u0423\u041C\u0415\u041D\u0422\u041E\u0412 \u0412\u041E\u041E\u0411\u0429\u0415 \u2014 \u0440\u0430\u0441\u0441\u043A\u0430\u0436\u0443 \u0441\u043B\u043E\u0432\u0430\u043C\u0438, \u043A\u0430\u043A\u0438\u043C \u0441\u0442\u0438\u043B\u0435\u043C \u043F\u043E\u0439\u0434\u0451\u0442 \u043C\u043E\u043D\u0442\u0430\u0436, \u0447\u0442\u043E \u0432 \u043D\u0451\u043C \u0438 \u043A\u0430\u043A\u0438\u0435 \u0435\u0441\u0442\u044C \u0440\u0430\u0437\u0434\u0435\u043B\u044B \u0432\u043E\u043F\u0440\u043E\u0441\u043E\u0432. \u0417\u043E\u0432\u0438 \u043D\u0430 \xAB\u0430 \u043A\u0430\u043A\u043E\u0439 \u0443 \u043C\u0435\u043D\u044F \u0441\u0442\u0438\u043B\u044C\xBB, \xAB\u0447\u0442\u043E \u0442\u044B \u0443\u043C\u0435\u0435\u0448\u044C \u043C\u0435\u043D\u044F\u0442\u044C\xBB \u0438 \u043F\u0435\u0440\u0435\u0434 \u043F\u0435\u0440\u0432\u044B\u043C \u043C\u043E\u043D\u0442\u0430\u0436\u043E\u043C \u0443 \u043D\u043E\u0432\u043E\u0433\u043E \u0447\u0435\u043B\u043E\u0432\u0435\u043A\u0430. (3) fonts=true \u2014 \u043D\u0430\u0431\u043E\u0440 \u0448\u0440\u0438\u0444\u0442\u043E\u0432 \u0441\u043F\u0438\u0441\u043A\u043E\u043C: \u0438\u043C\u044F \u0414\u041B\u042F \u0421\u0422\u0418\u041B\u042F, \u0430\u043B\u0444\u0430\u0432\u0438\u0442\u044B, \u043B\u0438\u0446\u0435\u043D\u0437\u0438\u044F. \u0417\u043E\u0432\u0438 \u043D\u0430 \xAB\u043A\u0430\u043A\u0438\u0435 \u0435\u0441\u0442\u044C \u0448\u0440\u0438\u0444\u0442\u044B\xBB \u0438 \u043A\u043E\u0433\u0434\u0430 \u0447\u0435\u043B\u043E\u0432\u0435\u043A \u043D\u0430\u0437\u0432\u0430\u043B \u0448\u0440\u0438\u0444\u0442, \u043A\u043E\u0442\u043E\u0440\u043E\u0433\u043E \u0442\u044B \u043D\u0435 \u0437\u043D\u0430\u0435\u0448\u044C: \u0438\u043C\u044F \u0431\u0435\u0440\u0451\u0442\u0441\u044F \u041E\u0422\u0421\u042E\u0414\u0410, \u0430 \u043D\u0435 \u0438\u0437 \u0442\u0432\u043E\u0435\u0439 \u043F\u0430\u043C\u044F\u0442\u0438. \u0420\u043E\u043B\u0438\u043A \u0434\u043B\u044F \u044D\u0442\u043E\u0433\u043E \u043D\u0435 \u043D\u0443\u0436\u0435\u043D. (4) style_new="\u0438\u043C\u044F" \u2014 \u0437\u0430\u0432\u0435\u0441\u0442\u0438 \u0447\u0435\u043B\u043E\u0432\u0435\u043A\u0443 \u0441\u0432\u043E\u0439 \u043F\u0430\u043A \u0441\u0442\u0438\u043B\u044F (\xAB\u0441\u0434\u0435\u043B\u0430\u0439 \u043C\u043E\u0439 \u0441\u0442\u0438\u043B\u044C\xBB). style_use="\u043F\u0430\u043F\u043A\u0430" \u2014 \u043C\u043E\u043D\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0433\u043E\u0442\u043E\u0432\u044B\u043C \u043F\u0430\u043A\u043E\u043C; \u0432\u043C\u0435\u0441\u0442\u0435 \u0441 video \u2014 \u0442\u043E\u043B\u044C\u043A\u043E \u0437\u0430 \u044D\u0442\u0438\u043C \u0440\u043E\u043B\u0438\u043A\u043E\u043C. (5) grade_before \u0438 grade_after \u2014 \u0441\u043D\u044F\u0442\u044C \u0426\u0412\u0415\u0422\u041E\u041A\u041E\u0420 \u0441 \u043F\u0430\u0440\u044B \u043A\u0430\u0434\u0440\u043E\u0432 \u0438 \u043F\u043E\u043B\u043E\u0436\u0438\u0442\u044C \u0444\u0438\u043B\u044C\u0442\u0440 \u0432 \u0441\u0442\u0438\u043B\u044C (\xAB\u0441\u0434\u0435\u043B\u0430\u0439 \u0442\u0430\u043A\u043E\u0439 \u0436\u0435 \u0446\u0432\u0435\u0442\xBB, \xAB\u043F\u0435\u0440\u0435\u043D\u0435\u0441\u0438 \u043C\u043E\u0439 \u0433\u0440\u0435\u0439\u0434 \u0438\u0437 CapCut\xBB). \u041D\u0443\u0436\u043D\u044B \u0434\u0432\u0430 \u043A\u0430\u0434\u0440\u0430: \xAB\u043A\u0430\u043A \u0441\u043D\u044F\u0442\u043E\xBB \u0438\u0437 \u0435\u0433\u043E \u0438\u0441\u0445\u043E\u0434\u043D\u0438\u043A\u0430 \u0438 \xAB\u043A\u0430\u043A \u0445\u043E\u0447\u0443\xBB \u2014 \u0442\u043E\u0442 \u0436\u0435 \u043A\u0430\u0434\u0440 \u043F\u043E\u0441\u043B\u0435 \u0446\u0432\u0435\u0442\u043E\u043A\u043E\u0440\u0440\u0435\u043A\u0446\u0438\u0438; \u0432\u044B\u043D\u0443\u0442\u044C \u043A\u0430\u0434\u0440 \u0443\u043C\u0435\u0435\u0442 preview. \u0427\u0443\u0436\u043E\u0439 \u043A\u0440\u0430\u0441\u0438\u0432\u044B\u0439 \u043A\u0430\u0434\u0440 \u0432\u043C\u0435\u0441\u0442\u043E \u0441\u0432\u043E\u0435\u0433\u043E \u2014 grade_mode="reference". \u042D\u0442\u043E \u0415\u0414\u0418\u041D\u0421\u0422\u0412\u0415\u041D\u041D\u0410\u042F \u043F\u043B\u0430\u0442\u043D\u0430\u044F \u0432\u0435\u0442\u043A\u0430: \u0431\u0435\u0437 \u0436\u0438\u0432\u043E\u0439 \u043F\u043E\u0434\u043F\u0438\u0441\u043A\u0438 \u0434\u0432\u0438\u0436\u043E\u043A \u043E\u0442\u043A\u0430\u0436\u0435\u0442 \u0441\u043B\u043E\u0432\u0430\u043C\u0438. \u26A0 \u0417\u0410 \u041E\u0414\u0418\u041D \u0412\u042B\u0417\u041E\u0412 \u2014 \u041E\u0414\u041D\u041E \u0414\u0415\u041B\u041E. \u0414\u0432\u0430 \u0441\u0440\u0430\u0437\u0443 \u043E\u0442\u043E\u0431\u044C\u044E \u0441\u043B\u043E\u0432\u0430\u043C\u0438. \u26A0 \u041F\u041E\u041A\u0410\u0417\u042B\u0412\u0410\u0419 \u0422\u041E\u041B\u042C\u041A\u041E \u0412\u042B\u0411\u0420\u0410\u041D\u041D\u041E\u0415 \u0418\u041B\u0418 \u0421\u041F\u0420\u041E\u0428\u0415\u041D\u041D\u041E\u0415. \u0412\u044B\u0431\u0440\u0430\u043B \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u044B \u2014 questions=["captions"], \u043F\u0440\u043E\u0441\u0438\u043B \u043F\u0440\u043E \u043F\u0430\u0443\u0437\u044B \u2014 questions=["pauses"]. \u0427\u0435\u0433\u043E \u043E\u043D \u043D\u0435 \u0432\u044B\u0431\u0438\u0440\u0430\u043B \u0438 \u043D\u0435 \u043F\u0440\u043E\u0441\u0438\u043B, \u0442\u043E\u0433\u043E \u043D\u0435 \u0441\u043F\u0440\u0430\u0448\u0438\u0432\u0430\u0439: \u043F\u0440\u043E\u0448\u043B\u044B\u0439 \u0432\u044B\u0431\u043E\u0440 \u043F\u043E\u043C\u043D\u0438\u0442 \u0435\u0433\u043E \u0441\u0442\u0438\u043B\u044C, \u0438 \u043C\u043E\u043D\u0442\u0430\u0436 \u0432\u043E\u0437\u044C\u043C\u0451\u0442 \u043E\u0442\u0442\u0443\u0434\u0430 \u0441\u0430\u043C. \u0411\u0435\u0437 questions \u043F\u0440\u0438\u0434\u0443\u0442 \u0412\u0421\u0415 \u0432\u043E\u043F\u0440\u043E\u0441\u044B \u043F\u0430\u043A\u0430. \u26A0 \u0421\u041D\u0410\u0427\u0410\u041B\u0410 \u0423\u0411\u0415\u0414\u0418\u0421\u042C, \u0427\u0422\u041E \u0414\u0412\u0418\u0416\u041E\u041A \u0421\u0422\u041E\u0418\u0422: \u0431\u0435\u0437 \u043D\u0435\u0433\u043E \u043A\u0430\u0440\u0442\u043E\u0447\u0435\u043A \u043D\u0435 \u0431\u0443\u0434\u0435\u0442. \u041D\u0435\u0442 \u0434\u0432\u0438\u0436\u043A\u0430 \u2014 \u0441\u043F\u0435\u0440\u0432\u0430 setup (\u0441\u043F\u0440\u043E\u0441\u0438 \u0441\u043E\u0433\u043B\u0430\u0441\u0438\u0435 \u0441\u043B\u043E\u0432\u0430\u043C\u0438), \u0438 \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u043E\u0442\u043E\u043C \u0437\u043E\u0432\u0438 \u044D\u0442\u043E. \u0412\u044B\u0431\u043E\u0440 \u0417\u0410\u041F\u041E\u041C\u0418\u041D\u0410\u0415\u0422\u0421\u042F \u0438 \u0438\u0434\u0451\u0442 \u0432 \u043C\u043E\u043D\u0442\u0430\u0436: \u0444\u043E\u0440\u043C\u0430 \u0437\u0430\u043F\u0438\u0448\u0435\u0442 \u0435\u0433\u043E \u0432 \u0441\u0442\u0438\u043B\u044C \u0447\u0435\u043B\u043E\u0432\u0435\u043A\u0430 \u0438 \u0432 \u0435\u0433\u043E \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438, \u0438 \u0432\u0442\u043E\u0440\u043E\u0439 \u0440\u0430\u0437 \u043E\u0431 \u044D\u0442\u043E\u043C \u043D\u0435 \u0441\u043F\u0440\u043E\u0441\u044F\u0442. \u0412\u044B\u0431\u0440\u0430\u0432, \u0447\u0435\u043B\u043E\u0432\u0435\u043A \u043F\u0440\u0438\u0448\u043B\u0451\u0442 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \xAB\u0412\u044B\u0431\u0438\u0440\u0430\u044E: \u2026\xBB \u2014 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438 \u0441\u043B\u043E\u0432\u0430\u043C\u0438, \u0447\u0442\u043E \u0438\u043C\u0435\u043D\u043D\u043E \u0432\u044B\u0431\u0440\u0430\u043D\u043E, \u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0438 \u0441\u043E\u0431\u0440\u0430\u0442\u044C \u0440\u043E\u043B\u0438\u043A. \u041A\u0430\u0440\u0442\u043E\u0447\u0435\u043A \u0432 \u043B\u0435\u043D\u0442\u0435 \u043D\u0435\u0442 (\u0445\u043E\u0441\u0442 \u0431\u0435\u0437 \u0432\u0438\u0434\u0436\u0435\u0442\u043E\u0432, \u043E\u0442\u0432\u0435\u0442 \u043F\u0440\u0438\u0448\u0451\u043B \u0442\u0435\u043A\u0441\u0442\u043E\u043C) \u2014 \u043F\u0435\u0440\u0435\u0447\u0438\u0441\u043B\u0438 \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u044B \u0441\u043B\u043E\u0432\u0430\u043C\u0438 \u0438 \u0437\u0430\u043F\u0438\u0448\u0438 \u043E\u0442\u0432\u0435\u0442 \u0447\u0435\u043B\u043E\u0432\u0435\u043A\u0430 \u0441\u0430\u043C, variant_chosen.',
19664
+ description: '\u041E\u0434\u043D\u0430 \u0434\u0432\u0435\u0440\u044C \u043A\u043E \u0432\u0441\u0435\u043C\u0443, \u043A\u0430\u043A \u0431\u0443\u0434\u0435\u0442 \u0432\u044B\u0433\u043B\u044F\u0434\u0435\u0442\u044C \u0440\u043E\u043B\u0438\u043A. \u0427\u0442\u043E \u0434\u0435\u043B\u0430\u044E \u2014 \u0440\u0435\u0448\u0430\u044E\u0442 \u0430\u0440\u0433\u0443\u043C\u0435\u043D\u0442\u044B. (1) \u0421 video \u2014 \u0444\u043E\u0440\u043C\u0430 \u0432\u044B\u0431\u043E\u0440\u0430: \u043A\u0430\u0440\u0442\u043E\u0447\u043A\u0438 \u0441 \u043E\u0431\u0440\u0430\u0437\u0446\u0430\u043C\u0438 \u041D\u0410 \u041A\u0410\u0414\u0420\u0415 \u0435\u0433\u043E \u0440\u043E\u043B\u0438\u043A\u0430, \u0447\u0435\u043B\u043E\u0432\u0435\u043A \u0442\u044B\u043A\u0430\u0435\u0442 \u0438 \u0436\u043C\u0451\u0442 \xAB\u0413\u043E\u0442\u043E\u0432\u043E\xBB. \u0417\u043E\u0432\u0438 \u0442\u0430\u043A \u043D\u0430 \u043F\u0435\u0440\u0432\u043E\u043C \u0440\u043E\u043B\u0438\u043A\u0435, \u043A\u043E\u0433\u0434\u0430 \u0447\u0435\u043B\u043E\u0432\u0435\u043A \u043E\u0442\u0432\u0435\u0442\u0438\u043B \u043D\u0430 \u0442\u0432\u043E\u0439 \u0432\u043E\u043F\u0440\u043E\u0441, \u0447\u0442\u043E \u0435\u043C\u0443 \u043D\u0443\u0436\u043D\u043E (questions \u043F\u043E \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u043C \u0440\u0430\u0437\u0434\u0435\u043B\u0430\u043C, \u0438\u043C\u0435\u043D\u0430 \u043B\u0430\u0442\u0438\u043D\u0438\u0446\u0435\u0439 \u0438\u0437 \u043A\u0430\u0442\u0430\u043B\u043E\u0433\u0430 setup, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440 ["captions"]), \u0438 \u043F\u0435\u0440\u0432\u044B\u043C \u043E\u0442\u0432\u0435\u0442\u043E\u043C \u043D\u0430 \xAB\u043F\u043E\u043A\u0430\u0436\u0438 \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u044B \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043E\u0432\xBB, \xAB\u043A\u0430\u043A\u0438\u0435 \u0431\u044B\u0432\u0430\u044E\u0442\xBB, \xAB\u043F\u043E\u043A\u0430\u0436\u0438 \u043E\u0431\u0440\u0430\u0437\u0446\u044B\xBB. (2) \u0411\u0415\u0417 \u0410\u0420\u0413\u0423\u041C\u0415\u041D\u0422\u041E\u0412 \u0412\u041E\u041E\u0411\u0429\u0415 \u2014 \u0440\u0430\u0441\u0441\u043A\u0430\u0436\u0443 \u0441\u043B\u043E\u0432\u0430\u043C\u0438, \u043A\u0430\u043A\u0438\u043C \u0441\u0442\u0438\u043B\u0435\u043C \u043F\u043E\u0439\u0434\u0451\u0442 \u043C\u043E\u043D\u0442\u0430\u0436, \u0447\u0442\u043E \u0432 \u043D\u0451\u043C \u0438 \u043A\u0430\u043A\u0438\u0435 \u0435\u0441\u0442\u044C \u0440\u0430\u0437\u0434\u0435\u043B\u044B \u0432\u043E\u043F\u0440\u043E\u0441\u043E\u0432. \u0417\u043E\u0432\u0438 \u043D\u0430 \xAB\u0430 \u043A\u0430\u043A\u043E\u0439 \u0443 \u043C\u0435\u043D\u044F \u0441\u0442\u0438\u043B\u044C\xBB, \xAB\u0447\u0442\u043E \u0442\u044B \u0443\u043C\u0435\u0435\u0448\u044C \u043C\u0435\u043D\u044F\u0442\u044C\xBB \u0438 \u043F\u0435\u0440\u0435\u0434 \u043F\u0435\u0440\u0432\u044B\u043C \u043C\u043E\u043D\u0442\u0430\u0436\u043E\u043C \u0443 \u043D\u043E\u0432\u043E\u0433\u043E \u0447\u0435\u043B\u043E\u0432\u0435\u043A\u0430. (3) fonts=true \u2014 \u043D\u0430\u0431\u043E\u0440 \u0448\u0440\u0438\u0444\u0442\u043E\u0432 \u0441\u043F\u0438\u0441\u043A\u043E\u043C: \u0438\u043C\u044F \u0414\u041B\u042F \u0421\u0422\u0418\u041B\u042F, \u0430\u043B\u0444\u0430\u0432\u0438\u0442\u044B, \u043B\u0438\u0446\u0435\u043D\u0437\u0438\u044F. \u0417\u043E\u0432\u0438 \u043D\u0430 \xAB\u043A\u0430\u043A\u0438\u0435 \u0435\u0441\u0442\u044C \u0448\u0440\u0438\u0444\u0442\u044B\xBB \u0438 \u043A\u043E\u0433\u0434\u0430 \u0447\u0435\u043B\u043E\u0432\u0435\u043A \u043D\u0430\u0437\u0432\u0430\u043B \u0448\u0440\u0438\u0444\u0442, \u043A\u043E\u0442\u043E\u0440\u043E\u0433\u043E \u0442\u044B \u043D\u0435 \u0437\u043D\u0430\u0435\u0448\u044C: \u0438\u043C\u044F \u0431\u0435\u0440\u0451\u0442\u0441\u044F \u041E\u0422\u0421\u042E\u0414\u0410, \u0430 \u043D\u0435 \u0438\u0437 \u0442\u0432\u043E\u0435\u0439 \u043F\u0430\u043C\u044F\u0442\u0438. \u0420\u043E\u043B\u0438\u043A \u0434\u043B\u044F \u044D\u0442\u043E\u0433\u043E \u043D\u0435 \u043D\u0443\u0436\u0435\u043D. \u0412 \u0441\u043F\u0438\u0441\u043A\u0435 \u0438 \u0448\u0440\u0438\u0444\u0442\u044B, \u0441\u0442\u043E\u044F\u0449\u0438\u0435 \u043D\u0430 \u0415\u0413\u041E \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0435, \u0438 \u0435\u0433\u043E \u0441\u0432\u043E\u0438 \u0444\u0430\u0439\u043B\u044B \u2014 \u0441 \u043F\u043E\u043C\u0435\u0442\u043A\u043E\u0439. font_file="\u043F\u0443\u0442\u044C" \u2014 \u0447\u0435\u043B\u043E\u0432\u0435\u043A \u0434\u0430\u043B \u0444\u0430\u0439\u043B \u0448\u0440\u0438\u0444\u0442\u0430 (\xAB\u0432\u043E\u0442 \u0448\u0440\u0438\u0444\u0442, \u0434\u0430\u0432\u0430\u0439 \u0435\u0433\u043E\xBB): \u043F\u043E\u043B\u043E\u0436\u0443 \u043A \u0435\u0433\u043E \u0448\u0440\u0438\u0444\u0442\u0430\u043C \u0438 \u043D\u0430\u0437\u043E\u0432\u0443 \u0438\u043C\u044F; \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u044B \u0438\u043C \u2014 variant_chosen, \u043A\u0430\u043A \u0441\u043A\u0430\u0436\u0443. (4) style_new="\u0438\u043C\u044F" \u2014 \u0437\u0430\u0432\u0435\u0441\u0442\u0438 \u0447\u0435\u043B\u043E\u0432\u0435\u043A\u0443 \u0441\u0432\u043E\u0439 \u043F\u0430\u043A \u0441\u0442\u0438\u043B\u044F (\xAB\u0441\u0434\u0435\u043B\u0430\u0439 \u043C\u043E\u0439 \u0441\u0442\u0438\u043B\u044C\xBB). style_use="\u043F\u0430\u043F\u043A\u0430" \u2014 \u043C\u043E\u043D\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0433\u043E\u0442\u043E\u0432\u044B\u043C \u043F\u0430\u043A\u043E\u043C; \u0432\u043C\u0435\u0441\u0442\u0435 \u0441 video \u2014 \u0442\u043E\u043B\u044C\u043A\u043E \u0437\u0430 \u044D\u0442\u0438\u043C \u0440\u043E\u043B\u0438\u043A\u043E\u043C. (5) grade_before \u0438 grade_after \u2014 \u0441\u043D\u044F\u0442\u044C \u0426\u0412\u0415\u0422\u041E\u041A\u041E\u0420 \u0441 \u043F\u0430\u0440\u044B \u043A\u0430\u0434\u0440\u043E\u0432 \u0438 \u043F\u043E\u043B\u043E\u0436\u0438\u0442\u044C \u0444\u0438\u043B\u044C\u0442\u0440 \u0432 \u0441\u0442\u0438\u043B\u044C (\xAB\u0441\u0434\u0435\u043B\u0430\u0439 \u0442\u0430\u043A\u043E\u0439 \u0436\u0435 \u0446\u0432\u0435\u0442\xBB, \xAB\u043F\u0435\u0440\u0435\u043D\u0435\u0441\u0438 \u043C\u043E\u0439 \u0433\u0440\u0435\u0439\u0434 \u0438\u0437 CapCut\xBB). \u041D\u0443\u0436\u043D\u044B \u0434\u0432\u0430 \u043A\u0430\u0434\u0440\u0430: \xAB\u043A\u0430\u043A \u0441\u043D\u044F\u0442\u043E\xBB \u0438\u0437 \u0435\u0433\u043E \u0438\u0441\u0445\u043E\u0434\u043D\u0438\u043A\u0430 \u0438 \xAB\u043A\u0430\u043A \u0445\u043E\u0447\u0443\xBB \u2014 \u0442\u043E\u0442 \u0436\u0435 \u043A\u0430\u0434\u0440 \u043F\u043E\u0441\u043B\u0435 \u0446\u0432\u0435\u0442\u043E\u043A\u043E\u0440\u0440\u0435\u043A\u0446\u0438\u0438; \u0432\u044B\u043D\u0443\u0442\u044C \u043A\u0430\u0434\u0440 \u0443\u043C\u0435\u0435\u0442 preview. \u0427\u0443\u0436\u043E\u0439 \u043A\u0440\u0430\u0441\u0438\u0432\u044B\u0439 \u043A\u0430\u0434\u0440 \u0432\u043C\u0435\u0441\u0442\u043E \u0441\u0432\u043E\u0435\u0433\u043E \u2014 grade_mode="reference". \u042D\u0442\u043E \u0415\u0414\u0418\u041D\u0421\u0422\u0412\u0415\u041D\u041D\u0410\u042F \u043F\u043B\u0430\u0442\u043D\u0430\u044F \u0432\u0435\u0442\u043A\u0430: \u0431\u0435\u0437 \u0436\u0438\u0432\u043E\u0439 \u043F\u043E\u0434\u043F\u0438\u0441\u043A\u0438 \u0434\u0432\u0438\u0436\u043E\u043A \u043E\u0442\u043A\u0430\u0436\u0435\u0442 \u0441\u043B\u043E\u0432\u0430\u043C\u0438. \u26A0 \u0417\u0410 \u041E\u0414\u0418\u041D \u0412\u042B\u0417\u041E\u0412 \u2014 \u041E\u0414\u041D\u041E \u0414\u0415\u041B\u041E. \u0414\u0432\u0430 \u0441\u0440\u0430\u0437\u0443 \u043E\u0442\u043E\u0431\u044C\u044E \u0441\u043B\u043E\u0432\u0430\u043C\u0438. \u26A0 \u041F\u041E\u041A\u0410\u0417\u042B\u0412\u0410\u0419 \u0422\u041E\u041B\u042C\u041A\u041E \u0412\u042B\u0411\u0420\u0410\u041D\u041D\u041E\u0415 \u0418\u041B\u0418 \u0421\u041F\u0420\u041E\u0428\u0415\u041D\u041D\u041E\u0415. \u0412\u044B\u0431\u0440\u0430\u043B \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u044B \u2014 questions=["captions"], \u043F\u0440\u043E\u0441\u0438\u043B \u043F\u0440\u043E \u043F\u0430\u0443\u0437\u044B \u2014 questions=["pauses"]. \u0427\u0435\u0433\u043E \u043E\u043D \u043D\u0435 \u0432\u044B\u0431\u0438\u0440\u0430\u043B \u0438 \u043D\u0435 \u043F\u0440\u043E\u0441\u0438\u043B, \u0442\u043E\u0433\u043E \u043D\u0435 \u0441\u043F\u0440\u0430\u0448\u0438\u0432\u0430\u0439: \u043F\u0440\u043E\u0448\u043B\u044B\u0439 \u0432\u044B\u0431\u043E\u0440 \u043F\u043E\u043C\u043D\u0438\u0442 \u0435\u0433\u043E \u0441\u0442\u0438\u043B\u044C, \u0438 \u043C\u043E\u043D\u0442\u0430\u0436 \u0432\u043E\u0437\u044C\u043C\u0451\u0442 \u043E\u0442\u0442\u0443\u0434\u0430 \u0441\u0430\u043C. \u0411\u0435\u0437 questions \u043F\u0440\u0438\u0434\u0443\u0442 \u0412\u0421\u0415 \u0432\u043E\u043F\u0440\u043E\u0441\u044B \u043F\u0430\u043A\u0430. \u26A0 \u0421\u041D\u0410\u0427\u0410\u041B\u0410 \u0423\u0411\u0415\u0414\u0418\u0421\u042C, \u0427\u0422\u041E \u0414\u0412\u0418\u0416\u041E\u041A \u0421\u0422\u041E\u0418\u0422: \u0431\u0435\u0437 \u043D\u0435\u0433\u043E \u043A\u0430\u0440\u0442\u043E\u0447\u0435\u043A \u043D\u0435 \u0431\u0443\u0434\u0435\u0442. \u041D\u0435\u0442 \u0434\u0432\u0438\u0436\u043A\u0430 \u2014 \u0441\u043F\u0435\u0440\u0432\u0430 setup (\u0441\u043F\u0440\u043E\u0441\u0438 \u0441\u043E\u0433\u043B\u0430\u0441\u0438\u0435 \u0441\u043B\u043E\u0432\u0430\u043C\u0438), \u0438 \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u043E\u0442\u043E\u043C \u0437\u043E\u0432\u0438 \u044D\u0442\u043E. \u0412\u044B\u0431\u043E\u0440 \u0417\u0410\u041F\u041E\u041C\u0418\u041D\u0410\u0415\u0422\u0421\u042F \u0438 \u0438\u0434\u0451\u0442 \u0432 \u043C\u043E\u043D\u0442\u0430\u0436: \u0444\u043E\u0440\u043C\u0430 \u0437\u0430\u043F\u0438\u0448\u0435\u0442 \u0435\u0433\u043E \u0432 \u0441\u0442\u0438\u043B\u044C \u0447\u0435\u043B\u043E\u0432\u0435\u043A\u0430 \u0438 \u0432 \u0435\u0433\u043E \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438, \u0438 \u0432\u0442\u043E\u0440\u043E\u0439 \u0440\u0430\u0437 \u043E\u0431 \u044D\u0442\u043E\u043C \u043D\u0435 \u0441\u043F\u0440\u043E\u0441\u044F\u0442. \u0412\u044B\u0431\u0440\u0430\u0432, \u0447\u0435\u043B\u043E\u0432\u0435\u043A \u043F\u0440\u0438\u0448\u043B\u0451\u0442 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \xAB\u0412\u044B\u0431\u0438\u0440\u0430\u044E: \u2026\xBB \u2014 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438 \u0441\u043B\u043E\u0432\u0430\u043C\u0438, \u0447\u0442\u043E \u0438\u043C\u0435\u043D\u043D\u043E \u0432\u044B\u0431\u0440\u0430\u043D\u043E, \u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0438 \u0441\u043E\u0431\u0440\u0430\u0442\u044C \u0440\u043E\u043B\u0438\u043A. \u041A\u0430\u0440\u0442\u043E\u0447\u0435\u043A \u0432 \u043B\u0435\u043D\u0442\u0435 \u043D\u0435\u0442 (\u0445\u043E\u0441\u0442 \u0431\u0435\u0437 \u0432\u0438\u0434\u0436\u0435\u0442\u043E\u0432, \u043E\u0442\u0432\u0435\u0442 \u043F\u0440\u0438\u0448\u0451\u043B \u0442\u0435\u043A\u0441\u0442\u043E\u043C) \u2014 \u043F\u0435\u0440\u0435\u0447\u0438\u0441\u043B\u0438 \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u044B \u0441\u043B\u043E\u0432\u0430\u043C\u0438 \u0438 \u0437\u0430\u043F\u0438\u0448\u0438 \u043E\u0442\u0432\u0435\u0442 \u0447\u0435\u043B\u043E\u0432\u0435\u043A\u0430 \u0441\u0430\u043C, variant_chosen.',
19628
19665
  args: external_exports.object({
19629
19666
  video: external_exports.string().describe(
19630
19667
  "\u041F\u0443\u0442\u044C \u043A \u0440\u043E\u043B\u0438\u043A\u0443 \u0447\u0435\u043B\u043E\u0432\u0435\u043A\u0430 \u2014 \u043E\u0431\u0440\u0430\u0437\u0446\u044B \u043F\u0435\u0447\u0430\u0442\u0430\u044E\u0442\u0441\u044F \u043D\u0430 \u0415\u0413\u041E \u043A\u0430\u0434\u0440\u0435. \u0411\u0435\u0437 \u043D\u0435\u0433\u043E \u0440\u0430\u0441\u0441\u043A\u0430\u0436\u0443 \u043F\u0440\u043E \u0441\u0442\u0438\u043B\u044C \u0441\u043B\u043E\u0432\u0430\u043C\u0438"
@@ -19666,6 +19703,9 @@ function chooseVariantTool(engine, key) {
19666
19703
  alphabet: external_exports.enum(["ru", "en"]).optional().describe(
19667
19704
  "\u0422\u043E\u043B\u044C\u043A\u043E \u043A fonts: \u043E\u0441\u0442\u0430\u0432\u0438\u0442\u044C \u0442\u0435, \u0447\u0442\u043E \u043F\u043E\u043A\u0440\u044B\u0432\u0430\u044E\u0442 \u044D\u0442\u043E\u0442 \u0430\u043B\u0444\u0430\u0432\u0438\u0442 \u0446\u0435\u043B\u0438\u043A\u043E\u043C. \u0420\u0435\u0447\u044C \u043F\u043E-\u0440\u0443\u0441\u0441\u043A\u0438 \u2014 \u0431\u0435\u0440\u0438 ru: \u043B\u0430\u0442\u0438\u043D\u0441\u043A\u0438\u0439 \u0448\u0440\u0438\u0444\u0442 \u043F\u043E\u0434 \u0440\u0443\u0441\u0441\u043A\u0438\u0435 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u044B \u0434\u0430\u0451\u0442 \u043E\u0442\u043A\u0430\u0437 \u043D\u0430 \u0437\u0430\u043C\u0435\u0440\u0435"
19668
19705
  ),
19706
+ font_file: external_exports.string().optional().describe(
19707
+ "\u041F\u0443\u0442\u044C \u043A \u0444\u0430\u0439\u043B\u0443 \u0448\u0440\u0438\u0444\u0442\u0430 .ttf \u0438\u043B\u0438 .otf, \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u0447\u0435\u043B\u043E\u0432\u0435\u043A \u0434\u0430\u043B \u0432 \u0447\u0430\u0442\u0435. \u041F\u043E\u043B\u043E\u0436\u0443 \u043A\u043E\u043F\u0438\u044E \u043A \u0435\u0433\u043E \u0448\u0440\u0438\u0444\u0442\u0430\u043C \u2014 \u0434\u0430\u043B\u044C\u0448\u0435 \u0448\u0440\u0438\u0444\u0442 \u0437\u043E\u0432\u0443\u0442 \u043F\u043E \u0438\u043C\u0435\u043D\u0438, \u043F\u0443\u0442\u044C \u0432 \u0441\u0442\u0438\u043B\u044C \u043D\u0435 \u043F\u0438\u0448\u0435\u0442\u0441\u044F"
19708
+ ),
19669
19709
  // ─── свой пак стиля ───────────────────────────────────────────────────
19670
19710
  style_new: external_exports.string().optional().describe(
19671
19711
  "\u0417\u0430\u0432\u0435\u0441\u0442\u0438 \u0447\u0435\u043B\u043E\u0432\u0435\u043A\u0443 \u0441\u0432\u043E\u0439 \u043F\u0430\u043A \u0441\u0442\u0438\u043B\u044F \u0441 \u044D\u0442\u0438\u043C \u0438\u043C\u0435\u043D\u0435\u043C, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440 \xAB\u0421\u0442\u0443\u0434\u0438\u044F \u0420\u043E\u043C\u0430\u0448\u043A\u0430\xBB. \u041B\u043E\u0436\u0438\u0442\u0441\u044F \u0432 \u0434\u043E\u043C \u041D\u0430\u043F\u0430\u0440\u043D\u0438\u043A\u0430 \u2014 \u0442\u0443\u0434\u0430 \u0436\u0435, \u043A\u0443\u0434\u0430 \u0444\u043E\u0440\u043C\u0430 \u043F\u0438\u0448\u0435\u0442 \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u043E\u0435"
@@ -19708,6 +19748,7 @@ function chooseVariantTool(engine, key) {
19708
19748
  limit: input.limit,
19709
19749
  fonts: input.fonts === true ? true : void 0,
19710
19750
  alphabet: input.alphabet,
19751
+ font_file: input.font_file,
19711
19752
  style_new: input.style_new,
19712
19753
  style_use: input.style_use,
19713
19754
  grade_before: input.grade_before,
@@ -19723,6 +19764,8 @@ function chooseVariantTool(engine, key) {
19723
19764
  return styleInWords(engine);
19724
19765
  case "fonts":
19725
19766
  return fontsBranch(engine, input.alphabet);
19767
+ case "font_file":
19768
+ return fontFile(engine, input.font_file ?? "");
19726
19769
  case "style_new":
19727
19770
  return styleNew(engine, input.style_new ?? "");
19728
19771
  case "style_use":
@@ -19822,6 +19865,13 @@ async function styleNew(engine, name) {
19822
19865
  if (!answer.ok) return toolError(answer.text);
19823
19866
  return inWords("\u0421\u0432\u043E\u0439 \u0441\u0442\u0438\u043B\u044C", answer.text);
19824
19867
  }
19868
+ async function fontFile(engine, file2) {
19869
+ const where = fileOrRefusal(file2);
19870
+ if ("refusal" in where) return toolError(where.refusal);
19871
+ const answer = await engine.command(["font-add", where.path]);
19872
+ if (!answer.ok) return toolError(answer.text);
19873
+ return inWords("\u0422\u0432\u043E\u0439 \u0448\u0440\u0438\u0444\u0442", answer.text);
19874
+ }
19825
19875
  async function styleUse(engine, folder, video) {
19826
19876
  const answer = await engine.command([
19827
19877
  "style-choose",
package/dist/cli.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { Engine, chooseBody, handOverToBody, VERSION, rollback, rollbackShell, remove, fromNpxCache, install, keyFromBlock, readConfig, ForeignBlockError, McpServer, watchProcessCrashes, reportInstallFaults, noteInstallFault, StdioServerTransport, fromHost, WHERE_TO_GET_KEY, Wakefulness, systemBlocker, updateEngine, installStep, currentMachineFingerprint, CrashReporter, whenNewerReleased, buildAll, realPace, buildResources, shellDir, describeFailure, compare, toolError, NaparnikApiClient, ownSetupJobRunning, forModel, installedShell, startSetupJob, TITLE_UPDATE, runUpdate, setupJobDone, reportJobFaults, setupJobEnding, NaparnikConfigError, installMissing } from './chunk-GYEZTFBJ.js';
2
+ import { Engine, chooseBody, handOverToBody, VERSION, rollback, rollbackShell, remove, fromNpxCache, install, keyFromBlock, readConfig, ForeignBlockError, McpServer, watchProcessCrashes, reportInstallFaults, noteInstallFault, StdioServerTransport, fromHost, WHERE_TO_GET_KEY, Wakefulness, systemBlocker, updateEngine, installStep, currentMachineFingerprint, CrashReporter, whenNewerReleased, buildAll, realPace, buildResources, shellDir, describeFailure, compare, toolError, NaparnikApiClient, ownSetupJobRunning, forModel, installedShell, startSetupJob, TITLE_UPDATE, runUpdate, setupJobDone, reportJobFaults, setupJobEnding, NaparnikConfigError, installMissing } from './chunk-462VNZIW.js';
3
3
  import { realpathSync, readFileSync } from 'fs';
4
4
  import { join } from 'path';
5
5
  import { fileURLToPath, pathToFileURL } from 'url';
@@ -27,28 +27,29 @@ var WHAT_IS_IT = `
27
27
  var HOW_MONTAGE_WORKS = `
28
28
  \u041A\u0410\u041A \u041C\u041E\u041D\u0422\u0418\u0420\u041E\u0412\u0410\u0422\u042C
29
29
 
30
- 1. setup \u041F\u0415\u0420\u0412\u042B\u041C \u043D\u0430 \u043B\u044E\u0431\u0443\u044E \u043F\u0440\u043E\u0441\u044C\u0431\u0443 \u0438 \xAB\u0443\u043C\u0435\u0435\u0448\u044C \u043B\u0438\xBB: \u0447\u0442\u043E \u0441\u0442\u043E\u0438\u0442, \u0447\u0435\u0439 \u0441\u0442\u0438\u043B\u044C,
31
- \u043E\u0433\u043B\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0421\u041F\u0420\u0410\u0412\u041E\u0427\u041D\u0418\u041A\u0410 \u041C\u041E\u041D\u0422\u0410\u0416\u0401\u0420\u0410. \u0427\u0442\u043E \u0443\u043C\u0435\u0435\u0448\u044C \u2014 \u0438\u0437 \u0441\u043F\u0440\u0430\u0432\u043E\u0447\u043D\u0438\u043A\u0430,
32
- \u043D\u0435 \u0438\u0437 \u043F\u0430\u043C\u044F\u0442\u0438: \xAB\u043D\u0435 \u0443\u043C\u0435\u044E\xBB \u0431\u0435\u0437 \u043D\u0435\u0433\u043E \u043D\u0435 \u0433\u043E\u0432\u043E\u0440\u0438.
33
- 2. \u0421\u0442\u0440\u0430\u043D\u0438\u0446\u044B \u0437\u0430\u0434\u0430\u0447\u0438 \u0438\u0437 \u043E\u0433\u043B\u0430\u0432\u043B\u0435\u043D\u0438\u044F \u0438 \u043E\u0442\u0432\u0435\u0442\u043E\u0432 \u043F\u0440\u043E\u0447\u0442\u0438 plan \u0441 read
34
- \u0414\u041E \u043E\u0442\u0432\u0435\u0442\u0430.
30
+ 1. setup \u041F\u0415\u0420\u0412\u042B\u041C \u043D\u0430 \u043B\u044E\u0431\u0443\u044E \u043F\u0440\u043E\u0441\u044C\u0431\u0443 \u0438 \xAB\u0443\u043C\u0435\u0435\u0448\u044C \u043B\u0438\xBB: \u0447\u0442\u043E \u0441\u0442\u043E\u0438\u0442,
31
+ \u043E\u0433\u043B\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0421\u041F\u0420\u0410\u0412\u041E\u0427\u041D\u0418\u041A\u0410 \u041C\u041E\u041D\u0422\u0410\u0416\u0401\u0420\u0410. \u0423\u043C\u0435\u043D\u0438\u044F \u043D\u0435 \u0438\u0437 \u043F\u0430\u043C\u044F\u0442\u0438:
32
+ \xAB\u043D\u0435 \u0443\u043C\u0435\u044E\xBB \u0431\u0435\u0437 \u043D\u0435\u0433\u043E \u043D\u0435 \u0433\u043E\u0432\u043E\u0440\u0438.
33
+ 2. \u0421\u0442\u0440\u0430\u043D\u0438\u0446\u044B \u0437\u0430\u0434\u0430\u0447\u0438 \u043F\u0440\u043E\u0447\u0442\u0438 plan \u0441 read \u0414\u041E \u043E\u0442\u0432\u0435\u0442\u0430.
35
34
  3. plan \u0441 video \u2014 \u0427\u0415\u0420\u041D\u041E\u0412\u0418\u041A: \u043F\u0435\u0440\u0435\u0441\u043A\u0430\u0436\u0438 \u041F\u041E\u0421\u0422\u0420\u041E\u0427\u041D\u041E \u0438 \u043E\u0431\u0441\u0443\u0434\u0438, \u043F\u0440\u0430\u0432\u043A\u0438 \u2014
36
35
  plan_edit. \u041F\u0440\u043E\u0441\u044C\u0431\u0430 \u043F\u0440\u043E \u043E\u0434\u043D\u043E \u2014 ask \u0435\u0451 \u0440\u0430\u0437\u0434\u0435\u043B\u0430\u043C\u0438 \u0438\u043B\u0438 {}
37
- (\u0441\u043B\u043E\u0432\u043E, \u043E\u0433\u043E\u0432\u043E\u0440\u043A\u0430 \u2014 {"speech":{}}): \u0432 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0435 \u0442\u043E\u043B\u044C\u043A\u043E \u043E\u043D\u0430.
38
- 4. \u0421\u0442\u0438\u043B\u044C \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u044B\u0439 \u2014 \u0414\u041E \xAB\u0434\u0430\xBB \u0441\u043F\u0440\u043E\u0441\u0438 \u041E\u0414\u0418\u041D \u0440\u0430\u0437, \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u0430\u043C\u0438 \u043F\u043E \u0440\u0430\u0437\u0434\u0435\u043B\u0430\u043C
39
- (\u0441\u0443\u0431\u0442\u0438\u0442\u0440\u044B, \u0446\u0432\u0435\u0442, \u043F\u0430\u0443\u0437\u044B, \u0441\u0432\u043E\u0439 \u0441\u0442\u0438\u043B\u044C): AskUserQuestion, \u0438\u043D\u0430\u0447\u0435 \u0441\u043B\u043E\u0432\u0430\u043C\u0438 \u0441
40
- \u043D\u043E\u043C\u0435\u0440\u0430\u043C\u0438. \u0412\u044B\u0431\u0440\u0430\u043D\u043D\u043E\u0435 \u2014 choose_variant(questions=[\u0440\u0430\u0437\u0434\u0435\u043B\u044B]);
41
- \u043D\u0438\u0447\u0435\u0433\u043E \u2014 variant_chosen \u0441 keep=true. \u0421\u0442\u0438\u043B\u044C \u0443\u0436\u0435 \u0441\u0432\u043E\u0439 \u2014 \u043D\u0435 \u0441\u043F\u0440\u0430\u0448\u0438\u0432\u0430\u0439.
36
+ (\u0441\u043B\u043E\u0432\u043E, \u043E\u0433\u043E\u0432\u043E\u0440\u043A\u0430 \u2014 {"speech":{}}).
37
+ 4. \u0421\u0442\u0438\u043B\u044C \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u044B\u0439 \u2014 \u0414\u041E \xAB\u0434\u0430\xBB \u0441\u043F\u0440\u043E\u0441\u0438 \u041E\u0414\u0418\u041D \u0440\u0430\u0437 \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u0430\u043C\u0438 \u043F\u043E \u0440\u0430\u0437\u0434\u0435\u043B\u0430\u043C
38
+ (\u0438 \u0441\u0432\u043E\u0439 \u0441\u0442\u0438\u043B\u044C): AskUserQuestion \u0438\u043B\u0438 \u0441\u043B\u043E\u0432\u0430\u043C\u0438 \u0441 \u043D\u043E\u043C\u0435\u0440\u0430\u043C\u0438. \u0412\u044B\u0431\u043E\u0440 \u2014
39
+ choose_variant(questions=[\u0440\u0430\u0437\u0434\u0435\u043B\u044B]); \u043D\u0438\u0447\u0435\u0433\u043E \u2014
40
+ variant_chosen \u0441 keep=true. \u0421\u0442\u0438\u043B\u044C \u0441\u0432\u043E\u0439 \u2014 \u043D\u0435 \u0441\u043F\u0440\u0430\u0448\u0438\u0432\u0430\u0439.
42
41
  5. \u0411\u0435\u0437 \xAB\u0434\u0430\xBB \u043D\u0435 \u0441\u043E\u0431\u0438\u0440\u0430\u0439; \u0441\u043A\u0430\u0437\u0430\u043B \u2014 plan_edit \u0441 agree, \u043F\u043E\u0442\u043E\u043C render:
43
- \u0432\u0435\u0440\u043D\u0451\u0442 \u041D\u041E\u041C\u0415\u0420 \u0417\u0410\u0414\u0410\u0427\u0418, \u0436\u0434\u0438 wait, \u043F\u0435\u0440\u0435\u0441\u043A\u0430\u0437\u044B\u0432\u0430\u0439 \u0448\u0430\u0433\u0438 \u0432 \u0447\u0435\u043A-\u043B\u0438\u0441\u0442\u0435 (TaskUpdate),
44
- \u043C\u043E\u043B\u0447\u0430\u043D\u0438\u0435 \u2014 \xAB\u0437\u0430\u0432\u0438\u0441\u043B\u043E\xBB. \u0413\u043E\u0442\u043E\u0432\u043E \u2014 preview.
45
- 6. \u041F\u0440\u0430\u0432\u043A\u0430 \u0436\u0434\u0451\u0442 \u043F\u0435\u0447\u0430\u0442\u044C \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u044B (stamps, document/edits.md), \u0438\u043D\u0430\u0447\u0435
46
- plan_edit \u043E\u0442\u043A\u0430\u0436\u0435\u0442 \u0438 \u043F\u0440\u0438\u0448\u043B\u0451\u0442 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0443.
42
+ \u0432\u0435\u0440\u043D\u0451\u0442 \u041D\u041E\u041C\u0415\u0420 \u0417\u0410\u0414\u0410\u0427\u0418, \u0436\u0434\u0438 wait. \u0413\u043E\u0442\u043E\u0432\u043E \u2014 preview.
43
+ 6. \u041F\u0440\u0430\u0432\u043A\u0430 \u0436\u0434\u0451\u0442 \u043F\u0435\u0447\u0430\u0442\u044C (stamps), \u0438\u043D\u0430\u0447\u0435 plan_edit \u043E\u0442\u043A\u0430\u0436\u0435\u0442 \u0438 \u043F\u0440\u0438\u0448\u043B\u0451\u0442 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0443.
47
44
  7. \u0422\u044F\u0436\u0451\u043B\u043E\u0435 (\u0432\u044B\u0440\u0435\u0437 \u0433\u0435\u0440\u043E\u044F, \u0440\u0430\u0441\u043F\u043E\u0437\u043D\u0430\u0432\u0430\u043D\u0438\u0435 \u0440\u0435\u0447\u0438) \u2014 \u041F\u041E \u041F\u0420\u041E\u0421\u042C\u0411\u0415, \u0432\u0435\u0441 \u0438\u0437 setup.
48
45
  \xAB\u0414\u0430\xBB, \xAB\u043E\u0431\u043D\u043E\u0432\u0438\xBB \u2014 \u041E\u0414\u0418\u041D install, \u0434\u0430\u043B\u044C\u0448\u0435 wait.
46
+ 8. \u041D\u0435\u0442 \u0433\u043E\u0442\u043E\u0432\u043E\u0433\u043E \u2014 \u0441\u0432\u043E\u0451 \u043F\u0430\u043A\u0435\u0442\u043E\u043C \u0438\u043B\u0438 \u0448\u0430\u0433\u043E\u043C \u0432 \u043F\u0430\u043F\u043A\u0443 \u0440\u043E\u043B\u0438\u043A\u0430, \u043D\u0435
47
+ \u0441\u043A\u0440\u0438\u043F\u0442\u043E\u043C; \u0441\u0434\u0435\u043B\u0430\u043B \u2014 remember \u0438 notes.
49
48
 
49
+ \u041B\u044E\u0431\u0430\u044F \u0440\u0430\u0431\u043E\u0442\u0430, \u0438 \u0447\u0443\u0436\u0430\u044F, \u2014 \u043F\u043B\u0430\u043D \u0432 \u0447\u0435\u043A-\u043B\u0438\u0441\u0442\u0435 (TaskUpdate);
50
+ \u043F\u0435\u0440\u0435\u0441\u043A\u0430\u0437\u044B\u0432\u0430\u0439, \u0447\u0442\u043E \u0441\u0435\u0439\u0447\u0430\u0441 \u0438 \u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0436\u0434\u0430\u0442\u044C. \u041C\u043E\u043B\u0447\u0430\u043D\u0438\u0435 \u2014 \xAB\u0437\u0430\u0432\u0438\u0441\u043B\u043E\xBB.
50
51
  \u0421\u043F\u0440\u0430\u0432\u043E\u0447\u043D\u0438\u043A \u0433\u043E\u0434\u0438\u0442\u0441\u044F \u0438 \u0431\u0435\u0437 \u0440\u043E\u043B\u0438\u043A\u0430: \u043F\u0440\u0435\u0437\u0435\u043D\u0442\u0430\u0446\u0438\u044F.
51
- \u041D\u0435 \u0432\u044B\u0434\u0443\u043C\u044B\u0432\u0430\u0439; \u0432\u0440\u0435\u043C\u044F \u2014 \u0442\u043E\u043B\u044C\u043A\u043E \u043E\u0442 \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u0430; \u043A\u0430\u043A \u0443\u0441\u0442\u0440\u043E\u0435\u043D\u043E \u2014 \u043D\u0435 \u0440\u0430\u0441\u0441\u043A\u0430\u0437\u044B\u0432\u0430\u0439.
52
+ \u041D\u0435 \u0432\u044B\u0434\u0443\u043C\u044B\u0432\u0430\u0439; \u0432\u0440\u0435\u043C\u044F \u2014 \u043E\u0442 \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u0430; \u043A\u0430\u043A \u0443\u0441\u0442\u0440\u043E\u0435\u043D\u043E \u2014 \u043D\u0435 \u0440\u0430\u0441\u0441\u043A\u0430\u0437\u044B\u0432\u0430\u0439.
52
53
  `.trim();
53
54
  function notConfiguredInstructions(problem, detail) {
54
55
  const diagnosis = problem === "missing_key" ? "\u041A\u043B\u044E\u0447 \u0434\u043E\u0441\u0442\u0443\u043F\u0430 \u043D\u0435 \u0437\u0430\u0434\u0430\u043D." : `\u041A\u043B\u044E\u0447 \u0437\u0430\u0434\u0430\u043D, \u043D\u043E \u0432\u044B\u0433\u043B\u044F\u0434\u0438\u0442 \u043D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u043E. ${detail}`;
package/dist/index.d.ts CHANGED
@@ -551,9 +551,7 @@ declare class Engine {
551
551
  * как уже сделано у скачивания движка (`run`, поле `key`).
552
552
  */
553
553
  key: string | undefined;
554
- }): Promise<{
555
- id: string;
556
- } | {
554
+ }): Promise<StartedJob | {
557
555
  refusal: string;
558
556
  }>;
559
557
  /**
@@ -615,6 +613,20 @@ declare function fileOrRefusal(candidate: string): {
615
613
  */
616
614
  declare function parseFailure(err: unknown, fallback: string): CommandOutcome;
617
615
  /** Последняя непустая строка вывода — там, где команда печатает результат. */
616
+ /**
617
+ * Что ответил `job-create`: номер и решение о повторной сборке.
618
+ *
619
+ * `verdict` бывает, только когда оболочка о нём попросила (`reuse` в
620
+ * `--command`, `render-tool.ts`): тогда движок печатает JSON. Прежний движок
621
+ * про `reuse` не знает и печатает голый номер — это «новая задача», как было.
622
+ */
623
+ interface StartedJob {
624
+ id: string;
625
+ /** `same` — эта сборка уже идёт, `replaced` — прежние остановлены, `new` — просто новая. */
626
+ verdict?: 'new' | 'same' | 'replaced';
627
+ /** Номера остановленных сборок этого ролика. */
628
+ replaced?: string[];
629
+ }
618
630
  declare function lastLine(output: string): string;
619
631
 
620
632
  /**
@@ -1197,9 +1209,9 @@ declare class NaparnikConfigError extends NaparnikError {
1197
1209
  * годится ли она для новой начинки: разойдись она с пакетом, и в логах будет
1198
1210
  * стоять чужое число, а обновление начнёт считать оболочку не той.
1199
1211
  */
1200
- declare const VERSION = "0.10.58";
1212
+ declare const VERSION = "0.10.63";
1201
1213
  /** Как мы представляемся серверу Напарника. По нему в логах видно оболочку. */
1202
- declare const USER_AGENT = "naparnik-mcp/0.10.58";
1214
+ declare const USER_AGENT = "naparnik-mcp/0.10.63";
1203
1215
  /**
1204
1216
  * Самая старая начинка (движок монтажа), с которой эта оболочка работает.
1205
1217
  * Обновление начинки ниже этой версии не ставится, а выше — требует оболочки
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- export { DEFAULT_HOME, DeliveryError, Engine, ForeignBlockError, INSTALL_STEPS, KEEP_COPIES, KEEP_VERSIONS, LOCK_FILE, LONG_STEPS, MANIFEST_TIMEOUT_MS, MANIFEST_URL, MARKER, MIN_ENGINE, NaparnikApiClient, NaparnikAuthError, NaparnikClientError, NaparnikConfigError, NaparnikError, NaparnikInsufficientBalanceError, NaparnikScopeError, NaparnikServerError, NaparnikTimeoutError, PAUSE_HOURS, SERVER_NAME, START_SEC, TOOL_SEC, USER_AGENT, VERSION, bringPython, buildAll, buildBlock, buildResources, compare, configPath, decide, defineTool, depFolderName, deploy, downloadFile, fetchManifest, fileOrRefusal, findBlock, fromNpxCache, inside, install, installPayload, jsonSchemaOf, keyInTable, lastLine, loadConfig, lockedPython, markChecked, markCurrent, parseEngineManifest, parseFailure, path, platformKey, previousVersion, probe, refusalFor, remove, rollback, tarEntries, tidyOld, timeToCheck, unpackArchive, withArgs } from './chunk-GYEZTFBJ.js';
1
+ export { DEFAULT_HOME, DeliveryError, Engine, ForeignBlockError, INSTALL_STEPS, KEEP_COPIES, KEEP_VERSIONS, LOCK_FILE, LONG_STEPS, MANIFEST_TIMEOUT_MS, MANIFEST_URL, MARKER, MIN_ENGINE, NaparnikApiClient, NaparnikAuthError, NaparnikClientError, NaparnikConfigError, NaparnikError, NaparnikInsufficientBalanceError, NaparnikScopeError, NaparnikServerError, NaparnikTimeoutError, PAUSE_HOURS, SERVER_NAME, START_SEC, TOOL_SEC, USER_AGENT, VERSION, bringPython, buildAll, buildBlock, buildResources, compare, configPath, decide, defineTool, depFolderName, deploy, downloadFile, fetchManifest, fileOrRefusal, findBlock, fromNpxCache, inside, install, installPayload, jsonSchemaOf, keyInTable, lastLine, loadConfig, lockedPython, markChecked, markCurrent, parseEngineManifest, parseFailure, path, platformKey, previousVersion, probe, refusalFor, remove, rollback, tarEntries, tidyOld, timeToCheck, unpackArchive, withArgs } from './chunk-462VNZIW.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@naparnik/mcp",
3
- "version": "0.10.58",
3
+ "version": "0.10.63",
4
4
  "description": "MCP-сервер Напарника: монтаж вертикального видео на машине пользователя — паузы, субтитры, герой на новом фоне, звук. Видео никуда не уезжает.",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "private": false,