@naparnik/mcp 0.10.21 → 0.10.25

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/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, updateEngine, installStep, NaparnikApiClient, timeToCheck2, manifestUrlFor, fetchManifest, markChecked2, decide, shellDir, timeToCheck, bundleUrlFor, fetchShellManifest, markChecked, decideShell, installedShell, NaparnikConfigError } from './chunk-5DKUJSAN.js';
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-F5B2GHZW.js';
3
3
  import { fileURLToPath } from 'url';
4
4
  import { realpathSync, readFileSync } from 'fs';
5
5
 
@@ -21,7 +21,7 @@ function notConfiguredClient(reason) {
21
21
  // src/instructions.ts
22
22
  var WHAT_IS_IT = `
23
23
  \u041D\u0430\u043F\u0430\u0440\u043D\u0438\u043A \u043C\u043E\u043D\u0442\u0438\u0440\u0443\u0435\u0442 \u0432\u0438\u0434\u0435\u043E \u043D\u0430 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0435 \u0447\u0435\u043B\u043E\u0432\u0435\u043A\u0430. \u041D\u0438 \u0432\u0438\u0434\u0435\u043E, \u043D\u0438 \u0437\u0432\u0443\u043A, \u043D\u0438 \u0440\u0435\u0447\u044C
24
- \u043D\u0438\u043A\u0443\u0434\u0430 \u043D\u0435 \u0443\u0435\u0437\u0436\u0430\u044E\u0442 \u2014 \u043D\u0430\u0432\u0435\u0440\u0445 \u0443\u0445\u043E\u0434\u0438\u0442 \u0442\u043E\u043B\u044C\u043A\u043E \u043A\u043B\u044E\u0447 \u043F\u043E\u0434\u043F\u0438\u0441\u043A\u0438.
24
+ \u043D\u0438\u043A\u0443\u0434\u0430 \u043D\u0435 \u0443\u0435\u0437\u0436\u0430\u044E\u0442 \u2014 \u043F\u0440\u0438 \u0441\u0431\u043E\u0435 \u0443\u0445\u043E\u0434\u0438\u0442 \u043E\u0442\u0447\u0451\u0442 \u043E \u043F\u043E\u043B\u043E\u043C\u043A\u0435.
25
25
  `.trim();
26
26
  var HOW_MONTAGE_WORKS = `
27
27
  \u041A\u0410\u041A \u041C\u041E\u041D\u0422\u0418\u0420\u041E\u0412\u0410\u0422\u042C
@@ -46,9 +46,9 @@ var HOW_MONTAGE_WORKS = `
46
46
  plan_edit, \u0441\u0431\u043E\u0440\u043A\u0430 \u2014 render \u0441 reel; \u0441\u0432\u043E\u0451 \u2014 \u0441\u0432\u043E\u0439 \u0448\u0430\u0433 \u0432 mine/steps (\u043F\u0430\u043F\u043A\u0443
47
47
  \u0432\u0435\u0440\u0441\u0438\u0438 \u043E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u0435 \u0437\u0430\u043C\u0435\u043D\u044F\u0435\u0442), \u0434\u0430\u043B\u044C\u0448\u0435 plan_edit \u0441\u043E step; \u043A\u0430\u043A \u2014 \u0432 \u0441\u043A\u0438\u043B\u043B\u0435 builder.
48
48
  \u0422\u043E\u043B\u044C\u043A\u043E \u043F\u0430\u0443\u0437\u044B \u2014 render \u0441 only_pauses.
49
- 7. \u0422\u044F\u0436\u0451\u043B\u043E\u0435 (\u0432\u044B\u0440\u0435\u0437 \u0433\u0435\u0440\u043E\u044F, \u0447\u0438\u0441\u0442\u043A\u0430 \u0433\u043E\u043B\u043E\u0441\u0430, \u0440\u0430\u0441\u043F\u043E\u0437\u043D\u0430\u0432\u0430\u043D\u0438\u0435 \u0440\u0435\u0447\u0438 \u2014 1,5 \u0413\u0411) \u2014 \u041F\u041E
50
- \u041F\u0420\u041E\u0421\u042C\u0411\u0415: \u043D\u0430\u0437\u043E\u0432\u0438 \u0432\u0435\u0441, \u043F\u043E\u0441\u043B\u0435 \xAB\u0434\u0430\xBB setup \u0441 consent=true. \u0422\u0430\u043A \u0436\u0435 \u043E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u044F,
51
- \u0432 \u0441\u0438\u043B\u0435 \u043F\u043E\u0441\u043B\u0435 \u043F\u0435\u0440\u0435\u0437\u0430\u043F\u0443\u0441\u043A\u0430.
49
+ 7. \u0422\u044F\u0436\u0451\u043B\u043E\u0435 (\u0432\u044B\u0440\u0435\u0437 \u0433\u0435\u0440\u043E\u044F, \u0447\u0438\u0441\u0442\u043A\u0430 \u0433\u043E\u043B\u043E\u0441\u0430, \u0440\u0430\u0441\u043F\u043E\u0437\u043D\u0430\u0432\u0430\u043D\u0438\u0435 \u0440\u0435\u0447\u0438) \u2014 \u041F\u041E
50
+ \u041F\u0420\u041E\u0421\u042C\u0411\u0415: \u043D\u0430\u0437\u043E\u0432\u0438 \u0432\u0435\u0441 \u0438\u0437 setup, \u043F\u043E\u0441\u043B\u0435 \xAB\u0434\u0430\xBB setup \u0441 consent=true. \u0422\u0430\u043A \u0436\u0435
51
+ \u043E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u044F, \u0432 \u0441\u0438\u043B\u0435 \u043F\u043E\u0441\u043B\u0435 \u043F\u0435\u0440\u0435\u0437\u0430\u043F\u0443\u0441\u043A\u0430.
52
52
 
53
53
  \u0421\u043A\u0438\u043B\u043B\u044B (\u0432\u0438\u0437\u0443\u0430\u043B, \u0434\u0432\u0438\u0436\u0435\u043D\u0438\u0435, \u0432\u043A\u0443\u0441) \u0447\u0438\u0442\u0430\u0435\u0442 plan \u0441 read \u0438 \u0411\u0415\u0417 \u0440\u043E\u043B\u0438\u043A\u0430: \u0433\u043E\u0434\u044F\u0442\u0441\u044F \u0438
54
54
  \u0434\u043B\u044F \u043F\u0440\u0435\u0437\u0435\u043D\u0442\u0430\u0446\u0438\u0438. \u041F\u0435\u0440\u0435\u0447\u0435\u043D\u044C \u0432 setup.
@@ -329,8 +329,8 @@ Claude Desktop \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044F \u043F\u0435\u04
329
329
  process.stdout.write(`${result.words}
330
330
  `);
331
331
  const forEngine = key ?? keyFromBlock(readFileSync(result.file, "utf8"));
332
- const engine = new Engine();
333
- const outcome = await prepareEngine(engine, {
332
+ const { awake, engine } = wakefulEngine();
333
+ const outcome = await awake.during(() => prepareEngine(engine, {
334
334
  key: forEngine,
335
335
  baseUrl: serverAddress(readConfig()),
336
336
  tell: (line) => process.stdout.write(`${line}
@@ -339,7 +339,7 @@ Claude Desktop \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044F \u043F\u0435\u04
339
339
  // но вышла свежая начинка, тянем и её. Молчаливое «у тебя всё есть» —
340
340
  // это то, из-за чего покупатель остаётся на прошлой версии.
341
341
  refresh: true
342
- });
342
+ }));
343
343
  if (outcome.worked && !outcome.ok) {
344
344
  process.stdout.write(
345
345
  "\u0414\u0432\u0438\u0436\u043E\u043A \u0441\u043A\u0430\u0447\u0430\u0442\u044C \u0441\u0435\u0439\u0447\u0430\u0441 \u043D\u0435 \u0432\u044B\u0448\u043B\u043E. \u041F\u0435\u0440\u0435\u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u0435 Codex \u0438 \u0441\u043A\u0430\u0436\u0438\u0442\u0435\n\xAB\u043F\u0440\u043E\u0432\u0435\u0440\u044C, \u0432\u0441\u0451 \u043B\u0438 \u0433\u043E\u0442\u043E\u0432\u043E \u0434\u043B\u044F \u043C\u043E\u043D\u0442\u0430\u0436\u0430\xBB \u2014 \u0434\u043E\u043A\u0430\u0447\u0430\u044E \u043E\u0442\u0442\u0443\u0434\u0430.\n"
@@ -352,6 +352,10 @@ Claude Desktop \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044F \u043F\u0435\u04
352
352
  }
353
353
  return true;
354
354
  }
355
+ function wakefulEngine() {
356
+ const awake = new Wakefulness(systemBlocker());
357
+ return { awake, engine: new Engine(process.env, awake) };
358
+ }
355
359
  function serverAddress(state) {
356
360
  return state.ok ? state.config.baseUrl : state.baseUrl;
357
361
  }
@@ -400,7 +404,14 @@ async function start() {
400
404
  const engineForVersion = new Engine();
401
405
  const client = apiClientFor(state, void 0, () => engineForVersion.currentVersion());
402
406
  const basics = state.ok ? configuredInstructions(state.config.baseUrl) : notConfiguredInstructions(state.problem, state.message);
403
- const engine = new Engine();
407
+ const { awake, engine } = wakefulEngine();
408
+ const crashes = new CrashReporter({
409
+ client,
410
+ home: engine.home(),
411
+ engineVersion: () => engine.currentVersion(),
412
+ canSend: state.ok
413
+ });
414
+ watchProcessCrashes(crashes);
404
415
  const [passport, aboutUpdate, aboutShell] = await Promise.all([
405
416
  engine.passport(),
406
417
  newPayload(engine, serverAddress(state), state.ok ? state.config.apiKey : void 0),
@@ -422,7 +433,10 @@ ${news.join("\n\n")}`,
422
433
  engine,
423
434
  passport,
424
435
  state.ok ? state.config.apiKey : void 0,
425
- serverAddress(state)
436
+ serverAddress(state),
437
+ realPace,
438
+ awake,
439
+ crashes
426
440
  );
427
441
  for (const tool of tools) server.addTool(tool);
428
442
  for (const r of buildResources()) server.addResource(r.resource, r.contents);
@@ -442,11 +456,11 @@ ${news.join("\n\n")}`,
442
456
  );
443
457
  }
444
458
  if (state.ok) {
445
- void prepareEngine(engine, {
459
+ void awake.during(() => prepareEngine(engine, {
446
460
  key: state.config.apiKey,
447
461
  baseUrl: state.config.baseUrl,
448
462
  tell: log
449
- }).catch((trouble) => {
463
+ })).catch((trouble) => {
450
464
  log(`\u0434\u0432\u0438\u0436\u043E\u043A \u0434\u043E\u043A\u0430\u0447\u0430\u0442\u044C \u043D\u0435 \u0432\u044B\u0448\u043B\u043E: ${trouble instanceof Error ? trouble.message : String(trouble)}`);
451
465
  });
452
466
  }