@oneentry/mcp-platform-server 0.1.0 → 0.1.1
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/README.md +113 -71
- package/data/permissions.json +411 -0
- package/dist/api/build-catalog.d.ts +24 -0
- package/dist/api/build-catalog.d.ts.map +1 -0
- package/dist/api/build-catalog.js +257 -0
- package/dist/api/build-catalog.js.map +1 -0
- package/dist/api/catalog.d.ts +22 -3
- package/dist/api/catalog.d.ts.map +1 -1
- package/dist/api/catalog.js +69 -4
- package/dist/api/catalog.js.map +1 -1
- package/dist/api/normalize-schema.d.ts +14 -0
- package/dist/api/normalize-schema.d.ts.map +1 -0
- package/dist/api/normalize-schema.js +151 -0
- package/dist/api/normalize-schema.js.map +1 -0
- package/dist/api/swagger-source.d.ts +22 -0
- package/dist/api/swagger-source.d.ts.map +1 -0
- package/dist/api/swagger-source.js +76 -0
- package/dist/api/swagger-source.js.map +1 -0
- package/dist/api/types.d.ts +1 -1
- package/dist/api/types.d.ts.map +1 -1
- package/dist/bin/cli.js +11 -3
- package/dist/bin/cli.js.map +1 -1
- package/dist/config/config.d.ts +84 -10
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js +69 -6
- package/dist/config/config.js.map +1 -1
- package/dist/index.d.ts +9 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/knowledge/github.d.ts +46 -0
- package/dist/knowledge/github.d.ts.map +1 -0
- package/dist/knowledge/github.js +214 -0
- package/dist/knowledge/github.js.map +1 -0
- package/dist/knowledge/loader.d.ts +46 -19
- package/dist/knowledge/loader.d.ts.map +1 -1
- package/dist/knowledge/loader.js +92 -105
- package/dist/knowledge/loader.js.map +1 -1
- package/dist/knowledge/search.d.ts +11 -0
- package/dist/knowledge/search.d.ts.map +1 -1
- package/dist/knowledge/search.js +36 -3
- package/dist/knowledge/search.js.map +1 -1
- package/dist/knowledge/tar.d.ts +22 -0
- package/dist/knowledge/tar.d.ts.map +1 -0
- package/dist/knowledge/tar.js +120 -0
- package/dist/knowledge/tar.js.map +1 -0
- package/dist/knowledge/types.d.ts +31 -10
- package/dist/knowledge/types.d.ts.map +1 -1
- package/dist/server.d.ts +3 -2
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +13 -6
- package/dist/server.js.map +1 -1
- package/dist/session.d.ts +6 -0
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +8 -0
- package/dist/session.js.map +1 -1
- package/dist/tools/guide.d.ts.map +1 -1
- package/dist/tools/guide.js +9 -2
- package/dist/tools/guide.js.map +1 -1
- package/dist/tools/whoami.d.ts.map +1 -1
- package/dist/tools/whoami.js +4 -0
- package/dist/tools/whoami.js.map +1 -1
- package/dist/transports/http.d.ts.map +1 -1
- package/dist/transports/http.js +26 -1
- package/dist/transports/http.js.map +1 -1
- package/dist/transports/stdio.js +1 -1
- package/dist/transports/stdio.js.map +1 -1
- package/knowledge/operating-rules.md +176 -0
- package/package.json +4 -4
- package/data/catalog.json +0 -1
- package/data/knowledge.json +0 -1
package/dist/knowledge/search.js
CHANGED
|
@@ -5,9 +5,42 @@ import MiniSearch from 'minisearch';
|
|
|
5
5
|
* поэтому опускается вниз, чтобы не вытеснять описание модуля.
|
|
6
6
|
*/
|
|
7
7
|
const REPO_WEIGHT = { mcp: 1.6, back: 1, front: 0.9 };
|
|
8
|
-
const KIND_WEIGHT = {
|
|
9
|
-
|
|
8
|
+
const KIND_WEIGHT = {
|
|
9
|
+
docs: 1.15,
|
|
10
|
+
tests: 1,
|
|
11
|
+
rules: 1,
|
|
12
|
+
fixes: 0.6,
|
|
13
|
+
specs: 0.6,
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Вид документа. Обычно это второй сегмент docId (`back/docs/…` -> `docs`),
|
|
17
|
+
* но каталог `specs` третьим сегментом разбирается отдельно: это датированные
|
|
18
|
+
* описания задач и merge request'ов. По форме документация, по сути — та же история изменений,
|
|
19
|
+
* что и `fixes`: длинная прозаическая, богатая случайными совпадениями и
|
|
20
|
+
* вытесняющая описание модуля. Вес у них поэтому такой же.
|
|
21
|
+
*/
|
|
22
|
+
const kindOf = (docId) => {
|
|
23
|
+
const parts = docId.split('/');
|
|
24
|
+
if (parts[2] === 'specs') {
|
|
25
|
+
return 'specs';
|
|
26
|
+
}
|
|
27
|
+
return parts[1] ?? 'docs';
|
|
28
|
+
};
|
|
10
29
|
const SNIPPET_RADIUS = 180;
|
|
30
|
+
/**
|
|
31
|
+
* Выбрасывает из запроса слова короче трёх букв.
|
|
32
|
+
* Заголовок весит вчетверо больше текста, поэтому раздел «Не входит в scope»
|
|
33
|
+
* выигрывал у описания модуля на вопросе «почему атрибут не попал в индекс»:
|
|
34
|
+
* два служебных слова совпадали с заголовком, а значащие — с телом. Предлоги и
|
|
35
|
+
* частицы (`не`, `в`, `на`, `of`, `to`) не несут смысла ни в русском запросе,
|
|
36
|
+
* ни в английском, и участвовать в ранжировании не должны.
|
|
37
|
+
* Если после отбора не осталось ничего, запрос возвращается как есть —
|
|
38
|
+
* поиск по одному короткому слову лучше поиска ни по чему.
|
|
39
|
+
*/
|
|
40
|
+
export const meaningfulQuery = (query) => {
|
|
41
|
+
const kept = query.split(/\s+/).filter((word) => word.replace(/[^\p{L}\p{N}]/gu, '').length > 2);
|
|
42
|
+
return kept.length > 0 ? kept.join(' ') : query;
|
|
43
|
+
};
|
|
11
44
|
/** Вырезка вокруг первого совпавшего терма; при отсутствии — начало раздела. */
|
|
12
45
|
const makeSnippet = (text, terms) => {
|
|
13
46
|
const flat = text.replace(/\s+/g, ' ').trim();
|
|
@@ -69,7 +102,7 @@ export class KnowledgeIndex {
|
|
|
69
102
|
*/
|
|
70
103
|
search(query, limit = 8) {
|
|
71
104
|
const terms = query.split(/\s+/).filter((t) => t.length > 1);
|
|
72
|
-
const raw = this.mini.search(query);
|
|
105
|
+
const raw = this.mini.search(meaningfulQuery(query));
|
|
73
106
|
const hits = [];
|
|
74
107
|
for (const result of raw) {
|
|
75
108
|
const chunk = this.byId.get(String(result.id));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/knowledge/search.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AAepC;;;;GAIG;AACH,MAAM,WAAW,GAA2B,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AAC9E,MAAM,WAAW,GAA2B,
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/knowledge/search.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/** Один распакованный файл архива. */
|
|
2
|
+
export interface TarEntry {
|
|
3
|
+
/** Путь внутри архива, уже без корневого каталога. */
|
|
4
|
+
path: string;
|
|
5
|
+
content: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Разбирает несжатый tar и возвращает только обычные файлы.
|
|
9
|
+
* Своя реализация вместо зависимости: пакету нужен один сценарий чтения,
|
|
10
|
+
* а каждая зависимость опубликованного npm-пакета — это ещё одна поверхность атаки.
|
|
11
|
+
* Поддержаны оба способа записать длинный путь: расширенный заголовок pax
|
|
12
|
+
* (`git archive`, а значит и GitHub) и GNU longname.
|
|
13
|
+
*/
|
|
14
|
+
export declare const readTar: (buffer: Buffer) => TarEntry[];
|
|
15
|
+
/**
|
|
16
|
+
* Убирает общий первый сегмент пути. GitHub кладёт весь архив в каталог
|
|
17
|
+
* `<repo>-<sha>/`, и без этого docId у каждого документа начинался бы с хэша коммита.
|
|
18
|
+
*/
|
|
19
|
+
export declare const stripRoot: (entries: readonly TarEntry[]) => TarEntry[];
|
|
20
|
+
/** Распаковывает `.tar.gz` целиком: gzip снимается встроенным zlib. */
|
|
21
|
+
export declare const readTarGz: (buffer: Buffer) => TarEntry[];
|
|
22
|
+
//# sourceMappingURL=tar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tar.d.ts","sourceRoot":"","sources":["../../src/knowledge/tar.ts"],"names":[],"mappings":"AAEA,sCAAsC;AACtC,MAAM,WAAW,QAAQ;IACvB,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAqED;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,GAAI,QAAQ,MAAM,KAAG,QAAQ,EA2ChD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,SAAS,GAAI,SAAS,SAAS,QAAQ,EAAE,KAAG,QAAQ,EAI7D,CAAC;AAEL,uEAAuE;AACvE,eAAO,MAAM,SAAS,GAAI,QAAQ,MAAM,KAAG,QAAQ,EAA4C,CAAC"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { gunzipSync } from 'node:zlib';
|
|
2
|
+
/** Размер блока формата tar — и заголовок, и выравнивание данных кратны ему. */
|
|
3
|
+
const BLOCK = 512;
|
|
4
|
+
/** Смещения полей заголовка ustar. */
|
|
5
|
+
const FIELD = {
|
|
6
|
+
name: [0, 100],
|
|
7
|
+
size: [124, 12],
|
|
8
|
+
typeflag: [156, 1],
|
|
9
|
+
prefix: [345, 155],
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Читает строковое поле заголовка: оно дополнено нулями до фиксированной длины.
|
|
13
|
+
*/
|
|
14
|
+
const readString = (block, [offset, length]) => {
|
|
15
|
+
const raw = block.subarray(offset, offset + length);
|
|
16
|
+
const end = raw.indexOf(0);
|
|
17
|
+
return raw.subarray(0, end === -1 ? raw.length : end).toString('utf8').trim();
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Читает размер файла. В tar он записан восьмеричной строкой; GNU-расширение
|
|
21
|
+
* с базой 256 (старший бит первого байта) в архивах GitHub не встречается,
|
|
22
|
+
* но молча вернуть из него мусор нельзя — такой архив лучше отвергнуть.
|
|
23
|
+
*/
|
|
24
|
+
const readSize = (block) => {
|
|
25
|
+
const [offset, length] = FIELD.size;
|
|
26
|
+
const first = block[offset] ?? 0;
|
|
27
|
+
if ((first & 0x80) !== 0) {
|
|
28
|
+
throw new Error('tar: base-256 size fields are not supported');
|
|
29
|
+
}
|
|
30
|
+
const text = readString(block, FIELD.size).replace(/\0/g, '').trim();
|
|
31
|
+
const parsed = Number.parseInt(text === '' ? '0' : text, 8);
|
|
32
|
+
if (!Number.isFinite(parsed) || parsed < 0) {
|
|
33
|
+
throw new Error(`tar: unreadable size field "${text}" at offset ${String(offset + length)}`);
|
|
34
|
+
}
|
|
35
|
+
return parsed;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Достаёт `path=` из расширенного заголовка pax.
|
|
39
|
+
* Записи имеют вид `<длина> <ключ>=<значение>\n`; нас интересует только путь,
|
|
40
|
+
* которым pax подменяет имя следующей записи, когда оно не влезает в ustar.
|
|
41
|
+
*/
|
|
42
|
+
const readPaxPath = (data) => {
|
|
43
|
+
const text = data.toString('utf8');
|
|
44
|
+
const match = /(?:^|\n)\d+ path=([^\n]*)\n/.exec(text);
|
|
45
|
+
return match?.[1];
|
|
46
|
+
};
|
|
47
|
+
/** Полное имя записи: ustar разбивает длинный путь на `prefix` и `name`. */
|
|
48
|
+
const fullName = (block) => {
|
|
49
|
+
const name = readString(block, FIELD.name);
|
|
50
|
+
const prefix = readString(block, FIELD.prefix);
|
|
51
|
+
return prefix === '' ? name : `${prefix}/${name}`;
|
|
52
|
+
};
|
|
53
|
+
/** Блок из одних нулей — маркер конца архива. */
|
|
54
|
+
const isZeroBlock = (block) => {
|
|
55
|
+
for (const byte of block) {
|
|
56
|
+
if (byte !== 0) {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return true;
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Разбирает несжатый tar и возвращает только обычные файлы.
|
|
64
|
+
* Своя реализация вместо зависимости: пакету нужен один сценарий чтения,
|
|
65
|
+
* а каждая зависимость опубликованного npm-пакета — это ещё одна поверхность атаки.
|
|
66
|
+
* Поддержаны оба способа записать длинный путь: расширенный заголовок pax
|
|
67
|
+
* (`git archive`, а значит и GitHub) и GNU longname.
|
|
68
|
+
*/
|
|
69
|
+
export const readTar = (buffer) => {
|
|
70
|
+
const entries = [];
|
|
71
|
+
let offset = 0;
|
|
72
|
+
/** Имя, навязанное предыдущим заголовком pax или GNU longname. */
|
|
73
|
+
let pendingName;
|
|
74
|
+
while (offset + BLOCK <= buffer.length) {
|
|
75
|
+
const header = buffer.subarray(offset, offset + BLOCK);
|
|
76
|
+
if (isZeroBlock(header)) {
|
|
77
|
+
break;
|
|
78
|
+
}
|
|
79
|
+
const size = readSize(header);
|
|
80
|
+
const typeflag = readString(header, FIELD.typeflag);
|
|
81
|
+
const dataStart = offset + BLOCK;
|
|
82
|
+
const dataEnd = dataStart + size;
|
|
83
|
+
if (dataEnd > buffer.length) {
|
|
84
|
+
throw new Error('tar: truncated archive');
|
|
85
|
+
}
|
|
86
|
+
const data = buffer.subarray(dataStart, dataEnd);
|
|
87
|
+
/** Данные записи выровнены по границе блока. */
|
|
88
|
+
offset = dataStart + Math.ceil(size / BLOCK) * BLOCK;
|
|
89
|
+
if (typeflag === 'x' || typeflag === 'X') {
|
|
90
|
+
pendingName = readPaxPath(data) ?? pendingName;
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
if (typeflag === 'L') {
|
|
94
|
+
pendingName = data.toString('utf8').replace(/\0+$/, '');
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
/** Глобальные заголовки pax и всё, что не является обычным файлом, нас не интересуют. */
|
|
98
|
+
if (typeflag === 'g') {
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
const name = pendingName ?? fullName(header);
|
|
102
|
+
pendingName = undefined;
|
|
103
|
+
if (typeflag !== '' && typeflag !== '0') {
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
entries.push({ path: name, content: data.toString('utf8') });
|
|
107
|
+
}
|
|
108
|
+
return entries;
|
|
109
|
+
};
|
|
110
|
+
/**
|
|
111
|
+
* Убирает общий первый сегмент пути. GitHub кладёт весь архив в каталог
|
|
112
|
+
* `<repo>-<sha>/`, и без этого docId у каждого документа начинался бы с хэша коммита.
|
|
113
|
+
*/
|
|
114
|
+
export const stripRoot = (entries) => entries.map((entry) => {
|
|
115
|
+
const cut = entry.path.indexOf('/');
|
|
116
|
+
return cut === -1 ? entry : { path: entry.path.slice(cut + 1), content: entry.content };
|
|
117
|
+
});
|
|
118
|
+
/** Распаковывает `.tar.gz` целиком: gzip снимается встроенным zlib. */
|
|
119
|
+
export const readTarGz = (buffer) => stripRoot(readTar(gunzipSync(buffer)));
|
|
120
|
+
//# sourceMappingURL=tar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tar.js","sourceRoot":"","sources":["../../src/knowledge/tar.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Один раздел документации — единица поиска и чтения.
|
|
3
|
-
* Резать документы на разделы обязательно:
|
|
4
|
-
*
|
|
3
|
+
* Резать документы на разделы обязательно: даже при ограничении на размер файла
|
|
4
|
+
* модели нужен ровно тот раздел, который отвечает на её вопрос.
|
|
5
5
|
*/
|
|
6
6
|
export interface KnowledgeChunk {
|
|
7
7
|
/** Стабильный идентификатор `<docId>#<anchor>`. */
|
|
8
8
|
id: string;
|
|
9
9
|
/** Идентификатор документа, например `back/docs/menus-module`. */
|
|
10
10
|
docId: string;
|
|
11
|
-
/**
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
/**
|
|
12
|
+
* Первый сегмент docId: `mcp`, `back`, `front`. Строка, а не перечисление —
|
|
13
|
+
* репозиторий знаний живёт отдельно от этого пакета и может завести новый раздел,
|
|
14
|
+
* не требуя релиза сервера. Неизвестный источник получает вес 1.
|
|
15
|
+
*/
|
|
16
|
+
repo: string;
|
|
17
|
+
/** Путь файла в репозитории знаний, например `knowledge/back/docs/menus-module.md`. */
|
|
14
18
|
path: string;
|
|
15
19
|
/** Слаг заголовка раздела; пустая строка — преамбула документа. */
|
|
16
20
|
anchor: string;
|
|
@@ -24,7 +28,7 @@ export interface KnowledgeChunk {
|
|
|
24
28
|
/** Документ целиком: список его разделов, чтобы агент мог листать соседние. */
|
|
25
29
|
export interface KnowledgeDoc {
|
|
26
30
|
docId: string;
|
|
27
|
-
repo:
|
|
31
|
+
repo: string;
|
|
28
32
|
path: string;
|
|
29
33
|
title: string;
|
|
30
34
|
anchors: Array<{
|
|
@@ -33,14 +37,31 @@ export interface KnowledgeDoc {
|
|
|
33
37
|
bytes: number;
|
|
34
38
|
}>;
|
|
35
39
|
}
|
|
36
|
-
/**
|
|
40
|
+
/**
|
|
41
|
+
* Откуда взялся пакет знаний.
|
|
42
|
+
* `github` — только что скачан, `cache` — распакованная копия на диске,
|
|
43
|
+
* `local` — клон репозитория знаний рядом, `seed` — только вшитые правила эксплуатации.
|
|
44
|
+
*/
|
|
45
|
+
export type KnowledgeOrigin = 'github' | 'cache' | 'local' | 'seed';
|
|
46
|
+
/** Собранный пакет знаний — то, с чем работает KnowledgeIndex. */
|
|
37
47
|
export interface KnowledgePack {
|
|
38
|
-
/** Версия формата — чтобы рантайм не пытался читать несовместимый
|
|
48
|
+
/** Версия формата — чтобы рантайм не пытался читать несовместимый пакет. */
|
|
39
49
|
version: 1;
|
|
40
50
|
/** Когда собран (ISO). Показывается в cms_whoami. */
|
|
41
51
|
builtAt: string;
|
|
42
|
-
|
|
43
|
-
|
|
52
|
+
source: KnowledgeOrigin;
|
|
53
|
+
/** Репозиторий знаний `owner/name`, если пакет пришёл оттуда. */
|
|
54
|
+
repo?: string;
|
|
55
|
+
/** Ветка или тег, с которого читали. */
|
|
56
|
+
ref?: string;
|
|
57
|
+
/** Коммит, которым адресуется содержимое. */
|
|
58
|
+
sha?: string;
|
|
59
|
+
/**
|
|
60
|
+
* Почему пакет неполон. Пустое значение — норма; заполненное обязано попадать
|
|
61
|
+
* и в `cms_whoami`, и в `cms_guide`: деградировавший пакет знаний агент должен
|
|
62
|
+
* видеть, а не обнаруживать по отсутствию нужного документа.
|
|
63
|
+
*/
|
|
64
|
+
warning?: string;
|
|
44
65
|
docs: KnowledgeDoc[];
|
|
45
66
|
chunks: KnowledgeChunk[];
|
|
46
67
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/knowledge/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,mDAAmD;IACnD,EAAE,EAAE,MAAM,CAAC;IACX,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAC;IACd
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/knowledge/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,mDAAmD;IACnD,EAAE,EAAE,MAAM,CAAC;IACX,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,uFAAuF;IACvF,IAAI,EAAE,MAAM,CAAC;IACb,mEAAmE;IACnE,MAAM,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,QAAQ,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,+EAA+E;AAC/E,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClE;AAED;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC;AAEpE,kEAAkE;AAClE,MAAM,WAAW,aAAa;IAC5B,4EAA4E;IAC5E,OAAO,EAAE,CAAC,CAAC;IACX,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,eAAe,CAAC;IACxB,iEAAiE;IACjE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,YAAY,EAAE,CAAC;IACrB,MAAM,EAAE,cAAc,EAAE,CAAC;CAC1B"}
|
package/dist/server.d.ts
CHANGED
|
@@ -4,9 +4,10 @@ import { Session, type SharedDeps } from './session.js';
|
|
|
4
4
|
/**
|
|
5
5
|
* Собирает разделяемые зависимости: каталог операций, индекс знаний, журнал.
|
|
6
6
|
* Вынесено отдельно, чтобы remote-режим строил их один раз на процесс,
|
|
7
|
-
* а не на каждую сессию.
|
|
7
|
+
* а не на каждую сессию. Асинхронно, потому что знания приезжают из репозитория
|
|
8
|
+
* GitHub, а каталог — со swagger подключённого стенда.
|
|
8
9
|
*/
|
|
9
|
-
export declare const createSharedDeps: (config: Config) => SharedDeps
|
|
10
|
+
export declare const createSharedDeps: (config: Config) => Promise<SharedDeps>;
|
|
10
11
|
/**
|
|
11
12
|
* Создаёт MCP-сервер с полным набором инструментов.
|
|
12
13
|
* Сессия передаётся геттером: в stdio-режиме она одна на процесс,
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAGjD,OAAO,EAAE,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAUxD
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAGjD,OAAO,EAAE,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAUxD;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAAU,QAAQ,MAAM,KAAG,OAAO,CAAC,UAAU,CAmBxE,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,UAAU,EAAE,YAAY,MAAM,OAAO,KAAG,SAkB1E,CAAC"}
|
package/dist/server.js
CHANGED
|
@@ -13,14 +13,21 @@ const SERVER_VERSION = '0.1.0';
|
|
|
13
13
|
/**
|
|
14
14
|
* Собирает разделяемые зависимости: каталог операций, индекс знаний, журнал.
|
|
15
15
|
* Вынесено отдельно, чтобы remote-режим строил их один раз на процесс,
|
|
16
|
-
* а не на каждую сессию.
|
|
16
|
+
* а не на каждую сессию. Асинхронно, потому что знания приезжают из репозитория
|
|
17
|
+
* GitHub, а каталог — со swagger подключённого стенда.
|
|
17
18
|
*/
|
|
18
|
-
export const createSharedDeps = (config) => ({
|
|
19
|
+
export const createSharedDeps = async (config) => ({
|
|
19
20
|
config,
|
|
20
|
-
catalog: OperationCatalog.
|
|
21
|
-
knowledge: new KnowledgeIndex(resolveKnowledge({
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
catalog: await OperationCatalog.resolve(config),
|
|
22
|
+
knowledge: new KnowledgeIndex(await resolveKnowledge({
|
|
23
|
+
repo: config.knowledge.repo,
|
|
24
|
+
ref: config.knowledge.ref,
|
|
25
|
+
...(config.knowledge.path ? { path: config.knowledge.path } : {}),
|
|
26
|
+
cacheDir: config.cacheDir,
|
|
27
|
+
refreshTtlMs: config.knowledge.refreshTtlMs,
|
|
28
|
+
offline: config.knowledge.offline,
|
|
29
|
+
...(config.knowledge.token ? { token: config.knowledge.token } : {}),
|
|
30
|
+
timeoutMs: config.requestTimeoutMs,
|
|
24
31
|
})),
|
|
25
32
|
audit: new AuditLog({
|
|
26
33
|
...(config.auditPath ? { path: config.auditPath } : {}),
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,uDAAuD;AACvD,MAAM,cAAc,GAAG,OAAO,CAAC;AAE/B
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,uDAAuD;AACvD,MAAM,cAAc,GAAG,OAAO,CAAC;AAE/B;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,MAAc,EAAuB,EAAE,CAAC,CAAC;IAC9E,MAAM;IACN,OAAO,EAAE,MAAM,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC;IAC/C,SAAS,EAAE,IAAI,cAAc,CAC3B,MAAM,gBAAgB,CAAC;QACrB,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI;QAC3B,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG;QACzB,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,YAAY,EAAE,MAAM,CAAC,SAAS,CAAC,YAAY;QAC3C,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,OAAO;QACjC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpE,SAAS,EAAE,MAAM,CAAC,gBAAgB;KACnC,CAAC,CACH;IACD,KAAK,EAAE,IAAI,QAAQ,CAAC;QAClB,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,IAAI,EAAE,MAAM,CAAC,IAAI;KAClB,CAAC;CACH,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAgB,EAAE,UAAyB,EAAa,EAAE;IACrF,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B,EAAE,IAAI,EAAE,uBAAuB,EAAE,OAAO,EAAE,cAAc,EAAE,EAC1D;QACE,YAAY,EACV,8GAA8G;YAC9G,+GAA+G;YAC/G,iDAAiD;KACpD,CACF,CAAC;IAEF,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC5B,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACnC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC3B,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACnC,eAAe,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAEpC,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
|
package/dist/session.d.ts
CHANGED
|
@@ -29,6 +29,12 @@ export declare class Session {
|
|
|
29
29
|
private identityCache;
|
|
30
30
|
constructor(shared: SharedDeps, credentials?: Credentials);
|
|
31
31
|
get isConfigured(): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Access-токен сессии. Нужен единственному потребителю вне клиента —
|
|
34
|
+
* дозагрузке каталога в remote-режиме, когда стенд отдаёт swagger
|
|
35
|
+
* только авторизованным.
|
|
36
|
+
*/
|
|
37
|
+
accessToken(): Promise<string>;
|
|
32
38
|
/**
|
|
33
39
|
* Кто мы. Кэшируется: набор прав нужен почти каждому изменяющему вызову,
|
|
34
40
|
* а меняется он редко.
|
package/dist/session.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAA2C,KAAK,aAAa,EAAE,KAAK,WAAW,EAAc,MAAM,eAAe,CAAC;AAC1H,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAY,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,gBAAgB,CAAC;IAC1B,SAAS,EAAE,cAAc,CAAC;IAC1B,KAAK,EAAE,QAAQ,CAAC;CACjB;AAED;;;GAGG;AACH,qBAAa,OAAO;IAClB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,QAAQ,eAAsB;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,OAAO,CAAC,aAAa,CAA4B;gBAErC,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,EAAE,WAAW;IAczD,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAkBpD;;;OAGG;IACG,cAAc,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;CAiB7E"}
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAA2C,KAAK,aAAa,EAAE,KAAK,WAAW,EAAc,MAAM,eAAe,CAAC;AAC1H,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAY,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,gBAAgB,CAAC;IAC1B,SAAS,EAAE,cAAc,CAAC;IAC1B,KAAK,EAAE,QAAQ,CAAC;CACjB;AAED;;;GAGG;AACH,qBAAa,OAAO;IAClB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,QAAQ,eAAsB;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,OAAO,CAAC,aAAa,CAA4B;gBAErC,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,EAAE,WAAW;IAczD,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IAIpC;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAkBpD;;;OAGG;IACG,cAAc,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;CAiB7E"}
|
package/dist/session.js
CHANGED
|
@@ -27,6 +27,14 @@ export class Session {
|
|
|
27
27
|
get isConfigured() {
|
|
28
28
|
return this.tokens.isConfigured;
|
|
29
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* Access-токен сессии. Нужен единственному потребителю вне клиента —
|
|
32
|
+
* дозагрузке каталога в remote-режиме, когда стенд отдаёт swagger
|
|
33
|
+
* только авторизованным.
|
|
34
|
+
*/
|
|
35
|
+
async accessToken() {
|
|
36
|
+
return this.tokens.accessToken();
|
|
37
|
+
}
|
|
30
38
|
/**
|
|
31
39
|
* Кто мы. Кэшируется: набор прав нужен почти каждому изменяющему вызову,
|
|
32
40
|
* а меняется он редко.
|
package/dist/session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guide.d.ts","sourceRoot":"","sources":["../../src/tools/guide.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAMhD;;;;GAIG;AACH,eAAO,MAAM,WAAW,GAAI,MAAM,UAAU,KAAG,
|
|
1
|
+
{"version":3,"file":"guide.d.ts","sourceRoot":"","sources":["../../src/tools/guide.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAMhD;;;;GAIG;AACH,eAAO,MAAM,WAAW,GAAI,MAAM,UAAU,KAAG,MA6D9C,CAAC;AAEF,gCAAgC;AAChC,eAAO,MAAM,aAAa,GAAI,QAAQ,SAAS,EAAE,MAAM,UAAU,KAAG,IAWnE,CAAC"}
|
package/dist/tools/guide.js
CHANGED
|
@@ -22,12 +22,19 @@ export const renderGuide = (deps) => {
|
|
|
22
22
|
: config.allow === 'write'
|
|
23
23
|
? 'writes allowed; DELETE and the permanently gated paths still need a confirm token'
|
|
24
24
|
: 'writes and deletes allowed; deletes and the permanently gated paths still need a confirm token';
|
|
25
|
+
const pack = knowledge.pack;
|
|
26
|
+
const knowledgeOrigin = pack.source === 'seed'
|
|
27
|
+
? 'bundled operating rules only'
|
|
28
|
+
: pack.source === 'local'
|
|
29
|
+
? `local clone ${pack.repo ?? ''}`.trim()
|
|
30
|
+
: `${pack.repo ?? ''}@${pack.ref ?? ''} (${pack.sha?.slice(0, 12) ?? '?'}, ${pack.source})`;
|
|
25
31
|
return [
|
|
26
32
|
'# OneEntry CMS Admin API — agent guide',
|
|
27
33
|
'',
|
|
28
34
|
`Mode: **${config.mode}** · Base URL: \`${config.baseUrl}\` · Policy: ${allowLine}.`,
|
|
29
|
-
`Catalog: ${String(catalog.operations().length)} operations (swagger ${catalog.catalog.swaggerHash}).`,
|
|
30
|
-
`Knowledge: ${String(knowledge.docs().length)} docs / ${String(
|
|
35
|
+
`Catalog: ${String(catalog.operations().length)} operations (swagger ${catalog.catalog.swaggerHash || 'unavailable'}).`,
|
|
36
|
+
`Knowledge: ${String(knowledge.docs().length)} docs / ${String(pack.chunks.length)} sections, from ${knowledgeOrigin}.`,
|
|
37
|
+
...(pack.warning ? ['', `> **Knowledge is degraded.** ${pack.warning}`] : []),
|
|
31
38
|
'',
|
|
32
39
|
'## How to work here',
|
|
33
40
|
'',
|
package/dist/tools/guide.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guide.js","sourceRoot":"","sources":["../../src/tools/guide.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,4CAA4C;AAC5C,MAAM,SAAS,GAAG,EAAE,CAAC;AAErB;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAgB,EAAU,EAAE;IACtD,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IAC5C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,SAAS,IAAI,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;QAC7C,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAClE,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;SAC/B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SAC3B,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC;SACnB,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;SAClD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,SAAS,GACb,MAAM,CAAC,KAAK,KAAK,MAAM;QACrB,CAAC,CAAC,0FAA0F;QAC5F,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,OAAO;YACxB,CAAC,CAAC,mFAAmF;YACrF,CAAC,CAAC,gGAAgG,CAAC;IAEzG,OAAO;QACL,wCAAwC;QACxC,EAAE;QACF,WAAW,MAAM,CAAC,IAAI,oBAAoB,MAAM,CAAC,OAAO,gBAAgB,SAAS,GAAG;QACpF,YAAY,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,wBAAwB,OAAO,CAAC,OAAO,CAAC,WAAW,IAAI;
|
|
1
|
+
{"version":3,"file":"guide.js","sourceRoot":"","sources":["../../src/tools/guide.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"whoami.d.ts","sourceRoot":"","sources":["../../src/tools/whoami.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAG7C,4EAA4E;AAC5E,eAAO,MAAM,cAAc,GAAI,QAAQ,SAAS,EAAE,YAAY,MAAM,OAAO,KAAG,
|
|
1
|
+
{"version":3,"file":"whoami.d.ts","sourceRoot":"","sources":["../../src/tools/whoami.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAG7C,4EAA4E;AAC5E,eAAO,MAAM,cAAc,GAAI,QAAQ,SAAS,EAAE,YAAY,MAAM,OAAO,KAAG,IAgD7E,CAAC"}
|
package/dist/tools/whoami.js
CHANGED
|
@@ -31,9 +31,13 @@ export const registerWhoami = (server, getSession) => {
|
|
|
31
31
|
},
|
|
32
32
|
knowledge: {
|
|
33
33
|
source: knowledge.pack.source,
|
|
34
|
+
...(knowledge.pack.repo ? { repo: knowledge.pack.repo } : {}),
|
|
35
|
+
...(knowledge.pack.ref ? { ref: knowledge.pack.ref } : {}),
|
|
36
|
+
...(knowledge.pack.sha ? { commit: knowledge.pack.sha.slice(0, 12) } : {}),
|
|
34
37
|
builtAt: knowledge.pack.builtAt,
|
|
35
38
|
docs: knowledge.docs().length,
|
|
36
39
|
sections: knowledge.pack.chunks.length,
|
|
40
|
+
...(knowledge.pack.warning ? { warning: knowledge.pack.warning } : {}),
|
|
37
41
|
},
|
|
38
42
|
audit: config.auditPath ?? null,
|
|
39
43
|
});
|
package/dist/tools/whoami.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/tools/whoami.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,4EAA4E;AAC5E,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAiB,EAAE,UAAyB,EAAQ,EAAE;IACnF,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;QACE,KAAK,EAAE,UAAU;QACjB,WAAW,EACT,0JAA0J;QAC5J,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;KACzD,EACD,KAAK,IAAI,EAAE;QACT,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;QAC7B,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;QACtD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;QAE1C,OAAO,UAAU,CAAC;YAChB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,aAAa,EAAE,QAAQ,KAAK,SAAS;YACrC,GAAG,CAAC,QAAQ;gBACV,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,eAAe,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,EAAE;gBACjH,CAAC,CAAC;oBACE,KAAK,EAAE,IAAI;oBACX,IAAI,EAAE,OAAO,CAAC,YAAY;wBACxB,CAAC,CAAC,0IAA0I;wBAC5I,CAAC,CAAC,oGAAoG;iBACzG,CAAC;YACN,OAAO,EAAE;gBACP,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,MAAM;gBACvC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW;gBACxC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO;gBAChC,gBAAgB,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM;gBACpD,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ;aACnC;YACD,SAAS,EAAE;gBACT,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM;gBAC7B,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,OAAO;gBAC/B,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM;gBAC7B,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM;
|
|
1
|
+
{"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/tools/whoami.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,4EAA4E;AAC5E,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAiB,EAAE,UAAyB,EAAQ,EAAE;IACnF,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;QACE,KAAK,EAAE,UAAU;QACjB,WAAW,EACT,0JAA0J;QAC5J,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;KACzD,EACD,KAAK,IAAI,EAAE;QACT,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;QAC7B,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;QACtD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;QAE1C,OAAO,UAAU,CAAC;YAChB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,aAAa,EAAE,QAAQ,KAAK,SAAS;YACrC,GAAG,CAAC,QAAQ;gBACV,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,eAAe,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,EAAE;gBACjH,CAAC,CAAC;oBACE,KAAK,EAAE,IAAI;oBACX,IAAI,EAAE,OAAO,CAAC,YAAY;wBACxB,CAAC,CAAC,0IAA0I;wBAC5I,CAAC,CAAC,oGAAoG;iBACzG,CAAC;YACN,OAAO,EAAE;gBACP,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,MAAM;gBACvC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW;gBACxC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO;gBAChC,gBAAgB,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM;gBACpD,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ;aACnC;YACD,SAAS,EAAE;gBACT,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM;gBAC7B,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7D,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1D,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1E,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,OAAO;gBAC/B,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM;gBAC7B,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM;gBACtC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACvE;YACD,KAAK,EAAE,MAAM,CAAC,SAAS,IAAI,IAAI;SAChC,CAAC,CAAC;IACL,CAAC,CACF,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/transports/http.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/transports/http.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAqFlD;;;;GAIG;AACH,eAAO,MAAM,OAAO,GAAU,QAAQ,MAAM,KAAG,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAkFpF,CAAC"}
|
package/dist/transports/http.js
CHANGED
|
@@ -2,6 +2,7 @@ import { randomUUID } from 'node:crypto';
|
|
|
2
2
|
import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
|
|
3
3
|
import { isInitializeRequest } from '@modelcontextprotocol/sdk/types.js';
|
|
4
4
|
import express from 'express';
|
|
5
|
+
import { OperationCatalog } from '../api/catalog.js';
|
|
5
6
|
import { createServer, createSharedDeps } from '../server.js';
|
|
6
7
|
import { Session } from '../session.js';
|
|
7
8
|
/** Заголовки, которыми клиент передаёт свои учётные данные CMS. */
|
|
@@ -48,13 +49,36 @@ const originGuard = (allowedOrigins) => (request, response, next) => {
|
|
|
48
49
|
error: `Origin "${origin}" is not allowed. Start the server with --allowed-origins to permit it.`,
|
|
49
50
|
});
|
|
50
51
|
};
|
|
52
|
+
/**
|
|
53
|
+
* Достраивает пустой каталог по учётным данным подключившейся сессии.
|
|
54
|
+
* Процесс поднимается раньше, чем появляется первая сессия, и в remote-режиме
|
|
55
|
+
* своих учётных данных у него может не быть вовсе. Если при этом стенд отдаёт
|
|
56
|
+
* swagger только авторизованным, каталог при старте выходит пустым — и первая
|
|
57
|
+
* же сессия с токеном является единственной возможностью его получить.
|
|
58
|
+
* Делается один раз и молча: это оптимизация, а не часть контракта запроса.
|
|
59
|
+
*/
|
|
60
|
+
const fillCatalog = async (deps, session) => {
|
|
61
|
+
if (!deps.catalog.isEmpty || !session.isConfigured) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
try {
|
|
65
|
+
const bearer = await session.accessToken();
|
|
66
|
+
const rebuilt = await OperationCatalog.resolve(deps.config, bearer);
|
|
67
|
+
if (!rebuilt.isEmpty) {
|
|
68
|
+
deps.catalog.adopt(rebuilt);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
/** Каталог остаётся пустым, и его warnings уже объясняют почему. */
|
|
73
|
+
}
|
|
74
|
+
};
|
|
51
75
|
/**
|
|
52
76
|
* Запускает сервер поверх Streamable HTTP — remote-режим.
|
|
53
77
|
* На каждое MCP-подключение создаётся своя `Session` со своими токенами
|
|
54
78
|
* и своими подтверждениями; общий каталог и знания строятся один раз.
|
|
55
79
|
*/
|
|
56
80
|
export const runHttp = async (config) => {
|
|
57
|
-
const deps = createSharedDeps(config);
|
|
81
|
+
const deps = await createSharedDeps(config);
|
|
58
82
|
const sessions = new Map();
|
|
59
83
|
const app = express();
|
|
60
84
|
app.use(express.json({ limit: '4mb' }));
|
|
@@ -85,6 +109,7 @@ export const runHttp = async (config) => {
|
|
|
85
109
|
},
|
|
86
110
|
});
|
|
87
111
|
const session = new Session(deps, credentialsFromRequest(request));
|
|
112
|
+
void fillCatalog(deps, session);
|
|
88
113
|
const server = createServer(deps, () => session);
|
|
89
114
|
transport.onclose = () => {
|
|
90
115
|
if (transport.sessionId) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/transports/http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,OAA2D,MAAM,SAAS,CAAC;AAGlF,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/transports/http.ts"],"names":[],"mappings":"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"}
|
package/dist/transports/stdio.js
CHANGED
|
@@ -7,7 +7,7 @@ import { Session } from '../session.js';
|
|
|
7
7
|
* поэтому изоляция обеспечивается операционной системой, а не нашим кодом.
|
|
8
8
|
*/
|
|
9
9
|
export const runStdio = async (config) => {
|
|
10
|
-
const deps = createSharedDeps(config);
|
|
10
|
+
const deps = await createSharedDeps(config);
|
|
11
11
|
const session = new Session(deps);
|
|
12
12
|
const server = createServer(deps, () => session);
|
|
13
13
|
await server.connect(new StdioServerTransport());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stdio.js","sourceRoot":"","sources":["../../src/transports/stdio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAE9D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC;;;;GAIG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EAAE,MAAc,EAAiB,EAAE;IAC9D,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"stdio.js","sourceRoot":"","sources":["../../src/transports/stdio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAE9D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC;;;;GAIG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EAAE,MAAc,EAAiB,EAAE;IAC9D,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC;IACjD,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC;AACnD,CAAC,CAAC"}
|