@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.
Files changed (71) hide show
  1. package/README.md +113 -71
  2. package/data/permissions.json +411 -0
  3. package/dist/api/build-catalog.d.ts +24 -0
  4. package/dist/api/build-catalog.d.ts.map +1 -0
  5. package/dist/api/build-catalog.js +257 -0
  6. package/dist/api/build-catalog.js.map +1 -0
  7. package/dist/api/catalog.d.ts +22 -3
  8. package/dist/api/catalog.d.ts.map +1 -1
  9. package/dist/api/catalog.js +69 -4
  10. package/dist/api/catalog.js.map +1 -1
  11. package/dist/api/normalize-schema.d.ts +14 -0
  12. package/dist/api/normalize-schema.d.ts.map +1 -0
  13. package/dist/api/normalize-schema.js +151 -0
  14. package/dist/api/normalize-schema.js.map +1 -0
  15. package/dist/api/swagger-source.d.ts +22 -0
  16. package/dist/api/swagger-source.d.ts.map +1 -0
  17. package/dist/api/swagger-source.js +76 -0
  18. package/dist/api/swagger-source.js.map +1 -0
  19. package/dist/api/types.d.ts +1 -1
  20. package/dist/api/types.d.ts.map +1 -1
  21. package/dist/bin/cli.js +11 -3
  22. package/dist/bin/cli.js.map +1 -1
  23. package/dist/config/config.d.ts +84 -10
  24. package/dist/config/config.d.ts.map +1 -1
  25. package/dist/config/config.js +69 -6
  26. package/dist/config/config.js.map +1 -1
  27. package/dist/index.d.ts +9 -2
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +5 -1
  30. package/dist/index.js.map +1 -1
  31. package/dist/knowledge/github.d.ts +46 -0
  32. package/dist/knowledge/github.d.ts.map +1 -0
  33. package/dist/knowledge/github.js +214 -0
  34. package/dist/knowledge/github.js.map +1 -0
  35. package/dist/knowledge/loader.d.ts +46 -19
  36. package/dist/knowledge/loader.d.ts.map +1 -1
  37. package/dist/knowledge/loader.js +92 -105
  38. package/dist/knowledge/loader.js.map +1 -1
  39. package/dist/knowledge/search.d.ts +11 -0
  40. package/dist/knowledge/search.d.ts.map +1 -1
  41. package/dist/knowledge/search.js +36 -3
  42. package/dist/knowledge/search.js.map +1 -1
  43. package/dist/knowledge/tar.d.ts +22 -0
  44. package/dist/knowledge/tar.d.ts.map +1 -0
  45. package/dist/knowledge/tar.js +120 -0
  46. package/dist/knowledge/tar.js.map +1 -0
  47. package/dist/knowledge/types.d.ts +31 -10
  48. package/dist/knowledge/types.d.ts.map +1 -1
  49. package/dist/server.d.ts +3 -2
  50. package/dist/server.d.ts.map +1 -1
  51. package/dist/server.js +13 -6
  52. package/dist/server.js.map +1 -1
  53. package/dist/session.d.ts +6 -0
  54. package/dist/session.d.ts.map +1 -1
  55. package/dist/session.js +8 -0
  56. package/dist/session.js.map +1 -1
  57. package/dist/tools/guide.d.ts.map +1 -1
  58. package/dist/tools/guide.js +9 -2
  59. package/dist/tools/guide.js.map +1 -1
  60. package/dist/tools/whoami.d.ts.map +1 -1
  61. package/dist/tools/whoami.js +4 -0
  62. package/dist/tools/whoami.js.map +1 -1
  63. package/dist/transports/http.d.ts.map +1 -1
  64. package/dist/transports/http.js +26 -1
  65. package/dist/transports/http.js.map +1 -1
  66. package/dist/transports/stdio.js +1 -1
  67. package/dist/transports/stdio.js.map +1 -1
  68. package/knowledge/operating-rules.md +176 -0
  69. package/package.json +4 -4
  70. package/data/catalog.json +0 -1
  71. package/data/knowledge.json +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swagger-source.d.ts","sourceRoot":"","sources":["../../src/api/swagger-source.ts"],"names":[],"mappings":"AAUA,qCAAqC;AACrC,MAAM,WAAW,aAAa;IAC5B,uFAAuF;IACvF,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,kDAAkD;AAClD,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC;CAC3B;AA2BD;;;;;GAKG;AACH,eAAO,MAAM,YAAY,GAAU,QAAQ,aAAa,KAAG,OAAO,CAAC,cAAc,CAiDhF,CAAC"}
@@ -0,0 +1,76 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { mkdirSync, readFileSync, writeFileSync } from 'node:fs';
3
+ import { join } from 'node:path';
4
+ /** Путь, по которому стенд отдаёт swagger админского API. */
5
+ const SWAGGER_PATH = '/workflows/nodes/admin-api/swagger.json';
6
+ /** Язык описаний. Английский — тот же, на котором написаны summary в каталоге. */
7
+ const LANG_CODE = 'en_US';
8
+ /**
9
+ * Имя файла кэша. Ключом служит baseUrl: каталог операций одного стенда
10
+ * нельзя показывать за каталог другого, даже если оба «тот же самый» CMS.
11
+ */
12
+ const cacheFile = (source) => join(source.cacheDir, 'swagger', `${createHash('sha256').update(source.baseUrl).digest('hex').slice(0, 16)}.json`);
13
+ const readCache = (source) => {
14
+ try {
15
+ return readFileSync(cacheFile(source), 'utf8');
16
+ }
17
+ catch {
18
+ return undefined;
19
+ }
20
+ };
21
+ const writeCache = (source, raw) => {
22
+ const file = cacheFile(source);
23
+ mkdirSync(join(source.cacheDir, 'swagger'), { recursive: true });
24
+ writeFileSync(file, raw);
25
+ };
26
+ /**
27
+ * Забирает swagger со стенда, с откатом на кэш.
28
+ * Эндпоинт публичный на большинстве стендов, поэтому первый запрос идёт без
29
+ * авторизации: в remote-режиме на момент старта процесса учётных данных может
30
+ * не быть вовсе. Токен добавляется только если стенд ответил 401/403.
31
+ */
32
+ export const fetchSwagger = async (source) => {
33
+ const url = `${source.baseUrl}${SWAGGER_PATH}?langCode=${LANG_CODE}`;
34
+ const request = async (bearer) => fetch(url, {
35
+ headers: {
36
+ accept: 'application/json',
37
+ ...(bearer ? { authorization: `Bearer ${bearer}` } : {}),
38
+ },
39
+ signal: AbortSignal.timeout(source.timeoutMs),
40
+ });
41
+ try {
42
+ let response = await request();
43
+ if ((response.status === 401 || response.status === 403) && source.bearer) {
44
+ response = await request(source.bearer);
45
+ }
46
+ if (!response.ok) {
47
+ throw new Error(`${source.baseUrl} answered ${String(response.status)} for ${SWAGGER_PATH}` +
48
+ (response.status === 401 || response.status === 403
49
+ ? ' — the stand requires credentials to read its swagger'
50
+ : ''));
51
+ }
52
+ const raw = await response.text();
53
+ /**
54
+ * Проверяем, что это вообще OpenAPI, до записи в кэш. Стенд за прокси легко
55
+ * отвечает страницей входа или конвертом ошибки с кодом 200; закэшировать
56
+ * такое — значит подсунуть агенту пустой каталог до следующей чистки кэша.
57
+ */
58
+ const parsed = JSON.parse(raw);
59
+ if (typeof parsed !== 'object' ||
60
+ parsed === null ||
61
+ !('paths' in parsed) ||
62
+ typeof parsed.paths !== 'object') {
63
+ throw new Error(`${source.baseUrl}${SWAGGER_PATH} did not answer with an OpenAPI document`);
64
+ }
65
+ writeCache(source, raw);
66
+ return { raw, origin: 'stand' };
67
+ }
68
+ catch (error) {
69
+ const cached = readCache(source);
70
+ if (cached) {
71
+ return { raw: cached, origin: 'cache' };
72
+ }
73
+ throw error instanceof Error ? error : new Error(String(error));
74
+ }
75
+ };
76
+ //# sourceMappingURL=swagger-source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swagger-source.js","sourceRoot":"","sources":["../../src/api/swagger-source.ts"],"names":[],"mappings":"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"}
@@ -64,7 +64,7 @@ export interface Operation {
64
64
  /** Склеенный текст для поиска по каталогу. */
65
65
  searchText: string;
66
66
  }
67
- /** Собранный каталог: то, что build-catalog.ts пишет в data/catalog.json. */
67
+ /** Собранный каталог: результат `buildCatalog` swagger стенда плюс карта прав. */
68
68
  export interface Catalog {
69
69
  version: 1;
70
70
  builtAt: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;AAErE;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,aAAa,CAAC;AAEzD,iDAAiD;AACjD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IACtC,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4CAA4C;IAC5C,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,yEAAyE;IACzE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,4EAA4E;IAC5E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qCAAqC;IACrC,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,0CAA0C;AAC1C,MAAM,WAAW,SAAS;IACxB,6EAA6E;IAC7E,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;IACnB,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,mEAAmE;IACnE,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,SAAS,CAAC;IAChB,gFAAgF;IAChF,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,IAAI,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,UAAU,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;IACtE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uFAAuF;IACvF,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,8CAA8C;IAC9C,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,6EAA6E;AAC7E,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,CAAC,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,SAAS,EAAE,MAAM,CAAC;IAClB,yEAAyE;IACzE,WAAW,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB;;;;OAIG;IACH,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,SAAS,EAAE,CAAC;CACzB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;AAErE;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,aAAa,CAAC;AAEzD,iDAAiD;AACjD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IACtC,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4CAA4C;IAC5C,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,yEAAyE;IACzE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,4EAA4E;IAC5E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qCAAqC;IACrC,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,0CAA0C;AAC1C,MAAM,WAAW,SAAS;IACxB,6EAA6E;IAC7E,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;IACnB,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,mEAAmE;IACnE,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,SAAS,CAAC;IAChB,gFAAgF;IAChF,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,IAAI,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,UAAU,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;IACtE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uFAAuF;IACvF,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,8CAA8C;IAC9C,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,oFAAoF;AACpF,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,CAAC,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,SAAS,EAAE,MAAM,CAAC;IAClB,yEAAyE;IACzE,WAAW,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB;;;;OAIG;IACH,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,SAAS,EAAE,CAAC;CACzB"}
package/dist/bin/cli.js CHANGED
@@ -11,8 +11,6 @@ Options
11
11
  --base-url <url> Admin API base URL (must contain /api/admin)
12
12
  --allow <level> read (default) | write | destructive
13
13
  --login <login> admin login; the password comes from ONEENTRY_CMS_PASSWORD
14
- --back <path> backend-app checkout: read knowledge live instead of the bundled snapshot
15
- --front <path> frontend-app checkout
16
14
  --audit <path> JSONL audit log (required in remote mode)
17
15
  --http serve Streamable HTTP instead of stdio
18
16
  --port <n> HTTP port, default 8931
@@ -21,9 +19,19 @@ Options
21
19
  --request-timeout <ms> per-request timeout, default 30000
22
20
  --max-response-bytes <n> response cap handed to the model, default 24576
23
21
 
22
+ Knowledge (documentation is fetched from GitHub, not bundled)
23
+ --knowledge-repo <o/n> knowledge repository, default ONEENTRY-PLATFORM/oneentry-platform-rules
24
+ --knowledge-ref <ref> branch, tag or commit, default main
25
+ --knowledge-path <dir> read a local clone instead of GitHub (fast edit loop)
26
+ --knowledge-ttl <ms> how long a cached commit stays fresh, default 3600000
27
+ --cache-dir <path> where the knowledge tree and the stand's swagger are cached
28
+ --offline never touch the network: cache and bundled rules only
29
+
24
30
  Environment
25
31
  ONEENTRY_CMS_LOGIN, ONEENTRY_CMS_PASSWORD, ONEENTRY_CMS_TOKEN, ONEENTRY_CMS_BASE_URL, ONEENTRY_MCP_ALLOW,
26
- ONEENTRY_MCP_BACK_PATH, ONEENTRY_MCP_FRONT_PATH, ONEENTRY_MCP_AUDIT_PATH, ONEENTRY_MCP_PORT, ONEENTRY_MCP_HOST
32
+ ONEENTRY_MCP_AUDIT_PATH, ONEENTRY_MCP_PORT, ONEENTRY_MCP_HOST, ONEENTRY_MCP_CACHE_DIR,
33
+ ONEENTRY_MCP_KNOWLEDGE_REPO, ONEENTRY_MCP_KNOWLEDGE_REF, ONEENTRY_MCP_KNOWLEDGE_PATH,
34
+ ONEENTRY_MCP_KNOWLEDGE_TTL_MS, ONEENTRY_MCP_OFFLINE, ONEENTRY_GITHUB_TOKEN
27
35
  `;
28
36
  const main = async () => {
29
37
  const argv = process.argv.slice(2);
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/bin/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;;;;;;CAsBb,CAAC;AAEF,MAAM,IAAI,GAAG,KAAK,IAAmB,EAAE;IACrC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;QACtB,OAAO;IACT,CAAC;IACD,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;AACzB,CAAC,CAAC;AAEF,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC9B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3G,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/bin/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8Bb,CAAC;AAEF,MAAM,IAAI,GAAG,KAAK,IAAmB,EAAE;IACrC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;QACtB,OAAO;IACT,CAAC;IACD,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;AACzB,CAAC,CAAC;AAEF,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC9B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3G,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC"}
@@ -11,6 +11,40 @@ export type AllowLevel = z.infer<typeof AllowLevelSchema>;
11
11
  */
12
12
  export declare const ServerModeSchema: z.ZodEnum<["local", "remote"]>;
13
13
  export type ServerMode = z.infer<typeof ServerModeSchema>;
14
+ /**
15
+ * Откуда брать документацию. Знания живут в отдельном публичном репозитории GitHub
16
+ * и скачиваются в рантайме, а не вшиваются в пакет: иначе правка одной строки
17
+ * документации требовала бы перевыпуска npm-пакета.
18
+ */
19
+ export declare const KnowledgeConfigSchema: z.ZodObject<{
20
+ /** `owner/name` репозитория знаний. */
21
+ repo: z.ZodString;
22
+ /** Ветка, тег или коммит. Пин на тег — способ зафиксировать знания для стенда. */
23
+ ref: z.ZodString;
24
+ /** Локальный клон репозитория знаний: читать его вместо сети. */
25
+ path: z.ZodOptional<z.ZodString>;
26
+ /** Сколько считать закэшированный коммит свежим, не спрашивая GitHub. */
27
+ refreshTtlMs: z.ZodNumber;
28
+ /** Не ходить в сеть: только кэш и вшитые правила. */
29
+ offline: z.ZodBoolean;
30
+ /** Токен GitHub — только чтобы поднять лимит API. Репозиторий публичный. */
31
+ token: z.ZodOptional<z.ZodString>;
32
+ }, "strip", z.ZodTypeAny, {
33
+ repo: string;
34
+ ref: string;
35
+ refreshTtlMs: number;
36
+ offline: boolean;
37
+ path?: string | undefined;
38
+ token?: string | undefined;
39
+ }, {
40
+ repo: string;
41
+ ref: string;
42
+ refreshTtlMs: number;
43
+ offline: boolean;
44
+ path?: string | undefined;
45
+ token?: string | undefined;
46
+ }>;
47
+ export type KnowledgeSettings = z.infer<typeof KnowledgeConfigSchema>;
14
48
  /**
15
49
  * Полная конфигурация сервера после слияния источников.
16
50
  * Все дальнейшие слои получают её как зависимость и не читают process.env сами —
@@ -26,10 +60,36 @@ export declare const ConfigSchema: z.ZodObject<{
26
60
  password: z.ZodOptional<z.ZodString>;
27
61
  /** Готовый access-токен вместо логина/пароля. */
28
62
  token: z.ZodOptional<z.ZodString>;
29
- /** Путь к чекауту dnk-back: включает чтение документации «живьём» вместо снапшота. */
30
- backPath: z.ZodOptional<z.ZodString>;
31
- /** Путь к чекауту dnk-front. */
32
- frontPath: z.ZodOptional<z.ZodString>;
63
+ knowledge: z.ZodObject<{
64
+ /** `owner/name` репозитория знаний. */
65
+ repo: z.ZodString;
66
+ /** Ветка, тег или коммит. Пин на тег — способ зафиксировать знания для стенда. */
67
+ ref: z.ZodString;
68
+ /** Локальный клон репозитория знаний: читать его вместо сети. */
69
+ path: z.ZodOptional<z.ZodString>;
70
+ /** Сколько считать закэшированный коммит свежим, не спрашивая GitHub. */
71
+ refreshTtlMs: z.ZodNumber;
72
+ /** Не ходить в сеть: только кэш и вшитые правила. */
73
+ offline: z.ZodBoolean;
74
+ /** Токен GitHub — только чтобы поднять лимит API. Репозиторий публичный. */
75
+ token: z.ZodOptional<z.ZodString>;
76
+ }, "strip", z.ZodTypeAny, {
77
+ repo: string;
78
+ ref: string;
79
+ refreshTtlMs: number;
80
+ offline: boolean;
81
+ path?: string | undefined;
82
+ token?: string | undefined;
83
+ }, {
84
+ repo: string;
85
+ ref: string;
86
+ refreshTtlMs: number;
87
+ offline: boolean;
88
+ path?: string | undefined;
89
+ token?: string | undefined;
90
+ }>;
91
+ /** Каталог кэша: распакованный репозиторий знаний и снимок swagger стенда. */
92
+ cacheDir: z.ZodString;
33
93
  /** Файл JSONL-аудита. В remote-режиме обязателен. */
34
94
  auditPath: z.ZodOptional<z.ZodString>;
35
95
  /** Таймаут одного запроса к Admin API, мс. */
@@ -54,6 +114,15 @@ export declare const ConfigSchema: z.ZodObject<{
54
114
  mode: "local" | "remote";
55
115
  baseUrl: string;
56
116
  allow: "read" | "write" | "destructive";
117
+ knowledge: {
118
+ repo: string;
119
+ ref: string;
120
+ refreshTtlMs: number;
121
+ offline: boolean;
122
+ path?: string | undefined;
123
+ token?: string | undefined;
124
+ };
125
+ cacheDir: string;
57
126
  requestTimeoutMs: number;
58
127
  maxResponseBytes: number;
59
128
  http: {
@@ -61,16 +130,23 @@ export declare const ConfigSchema: z.ZodObject<{
61
130
  host: string;
62
131
  allowedOrigins: string[];
63
132
  };
133
+ token?: string | undefined;
64
134
  login?: string | undefined;
65
135
  password?: string | undefined;
66
- token?: string | undefined;
67
- backPath?: string | undefined;
68
- frontPath?: string | undefined;
69
136
  auditPath?: string | undefined;
70
137
  }, {
71
138
  mode: "local" | "remote";
72
139
  baseUrl: string;
73
140
  allow: "read" | "write" | "destructive";
141
+ knowledge: {
142
+ repo: string;
143
+ ref: string;
144
+ refreshTtlMs: number;
145
+ offline: boolean;
146
+ path?: string | undefined;
147
+ token?: string | undefined;
148
+ };
149
+ cacheDir: string;
74
150
  requestTimeoutMs: number;
75
151
  maxResponseBytes: number;
76
152
  http: {
@@ -78,11 +154,9 @@ export declare const ConfigSchema: z.ZodObject<{
78
154
  host: string;
79
155
  allowedOrigins: string[];
80
156
  };
157
+ token?: string | undefined;
81
158
  login?: string | undefined;
82
159
  password?: string | undefined;
83
- token?: string | undefined;
84
- backPath?: string | undefined;
85
- frontPath?: string | undefined;
86
160
  auditPath?: string | undefined;
87
161
  }>;
88
162
  export type Config = z.infer<typeof ConfigSchema>;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,eAAO,MAAM,gBAAgB,6CAA2C,CAAC;AACzE,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D;;;GAGG;AACH,eAAO,MAAM,gBAAgB,gCAA8B,CAAC;AAC5D,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D;;;;GAIG;AACH,eAAO,MAAM,YAAY;;IAEvB,qFAAqF;;;IAGrF,uFAAuF;;;IAGvF,iDAAiD;;IAEjD,sFAAsF;;IAEtF,gCAAgC;;IAEhC,qDAAqD;;IAErD,8CAA8C;;IAE9C,iFAAiF;;;;;QAK/E,iGAAiG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGnG,CAAC;AACH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAWlD,8CAA8C;AAC9C,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;AAExD;;;GAGG;AACH,eAAO,MAAM,UAAU,GAAI,MAAM,SAAS,MAAM,EAAE,KAAG,QAsBpD,CAAC;AAgBF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,KAAG,MAS9C,CAAC;AAkBF;;;;GAIG;AACH,eAAO,MAAM,UAAU,GACrB,MAAM,SAAS,MAAM,EAAE,EACvB,MAAK,MAAM,CAAC,UAAwB,EACpC,MAAK,MAAsB,KAC1B,MAsDF,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,eAAO,MAAM,gBAAgB,6CAA2C,CAAC;AACzE,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D;;;GAGG;AACH,eAAO,MAAM,gBAAgB,gCAA8B,CAAC;AAC5D,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D;;;;GAIG;AACH,eAAO,MAAM,qBAAqB;IAChC,uCAAuC;;IAEvC,kFAAkF;;IAElF,iEAAiE;;IAEjE,yEAAyE;;IAEzE,qDAAqD;;IAErD,4EAA4E;;;;;;;;;;;;;;;;EAE5E,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEtE;;;;GAIG;AACH,eAAO,MAAM,YAAY;;IAEvB,qFAAqF;;;IAGrF,uFAAuF;;;IAGvF,iDAAiD;;;QA5BjD,uCAAuC;;QAEvC,kFAAkF;;QAElF,iEAAiE;;QAEjE,yEAAyE;;QAEzE,qDAAqD;;QAErD,4EAA4E;;;;;;;;;;;;;;;;;IAqB5E,8EAA8E;;IAE9E,qDAAqD;;IAErD,8CAA8C;;IAE9C,iFAAiF;;;;;QAK/E,iGAAiG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGnG,CAAC;AACH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAelD,8CAA8C;AAC9C,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;AAExD;;;GAGG;AACH,eAAO,MAAM,UAAU,GAAI,MAAM,SAAS,MAAM,EAAE,KAAG,QAsBpD,CAAC;AAuCF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,KAAG,MAS9C,CAAC;AAkBF;;;;GAIG;AACH,eAAO,MAAM,UAAU,GACrB,MAAM,SAAS,MAAM,EAAE,EACvB,MAAK,MAAM,CAAC,UAAwB,EACpC,MAAK,MAAsB,KAC1B,MAoFF,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { readFileSync } from 'node:fs';
2
+ import { homedir } from 'node:os';
2
3
  import { resolve } from 'node:path';
3
4
  import { z } from 'zod';
4
5
  /**
@@ -11,6 +12,25 @@ export const AllowLevelSchema = z.enum(['read', 'write', 'destructive']);
11
12
  * stdio -> local (агент и CMS на одной машине), streamable HTTP -> remote (сервис).
12
13
  */
13
14
  export const ServerModeSchema = z.enum(['local', 'remote']);
15
+ /**
16
+ * Откуда брать документацию. Знания живут в отдельном публичном репозитории GitHub
17
+ * и скачиваются в рантайме, а не вшиваются в пакет: иначе правка одной строки
18
+ * документации требовала бы перевыпуска npm-пакета.
19
+ */
20
+ export const KnowledgeConfigSchema = z.object({
21
+ /** `owner/name` репозитория знаний. */
22
+ repo: z.string().regex(/^[\w.-]+\/[\w.-]+$/, 'knowledge repo must look like "owner/name"'),
23
+ /** Ветка, тег или коммит. Пин на тег — способ зафиксировать знания для стенда. */
24
+ ref: z.string().min(1),
25
+ /** Локальный клон репозитория знаний: читать его вместо сети. */
26
+ path: z.string().optional(),
27
+ /** Сколько считать закэшированный коммит свежим, не спрашивая GitHub. */
28
+ refreshTtlMs: z.number().int().nonnegative(),
29
+ /** Не ходить в сеть: только кэш и вшитые правила. */
30
+ offline: z.boolean(),
31
+ /** Токен GitHub — только чтобы поднять лимит API. Репозиторий публичный. */
32
+ token: z.string().min(1).optional(),
33
+ });
14
34
  /**
15
35
  * Полная конфигурация сервера после слияния источников.
16
36
  * Все дальнейшие слои получают её как зависимость и не читают process.env сами —
@@ -26,10 +46,9 @@ export const ConfigSchema = z.object({
26
46
  password: z.string().min(1).optional(),
27
47
  /** Готовый access-токен вместо логина/пароля. */
28
48
  token: z.string().min(1).optional(),
29
- /** Путь к чекауту dnk-back: включает чтение документации «живьём» вместо снапшота. */
30
- backPath: z.string().optional(),
31
- /** Путь к чекауту dnk-front. */
32
- frontPath: z.string().optional(),
49
+ knowledge: KnowledgeConfigSchema,
50
+ /** Каталог кэша: распакованный репозиторий знаний и снимок swagger стенда. */
51
+ cacheDir: z.string().min(1),
33
52
  /** Файл JSONL-аудита. В remote-режиме обязателен. */
34
53
  auditPath: z.string().optional(),
35
54
  /** Таймаут одного запроса к Admin API, мс. */
@@ -50,6 +69,10 @@ const DEFAULTS = {
50
69
  maxResponseBytes: 24_576,
51
70
  httpPort: 8931,
52
71
  httpHost: '127.0.0.1',
72
+ knowledgeRepo: 'ONEENTRY-PLATFORM/oneentry-platform-rules',
73
+ knowledgeRef: 'main',
74
+ /** Час: достаточно редко, чтобы цикл перезапусков не упирался в лимит API GitHub. */
75
+ knowledgeTtlMs: 3_600_000,
53
76
  };
54
77
  /**
55
78
  * Минимальный разбор argv: поддерживаются `--flag`, `--key=value` и `--key value`.
@@ -80,6 +103,27 @@ export const parseFlags = (argv) => {
80
103
  return flags;
81
104
  };
82
105
  const asString = (value) => typeof value === 'string' && value.length > 0 ? value : undefined;
106
+ /**
107
+ * Булев флаг из трёх источников. Голый `--offline` — это `true`, поэтому
108
+ * значение флага может быть и строкой, и признаком присутствия.
109
+ */
110
+ const asBoolean = (value, fallback) => {
111
+ if (value === undefined) {
112
+ return fallback;
113
+ }
114
+ if (typeof value === 'boolean') {
115
+ return value;
116
+ }
117
+ return ['1', 'true', 'yes', 'on'].includes(value.trim().toLowerCase());
118
+ };
119
+ /**
120
+ * Каталог кэша по умолчанию: XDG, с откатом на `~/.cache`.
121
+ * Кэш обязан пережить перезапуск процесса, поэтому временный каталог не годится.
122
+ */
123
+ const defaultCacheDir = (env) => {
124
+ const xdg = asString(env['XDG_CACHE_HOME']);
125
+ return resolve(xdg ?? resolve(homedir(), '.cache'), 'oneentry-mcp-platform');
126
+ };
83
127
  const asNumber = (value, fallback) => {
84
128
  if (value === undefined) {
85
129
  return fallback;
@@ -132,6 +176,15 @@ export const loadConfig = (argv, env = process.env, cwd = process.cwd()) => {
132
176
  return typeof value === 'string' && value.length > 0 ? value : undefined;
133
177
  };
134
178
  const pick = (flagKey, envKey, fileKey) => asString(flags[flagKey]) ?? asString(env[envKey]) ?? fileString(fileKey);
179
+ const fileKnowledge = file['knowledge'];
180
+ const knowledgeFile = (key) => {
181
+ if (typeof fileKnowledge !== 'object' || fileKnowledge === null || Array.isArray(fileKnowledge)) {
182
+ return undefined;
183
+ }
184
+ const value = fileKnowledge[key];
185
+ return typeof value === 'string' && value.length > 0 ? value : undefined;
186
+ };
187
+ const pickKnowledge = (flagKey, envKey, fileKey) => asString(flags[flagKey]) ?? asString(env[envKey]) ?? knowledgeFile(fileKey);
135
188
  const mode = flags['http'] === true || asString(flags['http']) ? 'remote' : 'local';
136
189
  const originsRaw = pick('allowed-origins', 'ONEENTRY_MCP_ALLOWED_ORIGINS', 'allowedOrigins');
137
190
  const candidate = {
@@ -141,8 +194,18 @@ export const loadConfig = (argv, env = process.env, cwd = process.cwd()) => {
141
194
  login: pick('login', 'ONEENTRY_CMS_LOGIN', 'login'),
142
195
  password: asString(env['ONEENTRY_CMS_PASSWORD']) ?? fileString('password'),
143
196
  token: asString(env['ONEENTRY_CMS_TOKEN']) ?? fileString('token'),
144
- backPath: pick('back', 'ONEENTRY_MCP_BACK_PATH', 'backPath'),
145
- frontPath: pick('front', 'ONEENTRY_MCP_FRONT_PATH', 'frontPath'),
197
+ knowledge: {
198
+ repo: pickKnowledge('knowledge-repo', 'ONEENTRY_MCP_KNOWLEDGE_REPO', 'repo') ??
199
+ DEFAULTS.knowledgeRepo,
200
+ ref: pickKnowledge('knowledge-ref', 'ONEENTRY_MCP_KNOWLEDGE_REF', 'ref') ??
201
+ DEFAULTS.knowledgeRef,
202
+ path: pickKnowledge('knowledge-path', 'ONEENTRY_MCP_KNOWLEDGE_PATH', 'path'),
203
+ refreshTtlMs: asNumber(pickKnowledge('knowledge-ttl', 'ONEENTRY_MCP_KNOWLEDGE_TTL_MS', 'refreshTtlMs'), DEFAULTS.knowledgeTtlMs),
204
+ offline: asBoolean(flags['offline'] ?? env['ONEENTRY_MCP_OFFLINE'], false),
205
+ /** Только из окружения: секрет не должен попадать ни в argv, ни в файл конфигурации. */
206
+ token: asString(env['ONEENTRY_GITHUB_TOKEN']),
207
+ },
208
+ cacheDir: pick('cache-dir', 'ONEENTRY_MCP_CACHE_DIR', 'cacheDir') ?? defaultCacheDir(env),
146
209
  auditPath: pick('audit', 'ONEENTRY_MCP_AUDIT_PATH', 'auditPath'),
147
210
  requestTimeoutMs: asNumber(pick('request-timeout', 'ONEENTRY_MCP_REQUEST_TIMEOUT_MS', 'requestTimeoutMs'), DEFAULTS.requestTimeoutMs),
148
211
  maxResponseBytes: asNumber(pick('max-response-bytes', 'ONEENTRY_MCP_MAX_RESPONSE_BYTES', 'maxResponseBytes'), DEFAULTS.maxResponseBytes),
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;AAGzE;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AAG5D;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,uCAAuC;IACvC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,oBAAoB,EAAE,4CAA4C,CAAC;IAC1F,kFAAkF;IAClF,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACtB,iEAAiE;IACjE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,yEAAyE;IACzE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IAC5C,qDAAqD;IACrD,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,4EAA4E;IAC5E,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CACpC,CAAC,CAAC;AAGH;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,IAAI,EAAE,gBAAgB;IACtB,qFAAqF;IACrF,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IACzB,KAAK,EAAE,gBAAgB;IACvB,uFAAuF;IACvF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACnC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACtC,iDAAiD;IACjD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACnC,SAAS,EAAE,qBAAqB;IAChC,8EAA8E;IAC9E,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,qDAAqD;IACrD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,8CAA8C;IAC9C,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAC7C,iFAAiF;IACjF,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAC7C,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACb,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;QACxC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACvB,iGAAiG;QACjG,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KACpC,CAAC;CACH,CAAC,CAAC;AAGH,MAAM,QAAQ,GAAG;IACf,OAAO,EAAE,iCAAiC;IAC1C,KAAK,EAAE,MAAoB;IAC3B,gBAAgB,EAAE,MAAM;IACxB,gBAAgB,EAAE,MAAM;IACxB,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,WAAW;IACrB,aAAa,EAAE,2CAA2C;IAC1D,YAAY,EAAE,MAAM;IACpB,qFAAqF;IACrF,cAAc,EAAE,SAAS;CAC1B,CAAC;AAKF;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAuB,EAAY,EAAE;IAC9D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;YACd,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YAC9C,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACzB,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;YACnB,CAAC,EAAE,CAAC;QACN,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QACrB,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,KAAmC,EAAsB,EAAE,CAC3E,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAEpE;;;GAGG;AACH,MAAM,SAAS,GAAG,CAAC,KAAmC,EAAE,QAAiB,EAAW,EAAE;IACpF,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AACzE,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,eAAe,GAAG,CAAC,GAAsB,EAAU,EAAE;IACzD,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC5C,OAAO,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,EAAE,uBAAuB,CAAC,CAAC;AAC/E,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,KAAyB,EAAE,QAAgB,EAAU,EAAE;IACvE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,GAAG,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,GAAW,EAAU,EAAE;IACtD,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACxC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CACb,2DAA2D,GAAG,KAAK;YACjE,uDAAuD,CAC1D,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,GAAW,EAA2B,EAAE;IAC9D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,4BAA4B,CAAC,EAAE,MAAM,CAAC,CAAC;QAC7E,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3E,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;QAC3E,CAAC;QACD,OAAO,MAAiC,CAAC;IAC3C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACvD,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,IAAuB,EACvB,MAAyB,OAAO,CAAC,GAAG,EACpC,MAAc,OAAO,CAAC,GAAG,EAAE,EACnB,EAAE;IACV,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,UAAU,GAAG,CAAC,GAAW,EAAsB,EAAE;QACrD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACxB,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3E,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,CAAC,OAAe,EAAE,MAAc,EAAE,OAAe,EAAsB,EAAE,CACpF,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;IAE3E,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;IACxC,MAAM,aAAa,GAAG,CAAC,GAAW,EAAsB,EAAE;QACxD,IAAI,OAAO,aAAa,KAAK,QAAQ,IAAI,aAAa,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;YAChG,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,KAAK,GAAI,aAAyC,CAAC,GAAG,CAAC,CAAC;QAC9D,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3E,CAAC,CAAC;IACF,MAAM,aAAa,GAAG,CACpB,OAAe,EACf,MAAc,EACd,OAAe,EACK,EAAE,CACtB,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;IAE9E,MAAM,IAAI,GAAe,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;IAEhG,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,EAAE,8BAA8B,EAAE,gBAAgB,CAAC,CAAC;IAE7F,MAAM,SAAS,GAAG;QAChB,IAAI;QACJ,OAAO,EAAE,gBAAgB,CACvB,IAAI,CAAC,UAAU,EAAE,uBAAuB,EAAE,SAAS,CAAC,IAAI,QAAQ,CAAC,OAAO,CACzE;QACD,KAAK,EAAE,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,oBAAoB,EAAE,OAAO,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC;QAC7F,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,oBAAoB,EAAE,OAAO,CAAC;QACnD,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC;QAC1E,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC;QACjE,SAAS,EAAE;YACT,IAAI,EACF,aAAa,CAAC,gBAAgB,EAAE,6BAA6B,EAAE,MAAM,CAAC;gBACtE,QAAQ,CAAC,aAAa;YACxB,GAAG,EACD,aAAa,CAAC,eAAe,EAAE,4BAA4B,EAAE,KAAK,CAAC;gBACnE,QAAQ,CAAC,YAAY;YACvB,IAAI,EAAE,aAAa,CAAC,gBAAgB,EAAE,6BAA6B,EAAE,MAAM,CAAC;YAC5E,YAAY,EAAE,QAAQ,CACpB,aAAa,CAAC,eAAe,EAAE,+BAA+B,EAAE,cAAc,CAAC,EAC/E,QAAQ,CAAC,cAAc,CACxB;YACD,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,sBAAsB,CAAC,EAAE,KAAK,CAAC;YAC1E,wFAAwF;YACxF,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;SAC9C;QACD,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,wBAAwB,EAAE,UAAU,CAAC,IAAI,eAAe,CAAC,GAAG,CAAC;QACzF,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,yBAAyB,EAAE,WAAW,CAAC;QAChE,gBAAgB,EAAE,QAAQ,CACxB,IAAI,CAAC,iBAAiB,EAAE,iCAAiC,EAAE,kBAAkB,CAAC,EAC9E,QAAQ,CAAC,gBAAgB,CAC1B;QACD,gBAAgB,EAAE,QAAQ,CACxB,IAAI,CAAC,oBAAoB,EAAE,iCAAiC,EAAE,kBAAkB,CAAC,EACjF,QAAQ,CAAC,gBAAgB,CAC1B;QACD,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,mBAAmB,EAAE,MAAM,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC;YAC5E,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,mBAAmB,EAAE,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ;YACpE,cAAc,EAAE,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;SAC7F;KACF,CAAC;IAEF,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAE7C;;OAEG;IACH,IAAI,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAC;IAClG,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;IAC5F,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -15,9 +15,16 @@ export { shapeResponse } from './api/shape.js';
15
15
  export { AuditLog } from './api/audit.js';
16
16
  export { TokenStore, AuthError } from './api/auth.js';
17
17
  export { KnowledgeIndex } from './knowledge/search.js';
18
- export { buildPack, loadSnapshot, resolveKnowledge } from './knowledge/loader.js';
18
+ export { packFromFiles, resolveKnowledge, seedPack } from './knowledge/loader.js';
19
+ export type { KnowledgeConfig } from './knowledge/loader.js';
20
+ export { fetchKnowledgeTree, readLocalTree } from './knowledge/github.js';
21
+ export type { KnowledgeFile, KnowledgeSource, KnowledgeTree } from './knowledge/github.js';
22
+ export { readTar, readTarGz } from './knowledge/tar.js';
23
+ export { buildCatalog } from './api/build-catalog.js';
24
+ export type { PermissionMap } from './api/build-catalog.js';
25
+ export { fetchSwagger } from './api/swagger-source.js';
19
26
  export { runStdio } from './transports/stdio.js';
20
27
  export { runHttp } from './transports/http.js';
21
28
  export type { Catalog, Operation, JsonSchema, RiskLevel } from './api/types.js';
22
- export type { KnowledgeChunk, KnowledgeDoc, KnowledgePack } from './knowledge/types.js';
29
+ export type { KnowledgeChunk, KnowledgeDoc, KnowledgeOrigin, KnowledgePack, } from './knowledge/types.js';
23
30
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC5F,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACvD,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChF,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC5F,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACvD,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAClF,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC1E,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3F,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,YAAY,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChF,YAAY,EACV,cAAc,EACd,YAAY,EACZ,eAAe,EACf,aAAa,GACd,MAAM,sBAAsB,CAAC"}
package/dist/index.js CHANGED
@@ -12,7 +12,11 @@ export { shapeResponse } from './api/shape.js';
12
12
  export { AuditLog } from './api/audit.js';
13
13
  export { TokenStore, AuthError } from './api/auth.js';
14
14
  export { KnowledgeIndex } from './knowledge/search.js';
15
- export { buildPack, loadSnapshot, resolveKnowledge } from './knowledge/loader.js';
15
+ export { packFromFiles, resolveKnowledge, seedPack } from './knowledge/loader.js';
16
+ export { fetchKnowledgeTree, readLocalTree } from './knowledge/github.js';
17
+ export { readTar, readTarGz } from './knowledge/tar.js';
18
+ export { buildCatalog } from './api/build-catalog.js';
19
+ export { fetchSwagger } from './api/swagger-source.js';
16
20
  export { runStdio } from './transports/stdio.js';
17
21
  export { runHttp } from './transports/http.js';
18
22
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE5F,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE5F,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAElF,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE1E,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,46 @@
1
+ /** Откуда и как забирать репозиторий знаний. */
2
+ export interface KnowledgeSource {
3
+ /** `owner/name` публичного репозитория GitHub. */
4
+ repo: string;
5
+ /** Ветка, тег или sha. */
6
+ ref: string;
7
+ cacheDir: string;
8
+ /** Как долго считать закэшированный sha свежим, не спрашивая GitHub. */
9
+ refreshTtlMs: number;
10
+ /** Не ходить в сеть вовсе: только кэш. */
11
+ offline: boolean;
12
+ /** Токен GitHub — только чтобы поднять лимит API; репозиторий публичный. */
13
+ token?: string;
14
+ timeoutMs: number;
15
+ }
16
+ /** Файл документации, вынутый из репозитория. */
17
+ export interface KnowledgeFile {
18
+ /** Путь относительно каталога `knowledge/`, например `back/docs/menus-module.md`. */
19
+ path: string;
20
+ content: string;
21
+ }
22
+ /** Результат получения дерева знаний. */
23
+ export interface KnowledgeTree {
24
+ files: KnowledgeFile[];
25
+ sha: string;
26
+ /** `github` — только что скачано, `cache` — взято с диска. */
27
+ source: 'github' | 'cache';
28
+ }
29
+ /** Рекурсивно собирает `*.md` каталога. Используется и кэшем, и локальным клоном. */
30
+ export declare const walkMarkdown: (root: string) => string[];
31
+ /**
32
+ * Отдаёт дерево знаний, предпочитая кэш.
33
+ * Порядок такой: свежий кэш -> сверка sha -> скачивание. Пока запись кэша моложе
34
+ * `refreshTtlMs`, сеть не трогается вообще — иначе цикл перезапусков сервера
35
+ * упирался бы в лимит анонимного API GitHub.
36
+ * Бросает исключение, если знания взять неоткуда; решение о запасном варианте
37
+ * принимает вызывающий.
38
+ */
39
+ export declare const fetchKnowledgeTree: (source: KnowledgeSource) => Promise<KnowledgeTree>;
40
+ /**
41
+ * Читает знания из локального клона репозитория.
42
+ * Принимает и корень клона, и сам каталог `knowledge/` — путать их слишком легко,
43
+ * а разница видна по наличию подкаталога.
44
+ */
45
+ export declare const readLocalTree: (path: string) => KnowledgeFile[];
46
+ //# sourceMappingURL=github.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/knowledge/github.ts"],"names":[],"mappings":"AAIA,gDAAgD;AAChD,MAAM,WAAW,eAAe;IAC9B,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,0BAA0B;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,YAAY,EAAE,MAAM,CAAC;IACrB,0CAA0C;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,iDAAiD;AACjD,MAAM,WAAW,aAAa;IAC5B,qFAAqF;IACrF,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,yCAAyC;AACzC,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,8DAA8D;IAC9D,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC;CAC5B;AA4CD,qFAAqF;AACrF,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,KAAG,MAAM,EAcjD,CAAC;AAgIF;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,GAAU,QAAQ,eAAe,KAAG,OAAO,CAAC,aAAa,CAiCvF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,KAAG,aAAa,EASzD,CAAC"}