@naparnik/mcp 0.10.9 → 0.10.11

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,20 @@
1
1
  # Изменения @naparnik/mcp
2
2
 
3
+ ## 0.10.11 — 2026-09-20. Полоса хода не висит там, где работы нет
4
+
5
+ Проверка окружения больше не оставляет под ответом пустую полосу с надписью
6
+ «Работаю — Начинаю…». Полоса объявлена у всего инструмента, и программа рисует
7
+ её при любом вызове; теперь, получив ответ без задачи, она уходит с глаз.
8
+
9
+ ## 0.10.10 — 2026-09-20. Обновление обновляет, а не отвечает «у вас всё есть»
10
+
11
+ Установка руками теперь дотягивает и начинку: если движок стоит, но вышла
12
+ свежая версия, она ставится тем же заходом. Раньше человек приносил новый файл
13
+ от бота, а ему отвечали, что всё на месте, — и он оставался на прежней сборке.
14
+
15
+ Файл для Codex называет версию, с которой агент обязан сверить установленное, и
16
+ велит обновлять пакет, даже когда он уже стоит.
17
+
3
18
  ## 0.10.9 — 2026-09-20. Движок доезжает до рабочего сам
4
19
 
5
20
  Скачанная начинка доводится до рабочего состояния тем же путём, которым её
@@ -720,7 +720,7 @@ function parsePositiveInt(raw, fallback) {
720
720
  }
721
721
 
722
722
  // src/version.ts
723
- var VERSION = "0.10.9";
723
+ var VERSION = "0.10.11";
724
724
  var USER_AGENT = `naparnik-mcp/${VERSION}`;
725
725
  var MIN_ENGINE = "2026.09.19-355";
726
726
  var LAUNCHER_PROTOCOL = 1;
@@ -15588,6 +15588,11 @@ function runbarWidgetHtml() {
15588
15588
 
15589
15589
  /* \u26A0 \u0421\u0412\u041E\u0418\u0425 \u0428\u0420\u0418\u0424\u0422\u041E\u0412 \u0417\u0414\u0415\u0421\u042C \u041D\u0415\u0422 \u0418 \u0411\u042B\u0422\u042C \u041D\u0415 \u0414\u041E\u041B\u0416\u041D\u041E: \u043F\u043E\u043A\u0443\u043F\u0430\u0442\u0435\u043B\u044E \u043E\u043D\u0438 \u043D\u0435 \u0443\u0435\u0437\u0436\u0430\u044E\u0442, \u0430
15590
15590
  \u0432\u043D\u0435\u0448\u043D\u0438\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 \u0440\u0435\u0436\u0435\u0442 CSP \u0445\u043E\u0441\u0442\u0430. \u0425\u0430\u0440\u0430\u043A\u0442\u0435\u0440 \u043D\u0430\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044F \u043A\u0435\u0433\u043B\u0435\u043C \u0438 \u0442\u0440\u0435\u043A\u0438\u043D\u0433\u043E\u043C. */
15591
+ /* \u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u043D\u0435\u0447\u0435\u0433\u043E \u2014 \u043F\u043E\u043B\u043E\u0441\u0430 \u043D\u0435 \u0437\u0430\u043D\u0438\u043C\u0430\u0435\u0442 \u0432 \u043B\u0435\u043D\u0442\u0435 \u043D\u0438 \u0441\u0442\u0440\u043E\u043A\u0438. \u041F\u0443\u0441\u0442\u0430\u044F \u043F\u043B\u0430\u0448\u043A\u0430
15592
+ \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044F \u043A\u0430\u043A \u043F\u043E\u043B\u043E\u043C\u043A\u0430 \u0440\u043E\u0432\u043D\u043E \u0442\u0430\u043A \u0436\u0435, \u043A\u0430\u043A \u0437\u0430\u0441\u0442\u044B\u0432\u0448\u0435\u0435 \xAB\u041D\u0430\u0447\u0438\u043D\u0430\u044E\u2026\xBB. */
15593
+ body.gone { padding: 0; min-block-size: 0; }
15594
+ body.gone > * { display: none; }
15595
+
15591
15596
  body {
15592
15597
  margin: 0;
15593
15598
  padding: 18px 16px 20px;
@@ -15979,6 +15984,8 @@ function runbarWidgetHtml() {
15979
15984
  function render(data) {
15980
15985
  if (closed) return;
15981
15986
  job = data;
15987
+ // \u0414\u0430\u043D\u043D\u044B\u0435 \u043F\u0440\u0438\u0448\u043B\u0438 \u043F\u043E\u0441\u043B\u0435 \u0441\u0432\u0451\u0440\u0442\u043A\u0438 \u2014 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043C\u0441\u044F \u0432 \u043B\u0435\u043D\u0442\u0443.
15988
+ document.body.classList.remove('gone');
15982
15989
  var ended = !working(data.status);
15983
15990
 
15984
15991
  show('what', data.what || '\u0420\u0430\u0431\u043E\u0442\u0430\u044E');
@@ -16074,6 +16081,25 @@ function runbarWidgetHtml() {
16074
16081
  reportSize();
16075
16082
  }
16076
16083
 
16084
+ /**
16085
+ * \u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u043D\u0435\u0447\u0435\u0433\u043E: \u0443\u0431\u0440\u0430\u0442\u044C \u043F\u043E\u043B\u043E\u0441\u0443 \u0441\u043E\u0432\u0441\u0435\u043C \u0438 \u043E\u0442\u0434\u0430\u0442\u044C \u043B\u0435\u043D\u0442\u0435 \u0435\u0451 \u043C\u0435\u0441\u0442\u043E.
16086
+ *
16087
+ * \u26A0 \u041D\u0415 \xAB\u0421\u041A\u0420\u042B\u0422\u042C \u0421\u041E\u0414\u0415\u0420\u0416\u0418\u041C\u041E\u0415\xBB, \u0410 \u0421\u0412\u0415\u0420\u041D\u0423\u0422\u042C \u041E\u041A\u041D\u041E. \u0421\u043F\u0440\u044F\u0442\u0430\u043D\u043D\u044B\u0435 \u0431\u043B\u043E\u043A\u0438 \u0432\u043D\u0443\u0442\u0440\u0438 \u0440\u0430\u043C\u043A\u0438
16088
+ * \u043E\u0441\u0442\u0430\u0432\u043B\u044F\u044E\u0442 \u0432 \u043B\u0435\u043D\u0442\u0435 \u043F\u0443\u0441\u0442\u0443\u044E \u043F\u043B\u0430\u0448\u043A\u0443 \u2014 \u043E\u043D\u0430 \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044F \u043A\u0430\u043A \u043F\u043E\u043B\u043E\u043C\u043A\u0430 \u043D\u0438\u0447\u0443\u0442\u044C \u043D\u0435
16089
+ * \u043C\u0435\u043D\u044C\u0448\u0435, \u0447\u0435\u043C \u0437\u0430\u0441\u0442\u044B\u0432\u0448\u0435\u0435 \xAB\u041D\u0430\u0447\u0438\u043D\u0430\u044E\u2026\xBB.
16090
+ */
16091
+ function collapse() {
16092
+ job = null;
16093
+ // \u26A0 \u041D\u0415 \u0425\u041E\u0420\u041E\u041D\u0418\u041C \u0412\u0418\u0414\u0416\u0415\u0422, \u0410 \u0422\u041E\u041B\u042C\u041A\u041E \u0423\u0411\u0418\u0420\u0410\u0415\u041C \u0415\u0413\u041E \u0421 \u0413\u041B\u0410\u0417. \u0421\u0442\u0430\u0432\u044C \u043C\u044B \u0437\u0434\u0435\u0441\u044C
16094
+ // \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
16095
+ // \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
16096
+ // \u043A\u0430\u0434\u0440 \u0438 \u0437\u0430\u043C\u0435\u0440\u043B\u0430.
16097
+ var all = ['now', 'rail', 'msg', 'behind', 'ahead', 'clock', 'end', 'note', 'what'];
16098
+ for (var i = 0; i < all.length; i++) { var el = byId(all[i]); if (el) el.hidden = true; }
16099
+ document.body.classList.add('gone');
16100
+ reportSize();
16101
+ }
16102
+
16077
16103
  // \u2500\u2500\u2500 \u043C\u0438\u0440 \u0445\u043E\u0441\u0442\u0430 \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\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
16078
16104
 
16079
16105
  function applyContext(ctx) {
@@ -16110,7 +16136,15 @@ function runbarWidgetHtml() {
16110
16136
  if (m.method === 'ui/notifications/tool-result') {
16111
16137
  if (m.params && m.params.isError) { finishWithWords(words(m.params)); return; }
16112
16138
  var data = parse(m.params);
16113
- if (!data) return;
16139
+ // \u26A0 \u041E\u0422\u0412\u0415\u0422 \u0411\u0415\u0417 \u0417\u0410\u0414\u0410\u0427\u0418 \u2014 \u0421\u0412\u041E\u0420\u0410\u0427\u0418\u0412\u0410\u0415\u041C\u0421\u042F, \u0410 \u041D\u0415 \u0412\u0418\u0421\u0418\u041C \u041D\u0410 \u0417\u0410\u0413\u041B\u0423\u0428\u041A\u0415. \u041F\u043E\u043B\u043E\u0441\u0430
16140
+ // \u043E\u0431\u044A\u044F\u0432\u043B\u0435\u043D\u0430 \u0443 \u0412\u0421\u0415\u0413\u041E \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u0430, \u0430 \u043D\u0435 \u0443 \u043E\u0442\u0434\u0435\u043B\u044C\u043D\u043E\u0433\u043E \u043E\u0442\u0432\u0435\u0442\u0430, \u0438 \u0445\u043E\u0441\u0442 \u0440\u0438\u0441\u0443\u0435\u0442
16141
+ // \u0435\u0451 \u043D\u0430 \u043A\u0430\u0436\u0434\u043E\u043C \u0432\u044B\u0437\u043E\u0432\u0435 \u2014 \u0432 \u0442\u043E\u043C \u0447\u0438\u0441\u043B\u0435 \u043D\u0430 \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0435 setup \u0431\u0435\u0437 \u0430\u0440\u0433\u0443\u043C\u0435\u043D\u0442\u043E\u0432,
16142
+ // \u0433\u0434\u0435 \u043D\u0438\u043A\u0430\u043A\u043E\u0439 \u0440\u0430\u0431\u043E\u0442\u044B \u043D\u0435\u0442 \u0438 \u043D\u043E\u043C\u0435\u0440\u0430 \u0437\u0430\u0434\u0430\u0447\u0438 \u0432 \u043E\u0442\u0432\u0435\u0442\u0435 \u0442\u043E\u0436\u0435. \u0420\u0430\u043D\u044C\u0448\u0435 \u0437\u0434\u0435\u0441\u044C
16143
+ // \u0441\u0442\u043E\u044F\u043B \u043F\u0443\u0441\u0442\u043E\u0439 \u0432\u044B\u0445\u043E\u0434, \u0438
16144
+ // \u0447\u0435\u043B\u043E\u0432\u0435\u043A \u043F\u043E\u043B\u0443\u0447\u0430\u043B \u0432\u0435\u0447\u043D\u043E\u0435 \xAB\u0420\u0430\u0431\u043E\u0442\u0430\u044E \u2014 \u041D\u0430\u0447\u0438\u043D\u0430\u044E\u2026\xBB \u043F\u043E\u0434 \u043E\u0442\u0432\u0435\u0442\u043E\u043C \xAB\u0432\u0441\u0451 \u043D\u0430 \u043C\u0435\u0441\u0442\u0435\xBB.
16145
+ // \u0412\u043B\u0430\u0434\u0435\u043B\u0435\u0446 2026-09-20: \xAB\u043F\u043E\u0447\u0435\u043C\u0443 \u0442\u0443\u0442 \u0442\u043E\u043B\u044C\u043A\u043E \u0440\u0430\u0431\u043E\u0442\u0430\u044E \u2014 \u043D\u0430\u0447\u0438\u043D\u0430\u044E?\xBB \u0421\u043B\u043E\u0432\u0430
16146
+ // \u043E\u0442\u0432\u0435\u0442\u0430 \u0445\u043E\u0441\u0442 \u043F\u0435\u0447\u0430\u0442\u0430\u0435\u0442 \u0440\u044F\u0434\u043E\u043C \u0441\u0430\u043C, \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u043D\u0430\u043C \u043D\u0435\u0447\u0435\u0433\u043E \u2014 \u0443\u0445\u043E\u0434\u0438\u043C \u0441 \u0433\u043B\u0430\u0437.
16147
+ if (!data) { collapse(); return; }
16114
16148
  render(data);
16115
16149
  later();
16116
16150
  return;
@@ -21447,4 +21481,4 @@ ${inTable}`, file2);
21447
21481
  };
21448
21482
  }
21449
21483
 
21450
- export { DEFAULT_HOME, DeliveryError, Engine, ForeignBlockError, INSIDE_PYTHON, INSTALL_STEPS, KEEP_COPIES, KEEP_VERSIONS, LONG_STEPS, MANIFEST_TIMEOUT_MS, MANIFEST_URL, MARKER, MIN_ENGINE, McpServer, NaparnikApiClient, NaparnikAuthError, NaparnikClientError, NaparnikConfigError, NaparnikError, NaparnikInsufficientBalanceError, NaparnikScopeError, NaparnikServerError, NaparnikTimeoutError, PAUSE_HOURS, SERVER_NAME, SOURCES_FILE, START_SEC, StdioServerTransport, TOOL_SEC, USER_AGENT, VERSION, WHERE_TO_GET_KEY, buildAll, buildBlock, buildResources, bundleUrlFor, chooseBody, compare, configPath, currentMachineFingerprint, decide, decideShell, defineTool, deploy, downloadFile, fetchManifest, fetchShellManifest, fileOrRefusal, findBlock, fromHost, fromNpxCache, handOverToBody, inside, install, installPayload, installPython, installStep, installedShell, jsonSchemaOf, keyFromBlock, keyInTable, lastLine, loadConfig, manifestUrlFor, markChecked, markChecked2, markCurrent2 as markCurrent, parseEngineManifest, parseFailure, path, platformKey, previousVersion2 as previousVersion, probe, pythonSource, readConfig, refusalFor, remove, rollback, rollbackShell, shellDir, tarEntries, tidyOld2 as tidyOld, timeToCheck, timeToCheck2, unpackArchive, withArgs };
21484
+ export { DEFAULT_HOME, DeliveryError, Engine, ForeignBlockError, INSIDE_PYTHON, INSTALL_STEPS, KEEP_COPIES, KEEP_VERSIONS, LONG_STEPS, MANIFEST_TIMEOUT_MS, MANIFEST_URL, MARKER, MIN_ENGINE, McpServer, NaparnikApiClient, NaparnikAuthError, NaparnikClientError, NaparnikConfigError, NaparnikError, NaparnikInsufficientBalanceError, NaparnikScopeError, NaparnikServerError, NaparnikTimeoutError, PAUSE_HOURS, SERVER_NAME, SOURCES_FILE, START_SEC, StdioServerTransport, TOOL_SEC, USER_AGENT, VERSION, WHERE_TO_GET_KEY, buildAll, buildBlock, buildResources, bundleUrlFor, chooseBody, compare, configPath, currentMachineFingerprint, decide, decideShell, defineTool, deploy, downloadFile, fetchManifest, fetchShellManifest, fileOrRefusal, findBlock, fromHost, fromNpxCache, handOverToBody, inside, install, installPayload, installPython, installStep, installedShell, jsonSchemaOf, keyFromBlock, keyInTable, lastLine, loadConfig, manifestUrlFor, markChecked, markChecked2, markCurrent2 as markCurrent, parseEngineManifest, parseFailure, path, platformKey, previousVersion2 as previousVersion, probe, pythonSource, readConfig, refusalFor, remove, rollback, rollbackShell, shellDir, tarEntries, tidyOld2 as tidyOld, timeToCheck, timeToCheck2, unpackArchive, updateEngine, withArgs };
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, McpServer, buildAll, buildResources, StdioServerTransport, fromHost, WHERE_TO_GET_KEY, installStep, NaparnikApiClient, timeToCheck2, manifestUrlFor, fetchManifest, markChecked2, decide, shellDir, timeToCheck, bundleUrlFor, fetchShellManifest, markChecked, decideShell, installedShell, NaparnikConfigError } from './chunk-JBXYRTS4.js';
2
+ import { Engine, chooseBody, handOverToBody, VERSION, rollback, rollbackShell, remove, fromNpxCache, install, keyFromBlock, readConfig, ForeignBlockError, currentMachineFingerprint, McpServer, buildAll, buildResources, StdioServerTransport, fromHost, WHERE_TO_GET_KEY, updateEngine, installStep, NaparnikApiClient, timeToCheck2, manifestUrlFor, fetchManifest, markChecked2, decide, shellDir, timeToCheck, bundleUrlFor, fetchShellManifest, markChecked, decideShell, installedShell, NaparnikConfigError } from './chunk-MBUPRPJQ.js';
3
3
  import { fileURLToPath } from 'url';
4
4
  import { realpathSync, readFileSync } from 'fs';
5
5
 
@@ -128,14 +128,27 @@ what=shell \u0438 consent=true. \u041D\u0435 \u043E\u0431\u043D\u043E\u0432\u043
128
128
 
129
129
  // src/auto-install.ts
130
130
  var NO_AUTO = "NAPARNIK_NO_AUTOINSTALL";
131
+ function decideAuto(state) {
132
+ if (state.off || !state.hasKey || state.byHand) return "nothing";
133
+ if (!state.ready) return "install";
134
+ return state.refresh ? "refresh" : "nothing";
135
+ }
131
136
  async function prepareEngine(engine, opts) {
132
137
  const say = opts.tell ?? (() => {
133
138
  });
134
139
  const quiet = { worked: false, ok: true, lines: [] };
135
- if (engine.variable(NO_AUTO) !== void 0) return quiet;
136
- if (opts.key === void 0 || opts.key === "") return quiet;
137
- if (engine.pathSetByHand()) return quiet;
138
- if (engine.place() !== null && await engine.pythonTrouble() === null) return quiet;
140
+ const off = engine.variable(NO_AUTO) !== void 0;
141
+ const hasKey = opts.key !== void 0 && opts.key !== "";
142
+ const byHand = engine.pathSetByHand();
143
+ const ready = off || !hasKey || byHand ? false : engine.place() !== null && await engine.pythonTrouble() === null;
144
+ const plan = decideAuto({ off, hasKey, byHand, ready, refresh: opts.refresh === true });
145
+ if (plan === "nothing") return quiet;
146
+ if (plan === "refresh") {
147
+ const fresh = await updateEngine(engine, true, opts.key, opts.baseUrl);
148
+ const news = "error" in fresh ? fresh.error : typeof fresh.content === "string" ? fresh.content : "";
149
+ if (news !== "") say(news);
150
+ return { worked: true, ok: !("error" in fresh), lines: news === "" ? [] : [news] };
151
+ }
139
152
  say("\u041A\u0430\u0447\u0430\u044E \u0434\u0432\u0438\u0436\u043E\u043A \u043C\u043E\u043D\u0442\u0430\u0436\u0430 \u2014 \u044D\u0442\u043E \u0440\u0430\u0437\u043E\u0432\u0430\u044F \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0430, \u0434\u0430\u043B\u044C\u0448\u0435 \u043E\u043D \u043E\u0441\u0442\u0430\u0451\u0442\u0441\u044F \u043D\u0430 \u043C\u0430\u0448\u0438\u043D\u0435.");
140
153
  const done = await installStep(engine, { step: "all", consent: true }, opts.key, opts.baseUrl, say);
141
154
  const text = typeof done === "object" && "error" in done ? done.error : typeof done.content === "string" ? done.content : "";
@@ -321,7 +334,11 @@ Claude Desktop \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044F \u043F\u0435\u04
321
334
  key: forEngine,
322
335
  baseUrl: serverAddress(readConfig()),
323
336
  tell: (line) => process.stdout.write(`${line}
324
- `)
337
+ `),
338
+ // Установка руками — значит человек пришёл за новым: если движок стоит,
339
+ // но вышла свежая начинка, тянем и её. Молчаливое «у тебя всё есть» —
340
+ // это то, из-за чего покупатель остаётся на прошлой версии.
341
+ refresh: true
325
342
  });
326
343
  if (outcome.worked && !outcome.ok) {
327
344
  process.stdout.write(
package/dist/index.d.ts CHANGED
@@ -1307,9 +1307,9 @@ declare class NaparnikConfigError extends NaparnikError {
1307
1307
  * годится ли она для новой начинки: разойдись она с пакетом, и в логах будет
1308
1308
  * стоять чужое число, а обновление начнёт считать оболочку не той.
1309
1309
  */
1310
- declare const VERSION = "0.10.9";
1310
+ declare const VERSION = "0.10.11";
1311
1311
  /** Как мы представляемся серверу Напарника. По нему в логах видно оболочку. */
1312
- declare const USER_AGENT = "naparnik-mcp/0.10.9";
1312
+ declare const USER_AGENT = "naparnik-mcp/0.10.11";
1313
1313
  /**
1314
1314
  * Самая старая начинка (движок монтажа), с которой эта оболочка работает.
1315
1315
  * Обновление начинки ниже этой версии не ставится, а выше — требует оболочки
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-JBXYRTS4.js';
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-MBUPRPJQ.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@naparnik/mcp",
3
- "version": "0.10.9",
3
+ "version": "0.10.11",
4
4
  "description": "MCP-сервер Напарника: монтаж вертикального видео на машине пользователя — паузы, субтитры, герой на новом фоне, звук. Видео никуда не уезжает.",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "private": false,