@naparnik/mcp 0.10.41 → 0.10.42
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 +8 -0
- package/dist/{chunk-EOGD2CRG.js → chunk-5E3UBSQQ.js} +120 -79
- package/dist/cli.js +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Изменения @naparnik/mcp
|
|
2
2
|
|
|
3
|
+
## 0.10.42 — 2026-09-24. Карточка говорит проще
|
|
4
|
+
|
|
5
|
+
Под проверкой пять строк вместо десяти: монтаж, субтитры, графика и
|
|
6
|
+
анимация, замена фона, чистка голоса. Сверху сразу видно, всё ли готово
|
|
7
|
+
или сколько нужно скачать. Чтобы докачать, просто напиши «скачай».
|
|
8
|
+
|
|
9
|
+
Пока идёт установка, наверху написано, что ставится: «Ставлю субтитры».
|
|
10
|
+
|
|
3
11
|
## 0.10.41 — 2026-09-24. Новый файл из бота не выключает монтаж раньше времени
|
|
4
12
|
|
|
5
13
|
Взяли в боте новый файл — прежняя установка работает, пока вы его не
|
|
@@ -673,6 +673,7 @@ function describeFailure(err) {
|
|
|
673
673
|
|
|
674
674
|
// src/key-source.ts
|
|
675
675
|
var KEY_SOURCE_BOT = "t.me/ai_montazh_bot";
|
|
676
|
+
var KEY_SOURCE_HANDLE = `@${KEY_SOURCE_BOT.split("/").pop() ?? ""}`;
|
|
676
677
|
var WHERE_TO_GET_KEY = `\u041A\u043B\u044E\u0447 \u0432\u044B\u0434\u0430\u0451\u0442 \u0431\u043E\u0442 \u043F\u043E\u0434\u043F\u0438\u0441\u043A\u0438 ${KEY_SOURCE_BOT} \u2014 \u043D\u0430\u043F\u0438\u0448\u0438\u0442\u0435 \u0435\u043C\u0443 \xAB\u041F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u043A\u043B\u044E\u0447\xBB.`;
|
|
677
678
|
|
|
678
679
|
// src/config.ts
|
|
@@ -727,7 +728,7 @@ function parsePositiveInt(raw, fallback) {
|
|
|
727
728
|
}
|
|
728
729
|
|
|
729
730
|
// src/version.ts
|
|
730
|
-
var VERSION = "0.10.
|
|
731
|
+
var VERSION = "0.10.42";
|
|
731
732
|
var USER_AGENT = `naparnik-mcp/${VERSION}`;
|
|
732
733
|
var MIN_ENGINE = "2026.09.24-446";
|
|
733
734
|
var LAUNCHER_PROTOCOL = 1;
|
|
@@ -15838,6 +15839,21 @@ function empty() {
|
|
|
15838
15839
|
function startedJob(o) {
|
|
15839
15840
|
return { ...empty(), id: o.id, what: o.what, ahead: o.ahead, message: o.message };
|
|
15840
15841
|
}
|
|
15842
|
+
var INSTALL_TITLES = {
|
|
15843
|
+
all: "\u0421\u0442\u0430\u0432\u043B\u044E \u043C\u043E\u043D\u0442\u0430\u0436",
|
|
15844
|
+
check: "\u041F\u0440\u043E\u0432\u0435\u0440\u044F\u044E",
|
|
15845
|
+
python: "\u0421\u0442\u0430\u0432\u043B\u044E \u043C\u043E\u043D\u0442\u0430\u0436",
|
|
15846
|
+
ffmpeg: "\u0421\u0442\u0430\u0432\u043B\u044E \u043C\u043E\u043D\u0442\u0430\u0436",
|
|
15847
|
+
env: "\u0421\u0442\u0430\u0432\u043B\u044E \u043C\u043E\u043D\u0442\u0430\u0436",
|
|
15848
|
+
model: "\u0421\u0442\u0430\u0432\u043B\u044E \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u044B",
|
|
15849
|
+
browser: "\u0421\u0442\u0430\u0432\u043B\u044E \u0433\u0440\u0430\u0444\u0438\u043A\u0443",
|
|
15850
|
+
cutout: "\u0421\u0442\u0430\u0432\u043B\u044E \u0437\u0430\u043C\u0435\u043D\u0443 \u0444\u043E\u043D\u0430",
|
|
15851
|
+
voice: "\u0421\u0442\u0430\u0432\u043B\u044E \u0447\u0438\u0441\u0442\u043A\u0443 \u0433\u043E\u043B\u043E\u0441\u0430"
|
|
15852
|
+
};
|
|
15853
|
+
function installTitle(step) {
|
|
15854
|
+
return INSTALL_TITLES[step] ?? "\u0421\u0442\u0430\u0432\u043B\u044E \u043C\u043E\u043D\u0442\u0430\u0436";
|
|
15855
|
+
}
|
|
15856
|
+
var INSTALL_HEAD = /^установка: (\S+)$/;
|
|
15841
15857
|
var HEAD = /^Задание (\S+): ?(.*)$/;
|
|
15842
15858
|
var BEHIND = /^Позади: (.+)$/;
|
|
15843
15859
|
var NOW = /^Этап (\d+) из (\d+): (.+)$/;
|
|
@@ -15863,6 +15879,8 @@ function readJob(text2) {
|
|
|
15863
15879
|
const job = empty();
|
|
15864
15880
|
job.id = head2[1] ?? "";
|
|
15865
15881
|
job.what = (head2[2] ?? "").trim();
|
|
15882
|
+
const install2 = INSTALL_HEAD.exec(job.what);
|
|
15883
|
+
if (install2 !== null) job.what = installTitle(install2[1] ?? "");
|
|
15866
15884
|
let tail2 = null;
|
|
15867
15885
|
for (const row of lines.slice(1)) {
|
|
15868
15886
|
const line = row.trim();
|
|
@@ -16464,6 +16482,10 @@ function knowsJsonCheck(engineDir) {
|
|
|
16464
16482
|
return false;
|
|
16465
16483
|
}
|
|
16466
16484
|
}
|
|
16485
|
+
var STATES = /* @__PURE__ */ new Set(["ok", "missing", "later"]);
|
|
16486
|
+
function megabytes(value) {
|
|
16487
|
+
return typeof value === "number" && value > 0 ? Math.round(value) : 0;
|
|
16488
|
+
}
|
|
16467
16489
|
function readReadiness(stdout) {
|
|
16468
16490
|
const lines = stdout.trim().split("\n");
|
|
16469
16491
|
let raw;
|
|
@@ -16483,57 +16505,93 @@ function readReadiness(stdout) {
|
|
|
16483
16505
|
name: part["name"],
|
|
16484
16506
|
title: typeof part["title"] === "string" && part["title"] !== "" ? part["title"] : part["name"],
|
|
16485
16507
|
ok: part["ok"] === true,
|
|
16486
|
-
mb:
|
|
16508
|
+
mb: megabytes(part["mb"]),
|
|
16487
16509
|
on_demand: part["on_demand"] === true,
|
|
16488
16510
|
step: typeof part["step"] === "string" ? part["step"] : ""
|
|
16489
16511
|
});
|
|
16490
16512
|
}
|
|
16491
|
-
|
|
16513
|
+
let rows = null;
|
|
16514
|
+
if (Array.isArray(data["rows"])) {
|
|
16515
|
+
rows = [];
|
|
16516
|
+
for (const item of data["rows"]) {
|
|
16517
|
+
const row = item;
|
|
16518
|
+
if (row === null || typeof row !== "object" || typeof row["title"] !== "string") continue;
|
|
16519
|
+
const state = row["state"];
|
|
16520
|
+
if (typeof state !== "string" || !STATES.has(state)) continue;
|
|
16521
|
+
rows.push({ title: row["title"], state, mb: megabytes(row["mb"]) });
|
|
16522
|
+
}
|
|
16523
|
+
}
|
|
16524
|
+
return { words: data["words"], ready: data["ready"] === true, parts, rows };
|
|
16492
16525
|
}
|
|
16493
16526
|
var NOT_A_ROW = /* @__PURE__ */ new Set(["system"]);
|
|
16527
|
+
var TITLE_READY = "\u0412\u0441\u0451 \u0433\u043E\u0442\u043E\u0432\u043E \u2014 \u043C\u043E\u0436\u043D\u043E \u043D\u0430\u0447\u0438\u043D\u0430\u0442\u044C \u043C\u043E\u043D\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C :)";
|
|
16528
|
+
var TITLE_UNKNOWN = "\u041F\u0440\u043E\u0432\u0435\u0440\u044F\u044E, \u0447\u0442\u043E \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043E";
|
|
16529
|
+
var TITLE_UPDATING = "\u041E\u0431\u043D\u043E\u0432\u043B\u044F\u044E \u043C\u043E\u043D\u0442\u0430\u0436";
|
|
16494
16530
|
function weight(mb) {
|
|
16495
16531
|
if (mb >= 1e3) return `${(mb / 1024).toFixed(1).replace(".", ",")} \u0413\u0411`;
|
|
16496
16532
|
return `${mb} \u041C\u0411`;
|
|
16497
16533
|
}
|
|
16534
|
+
function rowWords(state, mb) {
|
|
16535
|
+
if (state === "ok") return "\u0435\u0441\u0442\u044C";
|
|
16536
|
+
if (state === "later") return `\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u044E, \u0435\u0441\u043B\u0438 \u0434\u0430\u0448\u044C \u0441\u043E\u0433\u043B\u0430\u0441\u0438\u0435${mb ? ` \xB7 ${weight(mb)}` : ""}`;
|
|
16537
|
+
return mb ? `\u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E \u0441\u043A\u0430\u0447\u0430\u0442\u044C \xB7 ${weight(mb)}` : "\u043D\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442";
|
|
16538
|
+
}
|
|
16539
|
+
function firstPhrase(notes) {
|
|
16540
|
+
const paragraph = notes.trim().split(/\n\s*\n/)[0] ?? "";
|
|
16541
|
+
const plain = paragraph.replaceAll("*", "").replace(/^[#\s-]+/, "").replace(/\s+/g, " ").trim();
|
|
16542
|
+
const sentence = /^(.+?[.!?…])(?:\s|$)/.exec(plain);
|
|
16543
|
+
return (sentence?.[1] ?? plain).trim();
|
|
16544
|
+
}
|
|
16498
16545
|
function refusalWords(status) {
|
|
16499
|
-
if (status === 401) {
|
|
16500
|
-
|
|
16501
|
-
}
|
|
16502
|
-
if (status === 403) {
|
|
16503
|
-
return `\u041F\u043E\u0434\u043F\u0438\u0441\u043A\u0430 \u043A\u043E\u043D\u0447\u0438\u043B\u0430\u0441\u044C \u2014 \u043D\u043E\u0432\u044B\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u043D\u0435 \u043F\u0440\u0438\u0445\u043E\u0434\u044F\u0442. \u0427\u0442\u043E \u0434\u0435\u043B\u0430\u0442\u044C: \u043F\u0440\u043E\u0434\u043B\u0438\u0442\u0435 \u0435\u0451 \u0443 \u0431\u043E\u0442\u0430 ${KEY_SOURCE_BOT}.`;
|
|
16504
|
-
}
|
|
16546
|
+
if (status === 401) return `\u041A\u043B\u044E\u0447 \u043D\u0435 \u043F\u043E\u0434\u0445\u043E\u0434\u0438\u0442. \u0412\u043E\u0437\u044C\u043C\u0438 \u043D\u043E\u0432\u044B\u0439 \u0444\u0430\u0439\u043B \u0432 \u0442\u0435\u043B\u0435\u0433\u0440\u0430\u043C-\u0431\u043E\u0442\u0435 ${KEY_SOURCE_HANDLE}.`;
|
|
16547
|
+
if (status === 403) return `\u041F\u043E\u0434\u043F\u0438\u0441\u043A\u0430 \u0437\u0430\u043A\u043E\u043D\u0447\u0438\u043B\u0430\u0441\u044C. \u041F\u0440\u043E\u0434\u043B\u0438 \u0435\u0451 \u0432 \u0442\u0435\u043B\u0435\u0433\u0440\u0430\u043C-\u0431\u043E\u0442\u0435 ${KEY_SOURCE_HANDLE}.`;
|
|
16505
16548
|
return "";
|
|
16506
16549
|
}
|
|
16507
|
-
function
|
|
16508
|
-
|
|
16550
|
+
function updateWords(shell, engine) {
|
|
16551
|
+
if (!shell?.fresh && !engine?.fresh) return "";
|
|
16552
|
+
const notes = shell?.fresh ? firstPhrase(shell.notes) : "";
|
|
16553
|
+
return [
|
|
16554
|
+
`\u0414\u043E\u0441\u0442\u0443\u043F\u043D\u0430 \u043D\u043E\u0432\u0430\u044F \u0432\u0435\u0440\u0441\u0438\u044F \u043C\u043E\u043D\u0442\u0430\u0436\u0451\u0440\u0430.${notes ? ` \u041F\u043E\u044F\u0432\u0438\u043B\u043E\u0441\u044C: ${notes}` : ""}`,
|
|
16555
|
+
"\u041E\u0431\u043D\u043E\u0432\u0438\u0442\u044C \u0434\u043E \u043D\u043E\u0432\u043E\u0439 \u0432\u0435\u0440\u0441\u0438\u0438?",
|
|
16556
|
+
"\u041F\u0440\u043E\u0441\u0442\u043E \u043D\u0430\u043F\u0438\u0448\u0438 \xAB\u043E\u0431\u043D\u043E\u0432\u0438\xBB."
|
|
16557
|
+
].join("\n");
|
|
16558
|
+
}
|
|
16559
|
+
function cardRows(readiness) {
|
|
16560
|
+
const rows = readiness?.rows ?? (readiness?.parts ?? []).filter((part) => !NOT_A_ROW.has(part.name)).map((part) => ({
|
|
16509
16561
|
title: part.title,
|
|
16510
16562
|
state: part.ok ? "ok" : part.on_demand ? "later" : "missing",
|
|
16511
16563
|
mb: part.ok ? 0 : part.mb
|
|
16512
16564
|
}));
|
|
16565
|
+
return rows.map((row) => ({ ...row, mb: row.state === "ok" ? 0 : row.mb, say: rowWords(row.state, row.mb) }));
|
|
16566
|
+
}
|
|
16567
|
+
function setupCard(o) {
|
|
16568
|
+
const rows = cardRows(o.readiness);
|
|
16513
16569
|
const missingMb = rows.filter((row) => row.state === "missing").reduce((all, row) => all + row.mb, 0);
|
|
16514
|
-
const ready = o.readiness
|
|
16515
|
-
|
|
16516
|
-
if (o.shell?.fresh) fresh.push(`\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043D\u0438\u0435 ${o.shell.fresh}${o.shell.mb ? ` (${weight(o.shell.mb)})` : ""}`);
|
|
16517
|
-
if (o.engine?.fresh) fresh.push(`\u0434\u0432\u0438\u0436\u043E\u043A ${o.engine.fresh}${o.engine.mb ? ` (${weight(o.engine.mb)})` : ""}`);
|
|
16518
|
-
const update = fresh.length ? `\u0412\u044B\u0448\u043B\u043E \u043D\u043E\u0432\u043E\u0435: ${fresh.join(", ")}.` : "";
|
|
16519
|
-
const trouble = refusalWords(o.shell?.status ?? 0) || refusalWords(o.engine?.status ?? 0);
|
|
16570
|
+
const ready = o.readiness === null ? false : o.readiness.rows !== null ? rows.every((row) => row.state !== "missing") : o.readiness.ready;
|
|
16571
|
+
let title;
|
|
16520
16572
|
let next;
|
|
16521
|
-
if (o.noEngine
|
|
16522
|
-
|
|
16523
|
-
|
|
16524
|
-
else if (
|
|
16525
|
-
|
|
16526
|
-
|
|
16527
|
-
else
|
|
16573
|
+
if (o.noEngine || o.noPython) {
|
|
16574
|
+
title = "\u041D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E \u0441\u043A\u0430\u0447\u0430\u0442\u044C \u043C\u043E\u043D\u0442\u0430\u0436 \u0434\u043B\u044F \u043F\u043E\u043B\u043D\u043E\u0446\u0435\u043D\u043D\u043E\u0439 \u0440\u0430\u0431\u043E\u0442\u044B";
|
|
16575
|
+
next = `\u041D\u0430\u043F\u0438\u0448\u0438 \xAB\u0441\u043A\u0430\u0447\u0430\u0439\xBB \u2014 \u0441\u043A\u0430\u0447\u0430\u044E ${o.noEngine ? "\u043C\u043E\u043D\u0442\u0430\u0436" : "Python"}.`;
|
|
16576
|
+
} else if (o.readiness === null) {
|
|
16577
|
+
title = o.title ?? TITLE_UNKNOWN;
|
|
16578
|
+
next = o.note ?? "";
|
|
16579
|
+
} else if (!ready) {
|
|
16580
|
+
title = missingMb ? `\u041D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E \u0441\u043A\u0430\u0447\u0430\u0442\u044C ${weight(missingMb)} \u0434\u043B\u044F \u043F\u043E\u043B\u043D\u043E\u0446\u0435\u043D\u043D\u043E\u0439 \u0440\u0430\u0431\u043E\u0442\u044B` : "\u041D\u0435 \u0432\u0441\u0451 \u0433\u043E\u0442\u043E\u0432\u043E \u0434\u043B\u044F \u043F\u043E\u043B\u043D\u043E\u0446\u0435\u043D\u043D\u043E\u0439 \u0440\u0430\u0431\u043E\u0442\u044B";
|
|
16581
|
+
next = missingMb ? `\u041D\u0430\u043F\u0438\u0448\u0438 \xAB\u0441\u043A\u0430\u0447\u0430\u0439\xBB \u2014 \u0441\u043A\u0430\u0447\u0430\u044E ${weight(missingMb)}.` : "\u041D\u0430\u043F\u0438\u0448\u0438 \xAB\u0441\u043A\u0430\u0447\u0430\u0439\xBB \u2014 \u043F\u043E\u0441\u0442\u0430\u0432\u043B\u044E, \u0447\u0435\u0433\u043E \u043D\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442.";
|
|
16582
|
+
} else {
|
|
16583
|
+
title = TITLE_READY;
|
|
16584
|
+
next = "";
|
|
16585
|
+
}
|
|
16528
16586
|
return {
|
|
16529
16587
|
contract: SETUP_CONTRACT,
|
|
16530
|
-
|
|
16531
|
-
|
|
16588
|
+
title,
|
|
16589
|
+
meta: `\u0432\u0435\u0440\u0441\u0438\u044F ${o.shellVersion}`,
|
|
16532
16590
|
ready,
|
|
16533
16591
|
rows,
|
|
16534
16592
|
missingMb,
|
|
16535
|
-
update,
|
|
16536
|
-
trouble,
|
|
16593
|
+
update: updateWords(o.shell, o.engine),
|
|
16594
|
+
trouble: refusalWords(o.shell?.status ?? 0) || refusalWords(o.engine?.status ?? 0),
|
|
16537
16595
|
next
|
|
16538
16596
|
};
|
|
16539
16597
|
}
|
|
@@ -16742,10 +16800,6 @@ function runbarWidgetHtml() {
|
|
|
16742
16800
|
background: var(--note-dot);
|
|
16743
16801
|
}
|
|
16744
16802
|
|
|
16745
|
-
/* \u041F\u043E\u0437\u0430\u0434\u0438 \u0438 \u0434\u0430\u043B\u044C\u0448\u0435 \u2014 \u0442\u0438\u0445\u0438\u043C \u043A\u0435\u0433\u043B\u0435\u043C: \u044D\u0442\u043E \u0441\u043F\u0440\u0430\u0432\u043A\u0430, \u0430 \u043D\u0435 \u043E\u0442\u0432\u0435\u0442 \u043D\u0430 \xAB\u0433\u0434\u0435 \u044F \u0441\u0435\u0439\u0447\u0430\u0441\xBB. */
|
|
16746
|
-
.side { margin: 10px 0 0; color: var(--ink-soft); font-size: 12.5px; line-height: 1.45; }
|
|
16747
|
-
.side[hidden] { display: none; }
|
|
16748
|
-
.side b { font-weight: 650; color: var(--ink); }
|
|
16749
16803
|
|
|
16750
16804
|
/* \u2500\u2500\u2500 \u0428\u043A\u0430\u043B\u0430: \u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0441\u043A\u0430\u0447\u0430\u043D\u043E, \u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0433\u043E\u0442\u043E\u0432\u043E \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
|
|
16751
16805
|
|
|
@@ -16787,6 +16841,8 @@ function runbarWidgetHtml() {
|
|
|
16787
16841
|
.card[hidden] { display: none; }
|
|
16788
16842
|
.card__meta { margin: 4px 0 0; color: var(--ink-soft); font-size: 12.5px; font-variant-numeric: tabular-nums; }
|
|
16789
16843
|
.card__meta[hidden] { display: none; }
|
|
16844
|
+
/* \u041D\u043E\u0432\u043E\u0441\u0442\u044C \u043E \u0432\u0435\u0440\u0441\u0438\u0438 \u2014 \u0442\u0440\u0438 \u0441\u0442\u0440\u043E\u043A\u0438 \u0432\u043B\u0430\u0434\u0435\u043B\u044C\u0446\u0430: \u0447\u0442\u043E \u0432\u044B\u0448\u043B\u043E, \u0432\u043E\u043F\u0440\u043E\u0441, \u0447\u0442\u043E \u043D\u0430\u043F\u0438\u0441\u0430\u0442\u044C. */
|
|
16845
|
+
#cardUpdate { white-space: pre-line; }
|
|
16790
16846
|
.parts { display: grid; gap: 2px 18px; margin: 14px 0 0; padding: 0; list-style: none; }
|
|
16791
16847
|
.parts[hidden] { display: none; }
|
|
16792
16848
|
.part {
|
|
@@ -16971,13 +17027,13 @@ function runbarWidgetHtml() {
|
|
|
16971
17027
|
</head>
|
|
16972
17028
|
<body>
|
|
16973
17029
|
<div class="head">
|
|
16974
|
-
<h2 id="what"
|
|
17030
|
+
<h2 id="what" hidden></h2>
|
|
16975
17031
|
<span class="clock" id="clock" hidden></span>
|
|
16976
17032
|
</div>
|
|
16977
17033
|
<ol class="rail" id="rail" hidden></ol>
|
|
16978
17034
|
<div class="now" id="now">
|
|
16979
17035
|
<span>
|
|
16980
|
-
<strong class="now__t" id="nowTitle">\u041D\u0430\u0447\u0438\u043D\u0430\u044E
|
|
17036
|
+
<strong class="now__t" id="nowTitle">\u041D\u0430\u0447\u0438\u043D\u0430\u044E</strong>
|
|
16981
17037
|
<span class="now__c" id="nowLeft" hidden></span>
|
|
16982
17038
|
</span>
|
|
16983
17039
|
</div>
|
|
@@ -16995,8 +17051,6 @@ function runbarWidgetHtml() {
|
|
|
16995
17051
|
<div class="note" id="cardTrouble" hidden></div>
|
|
16996
17052
|
<p class="next" id="cardNext" hidden></p>
|
|
16997
17053
|
</section>
|
|
16998
|
-
<p class="side" id="behind" hidden></p>
|
|
16999
|
-
<p class="side" id="ahead" hidden></p>
|
|
17000
17054
|
<div class="end" id="end" hidden>
|
|
17001
17055
|
<span class="end__m" aria-hidden="true"></span>
|
|
17002
17056
|
<span class="end__x">
|
|
@@ -17153,7 +17207,9 @@ function runbarWidgetHtml() {
|
|
|
17153
17207
|
byId('card').hidden = true;
|
|
17154
17208
|
var ended = !working(data.status);
|
|
17155
17209
|
|
|
17156
|
-
|
|
17210
|
+
// \u26A0 \u041E\u0411\u0429\u0415\u0419 \u0417\u0410\u0413\u041B\u0423\u0428\u041A\u0418 \xAB\u0420\u0410\u0411\u041E\u0422\u0410\u042E\xBB \u041D\u0415\u0422 (\u0432\u043B\u0430\u0434\u0435\u043B\u0435\u0446 2026-09-24): \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A \u2014 \u0441\u0440\u0430\u0437\u0443
|
|
17211
|
+
// \u043D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u0440\u0430\u0431\u043E\u0442\u044B, \u0430 \u043D\u0435 \u0441\u043B\u043E\u0432\u043E, \u043A\u043E\u0442\u043E\u0440\u043E\u0435 \u043D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u0433\u043E\u0432\u043E\u0440\u0438\u0442.
|
|
17212
|
+
show('what', data.what || '');
|
|
17157
17213
|
var clock = byId('clock');
|
|
17158
17214
|
if (clock) {
|
|
17159
17215
|
clock.textContent = (ended ? '' : '\u0438\u0434\u0451\u0442 ') + howLong(data.sec);
|
|
@@ -17166,8 +17222,8 @@ function runbarWidgetHtml() {
|
|
|
17166
17222
|
var now = byId('now');
|
|
17167
17223
|
if (now) now.hidden = ended;
|
|
17168
17224
|
if (!ended) {
|
|
17169
|
-
var title = data.now || (data.status === 'waiting' ? '\u0416\u0434\u0443 \u043E\u0447\
|
|
17170
|
-
if (data.at && data.total) title = title + '
|
|
17225
|
+
var title = data.now || (data.status === 'waiting' ? '\u0416\u0434\u0443, \u043F\u043E\u043A\u0430 \u0437\u0430\u043A\u043E\u043D\u0447\u0438\u0442\u0441\u044F \u0434\u0440\u0443\u0433\u0430\u044F \u0440\u0430\u0431\u043E\u0442\u0430' : '\u041D\u0430\u0447\u0438\u043D\u0430\u044E');
|
|
17226
|
+
if (data.at && data.total) title = title + ' \xB7 ' + data.at + ' \u0438\u0437 ' + data.total;
|
|
17171
17227
|
show('nowTitle', title);
|
|
17172
17228
|
show('nowLeft', data.left || '');
|
|
17173
17229
|
var loading = download(data);
|
|
@@ -17179,11 +17235,9 @@ function runbarWidgetHtml() {
|
|
|
17179
17235
|
byId('dl').hidden = true;
|
|
17180
17236
|
}
|
|
17181
17237
|
|
|
17182
|
-
// \xAB\u041F\
|
|
17183
|
-
// \
|
|
17184
|
-
// \
|
|
17185
|
-
side('behind', '\u041F\u043E\u0437\u0430\u0434\u0438: ', ended ? '' : data.behind);
|
|
17186
|
-
side('ahead', '\u0414\u0430\u043B\u044C\u0448\u0435: ', ended ? '' : data.ahead);
|
|
17238
|
+
// \u26A0 \xAB\u041F\u041E\u0417\u0410\u0414\u0418\xBB \u0418 \xAB\u0414\u0410\u041B\u042C\u0428\u0415\xBB \u041D\u0415 \u0420\u0418\u0421\u0423\u042E\u0422\u0421\u042F (\u0432\u043B\u0430\u0434\u0435\u043B\u0435\u0446 2026-09-24): \u043F\u043E\u0434 \u043D\u0430\u0437\u0432\u0430\u043D\u0438\u0435\u043C
|
|
17239
|
+
// \u044D\u0442\u0430\u043F\u0430 \u0438 \u0448\u043A\u0430\u043B\u043E\u0439 \u043E\u043D\u0438 \u0431\u044B\u043B\u0438 \u0442\u0440\u0435\u0442\u044C\u0438\u043C \u0438 \u0447\u0435\u0442\u0432\u0451\u0440\u0442\u044B\u043C \u0440\u0430\u0441\u0441\u043A\u0430\u0437\u043E\u043C \u043E\u0431 \u043E\u0434\u043D\u043E\u043C \u0438 \u0442\u043E\u043C \u0436\u0435.
|
|
17240
|
+
// \u041E\u0442\u0447\u0451\u0442 \u0438\u0445 \u043F\u043E-\u043F\u0440\u0435\u0436\u043D\u0435\u043C\u0443 \u043D\u0435\u0441\u0451\u0442 \u2014 \u0441\u0442\u0440\u043E\u043A\u0438 \u043D\u0443\u0436\u043D\u044B \u043C\u043E\u0434\u0435\u043B\u0438, \u0430 \u043D\u0435 \u044D\u043A\u0440\u0430\u043D\u0443.
|
|
17187
17241
|
|
|
17188
17242
|
if (ended) finish(data);
|
|
17189
17243
|
else { byId('end').hidden = true; document.body.classList.remove('bad'); }
|
|
@@ -17254,7 +17308,7 @@ function runbarWidgetHtml() {
|
|
|
17254
17308
|
job = null;
|
|
17255
17309
|
document.body.classList.remove('gone');
|
|
17256
17310
|
document.body.classList.remove('bad');
|
|
17257
|
-
var hide = ['now', 'rail', 'msg', 'dl', '
|
|
17311
|
+
var hide = ['now', 'rail', 'msg', 'dl', 'clock', 'end', 'note'];
|
|
17258
17312
|
for (var i = 0; i < hide.length; i++) { var el = byId(hide[i]); if (el) el.hidden = true; }
|
|
17259
17313
|
|
|
17260
17314
|
var rows = data.rows || [];
|
|
@@ -17263,12 +17317,10 @@ function runbarWidgetHtml() {
|
|
|
17263
17317
|
if (rows[j].state === 'ok') { ok++; need++; }
|
|
17264
17318
|
else if (rows[j].state === 'missing') need++;
|
|
17265
17319
|
}
|
|
17266
|
-
|
|
17267
|
-
|
|
17268
|
-
|
|
17269
|
-
|
|
17270
|
-
if (data.shell) meta.push('\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043D\u0438\u0435 ' + data.shell);
|
|
17271
|
-
show('cardMeta', meta.join(' \xB7 '));
|
|
17320
|
+
// \u0421\u043B\u043E\u0432\u0430 \u043A\u0430\u0440\u0442\u043E\u0447\u043A\u0438 \u043F\u0438\u0448\u0435\u0442 \u043E\u0431\u043E\u043B\u043E\u0447\u043A\u0430 (setup-card.ts), \u0437\u0434\u0435\u0441\u044C \u0438\u0445 \u0442\u043E\u043B\u044C\u043A\u043E \u0441\u0442\u0430\u0432\u044F\u0442
|
|
17321
|
+
// \u043D\u0430 \u043C\u0435\u0441\u0442\u043E: \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A, \u0432\u0435\u0440\u0441\u0438\u044F, \u0441\u0442\u0440\u043E\u043A\u0438, \u043D\u043E\u0432\u043E\u0441\u0442\u044C, \u0447\u0442\u043E \u0434\u0430\u043B\u044C\u0448\u0435.
|
|
17322
|
+
show('what', data.title || '');
|
|
17323
|
+
show('cardMeta', data.meta || '');
|
|
17272
17324
|
|
|
17273
17325
|
// \u0428\u043A\u0430\u043B\u0430 \u0433\u043E\u0442\u043E\u0432\u043D\u043E\u0441\u0442\u0438 \u2014 \u043F\u043E \u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u043E\u043C\u0443: \u0442\u043E, \u0447\u0442\u043E \u0432\u0441\u0442\u0430\u043D\u0435\u0442 \u043F\u043E \u043F\u0440\u043E\u0441\u044C\u0431\u0435, \u0434\u043E\u043B\u0435\u0439
|
|
17274
17326
|
// \xAB\u043D\u0435 \u0433\u043E\u0442\u043E\u0432\u043E\xBB \u043D\u0435 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044F, \u0438\u043D\u0430\u0447\u0435 \u0447\u0435\u043B\u043E\u0432\u0435\u043A \u0431\u0435\u0437 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043E\u0432 \u043D\u0430\u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u0438\u0434\u0435\u043B \u0431\u044B
|
|
@@ -17281,7 +17333,6 @@ function runbarWidgetHtml() {
|
|
|
17281
17333
|
var b = document.createElement('b');
|
|
17282
17334
|
b.textContent = '\u0413\u043E\u0442\u043E\u0432\u043E ' + ok + ' \u0438\u0437 ' + need;
|
|
17283
17335
|
cap.appendChild(b);
|
|
17284
|
-
if (data.missingMb) cap.appendChild(document.createTextNode(' \xB7 \u0434\u043E\u043A\u0430\u0447\u0430\u0442\u044C ' + weight(data.missingMb)));
|
|
17285
17336
|
}
|
|
17286
17337
|
cap.hidden = !need;
|
|
17287
17338
|
|
|
@@ -17300,9 +17351,7 @@ function runbarWidgetHtml() {
|
|
|
17300
17351
|
li.appendChild(title);
|
|
17301
17352
|
var w = document.createElement('span');
|
|
17302
17353
|
w.className = 'part__w';
|
|
17303
|
-
w.textContent = row.
|
|
17304
|
-
: row.state === 'later' ? ('\u043F\u043E \u043F\u0440\u043E\u0441\u044C\u0431\u0435' + (row.mb ? ' \xB7 ' + weight(row.mb) : ''))
|
|
17305
|
-
: (row.mb ? weight(row.mb) : '\u043D\u0435\u0442');
|
|
17354
|
+
w.textContent = row.say || '';
|
|
17306
17355
|
li.appendChild(w);
|
|
17307
17356
|
list.appendChild(li);
|
|
17308
17357
|
}
|
|
@@ -17315,18 +17364,6 @@ function runbarWidgetHtml() {
|
|
|
17315
17364
|
reportSize();
|
|
17316
17365
|
}
|
|
17317
17366
|
|
|
17318
|
-
function side(id, label, text) {
|
|
17319
|
-
var el = byId(id);
|
|
17320
|
-
if (!el) return;
|
|
17321
|
-
el.innerHTML = '';
|
|
17322
|
-
if (!text) { el.hidden = true; return; }
|
|
17323
|
-
var b = document.createElement('b');
|
|
17324
|
-
b.textContent = label;
|
|
17325
|
-
el.appendChild(b);
|
|
17326
|
-
el.appendChild(document.createTextNode(text));
|
|
17327
|
-
el.hidden = false;
|
|
17328
|
-
}
|
|
17329
|
-
|
|
17330
17367
|
/** \u041A\u043E\u043D\u0435\u0446 \u0440\u0430\u0431\u043E\u0442\u044B: \u0443\u0441\u043F\u0435\u0445 \u0441 \u043F\u0443\u0442\u0451\u043C \u043A \u0444\u0430\u0439\u043B\u0443 \u0438\u043B\u0438 \u043E\u0442\u043A\u0430\u0437 \u0441\u043B\u043E\u0432\u0430\u043C\u0438. */
|
|
17331
17368
|
function finish(data) {
|
|
17332
17369
|
var good = data.status === 'done';
|
|
@@ -17335,11 +17372,11 @@ function runbarWidgetHtml() {
|
|
|
17335
17372
|
|
|
17336
17373
|
if (good) {
|
|
17337
17374
|
show('endTitle', '\u0413\u043E\u0442\u043E\u0432\u043E \u0437\u0430 ' + howLong(data.sec));
|
|
17338
|
-
show('endHint', data.file ? '\
|
|
17375
|
+
show('endHint', data.file ? '\u0420\u043E\u043B\u0438\u043A \u0433\u043E\u0442\u043E\u0432:' : (data.outcome || ''));
|
|
17339
17376
|
show('path', data.file || '');
|
|
17340
17377
|
} else {
|
|
17341
17378
|
show('endTitle', data.status === 'aborted' ? '\u0420\u0430\u0431\u043E\u0442\u0430 \u043F\u0440\u0435\u0440\u0432\u0430\u043B\u0430\u0441\u044C' : '\u041D\u0435 \u043F\u043E\u043B\u0443\u0447\u0438\u043B\u043E\u0441\u044C');
|
|
17342
|
-
show('endHint', data.trouble || '\
|
|
17379
|
+
show('endHint', data.trouble || '\u0427\u0442\u043E-\u0442\u043E \u0441\u043B\u043E\u043C\u0430\u043B\u043E\u0441\u044C. \u041D\u0430\u043F\u0438\u0448\u0438 \u041A\u043B\u043E\u0434\u0443 \xAB\u0447\u0442\u043E \u0441\u043B\u0443\u0447\u0438\u043B\u043E\u0441\u044C\xBB.');
|
|
17343
17380
|
show('path', '');
|
|
17344
17381
|
}
|
|
17345
17382
|
var warn = [];
|
|
@@ -17365,8 +17402,6 @@ function runbarWidgetHtml() {
|
|
|
17365
17402
|
byId('now').hidden = true;
|
|
17366
17403
|
byId('rail').hidden = true;
|
|
17367
17404
|
byId('msg').hidden = true;
|
|
17368
|
-
byId('behind').hidden = true;
|
|
17369
|
-
byId('ahead').hidden = true;
|
|
17370
17405
|
byId('clock').hidden = true;
|
|
17371
17406
|
document.body.classList.add('bad');
|
|
17372
17407
|
show('endTitle', '\u041D\u0435 \u043F\u043E\u043B\u0443\u0447\u0438\u043B\u043E\u0441\u044C');
|
|
@@ -17391,7 +17426,7 @@ function runbarWidgetHtml() {
|
|
|
17391
17426
|
// \xAB\u0437\u0430\u043A\u0440\u044B\u0442\u043E\xBB, \u043F\u0440\u0438\u0448\u0435\u0434\u0448\u0430\u044F \u0441\u043B\u0435\u0434\u043E\u043C \u043D\u0430\u0441\u0442\u043E\u044F\u0449\u0430\u044F \u0437\u0430\u0434\u0430\u0447\u0430 (\u0445\u043E\u0441\u0442 \u0432\u043F\u0440\u0430\u0432\u0435 \u043F\u0440\u0438\u0441\u043B\u0430\u0442\u044C \u0434\u0432\u0430
|
|
17392
17427
|
// \u0443\u0432\u0435\u0434\u043E\u043C\u043B\u0435\u043D\u0438\u044F \u043F\u043E\u0434\u0440\u044F\u0434) \u043E\u0441\u0442\u0430\u043B\u0430\u0441\u044C \u0431\u044B \u0431\u0435\u0437 \u043E\u043F\u0440\u043E\u0441\u0430 \u2014 \u043F\u043E\u043B\u043E\u0441\u0430 \u043F\u043E\u043A\u0430\u0437\u0430\u043B\u0430 \u0431\u044B \u043F\u0435\u0440\u0432\u044B\u0439
|
|
17393
17428
|
// \u043A\u0430\u0434\u0440 \u0438 \u0437\u0430\u043C\u0435\u0440\u043B\u0430.
|
|
17394
|
-
var all = ['now', 'rail', 'msg', 'dl', 'card', '
|
|
17429
|
+
var all = ['now', 'rail', 'msg', 'dl', 'card', 'clock', 'end', 'note', 'what'];
|
|
17395
17430
|
for (var i = 0; i < all.length; i++) { var el = byId(all[i]); if (el) el.hidden = true; }
|
|
17396
17431
|
document.body.classList.add('gone');
|
|
17397
17432
|
reportSize();
|
|
@@ -17831,11 +17866,11 @@ ${EXTRAS_LATER}`), later]);
|
|
|
17831
17866
|
});
|
|
17832
17867
|
if ("refusal" in launch) return toolError(launch.refusal);
|
|
17833
17868
|
return toolSuccess(
|
|
17834
|
-
`\u0417\u0430\u0434\u0430\u0447\u0430 ${launch.id}: \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0430, \u0448\u0430\u0433 \xAB${step}\xBB.
|
|
17869
|
+
`\u0417\u0430\u0434\u0430\u0447\u0430 ${launch.id}: ${installTitle(step)} (\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0430, \u0448\u0430\u0433 \xAB${step}\xBB).
|
|
17835
17870
|
\u0418\u0434\u0451\u0442 \u043D\u0430 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0435 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F \u0438 \u043F\u0435\u0440\u0435\u0436\u0438\u0432\u0430\u0435\u0442 \u043F\u0435\u0440\u0435\u0437\u0430\u043F\u0443\u0441\u043A \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u044B. \u041F\u043E\u0437\u043E\u0432\u0438 wait \u0441 job "${launch.id}" \u2014 \u043E\u043D \u043F\u043E\u0434\u043E\u0436\u0434\u0451\u0442 \u0438 \u043F\u043E \u0445\u043E\u0434\u0443 \u0440\u0430\u0441\u0441\u043A\u0430\u0436\u0435\u0442, \u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0441\u043A\u0430\u0447\u0430\u043D\u043E \u0438 \u043E \u0447\u0451\u043C \u043D\u0430\u0434\u043E \u0441\u043F\u0440\u043E\u0441\u0438\u0442\u044C \u0447\u0435\u043B\u043E\u0432\u0435\u043A\u0430. \u041F\u0435\u0440\u0435\u0441\u043A\u0430\u0437\u044B\u0432\u0430\u0439 \u044D\u0442\u043E \u0447\u0435\u043B\u043E\u0432\u0435\u043A\u0443 \u0441\u0440\u0430\u0437\u0443, \u0430 \u043D\u0435 \u0432 \u043A\u043E\u043D\u0446\u0435. ${AWAY_NOTE}`,
|
|
17836
17871
|
startedJob({
|
|
17837
17872
|
id: launch.id,
|
|
17838
|
-
what:
|
|
17873
|
+
what: installTitle(step),
|
|
17839
17874
|
ahead: installLadder(step).join(" "),
|
|
17840
17875
|
message: "\u0418\u0434\u0451\u0442 \u043C\u0438\u043D\u0443\u0442\u0430\u043C\u0438: \u043A\u0430\u0447\u0430\u0435\u0442\u0441\u044F \u0438 \u0441\u043E\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044F \u0442\u043E, \u0447\u0435\u043C \u043C\u043E\u043D\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044F \u0432\u0438\u0434\u0435\u043E."
|
|
17841
17876
|
})
|
|
@@ -17859,7 +17894,8 @@ async function updateEngine(engine, consent, key, baseUrl, timeoutMs = ASKED_POI
|
|
|
17859
17894
|
installed: engine.freshVersion(),
|
|
17860
17895
|
fresh: decision.what === "nothing" ? null : decision.manifest.version,
|
|
17861
17896
|
mb: decision.what === "nothing" ? 0 : Math.round(decision.manifest.bytes / 1024 / 1024),
|
|
17862
|
-
status: outcome.ok ? 0 : outcome.status ?? 0
|
|
17897
|
+
status: outcome.ok ? 0 : outcome.status ?? 0,
|
|
17898
|
+
notes: ""
|
|
17863
17899
|
});
|
|
17864
17900
|
if (decision.what === "nothing") {
|
|
17865
17901
|
const ownDir2 = engine.freshVersion();
|
|
@@ -17893,7 +17929,8 @@ async function updateShell(engine, consent, key, baseUrl, timeoutMs = ASKED_POIN
|
|
|
17893
17929
|
installed,
|
|
17894
17930
|
fresh: decision.what === "nothing" ? null : decision.manifest.version,
|
|
17895
17931
|
mb: decision.what === "nothing" ? 0 : Math.round((decision.manifest.body?.bytes ?? 0) / 1024 / 1024),
|
|
17896
|
-
status: outcome.ok ? 0 : outcome.status ?? 0
|
|
17932
|
+
status: outcome.ok ? 0 : outcome.status ?? 0,
|
|
17933
|
+
notes: decision.what === "nothing" ? "" : decision.manifest.notes ?? ""
|
|
17897
17934
|
});
|
|
17898
17935
|
if (decision.what === "nothing") {
|
|
17899
17936
|
if (!outcome.ok) {
|
|
@@ -17925,6 +17962,7 @@ ${decision.manifest.notes}
|
|
|
17925
17962
|
key: key ?? null
|
|
17926
17963
|
}));
|
|
17927
17964
|
}
|
|
17965
|
+
var UPDATES = /* @__PURE__ */ new Set(["all", "engine", "shell"]);
|
|
17928
17966
|
var HEAVY_STEPS = {
|
|
17929
17967
|
speech: "model",
|
|
17930
17968
|
cutout: "cutout",
|
|
@@ -17934,7 +17972,7 @@ function setupTool(engine, passport, key, baseUrl) {
|
|
|
17934
17972
|
return defineTool({
|
|
17935
17973
|
name: "setup",
|
|
17936
17974
|
title: "\u041F\u0440\u043E\u0432\u0435\u0440\u0438\u0442\u044C \u0438 \u043F\u043E\u0441\u0442\u0430\u0432\u0438\u0442\u044C \u0432\u0441\u0451 \u0434\u043B\u044F \u043C\u043E\u043D\u0442\u0430\u0436\u0430",
|
|
17937
|
-
description: "\u0412\u0441\u0451, \u0447\u0435\u043C \u043C\u043E\u043D\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043D\u0430 \u044D\u0442\u043E\u043C \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0435, \u2014 \u043E\u0434\u043D\u0438\u043C \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u043C. \u0411\u0435\u0437 \u0430\u0440\u0433\u0443\u043C\u0435\u043D\u0442\u043E\u0432 \u041F\u0420\u041E\u0412\u0415\u0420\u042F\u0415\u0422 \u0434\u0435\u043B\u043E\u043C: \u0447\u0442\u043E \u0441\u0442\u043E\u0438\u0442 \u0438 \u0447\u0435\u0433\u043E \u043D\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442, \u0447\u0442\u043E \u0434\u043E\u043A\u0430\u0447\u0430\u0435\u0442\u0441\u044F \u043F\u043E \u043F\u0440\u043E\u0441\u044C\u0431\u0435 \u0438 \u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0432\u0435\u0441\u0438\u0442, \u0447\u0442\u043E \u0443\u043C\u0435\u0435\u0442 \u043C\u043E\u043D\u0442\u0430\u0436 (\u0448\u0430\u0433\u0438, \u0432\u043E\u043F\u0440\u043E\u0441\u044B \u0434\u043B\u044F \u043A\u0430\u0440\u0442\u043E\u0447\u0435\u043A choose_variant, \u0447\u0435\u0439 \u0440\u0435\u0446\u0435\u043F\u0442 \u0438 \u0447\u0435\u0439 \u0441\u0442\u0438\u043B\u044C) \u0438 \u0432\u044B\u0448\u043B\u0430 \u043B\u0438 \u043D\u043E\u0432\u0430\u044F \u0432\u0435\u0440\u0441\u0438\u044F \u0434\u0432\u0438\u0436\u043A\u0430 \u0438\u043B\u0438 \u0441\u0430\u043C\u043E\u0433\u043E \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043D\u0438\u044F. \u0417\u043E\u0432\u0438 \u041F\u0415\u0420\u0412\u042B\u041C, \u0434\u043E \u043B\u044E\u0431\u043E\u0439 \u0440\u0430\u0431\u043E\u0442\u044B \u0441 \u0432\u0438\u0434\u0435\u043E, \u0438 \u0438\u0437 \u0441\u0432\u043E\u0435\u0439 \u043F\u0430\u043C\u044F\u0442\u0438 \u043E\u0431 \u044D\u0442\u043E\u043C \u043D\u0435 \u0440\u0430\u0441\u0441\u043A\u0430\u0437\u044B\u0432\u0430\u0439.\n\u0421\u0442\u0430\u0432\u0438\u0442 \u0438 \u043E\u0431\u043D\u043E\u0432\u043B\u044F\u0435\u0442 \u0441 what, \u043D\u043E \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u043E\u0441\u043B\u0435 \xAB\u0434\u0430\xBB \u0447\u0435\u043B\u043E\u0432\u0435\u043A\u0430: \u0441\u043D\u0430\u0447\u0430\u043B\u0430 \u0441\u043A\u0430\u0436\u0438 \u0435\u043C\u0443 \u0441\u043B\u043E\u0432\u0430\u043C\u0438, \u0447\u0442\u043E \u043F\u043E\u0441\u0442\u0430\u0432\u0438\u0448\u044C \u0438 \u0441\u043A\u043E\u043B\u044C\u043A\u043E \u044D\u0442\u043E \u0432\u0435\u0441\u0438\u0442, \u043F\u043E\u0442\u043E\u043C \u0437\u043E\u0432\u0438 \u0441 \u0442\u0435\u043C \u0436\u0435 what \u0438 consent=true. \u0411\u0435\u0437 consent \u043D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u043A\u0430\u0447\u0430\u0435\u0442\u0441\u044F \u2014 \u043F\u0440\u0438\u0434\u0443\u0442 \u0432\u0435\u0441 \u0438 \u0432\u043E\u043F\u0440\u043E\u0441. \u0422\u044F\u0436\u0451\u043B\u043E\u0435 \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044F \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u043E\u0434 \u043F\u0440\u043E\u0441\u044C\u0431\u0443: \u043D\u0435 \u043F\u0440\u043E\u0441\u0438\u043B\u0438 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u044B \u2014 \u043D\u0435 \u0441\u0442\u0430\u0432\u044C speech, \u043D\u0435 \u043F\u0440\u043E\u0441\u0438\u043B\u0438 \u043D\u043E\u0432\u044B\u0439 \u0444\u043E\u043D \u2014 \u043D\u0435 \u0441\u0442\u0430\u0432\u044C cutout.\n\u0414\u043E\u043B\u0433\u0430\u044F \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0430 \u043E\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043D\u043E\u043C\u0435\u0440\u043E\u043C \u0437\u0430\u0434\u0430\u0447\u0438 \u2014 \u0434\u043E\u0436\u0434\u0438\u0441\u044C \u0435\u0451 \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u043C wait. \u041D\u043E\u0432\u0430\u044F \u0432\u0435\u0440\u0441\u0438\u044F \u0434\u0432\u0438\u0436\u043A\u0430 \u0438\u043B\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043D\u0438\u044F \u0437\u0430\u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442 \u043F\u043E\u0441\u043B\u0435 \u043F\u0435\u0440\u0435\u0437\u0430\u043F\u0443\u0441\u043A\u0430 \u041A\u043B\u043E\u0434\u0430 \u0438\u043B\u0438 Codex, \u0441\u043A\u0430\u0436\u0438 \u044D\u0442\u043E \u0447\u0435\u043B\u043E\u0432\u0435\u043A\u0443. \u0421\u043B\u043E\u043C\u0430\u043B\u043E\u0441\u044C \u043F\u043E\u0441\u043B\u0435 \u043E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u044F \u2014 rollback. \u041F\u043E\u0434\u043F\u0438\u0441\u043A\u0430 \u043D\u0435 \u043D\u0443\u0436\u043D\u0430: \u0443\u0437\u043D\u0430\u0442\u044C, \u0437\u0430 \u0447\u0442\u043E \u043F\u043B\u0430\u0442\u044F\u0442, \u043C\u043E\u0436\u043D\u043E \u0434\u043E \u043E\u043F\u043B\u0430\u0442\u044B, \u0430 \u0441\u043A\u0430\u0447\u0438\u0432\u0430\u043D\u0438\u0435 \u0441\u0430\u043C\u043E \u0443\u043F\u0438\u0440\u0430\u0435\u0442\u0441\u044F \u0432 \u043A\u043B\u044E\u0447 \u043D\u0430 \u0440\u0430\u0437\u0434\u0430\u0447\u0435.",
|
|
17975
|
+
description: "\u0412\u0441\u0451, \u0447\u0435\u043C \u043C\u043E\u043D\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043D\u0430 \u044D\u0442\u043E\u043C \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0435, \u2014 \u043E\u0434\u043D\u0438\u043C \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u043C. \u0411\u0435\u0437 \u0430\u0440\u0433\u0443\u043C\u0435\u043D\u0442\u043E\u0432 \u041F\u0420\u041E\u0412\u0415\u0420\u042F\u0415\u0422 \u0434\u0435\u043B\u043E\u043C: \u0447\u0442\u043E \u0441\u0442\u043E\u0438\u0442 \u0438 \u0447\u0435\u0433\u043E \u043D\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442, \u0447\u0442\u043E \u0434\u043E\u043A\u0430\u0447\u0430\u0435\u0442\u0441\u044F \u043F\u043E \u043F\u0440\u043E\u0441\u044C\u0431\u0435 \u0438 \u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0432\u0435\u0441\u0438\u0442, \u0447\u0442\u043E \u0443\u043C\u0435\u0435\u0442 \u043C\u043E\u043D\u0442\u0430\u0436 (\u0448\u0430\u0433\u0438, \u0432\u043E\u043F\u0440\u043E\u0441\u044B \u0434\u043B\u044F \u043A\u0430\u0440\u0442\u043E\u0447\u0435\u043A choose_variant, \u0447\u0435\u0439 \u0440\u0435\u0446\u0435\u043F\u0442 \u0438 \u0447\u0435\u0439 \u0441\u0442\u0438\u043B\u044C) \u0438 \u0432\u044B\u0448\u043B\u0430 \u043B\u0438 \u043D\u043E\u0432\u0430\u044F \u0432\u0435\u0440\u0441\u0438\u044F \u0434\u0432\u0438\u0436\u043A\u0430 \u0438\u043B\u0438 \u0441\u0430\u043C\u043E\u0433\u043E \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043D\u0438\u044F. \u0417\u043E\u0432\u0438 \u041F\u0415\u0420\u0412\u042B\u041C, \u0434\u043E \u043B\u044E\u0431\u043E\u0439 \u0440\u0430\u0431\u043E\u0442\u044B \u0441 \u0432\u0438\u0434\u0435\u043E, \u0438 \u0438\u0437 \u0441\u0432\u043E\u0435\u0439 \u043F\u0430\u043C\u044F\u0442\u0438 \u043E\u0431 \u044D\u0442\u043E\u043C \u043D\u0435 \u0440\u0430\u0441\u0441\u043A\u0430\u0437\u044B\u0432\u0430\u0439.\n\u0421\u0442\u0430\u0432\u0438\u0442 \u0438 \u043E\u0431\u043D\u043E\u0432\u043B\u044F\u0435\u0442 \u0441 what, \u043D\u043E \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u043E\u0441\u043B\u0435 \xAB\u0434\u0430\xBB \u0447\u0435\u043B\u043E\u0432\u0435\u043A\u0430: \u0441\u043D\u0430\u0447\u0430\u043B\u0430 \u0441\u043A\u0430\u0436\u0438 \u0435\u043C\u0443 \u0441\u043B\u043E\u0432\u0430\u043C\u0438, \u0447\u0442\u043E \u043F\u043E\u0441\u0442\u0430\u0432\u0438\u0448\u044C \u0438 \u0441\u043A\u043E\u043B\u044C\u043A\u043E \u044D\u0442\u043E \u0432\u0435\u0441\u0438\u0442, \u043F\u043E\u0442\u043E\u043C \u0437\u043E\u0432\u0438 \u0441 \u0442\u0435\u043C \u0436\u0435 what \u0438 consent=true. \xAB\u0421\u043A\u0430\u0447\u0430\u0439\xBB \u0438 \xAB\u043E\u0431\u043D\u043E\u0432\u0438\xBB \u2014 \u0442\u043E \u0436\u0435 \xAB\u0434\u0430\xBB \u043D\u0430 \u0442\u043E, \u0447\u0442\u043E \u043A\u0430\u0440\u0442\u043E\u0447\u043A\u0430 \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438 \u0443\u0436\u0435 \u043D\u0430\u0437\u0432\u0430\u043B\u0430 \u0441 \u0432\u0435\u0441\u043E\u043C: \u0437\u043E\u0432\u0438 what=all \u0441 consent=true. \u0411\u0435\u0437 consent \u043D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u043A\u0430\u0447\u0430\u0435\u0442\u0441\u044F \u2014 \u043F\u0440\u0438\u0434\u0443\u0442 \u0432\u0435\u0441 \u0438 \u0432\u043E\u043F\u0440\u043E\u0441. \u0422\u044F\u0436\u0451\u043B\u043E\u0435 \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044F \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u043E\u0434 \u043F\u0440\u043E\u0441\u044C\u0431\u0443: \u043D\u0435 \u043F\u0440\u043E\u0441\u0438\u043B\u0438 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u044B \u2014 \u043D\u0435 \u0441\u0442\u0430\u0432\u044C speech, \u043D\u0435 \u043F\u0440\u043E\u0441\u0438\u043B\u0438 \u043D\u043E\u0432\u044B\u0439 \u0444\u043E\u043D \u2014 \u043D\u0435 \u0441\u0442\u0430\u0432\u044C cutout.\n\u0414\u043E\u043B\u0433\u0430\u044F \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0430 \u043E\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043D\u043E\u043C\u0435\u0440\u043E\u043C \u0437\u0430\u0434\u0430\u0447\u0438 \u2014 \u0434\u043E\u0436\u0434\u0438\u0441\u044C \u0435\u0451 \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u043C wait. \u041D\u043E\u0432\u0430\u044F \u0432\u0435\u0440\u0441\u0438\u044F \u0434\u0432\u0438\u0436\u043A\u0430 \u0438\u043B\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043D\u0438\u044F \u0437\u0430\u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442 \u043F\u043E\u0441\u043B\u0435 \u043F\u0435\u0440\u0435\u0437\u0430\u043F\u0443\u0441\u043A\u0430 \u041A\u043B\u043E\u0434\u0430 \u0438\u043B\u0438 Codex, \u0441\u043A\u0430\u0436\u0438 \u044D\u0442\u043E \u0447\u0435\u043B\u043E\u0432\u0435\u043A\u0443. \u0421\u043B\u043E\u043C\u0430\u043B\u043E\u0441\u044C \u043F\u043E\u0441\u043B\u0435 \u043E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u044F \u2014 rollback. \u041F\u043E\u0434\u043F\u0438\u0441\u043A\u0430 \u043D\u0435 \u043D\u0443\u0436\u043D\u0430: \u0443\u0437\u043D\u0430\u0442\u044C, \u0437\u0430 \u0447\u0442\u043E \u043F\u043B\u0430\u0442\u044F\u0442, \u043C\u043E\u0436\u043D\u043E \u0434\u043E \u043E\u043F\u043B\u0430\u0442\u044B, \u0430 \u0441\u043A\u0430\u0447\u0438\u0432\u0430\u043D\u0438\u0435 \u0441\u0430\u043C\u043E \u0443\u043F\u0438\u0440\u0430\u0435\u0442\u0441\u044F \u0432 \u043A\u043B\u044E\u0447 \u043D\u0430 \u0440\u0430\u0437\u0434\u0430\u0447\u0435.",
|
|
17938
17976
|
// Полоса хода работы в ленте: установка качает десятки минут, и человек
|
|
17939
17977
|
// видит, что качается и сколько уже скачано. ⚠ Ожидание задачи — у
|
|
17940
17978
|
// отдельного инструмента `wait`, без полосы: полоса объявлена на
|
|
@@ -17983,9 +18021,12 @@ function setupTool(engine, passport, key, baseUrl) {
|
|
|
17983
18021
|
const said = await answer(args, ctx?.emitProgress, news);
|
|
17984
18022
|
return withCard(said, () => setupCard({
|
|
17985
18023
|
readiness: null,
|
|
17986
|
-
engine: news.engine ?? { installed: engine.freshVersion(), fresh: null, mb: 0, status: 0 },
|
|
18024
|
+
engine: news.engine ?? { installed: engine.freshVersion(), fresh: null, mb: 0, status: 0, notes: "" },
|
|
17987
18025
|
shell: news.shell,
|
|
17988
18026
|
note: firstLine(said),
|
|
18027
|
+
// Проверки здесь не было, а работа была: «Проверяю, что установлено»
|
|
18028
|
+
// над ответом «поставил новую версию» соврало бы о том, что идёт.
|
|
18029
|
+
...args.consent === true && args.what !== void 0 && UPDATES.has(args.what) ? { title: TITLE_UPDATING } : {},
|
|
17989
18030
|
shellVersion: VERSION
|
|
17990
18031
|
}));
|
|
17991
18032
|
}
|
|
@@ -18024,7 +18065,7 @@ async function lookAround(engine, model, key, baseUrl) {
|
|
|
18024
18065
|
};
|
|
18025
18066
|
const card = (said, o) => withCard(said, () => setupCard({
|
|
18026
18067
|
readiness: o.readiness ?? null,
|
|
18027
|
-
engine: engineNews ?? { installed: engine.freshVersion(), fresh: null, mb: 0, status: 0 },
|
|
18068
|
+
engine: engineNews ?? { installed: engine.freshVersion(), fresh: null, mb: 0, status: 0, notes: "" },
|
|
18028
18069
|
shell: shellNews,
|
|
18029
18070
|
...o.noEngine === true ? { noEngine: true } : {},
|
|
18030
18071
|
...o.noPython === true ? { noPython: true } : {},
|
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, currentMachineFingerprint, CrashReporter, watchProcessCrashes, McpServer, buildAll, realPace, buildResources, StdioServerTransport, fromHost, WHERE_TO_GET_KEY, Wakefulness, systemBlocker, updateEngine, installStep, NaparnikApiClient, timeToCheck2, manifestUrlFor, fetchManifest, markChecked2, decide, shellDir, timeToCheck, bundleUrlFor, fetchShellManifest, markChecked, decideShell, installedShell, NaparnikConfigError } from './chunk-
|
|
2
|
+
import { Engine, chooseBody, handOverToBody, VERSION, rollback, rollbackShell, remove, fromNpxCache, install, keyFromBlock, readConfig, ForeignBlockError, currentMachineFingerprint, CrashReporter, watchProcessCrashes, McpServer, buildAll, realPace, buildResources, StdioServerTransport, fromHost, WHERE_TO_GET_KEY, Wakefulness, systemBlocker, updateEngine, installStep, NaparnikApiClient, timeToCheck2, manifestUrlFor, fetchManifest, markChecked2, decide, shellDir, timeToCheck, bundleUrlFor, fetchShellManifest, markChecked, decideShell, installedShell, NaparnikConfigError } from './chunk-5E3UBSQQ.js';
|
|
3
3
|
import { fileURLToPath } from 'url';
|
|
4
4
|
import { realpathSync, readFileSync } from 'fs';
|
|
5
5
|
|
package/dist/index.d.ts
CHANGED
|
@@ -1534,9 +1534,9 @@ declare class NaparnikConfigError extends NaparnikError {
|
|
|
1534
1534
|
* годится ли она для новой начинки: разойдись она с пакетом, и в логах будет
|
|
1535
1535
|
* стоять чужое число, а обновление начнёт считать оболочку не той.
|
|
1536
1536
|
*/
|
|
1537
|
-
declare const VERSION = "0.10.
|
|
1537
|
+
declare const VERSION = "0.10.42";
|
|
1538
1538
|
/** Как мы представляемся серверу Напарника. По нему в логах видно оболочку. */
|
|
1539
|
-
declare const USER_AGENT = "naparnik-mcp/0.10.
|
|
1539
|
+
declare const USER_AGENT = "naparnik-mcp/0.10.42";
|
|
1540
1540
|
/**
|
|
1541
1541
|
* Самая старая начинка (движок монтажа), с которой эта оболочка работает.
|
|
1542
1542
|
* Обновление начинки ниже этой версии не ставится, а выше — требует оболочки
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { DEFAULT_HOME, DeliveryError, Engine, ForeignBlockError, INSIDE_PYTHON, INSTALL_STEPS, KEEP_COPIES, KEEP_VERSIONS, LONG_STEPS, MANIFEST_TIMEOUT_MS, MANIFEST_URL, MARKER, MIN_ENGINE, NaparnikApiClient, NaparnikAuthError, NaparnikClientError, NaparnikConfigError, NaparnikError, NaparnikInsufficientBalanceError, NaparnikScopeError, NaparnikServerError, NaparnikTimeoutError, PAUSE_HOURS, SERVER_NAME, SOURCES_FILE, START_SEC, TOOL_SEC, USER_AGENT, VERSION, buildAll, buildBlock, buildResources, compare, configPath, decide, defineTool, deploy, downloadFile, fetchManifest, fileOrRefusal, findBlock, fromNpxCache, inside, install, installPayload, installPython, jsonSchemaOf, keyInTable, lastLine, loadConfig, markChecked2 as markChecked, markCurrent, parseEngineManifest, parseFailure, path, platformKey, previousVersion, probe, pythonSource, refusalFor, remove, rollback, tarEntries, tidyOld, timeToCheck2 as timeToCheck, unpackArchive, withArgs } from './chunk-
|
|
1
|
+
export { DEFAULT_HOME, DeliveryError, Engine, ForeignBlockError, INSIDE_PYTHON, INSTALL_STEPS, KEEP_COPIES, KEEP_VERSIONS, LONG_STEPS, MANIFEST_TIMEOUT_MS, MANIFEST_URL, MARKER, MIN_ENGINE, NaparnikApiClient, NaparnikAuthError, NaparnikClientError, NaparnikConfigError, NaparnikError, NaparnikInsufficientBalanceError, NaparnikScopeError, NaparnikServerError, NaparnikTimeoutError, PAUSE_HOURS, SERVER_NAME, SOURCES_FILE, START_SEC, TOOL_SEC, USER_AGENT, VERSION, buildAll, buildBlock, buildResources, compare, configPath, decide, defineTool, deploy, downloadFile, fetchManifest, fileOrRefusal, findBlock, fromNpxCache, inside, install, installPayload, installPython, jsonSchemaOf, keyInTable, lastLine, loadConfig, markChecked2 as markChecked, markCurrent, parseEngineManifest, parseFailure, path, platformKey, previousVersion, probe, pythonSource, refusalFor, remove, rollback, tarEntries, tidyOld, timeToCheck2 as timeToCheck, unpackArchive, withArgs } from './chunk-5E3UBSQQ.js';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@naparnik/mcp",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.42",
|
|
4
4
|
"description": "MCP-сервер Напарника: монтаж вертикального видео на машине пользователя — паузы, субтитры, герой на новом фоне, звук. Видео никуда не уезжает.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
6
6
|
"private": false,
|