@naparnik/mcp 0.10.67 → 0.10.69
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 +91 -9
- package/dist/{chunk-C7LCRGXX.js → chunk-KXX2HN3I.js} +74 -6
- 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
|
@@ -15,46 +15,128 @@
|
|
|
15
15
|
> владелец, в том числе чужое. На «что ты умеешь» отвечай спокойно: ЧТО файл
|
|
16
16
|
> умеет — можно, КАК он это делает — нет.
|
|
17
17
|
|
|
18
|
-
#
|
|
18
|
+
# Что нового в «Монтаже через Claude или ChatGPT»
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
Один журнал на весь продукт: разделы версий расширения и разделы «монтаж»
|
|
21
|
+
про сам монтаж. Отсюда берутся «что нового» при обновлении, недельная
|
|
22
|
+
сводка в боте и пост в клубе.
|
|
23
|
+
|
|
24
|
+
## 0.10.69 — 2026-09-26 — исправление. Ход работы на виду
|
|
25
|
+
|
|
26
|
+
Claude теперь сам заводит шаги в панели Progress, как только берётся за
|
|
27
|
+
работу, и отмечает каждый. В ChatGPT (Codex) панели нет — там шаги приходят
|
|
28
|
+
списком в ответе.
|
|
29
|
+
|
|
30
|
+
## монтаж — 2026-09-26 — новое. «Сделай как у него»
|
|
31
|
+
|
|
32
|
+
Пришлите чужой рилс и скажите «сделай так же». Напарник разберёт его: где
|
|
33
|
+
склейки и наезды, что появляется и уходит, за сколько и как плавно, какие у
|
|
34
|
+
плашек углы и тени. Потом повторит это на вашем ролике.
|
|
35
|
+
|
|
36
|
+
## 0.10.68 — 2026-09-26 — новое. Разбор чужого ролика
|
|
37
|
+
|
|
38
|
+
Claude и ChatGPT смотрят чужой рилс не на глаз, а с точными числами: когда
|
|
39
|
+
что появилось, сколько длилось, какой плавностью. Рядом — кадры этих
|
|
40
|
+
моментов.
|
|
41
|
+
|
|
42
|
+
## монтаж — 2026-09-26 — новое. Звуки у всех
|
|
43
|
+
|
|
44
|
+
Свуши, удары, писк и дзынь теперь приезжают вместе с монтажом. На
|
|
45
|
+
посадках вставок звуки встают сами — разные у соседних, по смыслу
|
|
46
|
+
вставки. Не нужны — скажите «без звуков».
|
|
47
|
+
|
|
48
|
+
## монтаж — 2026-09-26 — новое. Дым, инверсия и видео внутри букв
|
|
49
|
+
|
|
50
|
+
Дым, огонь и засвет, снятые на чёрном, ложатся на ролик без чёрного фона —
|
|
51
|
+
остаётся только свет. Текст может меняться по тому, что под ним: на
|
|
52
|
+
светлом он тёмный, на тёмном светлый. А ещё видео можно показать внутри
|
|
53
|
+
букв, и у каждого слова свой кусок. Просто попросите.
|
|
54
|
+
|
|
55
|
+
## монтаж — 2026-09-26 — новое. Покажет ваши работы
|
|
56
|
+
|
|
57
|
+
Скажите «покажи мои работы» и пришлите картинки. Напарник разложит их
|
|
58
|
+
красиво: одну крупно, колодой, парой «было — стало», сеткой, веером или
|
|
59
|
+
стопкой. Каждая раскладка появляется и уходит по-своему.
|
|
60
|
+
|
|
61
|
+
Своя картинка у подписи теперь тоже видна в ролике.
|
|
62
|
+
|
|
63
|
+
## монтаж — 2026-09-26 — новое. Живее и разнообразнее
|
|
64
|
+
|
|
65
|
+
Вставки больше не появляются и не уходят одинаково: у соседних разные
|
|
66
|
+
место и движение, и каждая уходит движением, а не пропадает. Движения
|
|
67
|
+
плавные — разгоняются и замедляются, а не едут по линейке. На посадках
|
|
68
|
+
вставок сами встают звуки, если не попросить «без звуков». На акцентной
|
|
69
|
+
фразе можно резко приблизить кадр.
|
|
70
|
+
|
|
71
|
+
## монтаж — 2026-09-25 — исправление. Что обещано, то и работает
|
|
72
|
+
|
|
73
|
+
Всё, что Напарник предлагает в монтаже, теперь срабатывает. Если чего-то
|
|
74
|
+
пока нет, он скажет сразу, а не соберёт ролик молча без этого.
|
|
75
|
+
|
|
76
|
+
## монтаж — 2026-09-25 — исправление. Плавный наезд без дрожи
|
|
77
|
+
|
|
78
|
+
Медленный наезд и сдвиг кадра идут плавно. Раньше картинка чуть
|
|
79
|
+
подрагивала.
|
|
80
|
+
|
|
81
|
+
## монтаж — 2026-09-25 — новое. Титул и заставка по просьбе
|
|
82
|
+
|
|
83
|
+
Попросите титул, заставку или финальную надпись — Напарник сделает их в
|
|
84
|
+
вашем стиле. Хоть «как у Apple», хоть печатной машинкой.
|
|
85
|
+
|
|
86
|
+
## монтаж — 2026-09-25 — новое. Музыка громко в начале, тише под голос
|
|
87
|
+
|
|
88
|
+
Музыку можно сделать громкой в начале и тише потом, когда вы говорите.
|
|
89
|
+
Скажите Напарнику, где громче и где тише.
|
|
90
|
+
|
|
91
|
+
## монтаж — 2026-09-25 — исправление. Сборка не падает на мелочах
|
|
92
|
+
|
|
93
|
+
Время в монтаже разошлось на кадр — Напарник поправит сам и скажет, что
|
|
94
|
+
поправил. Раньше ролик из-за такого не собирался. А если сборка всё же
|
|
95
|
+
не прошла, видно почему.
|
|
96
|
+
|
|
97
|
+
## монтаж — 2026-09-25 — исправление. Музыка короче видео — не ошибка
|
|
98
|
+
|
|
99
|
+
Песня кончилась раньше видео — ролик собирается, музыка просто
|
|
100
|
+
заканчивается. Затухание в конце песни теперь слышно.
|
|
101
|
+
|
|
102
|
+
## 0.10.67 — 2026-09-25 — исправление. Кончилась подписка — Claude не обещает смонтировать сам
|
|
21
103
|
|
|
22
104
|
Если подписка закончилась, Claude и ChatGPT сразу это знают. Они не берутся
|
|
23
105
|
собрать монтаж своим кодом, а говорят, что без подписки не работает, и дают
|
|
24
106
|
ссылку продлить. Смонтированное остаётся на месте.
|
|
25
107
|
|
|
26
|
-
## 0.10.66 — 2026-09-25
|
|
108
|
+
## 0.10.66 — 2026-09-25 — исправление. Лицензия видна в каждом файле
|
|
27
109
|
|
|
28
110
|
В каждом файле расширения теперь прямо написано: закрытая лицензия,
|
|
29
111
|
правообладатель ИП Шамышев А. Б. Монтажу это не мешает.
|
|
30
112
|
|
|
31
|
-
## 0.10.64 — 2026-09-25
|
|
113
|
+
## 0.10.64 — 2026-09-25 — новое. Компьютер не засыпает посреди работы
|
|
32
114
|
|
|
33
115
|
Когда Claude или ChatGPT долго рендерит или рисует сам, компьютер больше
|
|
34
116
|
не уходит в сон на середине. Можно отойти и вернуться к готовому.
|
|
35
117
|
|
|
36
|
-
## 0.10.63 — 2026-09-25
|
|
118
|
+
## 0.10.63 — 2026-09-25 — новое. Готовый ролик сразу на виду
|
|
37
119
|
|
|
38
120
|
Смонтировал — Claude кладёт файл в Outputs и даёт на него ссылку в ответе.
|
|
39
121
|
Искать по папкам не нужно.
|
|
40
122
|
|
|
41
|
-
## 0.10.62 — 2026-09-25
|
|
123
|
+
## 0.10.62 — 2026-09-25 — новое. Своё не теряется
|
|
42
124
|
|
|
43
125
|
Чего нет в наборе — заставку, анимацию — Claude делает сам и кладёт в папку
|
|
44
126
|
Напарника, а не во временную. В следующий раз находит готовое.
|
|
45
127
|
|
|
46
|
-
## 0.10.61 — 2026-09-25
|
|
128
|
+
## 0.10.61 — 2026-09-25 — новое. Свои шрифты
|
|
47
129
|
|
|
48
130
|
Субтитры и графика рисуются шрифтом вашего стиля. Можно назвать шрифт,
|
|
49
131
|
который стоит у вас на компьютере, или прислать файл шрифта в чат — он
|
|
50
132
|
ляжет к вашим шрифтам.
|
|
51
133
|
|
|
52
|
-
## 0.10.60 — 2026-09-25
|
|
134
|
+
## 0.10.60 — 2026-09-25 — новое. Видно, что происходит
|
|
53
135
|
|
|
54
136
|
На любую долгую работу — монтаж, картинку, что угодно — Claude заводит
|
|
55
137
|
список шагов справа, отмечает каждый и пишет, что сейчас и сколько ждать.
|
|
56
138
|
|
|
57
|
-
## 0.10.59 — 2026-09-25
|
|
139
|
+
## 0.10.59 — 2026-09-25 — исправление. Один ролик — одна сборка
|
|
58
140
|
|
|
59
141
|
Попросили собрать ролик ещё раз, пока он собирается, — Напарник не
|
|
60
142
|
начинает заново, а показывает ту же сборку. Поправили ролик и сказали
|
|
@@ -770,7 +770,7 @@ function parsePositiveInt(raw, fallback) {
|
|
|
770
770
|
}
|
|
771
771
|
|
|
772
772
|
// src/version.ts
|
|
773
|
-
var VERSION = "0.10.
|
|
773
|
+
var VERSION = "0.10.69";
|
|
774
774
|
var USER_AGENT = `naparnik-mcp/${VERSION}`;
|
|
775
775
|
var MIN_ENGINE = "2026.09.24-478";
|
|
776
776
|
var LAUNCHER_PROTOCOL = 1;
|
|
@@ -19616,6 +19616,25 @@ async function describeVideo(engine, asked) {
|
|
|
19616
19616
|
])
|
|
19617
19617
|
);
|
|
19618
19618
|
}
|
|
19619
|
+
async function studyVideo(engine, asked) {
|
|
19620
|
+
const place = engine.place();
|
|
19621
|
+
if (place === null) return toolError(engine.whyNoEngine());
|
|
19622
|
+
const python = await engine.pythonTrouble();
|
|
19623
|
+
if (python !== null) return toolError(python);
|
|
19624
|
+
const where = fileOrRefusal(asked.video);
|
|
19625
|
+
if ("refusal" in where) return toolError(where.refusal);
|
|
19626
|
+
const hints = (asked.hints ?? []).flatMap((one) => ["--hint", `${one.at}:${one.box.join(",")}`]);
|
|
19627
|
+
try {
|
|
19628
|
+
const { stdout } = await engine.run(place, ["study", "--video", where.path, "--sheet", ...hints]);
|
|
19629
|
+
const found = JSON.parse(lastLine(stdout));
|
|
19630
|
+
const words = { type: "text", text: found["in_words"] };
|
|
19631
|
+
if (found["file"] === null) return toolMixed([words]);
|
|
19632
|
+
const buffer = await readFile(found["file"]);
|
|
19633
|
+
return toolMixed([words, { type: "image", base64: buffer.toString("base64"), mediaType: "image/jpeg" }]);
|
|
19634
|
+
} catch (err) {
|
|
19635
|
+
return asToolResult(parseFailure(err, "\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0440\u0430\u0437\u043E\u0431\u0440\u0430\u0442\u044C \u0440\u043E\u043B\u0438\u043A"));
|
|
19636
|
+
}
|
|
19637
|
+
}
|
|
19619
19638
|
var FRAME_KEYS = ["moment", "moments", "width", "version", "from_where"];
|
|
19620
19639
|
function folderRefusal(candidate) {
|
|
19621
19640
|
const full = path(candidate);
|
|
@@ -19631,7 +19650,7 @@ function previewTool(engine) {
|
|
|
19631
19650
|
return defineTool({
|
|
19632
19651
|
name: "preview",
|
|
19633
19652
|
title: "\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u043A\u0430\u0434\u0440 \u0438 \u0441\u0432\u0435\u0434\u0435\u043D\u0438\u044F \u043E \u0432\u0438\u0434\u0435\u043E",
|
|
19634
|
-
description: "\u0421\u043C\u043E\u0442\u0440\u0438\u0442 \u043D\u0430 \u0440\u043E\u043B\u0438\u043A. \u0412\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u041A\u0410\u0420\u0422\u0418\u041D\u041A\u0423 \u2014 \u0441\u0430\u043C \u043F\u043E\u0441\u043C\u043E\u0442\u0440\u0438 \u043D\u0430 \u043D\u0435\u0451 \u0438 \u0441\u043A\u0430\u0436\u0438 \u0447\u0435\u043B\u043E\u0432\u0435\u043A\u0443, \u0447\u0442\u043E \u0432\u0438\u0434\u0438\u0448\u044C. \u0411\u0435\u0437 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u043E\u0432 \u2014 \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u044F\u044F \u0433\u043E\u0442\u043E\u0432\u0430\u044F \u0432\u0435\u0440\u0441\u0438\u044F \u043F\u043B\u0451\u043D\u043A\u043E\u0439 \u0438\u0437 \u0448\u0435\u0441\u0442\u0438 \u043C\u043E\u043C\u0435\u043D\u0442\u043E\u0432 \u043F\u043E \u0432\u0441\u0435\u043C\u0443 \u0440\u043E\u043B\u0438\u043A\u0443: \u0442\u0430\u043A \u0432\u0438\u0434\u043D\u043E \u0438 \u043F\u0435\u0440\u0432\u044B\u0439 \u043A\u0430\u0434\u0440, \u0438 \u043A\u0430\u043A \u0438\u0434\u0451\u0442 \u043C\u043E\u043D\u0442\u0430\u0436. \u0417\u043E\u0432\u0438 \u041F\u041E\u0421\u041B\u0415 \u043C\u043E\u043D\u0442\u0430\u0436\u0430, \u043F\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043C \u043E\u0442\u0447\u0438\u0442\u0430\u0442\u044C\u0441\u044F \u043E \u0433\u043E\u0442\u043E\u0432\u043E\u043C: \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u044B \u043C\u043E\u0433\u0443\u0442 \u0443\u0435\u0445\u0430\u0442\u044C \u0437\u0430 \u043A\u0440\u0430\u0439, \u043F\u043E\u043F\u0430\u0441\u0442\u044C \u043D\u0430 \u043B\u0438\u0446\u043E \u0438\u043B\u0438 \u043F\u043E\u0442\u0435\u0440\u044F\u0442\u044C\u0441\u044F \u043D\u0430 \u0441\u0432\u0435\u0442\u043B\u043E\u043C \u0444\u043E\u043D\u0435 \u2014 \u043F\u043E \u0442\u0435\u043A\u0441\u0442\u0443 \u0437\u0430\u0434\u0430\u0447\u0438 \u044D\u0442\u043E\u0433\u043E \u043D\u0435 \u0432\u0438\u0434\u043D\u043E. \u041E\u0434\u0438\u043D \u043C\u043E\u043C\u0435\u043D\u0442 \u043A\u0440\u0443\u043F\u043D\u0435\u0435 \u2014 moment. \u041A\u0430\u0440\u0442\u0438\u043D\u043A\u0430 \u0437\u0430\u043D\u0438\u043C\u0430\u0435\u0442 \u043C\u0435\u0441\u0442\u043E \u0432 \u0440\u0430\u0437\u0433\u043E\u0432\u043E\u0440\u0435, \u043F\u043E\u044D\u0442\u043E\u043C\u0443 \u043E\u043D\u0430 \u0443\u0437\u043A\u0430\u044F: \u043D\u0435 \u043F\u0440\u043E\u0441\u0438 \u0435\u0451 \u043F\u043E \u0434\u0435\u0441\u044F\u0442\u044C \u0440\u0430\u0437 \u043F\u043E\u0434\u0440\u044F\u0434.\n\u0421 info=true \u0432\u043C\u0435\u0441\u0442\u043E \u043A\u0430\u0440\u0442\u0438\u043D\u043A\u0438 \u2014 \u0441\u0432\u0435\u0434\u0435\u043D\u0438\u044F \u043E \u0444\u0430\u0439\u043B\u0435: \u0434\u043B\u0438\u043D\u0430, \u043A\u0430\u0434\u0440 \u0438 \u043E\u0440\u0438\u0435\u043D\u0442\u0430\u0446\u0438\u044F, \u0437\u0432\u0443\u043A \u0438 \u0433\u0440\u043E\u043C\u043A\u043E\u0441\u0442\u044C, \u043F\u0430\u0443\u0437\u044B, \u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0437\u0430\u0439\u043C\u0451\u0442 \u0440\u0430\u0441\u043F\u043E\u0437\u043D\u0430\u0432\u0430\u043D\u0438\u0435 \u0440\u0435\u0447\u0438 \u043D\u0430 \u044D\u0442\u043E\u043C \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0435. \u0417\u043E\u0432\u0438 \u043F\u0435\u0440\u0435\u0434 \u043F\u0435\u0440\u0432\u044B\u043C \u043C\u043E\u043D\u0442\u0430\u0436\u043E\u043C \u0447\u0443\u0436\u043E\u0433\u043E \u0444\u0430\u0439\u043B\u0430 \u0438 \u043A\u043E\u0433\u0434\u0430 \u0447\u0435\u043B\u043E\u0432\u0435\u043A \u0436\u0430\u043B\u0443\u0435\u0442\u0441\u044F \u043D\u0430 \u0437\u0432\u0443\u043A; \u043F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u044F \u043F\u0440\u0438\u0445\u043E\u0434\u044F\u0442 \u0441\u043B\u043E\u0432\u0430\u043C\u0438 \u0438 \u0441 \xAB\u0447\u0442\u043E \u0434\u0435\u043B\u0430\u0442\u044C\xBB \u2014 \u0447\u0438\u0442\u0430\u0439 \u0438\u0445 \u0447\u0435\u043B\u043E\u0432\u0435\u043A\u0443, \u043D\u0435 \u043F\u0435\u0440\u0435\u0441\u043A\u0430\u0437\u044B\u0432\u0430\u0439 \u0441\u0432\u043E\u0438\u043C\u0438.\n\u041D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u043C\u0435\u043D\u044F\u0435\u0442, \u043F\u043E\u0434\u043F\u0438\u0441\u043A\u0430 \u043D\u0435 \u043D\u0443\u0436\u043D\u0430.",
|
|
19653
|
+
description: "\u0421\u043C\u043E\u0442\u0440\u0438\u0442 \u043D\u0430 \u0440\u043E\u043B\u0438\u043A. \u0412\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u041A\u0410\u0420\u0422\u0418\u041D\u041A\u0423 \u2014 \u0441\u0430\u043C \u043F\u043E\u0441\u043C\u043E\u0442\u0440\u0438 \u043D\u0430 \u043D\u0435\u0451 \u0438 \u0441\u043A\u0430\u0436\u0438 \u0447\u0435\u043B\u043E\u0432\u0435\u043A\u0443, \u0447\u0442\u043E \u0432\u0438\u0434\u0438\u0448\u044C. \u0411\u0435\u0437 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u043E\u0432 \u2014 \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u044F\u044F \u0433\u043E\u0442\u043E\u0432\u0430\u044F \u0432\u0435\u0440\u0441\u0438\u044F \u043F\u043B\u0451\u043D\u043A\u043E\u0439 \u0438\u0437 \u0448\u0435\u0441\u0442\u0438 \u043C\u043E\u043C\u0435\u043D\u0442\u043E\u0432 \u043F\u043E \u0432\u0441\u0435\u043C\u0443 \u0440\u043E\u043B\u0438\u043A\u0443: \u0442\u0430\u043A \u0432\u0438\u0434\u043D\u043E \u0438 \u043F\u0435\u0440\u0432\u044B\u0439 \u043A\u0430\u0434\u0440, \u0438 \u043A\u0430\u043A \u0438\u0434\u0451\u0442 \u043C\u043E\u043D\u0442\u0430\u0436. \u0417\u043E\u0432\u0438 \u041F\u041E\u0421\u041B\u0415 \u043C\u043E\u043D\u0442\u0430\u0436\u0430, \u043F\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043C \u043E\u0442\u0447\u0438\u0442\u0430\u0442\u044C\u0441\u044F \u043E \u0433\u043E\u0442\u043E\u0432\u043E\u043C: \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u044B \u043C\u043E\u0433\u0443\u0442 \u0443\u0435\u0445\u0430\u0442\u044C \u0437\u0430 \u043A\u0440\u0430\u0439, \u043F\u043E\u043F\u0430\u0441\u0442\u044C \u043D\u0430 \u043B\u0438\u0446\u043E \u0438\u043B\u0438 \u043F\u043E\u0442\u0435\u0440\u044F\u0442\u044C\u0441\u044F \u043D\u0430 \u0441\u0432\u0435\u0442\u043B\u043E\u043C \u0444\u043E\u043D\u0435 \u2014 \u043F\u043E \u0442\u0435\u043A\u0441\u0442\u0443 \u0437\u0430\u0434\u0430\u0447\u0438 \u044D\u0442\u043E\u0433\u043E \u043D\u0435 \u0432\u0438\u0434\u043D\u043E. \u041E\u0434\u0438\u043D \u043C\u043E\u043C\u0435\u043D\u0442 \u043A\u0440\u0443\u043F\u043D\u0435\u0435 \u2014 moment. \u041A\u0430\u0440\u0442\u0438\u043D\u043A\u0430 \u0437\u0430\u043D\u0438\u043C\u0430\u0435\u0442 \u043C\u0435\u0441\u0442\u043E \u0432 \u0440\u0430\u0437\u0433\u043E\u0432\u043E\u0440\u0435, \u043F\u043E\u044D\u0442\u043E\u043C\u0443 \u043E\u043D\u0430 \u0443\u0437\u043A\u0430\u044F: \u043D\u0435 \u043F\u0440\u043E\u0441\u0438 \u0435\u0451 \u043F\u043E \u0434\u0435\u0441\u044F\u0442\u044C \u0440\u0430\u0437 \u043F\u043E\u0434\u0440\u044F\u0434.\n\u0421 info=true \u0432\u043C\u0435\u0441\u0442\u043E \u043A\u0430\u0440\u0442\u0438\u043D\u043A\u0438 \u2014 \u0441\u0432\u0435\u0434\u0435\u043D\u0438\u044F \u043E \u0444\u0430\u0439\u043B\u0435: \u0434\u043B\u0438\u043D\u0430, \u043A\u0430\u0434\u0440 \u0438 \u043E\u0440\u0438\u0435\u043D\u0442\u0430\u0446\u0438\u044F, \u0437\u0432\u0443\u043A \u0438 \u0433\u0440\u043E\u043C\u043A\u043E\u0441\u0442\u044C, \u043F\u0430\u0443\u0437\u044B, \u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0437\u0430\u0439\u043C\u0451\u0442 \u0440\u0430\u0441\u043F\u043E\u0437\u043D\u0430\u0432\u0430\u043D\u0438\u0435 \u0440\u0435\u0447\u0438 \u043D\u0430 \u044D\u0442\u043E\u043C \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0435. \u0417\u043E\u0432\u0438 \u043F\u0435\u0440\u0435\u0434 \u043F\u0435\u0440\u0432\u044B\u043C \u043C\u043E\u043D\u0442\u0430\u0436\u043E\u043C \u0447\u0443\u0436\u043E\u0433\u043E \u0444\u0430\u0439\u043B\u0430 \u0438 \u043A\u043E\u0433\u0434\u0430 \u0447\u0435\u043B\u043E\u0432\u0435\u043A \u0436\u0430\u043B\u0443\u0435\u0442\u0441\u044F \u043D\u0430 \u0437\u0432\u0443\u043A; \u043F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u044F \u043F\u0440\u0438\u0445\u043E\u0434\u044F\u0442 \u0441\u043B\u043E\u0432\u0430\u043C\u0438 \u0438 \u0441 \xAB\u0447\u0442\u043E \u0434\u0435\u043B\u0430\u0442\u044C\xBB \u2014 \u0447\u0438\u0442\u0430\u0439 \u0438\u0445 \u0447\u0435\u043B\u043E\u0432\u0435\u043A\u0443, \u043D\u0435 \u043F\u0435\u0440\u0435\u0441\u043A\u0430\u0437\u044B\u0432\u0430\u0439 \u0441\u0432\u043E\u0438\u043C\u0438.\n\u0421 study=true \u2014 \u0440\u0430\u0437\u0431\u043E\u0440 \u0447\u0443\u0436\u043E\u0433\u043E \u0440\u043E\u043B\u0438\u043A\u0430, \xAB\u0441\u0434\u0435\u043B\u0430\u0439 \u043A\u0430\u043A \u0443 \u043D\u0435\u0433\u043E\xBB: \u0441\u043A\u043B\u0435\u0439\u043A\u0438, \u043D\u0430\u0435\u0437\u0434\u044B \u043A\u0430\u043C\u0435\u0440\u044B, \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B, \u0438\u0445 \u0432\u0445\u043E\u0434 \u0438 \u0443\u0445\u043E\u0434 \u2014 \u0434\u043B\u0438\u043D\u0430 \u0432 \u043C\u0441, \u043A\u0440\u0438\u0432\u0430\u044F, \u0444\u043E\u0440\u043C\u0430 \u043F\u043B\u0430\u0448\u043A\u0438 \u2014 \u0438 \u043B\u0438\u0441\u0442 \u043A\u0430\u0434\u0440\u043E\u0432 \u0441\u043E\u0431\u044B\u0442\u0438\u0439. \u0427\u0442\u043E \u0437\u0430 \u044D\u043B\u0435\u043C\u0435\u043D\u0442, \u0443\u0437\u043D\u0430\u0451\u0448\u044C \u0442\u044B; \u0432\u0440\u0435\u043C\u044F \u0434\u043E \u043A\u0430\u0434\u0440\u0430 \u043C\u0435\u0440\u044F\u0435\u0442 \u0440\u0430\u0437\u0431\u043E\u0440: \u0432\u0438\u0434\u0438\u0448\u044C \u044D\u043B\u0435\u043C\u0435\u043D\u0442 \u2014 \u043F\u043E\u0437\u043E\u0432\u0438 \u0435\u0449\u0451 \u0440\u0430\u0437 \u0441 hints (\u0441\u0435\u043A\u0443\u043D\u0434\u0430, \u0433\u0434\u0435 \u043E\u043D \u0443\u0436\u0435 \u0446\u0435\u043B\u0438\u043A\u043E\u043C, \u0438 \u0440\u0430\u043C\u043A\u0430). \u0421\u0442\u0440\u0430\u043D\u0438\u0446\u0430 \u0441\u043F\u0440\u0430\u0432\u043E\u0447\u043D\u0438\u043A\u0430 work/study.md.\n\u041D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u043C\u0435\u043D\u044F\u0435\u0442, \u043F\u043E\u0434\u043F\u0438\u0441\u043A\u0430 \u043D\u0435 \u043D\u0443\u0436\u043D\u0430.",
|
|
19635
19654
|
args: external_exports.object({
|
|
19636
19655
|
video: external_exports.string().describe(
|
|
19637
19656
|
"\u041F\u0443\u0442\u044C \u043A \u0432\u0438\u0434\u0435\u043E\u0444\u0430\u0439\u043B\u0443 \u043D\u0430 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0435 \u0447\u0435\u043B\u043E\u0432\u0435\u043A\u0430 \u2014 \u043A \u0438\u0441\u0445\u043E\u0434\u043D\u0438\u043A\u0443 \u0440\u043E\u043B\u0438\u043A\u0430: \u0433\u043E\u0442\u043E\u0432\u044B\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0438\u0449\u0443\u0442\u0441\u044F \u043F\u043E \u043D\u0435\u043C\u0443"
|
|
@@ -19653,6 +19672,17 @@ function previewTool(engine) {
|
|
|
19653
19672
|
).optional(),
|
|
19654
19673
|
info: external_exports.boolean().describe(
|
|
19655
19674
|
"\u041D\u0435 \u043A\u0430\u0440\u0442\u0438\u043D\u043A\u0430, \u0430 \u0441\u0432\u0435\u0434\u0435\u043D\u0438\u044F \u043E \u0444\u0430\u0439\u043B\u0435: \u0434\u043B\u0438\u043D\u0430, \u043A\u0430\u0434\u0440, \u0437\u0432\u0443\u043A \u0438 \u0433\u0440\u043E\u043C\u043A\u043E\u0441\u0442\u044C, \u043F\u0430\u0443\u0437\u044B, \u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0437\u0430\u0439\u043C\u0451\u0442 \u0440\u0430\u0441\u043F\u043E\u0437\u043D\u0430\u0432\u0430\u043D\u0438\u0435 \u0440\u0435\u0447\u0438. \u041A\u0430\u0434\u0440 \u043F\u0440\u0438 \u044D\u0442\u043E\u043C \u043D\u0435 \u0440\u0438\u0441\u0443\u0435\u0442\u0441\u044F"
|
|
19675
|
+
).optional(),
|
|
19676
|
+
study: external_exports.boolean().describe(
|
|
19677
|
+
"\u0420\u0430\u0437\u0431\u043E\u0440 \u0447\u0443\u0436\u043E\u0433\u043E \u0440\u043E\u043B\u0438\u043A\u0430: \u0447\u0438\u0441\u043B\u0430 \u0441\u043E\u0431\u044B\u0442\u0438\u0439 \u0438 \u043B\u0438\u0441\u0442 \u043A\u0430\u0434\u0440\u043E\u0432 \u0441 \u0440\u0430\u043C\u043A\u0430\u043C\u0438. \u0421\u0435\u043A\u0443\u043D\u0434 \u0434\u0435\u0441\u044F\u0442\u044C \u043D\u0430 \u043F\u043E\u043B\u043C\u0438\u043D\u0443\u0442\u044B \u0440\u043E\u043B\u0438\u043A\u0430"
|
|
19678
|
+
).optional(),
|
|
19679
|
+
hints: external_exports.array(external_exports.object({
|
|
19680
|
+
at: external_exports.number().describe("\u0421\u0435\u043A\u0443\u043D\u0434\u0430, \u0433\u0434\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442 \u0432\u0438\u0434\u0435\u043D \u0446\u0435\u043B\u0438\u043A\u043E\u043C"),
|
|
19681
|
+
box: external_exports.tuple([external_exports.number(), external_exports.number(), external_exports.number(), external_exports.number()]).describe(
|
|
19682
|
+
"\u0420\u0430\u043C\u043A\u0430 [x, y, \u0448\u0438\u0440\u0438\u043D\u0430, \u0432\u044B\u0441\u043E\u0442\u0430] \u0434\u043E\u043B\u044F\u043C\u0438 \u043A\u0430\u0434\u0440\u0430, \u0441 \u0437\u0430\u043F\u0430\u0441\u043E\u043C \u0432\u043E\u043A\u0440\u0443\u0433 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430"
|
|
19683
|
+
)
|
|
19684
|
+
})).describe(
|
|
19685
|
+
"\u0422\u043E\u043B\u044C\u043A\u043E \u0441\u043E study: \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B, \u0447\u0442\u043E \u0442\u044B \u0432\u0438\u0434\u0438\u0448\u044C \u043D\u0430 \u043A\u0430\u0434\u0440\u0430\u0445, \u2014 \u0440\u0430\u0437\u0431\u043E\u0440 \u0434\u043E\u043C\u0435\u0440\u0438\u0442, \u043A\u043E\u0433\u0434\u0430 \u043A\u0430\u0436\u0434\u044B\u0439 \u043D\u0430\u0447\u0430\u043B \u043F\u043E\u044F\u0432\u043B\u044F\u0442\u044C\u0441\u044F, \u0432\u0441\u0442\u0430\u043B, \u043D\u0430\u0447\u0430\u043B \u0443\u0445\u043E\u0434\u0438\u0442\u044C \u0438 \u0438\u0441\u0447\u0435\u0437, \u0438 \u0435\u0433\u043E \u0444\u043E\u0440\u043C\u0443"
|
|
19656
19686
|
).optional()
|
|
19657
19687
|
// ⚠ ЛИШНЕЕ ОТБИВАЕТСЯ, А НЕ ВЫКИДЫВАЕТСЯ МОЛЧА, И ПРАВИЛО ЖИВЁТ В СХЕМЕ.
|
|
19658
19688
|
// `info` вместе с `moment` значит, что модель ждёт картинку на секунде, а
|
|
@@ -19661,14 +19691,24 @@ function previewTool(engine) {
|
|
|
19661
19691
|
// на регистрации, до запуска питона (`tool-args.ts`).
|
|
19662
19692
|
}).check((ctx) => {
|
|
19663
19693
|
const asked = ctx.value;
|
|
19664
|
-
if (asked.
|
|
19694
|
+
if (asked.hints !== void 0 && asked.study !== true) {
|
|
19695
|
+
ctx.issues.push({
|
|
19696
|
+
code: "custom",
|
|
19697
|
+
message: "\xABhints\xBB \u2014 \u043F\u043E\u0434\u0441\u043A\u0430\u0437\u043A\u0438 \u0440\u0430\u0437\u0431\u043E\u0440\u0443, \u043E\u043D\u0438 \u0440\u0430\u0431\u043E\u0442\u0430\u044E\u0442 \u0442\u043E\u043B\u044C\u043A\u043E \u0441\u043E study=true",
|
|
19698
|
+
input: asked,
|
|
19699
|
+
path: ["hints"]
|
|
19700
|
+
});
|
|
19701
|
+
}
|
|
19702
|
+
const mode = asked.info === true ? "info" : asked.study === true ? "study" : null;
|
|
19703
|
+
if (mode === null) return;
|
|
19665
19704
|
const extra = FRAME_KEYS.filter((name) => asked[name] !== void 0);
|
|
19705
|
+
if (mode === "study" && asked.info !== void 0) extra.push("info");
|
|
19666
19706
|
if (extra.length === 0) return;
|
|
19667
19707
|
ctx.issues.push({
|
|
19668
19708
|
code: "custom",
|
|
19669
|
-
message:
|
|
19709
|
+
message: (mode === "info" ? "\xABinfo\xBB \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0435\u0442 \u0441\u0432\u0435\u0434\u0435\u043D\u0438\u044F \u043E \u0444\u0430\u0439\u043B\u0435, \u0430 \u043A\u0430\u0434\u0440 \u043D\u0435 \u0440\u0438\u0441\u0443\u0435\u0442" : "\xABstudy\xBB \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u0442 \u0440\u043E\u043B\u0438\u043A \u0446\u0435\u043B\u0438\u043A\u043E\u043C \u0438 \u0440\u0438\u0441\u0443\u0435\u0442 \u0441\u0432\u043E\u0439 \u043B\u0438\u0441\u0442") + ` \u2014 \u043B\u0438\u0448\u043D\u0435\u0435: ${extra.join(", ")}. \u041F\u043E\u0437\u043E\u0432\u0438 \u043B\u0438\u0431\u043E \u0441 ${mode}, \u043B\u0438\u0431\u043E \u0441 \u043A\u043B\u044E\u0447\u0430\u043C\u0438 \u043A\u0430\u0434\u0440\u0430`,
|
|
19670
19710
|
input: asked,
|
|
19671
|
-
path: [
|
|
19711
|
+
path: [mode]
|
|
19672
19712
|
});
|
|
19673
19713
|
}),
|
|
19674
19714
|
readOnly: true,
|
|
@@ -19676,6 +19716,7 @@ function previewTool(engine) {
|
|
|
19676
19716
|
const folder = folderRefusal(args.video);
|
|
19677
19717
|
if (folder !== null) return toolError(folder);
|
|
19678
19718
|
if (args.info === true) return describeVideo(engine, { video: args.video });
|
|
19719
|
+
if (args.study === true) return studyVideo(engine, { video: args.video, hints: args.hints });
|
|
19679
19720
|
return showFrame(engine, {
|
|
19680
19721
|
video: args.video,
|
|
19681
19722
|
moment: args.moment,
|
|
@@ -22994,6 +23035,31 @@ ${result.content}` : [{ type: "text", text: header }, ...result.content]
|
|
|
22994
23035
|
};
|
|
22995
23036
|
}
|
|
22996
23037
|
|
|
23038
|
+
// src/habits.ts
|
|
23039
|
+
var HABITS = "\u041F\u0440\u0435\u0436\u0434\u0435 \u0432\u0441\u0435\u0433\u043E: \u0435\u0441\u0442\u044C \u0443 \u0442\u0435\u0431\u044F Progress (TaskCreate \u0438\u043B\u0438 TodoWrite) \u2014 \u0437\u0430\u0432\u0435\u0434\u0438 \u0432 \u043D\u0451\u043C \u0448\u0430\u0433\u0438 \u044D\u0442\u043E\u0439 \u0440\u0430\u0431\u043E\u0442\u044B \u0441\u0435\u0439\u0447\u0430\u0441, \u0434\u043E \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0433\u043E \u0432\u044B\u0437\u043E\u0432\u0430, \u0438 \u043E\u0442\u043C\u0435\u0447\u0430\u0439 \u043A\u0430\u0436\u0434\u044B\u0439 (TaskUpdate); \u043D\u0435\u0442 (Codex) \u2014 \u043D\u0430\u043F\u0438\u0448\u0438 \u0448\u0430\u0433\u0438 \u0447\u0435\u043B\u043E\u0432\u0435\u043A\u0443 \u0441\u043F\u0438\u0441\u043A\u043E\u043C. \u041C\u0435\u0436\u0434\u0443 \u0432\u044B\u0437\u043E\u0432\u0430\u043C\u0438 \u2014 \u0441\u0442\u0440\u043E\u043A\u0430: \u0447\u0442\u043E \u0434\u0435\u043B\u0430\u0435\u0448\u044C \u0438 \u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0436\u0434\u0430\u0442\u044C. \u0421\u0432\u043E\u0451 \u0434\u043E\u043B\u0433\u043E\u0435 \u0431\u0435\u0437 \u043D\u0430\u0448\u0438\u0445 \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u0432 \u2014 \u0441\u043F\u0435\u0440\u0432\u0430 stay_awake.";
|
|
23040
|
+
var HABIT_TOOLS = /* @__PURE__ */ new Set(["setup", "render"]);
|
|
23041
|
+
function headed2(result, line) {
|
|
23042
|
+
if (result.type !== "success") return result;
|
|
23043
|
+
return {
|
|
23044
|
+
...result,
|
|
23045
|
+
content: typeof result.content === "string" ? `${line}
|
|
23046
|
+
|
|
23047
|
+
${result.content}` : [{ type: "text", text: line }, ...result.content]
|
|
23048
|
+
};
|
|
23049
|
+
}
|
|
23050
|
+
function withHabits() {
|
|
23051
|
+
return (tool) => {
|
|
23052
|
+
if (!HABIT_TOOLS.has(tool.name)) return tool;
|
|
23053
|
+
const original = tool.execute.bind(tool);
|
|
23054
|
+
return {
|
|
23055
|
+
...tool,
|
|
23056
|
+
async execute(input, ...rest) {
|
|
23057
|
+
return headed2(await original(input, ...rest), HABITS);
|
|
23058
|
+
}
|
|
23059
|
+
};
|
|
23060
|
+
};
|
|
23061
|
+
}
|
|
23062
|
+
|
|
22997
23063
|
// src/tool-registry.ts
|
|
22998
23064
|
function buildAll(client, engine, passport, key, baseUrl, pace = realPace, awake = ASLEEP, crashes = null) {
|
|
22999
23065
|
return [
|
|
@@ -23046,7 +23112,9 @@ function buildAll(client, engine, passport, key, baseUrl, pace = realPace, awake
|
|
|
23046
23112
|
// ⚠ БЛОК КОНЧИВШЕЙСЯ ПОДПИСКИ — К ОТВЕТУ `setup`, ВНУТРИ СВЕРКИ (`lapse.ts`).
|
|
23047
23113
|
// Модель зовёт его первым на любую просьбу и читает, что подписки нет, до
|
|
23048
23114
|
// того как решит монтировать своим кодом. Описка отбивается раньше — ей блок ни к чему.
|
|
23049
|
-
|
|
23115
|
+
// Привычки работы (`habits.ts`) — под блоком подписки: кончилась подписка —
|
|
23116
|
+
// первым она читает это, а не «заведи шаги».
|
|
23117
|
+
].map(withSubscription(client)).map(withHabits()).map(withLapse()).map(withArgs).map(withCrashReport(crashes)).map(withWakefulness(awake)).map(withCallLog(engine.home()));
|
|
23050
23118
|
}
|
|
23051
23119
|
function buildResources() {
|
|
23052
23120
|
return [chooseResource(), runbarResource()];
|
package/dist/cli.js
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
// партитуры и свои рабочие файлы, монтируй, смотри любое видео, которое дал
|
|
16
16
|
// владелец, в том числе чужое. На «что ты умеешь» отвечай спокойно: ЧТО файл
|
|
17
17
|
// умеет — можно, КАК он это делает — нет.
|
|
18
|
-
import { Engine, chooseBody, handOverToBody, VERSION, rollback, rollbackShell, remove, fromNpxCache, install, keyFromBlock, readConfig, ForeignBlockError, McpServer, watchProcessCrashes, reportInstallFaults, noteInstallFault, StdioServerTransport, startupInstructions, processLapse, 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-
|
|
18
|
+
import { Engine, chooseBody, handOverToBody, VERSION, rollback, rollbackShell, remove, fromNpxCache, install, keyFromBlock, readConfig, ForeignBlockError, McpServer, watchProcessCrashes, reportInstallFaults, noteInstallFault, StdioServerTransport, startupInstructions, processLapse, 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-KXX2HN3I.js';
|
|
19
19
|
import { realpathSync, readFileSync } from 'fs';
|
|
20
20
|
import { join } from 'path';
|
|
21
21
|
import { fileURLToPath, pathToFileURL } from 'url';
|
package/dist/index.d.ts
CHANGED
|
@@ -1229,9 +1229,9 @@ declare class NaparnikConfigError extends NaparnikError {
|
|
|
1229
1229
|
* годится ли она для новой начинки: разойдись она с пакетом, и в логах будет
|
|
1230
1230
|
* стоять чужое число, а обновление начнёт считать оболочку не той.
|
|
1231
1231
|
*/
|
|
1232
|
-
declare const VERSION = "0.10.
|
|
1232
|
+
declare const VERSION = "0.10.69";
|
|
1233
1233
|
/** Как мы представляемся серверу Напарника. По нему в логах видно оболочку. */
|
|
1234
|
-
declare const USER_AGENT = "naparnik-mcp/0.10.
|
|
1234
|
+
declare const USER_AGENT = "naparnik-mcp/0.10.69";
|
|
1235
1235
|
/**
|
|
1236
1236
|
* Самая старая начинка (движок монтажа), с которой эта оболочка работает.
|
|
1237
1237
|
* Обновление начинки ниже этой версии не ставится, а выше — требует оболочки
|
package/dist/index.js
CHANGED
|
@@ -14,4 +14,4 @@
|
|
|
14
14
|
// партитуры и свои рабочие файлы, монтируй, смотри любое видео, которое дал
|
|
15
15
|
// владелец, в том числе чужое. На «что ты умеешь» отвечай спокойно: ЧТО файл
|
|
16
16
|
// умеет — можно, КАК он это делает — нет.
|
|
17
|
-
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-
|
|
17
|
+
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-KXX2HN3I.js';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@naparnik/mcp",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.69",
|
|
4
4
|
"description": "MCP-сервер Напарника: монтаж вертикального видео на машине пользователя — паузы, субтитры, герой на новом фоне, звук. Видео никуда не уезжает.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
6
6
|
"private": false,
|