@naparnik/mcp 0.10.22 → 0.10.38
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 +113 -0
- package/dist/{chunk-KWTLR6D2.js → chunk-MCZJVJFA.js} +1498 -1009
- package/dist/cli.js +57 -63
- package/dist/index.d.ts +859 -634
- package/dist/index.js +1 -1
- package/package.json +1 -1
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-
|
|
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-MCZJVJFA.js';
|
|
3
3
|
import { fileURLToPath } from 'url';
|
|
4
4
|
import { realpathSync, readFileSync } from 'fs';
|
|
5
5
|
|
|
@@ -21,40 +21,33 @@ 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 \
|
|
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
|
|
28
28
|
|
|
29
|
-
1. setup \u043F\u0435\u0440\u0432\u044B\u043C, \u0434\u043E \u0432\u0438\u0434\u0435\u043E: \u0447\u0442\u043E \u0441\u0442\u043E\u0438\u0442, \u0447\
|
|
30
|
-
\
|
|
31
|
-
2.
|
|
32
|
-
\
|
|
33
|
-
3. \
|
|
34
|
-
\
|
|
35
|
-
\
|
|
36
|
-
4. \u0421\u0442\u0438\u043B\u044C \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u044B\u0439 \u2014 \u0441\u043F\u0440\u043E\u0441\u0438 \u041E\u0414\u0418\u041D \u0440\u0430\u0437, \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u0430\u043C\u0438 \u043F\u043E \u0440\u0430\u0437\u0434\u0435\u043B\u0430\u043C
|
|
29
|
+
1. setup \u043F\u0435\u0440\u0432\u044B\u043C, \u0434\u043E \u0432\u0438\u0434\u0435\u043E: \u0447\u0442\u043E \u0441\u0442\u043E\u0438\u0442, \u0447\u0435\u0439 \u0441\u0442\u0438\u043B\u044C \u0438 \u043E\u0433\u043B\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0421\u041F\u0420\u0410\u0412\u041E\u0427\u041D\u0418\u041A\u0410
|
|
30
|
+
\u041C\u041E\u041D\u0422\u0410\u0416\u0401\u0420\u0410. \u0427\u0442\u043E \u0443\u043C\u0435\u0435\u0442 \u043C\u043E\u043D\u0442\u0430\u0436 \u2014 \u0438\u0437 \u0441\u043F\u0440\u0430\u0432\u043E\u0447\u043D\u0438\u043A\u0430, \u043D\u0435 \u0438\u0437 \u043F\u0430\u043C\u044F\u0442\u0438.
|
|
31
|
+
2. \u0421\u0442\u0440\u0430\u043D\u0438\u0446\u044B \u0437\u0430\u0434\u0430\u0447\u0438 \u0438\u0437 \u043E\u0433\u043B\u0430\u0432\u043B\u0435\u043D\u0438\u044F \u0438 \u043D\u0430\u0437\u0432\u0430\u043D\u043D\u044B\u0435 \u043E\u0442\u0432\u0435\u0442\u0430\u043C\u0438 \u043F\u0440\u043E\u0447\u0442\u0438 plan \u0441 read
|
|
32
|
+
\u0414\u041E \u043E\u0442\u0432\u0435\u0442\u0430.
|
|
33
|
+
3. plan \u0441 video \u2014 \u0427\u0415\u0420\u041D\u041E\u0412\u0418\u041A: \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442 \u0438 \u043F\u0435\u0440\u0435\u0441\u043A\u0430\u0437. \u041F\u0435\u0440\u0435\u0441\u043A\u0430\u0436\u0438 \u041F\u041E\u0421\u0422\u0420\u041E\u0427\u041D\u041E \u0438
|
|
34
|
+
\u043E\u0431\u0441\u0443\u0434\u0438, \u043F\u0440\u0430\u0432\u043A\u0438 \u2014 plan_edit. \u041F\u0440\u043E\u0441\u044C\u0431\u0430 \u043F\u0440\u043E \u043E\u0434\u043D\u043E \u2014 ask \u0435\u0451 \u0440\u0430\u0437\u0434\u0435\u043B\u0430\u043C\u0438 \u0438\u043B\u0438 {}
|
|
35
|
+
(\u0441\u043B\u043E\u0432\u043E, \u043E\u0433\u043E\u0432\u043E\u0440\u043A\u0430 \u2014 {"speech":{}}): \u0432 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0435 \u0442\u043E\u043B\u044C\u043A\u043E \u043E\u043D\u0430.
|
|
36
|
+
4. \u0421\u0442\u0438\u043B\u044C \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u044B\u0439 \u2014 \u0414\u041E \xAB\u0434\u0430\xBB \u0441\u043F\u0440\u043E\u0441\u0438 \u041E\u0414\u0418\u041D \u0440\u0430\u0437, \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u0430\u043C\u0438 \u043F\u043E \u0440\u0430\u0437\u0434\u0435\u043B\u0430\u043C
|
|
37
37
|
(\u0441\u0443\u0431\u0442\u0438\u0442\u0440\u044B, \u0446\u0432\u0435\u0442, \u043F\u0430\u0443\u0437\u044B, \u0441\u0432\u043E\u0439 \u0441\u0442\u0438\u043B\u044C): AskUserQuestion, \u0431\u0435\u0437 \u043D\u0435\u0433\u043E \u2014 \u0441\u043B\u043E\u0432\u0430\u043C\u0438 \u0441
|
|
38
|
-
\u043D\u043E\u043C\u0435\u0440\u0430\u043C\u0438. \u0412\u044B\u0431\u0440\u0430\u043D\u043D\u043E\u0435 \u2014 choose_variant(questions=[\u0440\u0430\u0437\u0434\u0435\u043B\u044B])
|
|
39
|
-
\
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u0435 \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044F \xAB\u0437\u0430\u0432\u0438\u0441\u043B\u043E\xBB
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
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
|
-
\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.
|
|
38
|
+
\u043D\u043E\u043C\u0435\u0440\u0430\u043C\u0438. \u0412\u044B\u0431\u0440\u0430\u043D\u043D\u043E\u0435 \u2014 choose_variant(questions=[\u0440\u0430\u0437\u0434\u0435\u043B\u044B]);
|
|
39
|
+
\u043D\u0438\u0447\u0435\u0433\u043E \u2014 variant_chosen \u0441 keep=true. \u0421\u0442\u0438\u043B\u044C \u0443\u0436\u0435 \u0441\u0432\u043E\u0439 \u2014 \u043D\u0435 \u0441\u043F\u0440\u0430\u0448\u0438\u0432\u0430\u0439.
|
|
40
|
+
5. \u0411\u0435\u0437 \xAB\u0434\u0430\xBB \u043D\u0435 \u0441\u043E\u0431\u0438\u0440\u0430\u0439; \u0441\u043A\u0430\u0437\u0430\u043B \u2014 plan_edit \u0441 agree, \u043F\u043E\u0442\u043E\u043C render:
|
|
41
|
+
\u0432\u0435\u0440\u043D\u0451\u0442 \u041D\u041E\u041C\u0415\u0420 \u0417\u0410\u0414\u0410\u0427\u0418, \u0436\u0434\u0438 wait, \u043F\u0435\u0440\u0435\u0441\u043A\u0430\u0437\u044B\u0432\u0430\u0439 \u0448\u0430\u0433\u0438 \u0432 \u0447\u0435\u043A-\u043B\u0438\u0441\u0442\u0435 (TaskUpdate),
|
|
42
|
+
\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u0435 \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044F \xAB\u0437\u0430\u0432\u0438\u0441\u043B\u043E\xBB. \u0413\u043E\u0442\u043E\u0432\u043E \u2014 preview.
|
|
43
|
+
6. \u041F\u0440\u0430\u0432\u043A\u0430 \u0436\u0434\u0451\u0442 \u043F\u0435\u0447\u0430\u0442\u044C \u043F\u0440\u043E\u0447\u0438\u0442\u0430\u043D\u043D\u043E\u0439 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u044B (stamps, document/edits.md):
|
|
44
|
+
\u0431\u0435\u0437 \u043D\u0435\u0451 plan_edit \u043E\u0442\u043A\u0430\u0436\u0435\u0442 \u0438 \u043F\u0440\u0438\u0448\u043B\u0451\u0442 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0443.
|
|
45
|
+
7. \u0422\u044F\u0436\u0451\u043B\u043E\u0435 (\u0432\u044B\u0440\u0435\u0437 \u0433\u0435\u0440\u043E\u044F, \u0440\u0430\u0441\u043F\u043E\u0437\u043D\u0430\u0432\u0430\u043D\u0438\u0435 \u0440\u0435\u0447\u0438) \u2014 \u041F\u041E \u041F\u0420\u041E\u0421\u042C\u0411\u0415: \u043D\u0430\u0437\u043E\u0432\u0438 \u0432\u0435\u0441
|
|
46
|
+
\u0438\u0437 setup, \u043F\u043E\u0441\u043B\u0435 \xAB\u0434\u0430\xBB setup \u0441 consent=true.
|
|
52
47
|
|
|
53
|
-
\u0421\
|
|
54
|
-
\u0434\
|
|
55
|
-
|
|
56
|
-
\u041D\u0435 \u0432\u044B\u0434\u0443\u043C\u044B\u0432\u0430\u0439, \u0447\u0442\u043E \u0443\u043C\u0435\u0435\u0442 \u043C\u043E\u043D\u0442\u0430\u0436, \u0432\u0440\u0435\u043C\u044F \u043D\u0430\u0437\u044B\u0432\u0430\u0439 \u0442\u043E\u043B\u044C\u043A\u043E \u043E\u0442 \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u0430.
|
|
57
|
-
\u041A\u0430\u043A \u0443\u0441\u0442\u0440\u043E\u0435\u043D\u043E \u0432\u043D\u0443\u0442\u0440\u0438, \u043D\u0435 \u0440\u0430\u0441\u0441\u043A\u0430\u0437\u044B\u0432\u0430\u0439. \u041B\u0435\u043D\u0442\u0430 \u0438 \u043F\u043E\u043C\u043E\u0449\u043D\u0438\u043A\u0438 \u0443\u0431\u0440\u0430\u043D\u044B.
|
|
48
|
+
\u0421\u043F\u0440\u0430\u0432\u043E\u0447\u043D\u0438\u043A \u0433\u043E\u0434\u0438\u0442\u0441\u044F \u0438 \u0431\u0435\u0437 \u0440\u043E\u043B\u0438\u043A\u0430: \u043F\u0440\u0435\u0437\u0435\u043D\u0442\u0430\u0446\u0438\u044F.
|
|
49
|
+
\u041D\u0435 \u0432\u044B\u0434\u0443\u043C\u044B\u0432\u0430\u0439; \u0432\u0440\u0435\u043C\u044F \u2014 \u0442\u043E\u043B\u044C\u043A\u043E \u043E\u0442 \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u0430.
|
|
50
|
+
\u041A\u0430\u043A \u0443\u0441\u0442\u0440\u043E\u0435\u043D\u043E \u0432\u043D\u0443\u0442\u0440\u0438, \u043D\u0435 \u0440\u0430\u0441\u0441\u043A\u0430\u0437\u044B\u0432\u0430\u0439.
|
|
58
51
|
`.trim();
|
|
59
52
|
function notConfiguredInstructions(problem, detail) {
|
|
60
53
|
const diagnosis = problem === "missing_key" ? "\u041A\u043B\u044E\u0447 \u0434\u043E\u0441\u0442\u0443\u043F\u0430 \u043D\u0435 \u0437\u0430\u0434\u0430\u043D." : `\u041A\u043B\u044E\u0447 \u0437\u0430\u0434\u0430\u043D, \u043D\u043E \u0432\u044B\u0433\u043B\u044F\u0434\u0438\u0442 \u043D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u043E. ${detail}`;
|
|
@@ -97,33 +90,22 @@ ${HOW_MONTAGE_WORKS}
|
|
|
97
90
|
\u041C\u043E\u043D\u0442\u0430\u0436 \u041D\u0415 \u0442\u0440\u0430\u0442\u0438\u0442 \u043D\u0438 \u0431\u0430\u043B\u0430\u043D\u0441, \u043D\u0438 \u0442\u043E\u043A\u0435\u043D\u044B.
|
|
98
91
|
`.trim();
|
|
99
92
|
}
|
|
93
|
+
var HOST_CUT = 2048;
|
|
94
|
+
var BASE_CHARS = 1500;
|
|
95
|
+
var NEWS_SEPARATOR = "\n\n";
|
|
96
|
+
var NEWS_LIMIT = Math.floor((HOST_CUT - BASE_CHARS - 2 * NEWS_SEPARATOR.length) / 2);
|
|
100
97
|
function aboutNewPayload(ownDir, fresh, megabytes) {
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
${ownDir === null ? "\u0414\u0432\u0438\u0436\u043E\u043A \u0435\u0449\u0451 \u043D\u0435 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D" : `\u0423\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u0430 ${ownDir}`}, \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u0430 ${fresh} (${megabytes.toFixed(1)} \u041C\u0411).
|
|
105
|
-
\u0421\u0430\u043C\u0430 \u043E\u043D\u0430 \u043D\u0435 \u0441\u043A\u0430\u0447\u0430\u0435\u0442\u0441\u044F. \u041A\u043E\u0433\u0434\u0430 \u0447\u0435\u043B\u043E\u0432\u0435\u043A \u0432 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0439 \u0440\u0430\u0437 \u0437\u0430\u0433\u043E\u0432\u043E\u0440\u0438\u0442 \u043E \u043C\u043E\u043D\u0442\u0430\u0436\u0435,
|
|
106
|
-
\u0441\u043A\u0430\u0436\u0438 \u043E\u0431 \u044D\u0442\u043E\u043C \u043E\u0434\u043D\u043E\u0439 \u0444\u0440\u0430\u0437\u043E\u0439 \u0438 \u0441\u043F\u0440\u043E\u0441\u0438, \u043E\u0431\u043D\u043E\u0432\u043B\u044F\u0442\u044C \u043B\u0438; \u0441\u043E\u0433\u043B\u0430\u0441\u0438\u0442\u0441\u044F \u2014 \u0437\u043E\u0432\u0438
|
|
107
|
-
setup \u0441 what=engine \u0438 consent=true. \u041D\u0435 \u043E\u0431\u043D\u043E\u0432\u043B\u044F\u0439 \u043C\u043E\u043B\u0447\u0430 \u0438 \u043D\u0435 \u0431\u0440\u043E\u0441\u0430\u0439 \u0440\u0430\u0434\u0438 \u044D\u0442\u043E\u0433\u043E \u0435\u0433\u043E
|
|
108
|
-
\u0442\u0435\u043A\u0443\u0449\u0443\u044E \u0437\u0430\u0434\u0430\u0447\u0443: \u0441\u0442\u0430\u0440\u0430\u044F \u0432\u0435\u0440\u0441\u0438\u044F \u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442 \u043A\u0430\u043A \u0440\u0430\u0431\u043E\u0442\u0430\u043B\u0430.
|
|
109
|
-
`.trim();
|
|
98
|
+
const now = ownDir === null ? "\u0434\u0432\u0438\u0436\u043E\u043A \u043D\u0435 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D" : `\u0441\u0442\u043E\u0438\u0442 ${ownDir}`;
|
|
99
|
+
return `\u0412\u042B\u0428\u041B\u0410 \u041D\u041E\u0412\u0410\u042F \u0412\u0415\u0420\u0421\u0418\u042F \u0414\u0412\u0418\u0416\u041A\u0410: ${now}, \u0435\u0441\u0442\u044C ${fresh} (${megabytes.toFixed(1)} \u041C\u0411). \u0421\u0430\u043C\u0430 \u043D\u0435 \u0441\u043A\u0430\u0447\u0430\u0435\u0442\u0441\u044F. \u0417\u0430\u0433\u043E\u0432\u043E\u0440\u0438\u0442 \u043E \u043C\u043E\u043D\u0442\u0430\u0436\u0435 \u2014 \u0441\u043A\u0430\u0436\u0438 \u043E\u0434\u043D\u043E\u0439 \u0444\u0440\u0430\u0437\u043E\u0439 \u0438 \u0441\u043F\u0440\u043E\u0441\u0438; \xAB\u0434\u0430\xBB \u2014 setup \u0441 what=engine \u0438 consent=true. \u041C\u043E\u043B\u0447\u0430 \u043D\u0435 \u043E\u0431\u043D\u043E\u0432\u043B\u044F\u0439 \u0438 \u0435\u0433\u043E \u0437\u0430\u0434\u0430\u0447\u0443 \u043D\u0435 \u0431\u0440\u043E\u0441\u0430\u0439.`;
|
|
110
100
|
}
|
|
111
101
|
function aboutNewShell(installed, fresh, notes) {
|
|
112
|
-
|
|
113
|
-
\
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
${notes}
|
|
120
|
-
`}
|
|
121
|
-
\u0421\u0430\u043C\u0430 \u043E\u043D\u0430 \u043D\u0435 \u043F\u043E\u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044F. \u041A\u043E\u0433\u0434\u0430 \u0447\u0435\u043B\u043E\u0432\u0435\u043A \u0432 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0439 \u0440\u0430\u0437 \u0437\u0430\u0433\u043E\u0432\u043E\u0440\u0438\u0442 \u043E \u043C\u043E\u043D\u0442\u0430\u0436\u0435, \u0441\u043A\u0430\u0436\u0438
|
|
122
|
-
\u043E\u0431 \u044D\u0442\u043E\u043C \u043E\u0434\u043D\u043E\u0439 \u0444\u0440\u0430\u0437\u043E\u0439 \u0438 \u0441\u043F\u0440\u043E\u0441\u0438, \u043E\u0431\u043D\u043E\u0432\u043B\u044F\u0442\u044C \u043B\u0438; \u0441\u043E\u0433\u043B\u0430\u0441\u0438\u0442\u0441\u044F \u2014 \u0437\u043E\u0432\u0438 setup \u0441
|
|
123
|
-
what=shell \u0438 consent=true. \u041D\u0435 \u043E\u0431\u043D\u043E\u0432\u043B\u044F\u0439 \u043C\u043E\u043B\u0447\u0430 \u0438 \u043D\u0435 \u0431\u0440\u043E\u0441\u0430\u0439 \u0440\u0430\u0434\u0438 \u044D\u0442\u043E\u0433\u043E \u0435\u0433\u043E \u0442\u0435\u043A\u0443\u0449\u0443\u044E \u0437\u0430\u0434\u0430\u0447\u0443.
|
|
124
|
-
\u041E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u0435 \u0432\u0441\u0442\u0443\u043F\u0438\u0442 \u0432 \u0441\u0438\u043B\u0443 \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 \u2014 \u0441\u043A\u0430\u0436\u0438 \u0438 \u044D\u0442\u043E, \u0438\u043D\u0430\u0447\u0435
|
|
125
|
-
\u0447\u0435\u043B\u043E\u0432\u0435\u043A \u0440\u0435\u0448\u0438\u0442, \u0447\u0442\u043E \u043D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u043F\u0440\u043E\u0438\u0437\u043E\u0448\u043B\u043E.
|
|
126
|
-
`.trim();
|
|
102
|
+
const head = `\u0412\u042B\u0428\u041B\u0410 \u041D\u041E\u0412\u0410\u042F \u0412\u0415\u0420\u0421\u0418\u042F \u0420\u0410\u0421\u0428\u0418\u0420\u0415\u041D\u0418\u042F: \u0441\u0442\u043E\u0438\u0442 ${installed}, \u0432\u044B\u0448\u043B\u0430 ${fresh}, \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044F \u043E\u0442\u0441\u044E\u0434\u0430.`;
|
|
103
|
+
const tail = "\u0417\u0430\u0433\u043E\u0432\u043E\u0440\u0438\u0442 \u043E \u043C\u043E\u043D\u0442\u0430\u0436\u0435 \u2014 \u0441\u043A\u0430\u0436\u0438 \u043E\u0434\u043D\u043E\u0439 \u0444\u0440\u0430\u0437\u043E\u0439 \u0438 \u0441\u043F\u0440\u043E\u0441\u0438; \xAB\u0434\u0430\xBB \u2014 setup \u0441 what=shell \u0438 consent=true. \u0412 \u0441\u0438\u043B\u0435 \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 \u2014 \u0441\u043A\u0430\u0436\u0438 \u0438 \u044D\u0442\u043E.";
|
|
104
|
+
if (notes === null || notes.trim() === "") return `${head} ${tail}`;
|
|
105
|
+
const room = NEWS_LIMIT - head.length - tail.length - " \u0427\u0442\u043E \u043D\u043E\u0432\u043E\u0433\u043E: . ".length;
|
|
106
|
+
const said = notes.replace(/\s+/g, " ").trim();
|
|
107
|
+
const cut = said.length <= room ? said : `${said.slice(0, Math.max(0, room - 1)).trimEnd()}\u2026`;
|
|
108
|
+
return `${head} \u0427\u0442\u043E \u043D\u043E\u0432\u043E\u0433\u043E: ${cut}. ${tail}`;
|
|
127
109
|
}
|
|
128
110
|
|
|
129
111
|
// src/auto-install.ts
|
|
@@ -329,8 +311,8 @@ Claude Desktop \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044F \u043F\u0435\u04
|
|
|
329
311
|
process.stdout.write(`${result.words}
|
|
330
312
|
`);
|
|
331
313
|
const forEngine = key ?? keyFromBlock(readFileSync(result.file, "utf8"));
|
|
332
|
-
const engine =
|
|
333
|
-
const outcome = await prepareEngine(engine, {
|
|
314
|
+
const { awake, engine } = wakefulEngine();
|
|
315
|
+
const outcome = await awake.during(() => prepareEngine(engine, {
|
|
334
316
|
key: forEngine,
|
|
335
317
|
baseUrl: serverAddress(readConfig()),
|
|
336
318
|
tell: (line) => process.stdout.write(`${line}
|
|
@@ -339,7 +321,7 @@ Claude Desktop \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044F \u043F\u0435\u04
|
|
|
339
321
|
// но вышла свежая начинка, тянем и её. Молчаливое «у тебя всё есть» —
|
|
340
322
|
// это то, из-за чего покупатель остаётся на прошлой версии.
|
|
341
323
|
refresh: true
|
|
342
|
-
});
|
|
324
|
+
}));
|
|
343
325
|
if (outcome.worked && !outcome.ok) {
|
|
344
326
|
process.stdout.write(
|
|
345
327
|
"\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 +334,10 @@ Claude Desktop \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044F \u043F\u0435\u04
|
|
|
352
334
|
}
|
|
353
335
|
return true;
|
|
354
336
|
}
|
|
337
|
+
function wakefulEngine() {
|
|
338
|
+
const awake = new Wakefulness(systemBlocker());
|
|
339
|
+
return { awake, engine: new Engine(process.env, awake) };
|
|
340
|
+
}
|
|
355
341
|
function serverAddress(state) {
|
|
356
342
|
return state.ok ? state.config.baseUrl : state.baseUrl;
|
|
357
343
|
}
|
|
@@ -400,7 +386,14 @@ async function start() {
|
|
|
400
386
|
const engineForVersion = new Engine();
|
|
401
387
|
const client = apiClientFor(state, void 0, () => engineForVersion.currentVersion());
|
|
402
388
|
const basics = state.ok ? configuredInstructions(state.config.baseUrl) : notConfiguredInstructions(state.problem, state.message);
|
|
403
|
-
const engine =
|
|
389
|
+
const { awake, engine } = wakefulEngine();
|
|
390
|
+
const crashes = new CrashReporter({
|
|
391
|
+
client,
|
|
392
|
+
home: engine.home(),
|
|
393
|
+
engineVersion: () => engine.currentVersion(),
|
|
394
|
+
canSend: state.ok
|
|
395
|
+
});
|
|
396
|
+
watchProcessCrashes(crashes);
|
|
404
397
|
const [passport, aboutUpdate, aboutShell] = await Promise.all([
|
|
405
398
|
engine.passport(),
|
|
406
399
|
newPayload(engine, serverAddress(state), state.ok ? state.config.apiKey : void 0),
|
|
@@ -408,9 +401,7 @@ async function start() {
|
|
|
408
401
|
]);
|
|
409
402
|
const news = [aboutUpdate, aboutShell].filter((one) => one !== null);
|
|
410
403
|
const server = new McpServer(void 0, {
|
|
411
|
-
instructions: news.length === 0 ? basics : `${basics}
|
|
412
|
-
|
|
413
|
-
${news.join("\n\n")}`,
|
|
404
|
+
instructions: news.length === 0 ? basics : `${basics}${NEWS_SEPARATOR}${news.join(NEWS_SEPARATOR)}`,
|
|
414
405
|
// ⚠ ПРЕДСТАВЛЯЕМСЯ СВОИМ ИМЕНЕМ, А НЕ ИМЕНЕМ ЯДРА. В Claude Desktop имя
|
|
415
406
|
// берётся из манифеста расширения и подмена незаметна, а в Codex человек
|
|
416
407
|
// видит ровно это — и читал «@naparnik/super-agent-core 0.1.0» вместо
|
|
@@ -422,7 +413,10 @@ ${news.join("\n\n")}`,
|
|
|
422
413
|
engine,
|
|
423
414
|
passport,
|
|
424
415
|
state.ok ? state.config.apiKey : void 0,
|
|
425
|
-
serverAddress(state)
|
|
416
|
+
serverAddress(state),
|
|
417
|
+
realPace,
|
|
418
|
+
awake,
|
|
419
|
+
crashes
|
|
426
420
|
);
|
|
427
421
|
for (const tool of tools) server.addTool(tool);
|
|
428
422
|
for (const r of buildResources()) server.addResource(r.resource, r.contents);
|
|
@@ -442,11 +436,11 @@ ${news.join("\n\n")}`,
|
|
|
442
436
|
);
|
|
443
437
|
}
|
|
444
438
|
if (state.ok) {
|
|
445
|
-
void prepareEngine(engine, {
|
|
439
|
+
void awake.during(() => prepareEngine(engine, {
|
|
446
440
|
key: state.config.apiKey,
|
|
447
441
|
baseUrl: state.config.baseUrl,
|
|
448
442
|
tell: log
|
|
449
|
-
}).catch((trouble) => {
|
|
443
|
+
})).catch((trouble) => {
|
|
450
444
|
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
445
|
});
|
|
452
446
|
}
|