@inso_web/els-mcp 0.1.0 → 0.2.0
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 +42 -37
- package/dist/audit/prisma.d.ts +9 -2
- package/dist/audit/prisma.d.ts.map +1 -1
- package/dist/audit/prisma.js +2 -2
- package/dist/audit/prisma.js.map +1 -1
- package/dist/audit/service.d.ts.map +1 -1
- package/dist/audit/service.js +4 -3
- package/dist/audit/service.js.map +1 -1
- package/dist/audit/verify.d.ts +55 -0
- package/dist/audit/verify.d.ts.map +1 -0
- package/dist/audit/verify.js +131 -0
- package/dist/audit/verify.js.map +1 -0
- package/dist/billing/limits.d.ts +14 -3
- package/dist/billing/limits.d.ts.map +1 -1
- package/dist/billing/limits.js +30 -3
- package/dist/billing/limits.js.map +1 -1
- package/dist/billing/tracker.d.ts +11 -3
- package/dist/billing/tracker.d.ts.map +1 -1
- package/dist/billing/tracker.js +38 -4
- package/dist/billing/tracker.js.map +1 -1
- package/dist/cache/types.d.ts +8 -8
- package/dist/cache/types.d.ts.map +1 -1
- package/dist/cache/types.js +7 -7
- package/dist/cache/wrapper.js +1 -1
- package/dist/cli.js +52 -7
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +19 -4
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +26 -12
- package/dist/config.js.map +1 -1
- package/dist/elsClient.js +6 -6
- package/dist/elsClient.js.map +1 -1
- package/dist/http/app.d.ts +5 -2
- package/dist/http/app.d.ts.map +1 -1
- package/dist/http/app.js +12 -7
- package/dist/http/app.js.map +1 -1
- package/dist/http/lkResolver.d.ts +60 -0
- package/dist/http/lkResolver.d.ts.map +1 -0
- package/dist/http/lkResolver.js +194 -0
- package/dist/http/lkResolver.js.map +1 -0
- package/dist/http/middleware/auth.d.ts +3 -0
- package/dist/http/middleware/auth.d.ts.map +1 -1
- package/dist/http/middleware/auth.js +28 -12
- package/dist/http/middleware/auth.js.map +1 -1
- package/dist/http/middleware/dcrRateLimit.d.ts +2 -2
- package/dist/http/middleware/errorHandler.d.ts +1 -1
- package/dist/http/middleware/errorHandler.js +1 -1
- package/dist/http/middleware/originGuard.d.ts +1 -1
- package/dist/http/middleware/requestId.d.ts +1 -1
- package/dist/http/routes/health.js +1 -1
- package/dist/http/routes/health.js.map +1 -1
- package/dist/http/routes/metrics.d.ts +2 -4
- package/dist/http/routes/metrics.d.ts.map +1 -1
- package/dist/http/routes/metrics.js +2 -4
- package/dist/http/routes/metrics.js.map +1 -1
- package/dist/http/types.d.ts +9 -3
- package/dist/http/types.d.ts.map +1 -1
- package/dist/instrumentation.d.ts +3 -3
- package/dist/instrumentation.js +3 -3
- package/dist/lib/cursor.d.ts +1 -1
- package/dist/lib/cursor.js +3 -3
- package/dist/lib/errors.d.ts +5 -3
- package/dist/lib/errors.d.ts.map +1 -1
- package/dist/lib/errors.js.map +1 -1
- package/dist/middleware/withMiddleware.d.ts +11 -9
- package/dist/middleware/withMiddleware.d.ts.map +1 -1
- package/dist/middleware/withMiddleware.js +64 -11
- package/dist/middleware/withMiddleware.js.map +1 -1
- package/dist/observability/health.d.ts +2 -2
- package/dist/observability/logger.d.ts +1 -1
- package/dist/observability/tracing.d.ts +2 -2
- package/dist/prompts/index.d.ts +2 -2
- package/dist/prompts/index.js +1 -1
- package/dist/redaction/promptInjection.d.ts +2 -5
- package/dist/redaction/promptInjection.d.ts.map +1 -1
- package/dist/redaction/promptInjection.js +3 -6
- package/dist/redaction/promptInjection.js.map +1 -1
- package/dist/redaction/userAgent.d.ts +1 -1
- package/dist/redaction/userAgent.js +1 -1
- package/dist/resources/index.d.ts +3 -3
- package/dist/resources/index.js +4 -4
- package/dist/resources/index.js.map +1 -1
- package/dist/server.d.ts +5 -5
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +1 -1
- package/dist/server.js.map +1 -1
- package/dist/tools/errorHeatmap.js +1 -1
- package/dist/tools/errorHeatmap.js.map +1 -1
- package/dist/tools/errorStatsBreakdown.d.ts +5 -4
- package/dist/tools/errorStatsBreakdown.d.ts.map +1 -1
- package/dist/tools/errorStatsBreakdown.js +7 -6
- package/dist/tools/errorStatsBreakdown.js.map +1 -1
- package/dist/tools/errorsInSession.d.ts +1 -1
- package/dist/tools/errorsInSession.js +1 -1
- package/dist/tools/explainError.d.ts +5 -5
- package/dist/tools/explainError.js +9 -9
- package/dist/tools/explainError.js.map +1 -1
- package/dist/tools/groupedErrors.d.ts +2 -2
- package/dist/tools/groupedErrors.js +2 -2
- package/dist/tools/impactAnalysis.d.ts +1 -1
- package/dist/tools/impactAnalysis.js +1 -1
- package/dist/tools/index.d.ts +5 -5
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +4 -4
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/listApps.d.ts +4 -4
- package/dist/tools/listApps.js +4 -4
- package/dist/tools/searchLogs.js +2 -2
- package/dist/transports/http-server.d.ts +2 -1
- package/dist/transports/http-server.d.ts.map +1 -1
- package/dist/transports/http-server.js +42 -2
- package/dist/transports/http-server.js.map +1 -1
- package/dist/transports/http.d.ts +8 -4
- package/dist/transports/http.d.ts.map +1 -1
- package/dist/transports/http.js +13 -9
- package/dist/transports/http.js.map +1 -1
- package/dist/transports/stdio.d.ts +1 -1
- package/dist/transports/stdio.js +1 -1
- package/dist/types.d.ts +8 -9
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -1
package/dist/billing/tracker.js
CHANGED
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Usage tracker.
|
|
3
3
|
*
|
|
4
4
|
* Пишет напрямую в Postgres `mcp_billing.usage_daily` (UPSERT per app+date+tool).
|
|
5
|
-
*
|
|
6
|
-
* так что вызывающий код не нужно будет править.
|
|
5
|
+
* Со временем будет заменён на Redis INCR + hourly flush — интерфейс останется
|
|
6
|
+
* тем же, так что вызывающий код не нужно будет править.
|
|
7
7
|
*
|
|
8
8
|
* Поведение:
|
|
9
9
|
* - Silent fail при ошибке БД (как и audit) — usage tracking не блокирует tool-call.
|
|
10
10
|
* - Fire-and-forget: caller вызывает через `void trackUsage(...)`.
|
|
11
|
+
* - AI-tools (см. `isAiTool` из `./limits.ts`) дополнительно учитываются в
|
|
12
|
+
* отдельной AI-квоте через `aiTodayUsage` + `checkAiQuota`.
|
|
11
13
|
*/
|
|
12
14
|
import { getPrisma } from '../audit/prisma.js';
|
|
13
|
-
import { decideQuota } from './limits.js';
|
|
15
|
+
import { decideQuota, decideAiQuota, isAiTool } from './limits.js';
|
|
14
16
|
function utcDateOnly(d) {
|
|
15
17
|
return new Date(Date.UTC(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate()));
|
|
16
18
|
}
|
|
@@ -78,8 +80,40 @@ export function createUsageTracker(opts = {}) {
|
|
|
78
80
|
const used = await this.todayUsage(appId, now);
|
|
79
81
|
return decideQuota(used, tier);
|
|
80
82
|
},
|
|
83
|
+
async aiTodayUsage(appId, now = new Date()) {
|
|
84
|
+
const client = await getClient();
|
|
85
|
+
if (!client)
|
|
86
|
+
return 0;
|
|
87
|
+
const date = utcDateOnly(now);
|
|
88
|
+
const aiTools = Array.from((await import('./limits.js')).AI_TOOL_NAMES);
|
|
89
|
+
if (aiTools.length === 0)
|
|
90
|
+
return 0;
|
|
91
|
+
try {
|
|
92
|
+
const result = await client.mcpUsageDaily.aggregate({
|
|
93
|
+
where: { appId, date, tool: { in: aiTools } },
|
|
94
|
+
_sum: { count: true },
|
|
95
|
+
});
|
|
96
|
+
const total = result._sum.count;
|
|
97
|
+
if (total === null)
|
|
98
|
+
return 0;
|
|
99
|
+
return Number(total);
|
|
100
|
+
}
|
|
101
|
+
catch (err) {
|
|
102
|
+
log?.warn?.({ err, appId }, 'aiTodayUsage read failed; defaulting to 0');
|
|
103
|
+
return 0;
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
async checkAiQuota(appId, tier, now = new Date()) {
|
|
107
|
+
if (tier === 'UNLIMITED') {
|
|
108
|
+
return { allowed: true, remaining: Number.POSITIVE_INFINITY, tier };
|
|
109
|
+
}
|
|
110
|
+
const used = await this.aiTodayUsage(appId, now);
|
|
111
|
+
return decideAiQuota(used, tier);
|
|
112
|
+
},
|
|
81
113
|
};
|
|
82
114
|
}
|
|
115
|
+
// Mark used (avoid unused-import warning when isAiTool is referenced only at call sites).
|
|
116
|
+
void isAiTool;
|
|
83
117
|
let globalTracker = null;
|
|
84
118
|
export function getUsageTracker(opts = {}) {
|
|
85
119
|
if (!globalTracker)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracker.js","sourceRoot":"","sources":["../../src/billing/tracker.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"tracker.js","sourceRoot":"","sources":["../../src/billing/tracker.ts"],"names":[],"mappings":"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"}
|
package/dist/cache/types.d.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Общие типы для cache-слоя.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* `RequestContext` — DTO, который HTTP transport прокидывает в каждый tool
|
|
5
|
+
* handler и (через декорированный) ElsClient. Содержит tenant-идентификаторы
|
|
6
|
+
* (appSlug / keyPrefix) — это **обязательное** условие tenant-isolation в
|
|
7
|
+
* cache key.
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
9
|
+
* В stdio-режиме контекст можно собрать "вручную" из ELS_API_KEY (см. helper
|
|
10
|
+
* `deriveContextFromKey`) — fallback для случая, когда один процесс = один
|
|
11
|
+
* tenant.
|
|
12
12
|
*/
|
|
13
13
|
export interface RequestContext {
|
|
14
14
|
/** Slug приложения (если известен). Может быть null для master-key. */
|
|
@@ -17,7 +17,7 @@ export interface RequestContext {
|
|
|
17
17
|
keyPrefix: string;
|
|
18
18
|
/** Уникальный id запроса (для логов и трейсов). */
|
|
19
19
|
requestId?: string;
|
|
20
|
-
/** id MCP
|
|
20
|
+
/** id MCP-сессии. */
|
|
21
21
|
sessionId?: string;
|
|
22
22
|
/** Имя tool'а (для метрик / логов). */
|
|
23
23
|
tool?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cache/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,cAAc;IAC7B,uEAAuE;IACvE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,6FAA6F;IAC7F,SAAS,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cache/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,cAAc;IAC7B,uEAAuE;IACvE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,6FAA6F;IAC7F,SAAS,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qBAAqB;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,MAAM,GAAG,IAAW,GAAG,cAAc,CAYlG"}
|
package/dist/cache/types.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Общие типы для cache-слоя.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* `RequestContext` — DTO, который HTTP transport прокидывает в каждый tool
|
|
5
|
+
* handler и (через декорированный) ElsClient. Содержит tenant-идентификаторы
|
|
6
|
+
* (appSlug / keyPrefix) — это **обязательное** условие tenant-isolation в
|
|
7
|
+
* cache key.
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
9
|
+
* В stdio-режиме контекст можно собрать "вручную" из ELS_API_KEY (см. helper
|
|
10
|
+
* `deriveContextFromKey`) — fallback для случая, когда один процесс = один
|
|
11
|
+
* tenant.
|
|
12
12
|
*/
|
|
13
13
|
/**
|
|
14
14
|
* Хелпер: builds a fallback context из API-key, когда нет HTTP layer.
|
package/dist/cache/wrapper.js
CHANGED
|
@@ -11,7 +11,7 @@ import { recordCacheHit, recordCacheMiss } from '../observability/metrics.js';
|
|
|
11
11
|
* Compression: значения > `COMPRESSION_THRESHOLD_BYTES` (10 KB) — gzip + base64.
|
|
12
12
|
* Префикс `gz:` помечает сжатые значения.
|
|
13
13
|
*
|
|
14
|
-
* Negative cache: НЕ реализован
|
|
14
|
+
* Negative cache: НЕ реализован (loader-исключения не кэшируются).
|
|
15
15
|
*
|
|
16
16
|
* Tenant-isolation: cache key обязан содержать appSlug/keyPrefix.
|
|
17
17
|
* Это обеспечивает `tenantKey()` в `policies.ts`.
|
package/dist/cli.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
//
|
|
2
|
+
// OpenTelemetry instrumentation должен импортироваться ПЕРВЫМ —
|
|
3
3
|
// до любых других модулей, которые SDK инструментирует (http/undici/express/ioredis).
|
|
4
4
|
import { initInstrumentation } from './instrumentation.js';
|
|
5
5
|
import pino from 'pino';
|
|
@@ -8,17 +8,25 @@ import { createMcpServer } from './server.js';
|
|
|
8
8
|
import { connectStdio } from './transports/stdio.js';
|
|
9
9
|
import { startHttpServer } from './transports/http-server.js';
|
|
10
10
|
/**
|
|
11
|
-
* CLI entry point.
|
|
12
|
-
* - `stdio` (default) — child-process для Claude Desktop / mcp-inspector.
|
|
13
|
-
* - `http` — Streamable HTTP + OIDC для hosted endpoint.
|
|
11
|
+
* CLI entry point. Поддерживает sub-команды:
|
|
14
12
|
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
13
|
+
* els-mcp — запуск сервера
|
|
14
|
+
* ELS_API_KEY=els_live_... els-mcp # stdio
|
|
15
|
+
* MCP_TRANSPORT=http MCP_HTTP_PORT=3030 els-mcp # HTTP
|
|
18
16
|
*
|
|
17
|
+
* els-mcp verify-audit --app=X [--from=ISO] [--to=ISO] — проверка
|
|
18
|
+
* hash-chain'а audit log для заданного app.
|
|
19
|
+
*
|
|
20
|
+
* Транспорт выбирается через `MCP_TRANSPORT` (stdio | http).
|
|
19
21
|
* Все логи — в stderr (stdout зарезервирован под JSON-RPC при stdio).
|
|
20
22
|
*/
|
|
21
23
|
async function main() {
|
|
24
|
+
// Sub-команды (verify-audit). Если первым аргументом задано имя
|
|
25
|
+
// sub-команды, выполняем её и выходим — instrumentation не нужен.
|
|
26
|
+
const sub = process.argv[2];
|
|
27
|
+
if (sub === 'verify-audit') {
|
|
28
|
+
process.exit(await runVerifyAudit(process.argv.slice(3)));
|
|
29
|
+
}
|
|
22
30
|
// 1. OTel — early init (no-op если OTEL_EXPORTER_OTLP_ENDPOINT не задан).
|
|
23
31
|
const tracing = await initInstrumentation();
|
|
24
32
|
let config;
|
|
@@ -41,6 +49,43 @@ async function main() {
|
|
|
41
49
|
await runStdio(config, log, tracing);
|
|
42
50
|
}
|
|
43
51
|
}
|
|
52
|
+
function parseFlags(args) {
|
|
53
|
+
const out = {};
|
|
54
|
+
for (const a of args) {
|
|
55
|
+
const m = /^--([\w-]+)=(.*)$/.exec(a);
|
|
56
|
+
if (m && m[1])
|
|
57
|
+
out[m[1]] = m[2] ?? '';
|
|
58
|
+
}
|
|
59
|
+
return out;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* `els-mcp verify-audit --app=X [--from=ISO] [--to=ISO]`
|
|
63
|
+
* Возвращает exit-code: 0 = chain OK, 1 = broken / config error.
|
|
64
|
+
*/
|
|
65
|
+
async function runVerifyAudit(args) {
|
|
66
|
+
const flags = parseFlags(args);
|
|
67
|
+
const appId = flags.app ?? flags.appId;
|
|
68
|
+
if (!appId) {
|
|
69
|
+
process.stderr.write('Usage: els-mcp verify-audit --app=<appId> [--from=<ISO>] [--to=<ISO>]\n');
|
|
70
|
+
return 1;
|
|
71
|
+
}
|
|
72
|
+
const log = pino({ level: process.env.MCP_LOG_LEVEL ?? 'info', name: 'els-mcp:verify' }, pino.destination({ dest: 2, sync: false }));
|
|
73
|
+
const databaseUrl = process.env.MCP_DATABASE_URL?.trim();
|
|
74
|
+
if (!databaseUrl) {
|
|
75
|
+
process.stderr.write('MCP_DATABASE_URL is not set; cannot verify audit chain.\n');
|
|
76
|
+
return 1;
|
|
77
|
+
}
|
|
78
|
+
const verifyMod = await import('./audit/verify.js');
|
|
79
|
+
const result = await verifyMod.verifyChain({
|
|
80
|
+
appId,
|
|
81
|
+
...(flags.from ? { from: flags.from } : {}),
|
|
82
|
+
...(flags.to ? { to: flags.to } : {}),
|
|
83
|
+
databaseUrl,
|
|
84
|
+
log,
|
|
85
|
+
});
|
|
86
|
+
process.stdout.write(`${verifyMod.formatVerifyResult(result)}\n`);
|
|
87
|
+
return result.breakAt ? 1 : 0;
|
|
88
|
+
}
|
|
44
89
|
async function runStdio(config, log, tracing) {
|
|
45
90
|
const { server, client } = createMcpServer({ config, log });
|
|
46
91
|
const shutdown = async (signal) => {
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -11,8 +11,8 @@ export declare const ConfigSchema: z.ZodObject<{
|
|
|
11
11
|
logLevel: z.ZodDefault<z.ZodEnum<["trace", "debug", "info", "warn", "error", "fatal"]>>;
|
|
12
12
|
disabledTools: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
13
13
|
/**
|
|
14
|
-
* Таймаут upstream-запроса в ELS, мс.
|
|
15
|
-
*
|
|
14
|
+
* Таймаут upstream-запроса в ELS, мс. Единый таймаут на все ELS-вызовы;
|
|
15
|
+
* AI-tools при появлении получат отдельный (более длинный).
|
|
16
16
|
*/
|
|
17
17
|
upstreamTimeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
18
18
|
transport: z.ZodDefault<z.ZodEnum<["stdio", "http"]>>;
|
|
@@ -21,8 +21,9 @@ export declare const ConfigSchema: z.ZodObject<{
|
|
|
21
21
|
oidcJwksUrl: z.ZodString;
|
|
22
22
|
oidcAudience: z.ZodDefault<z.ZodString>;
|
|
23
23
|
/**
|
|
24
|
-
*
|
|
25
|
-
*
|
|
24
|
+
* Fallback appSlug: используется когда LK resolver
|
|
25
|
+
* `GET /api/internal/users/{sub}/apps` недоступен (404/500/timeout) или
|
|
26
|
+
* для всех OIDC-юзеров до его реализации.
|
|
26
27
|
*/
|
|
27
28
|
oidcDemoAppSlug: z.ZodOptional<z.ZodString>;
|
|
28
29
|
publicUrl: z.ZodDefault<z.ZodString>;
|
|
@@ -37,6 +38,16 @@ export declare const ConfigSchema: z.ZodObject<{
|
|
|
37
38
|
defaultAppId: z.ZodDefault<z.ZodString>;
|
|
38
39
|
/** Tier по умолчанию (для stdio-mode / прокси-режима). */
|
|
39
40
|
defaultTier: z.ZodDefault<z.ZodEnum<["FREE", "STANDARD", "PREMIUM", "UNLIMITED"]>>;
|
|
41
|
+
/**
|
|
42
|
+
* LK API base URL (для резолва apps по OIDC sub и tier по appSlug).
|
|
43
|
+
* Если пустой — используются fallbacks (oidcDemoAppSlug, defaultTier).
|
|
44
|
+
* TODO: ожидаемые эндпоинты на LK:
|
|
45
|
+
* GET {lkApiBaseUrl}/api/internal/users/{sub}/apps — список appSlugs
|
|
46
|
+
* GET {lkApiBaseUrl}/api/internal/apps/{slug}/billing/tier — tier name
|
|
47
|
+
*/
|
|
48
|
+
lkApiBaseUrl: z.ZodOptional<z.ZodString>;
|
|
49
|
+
/** Internal-API service-token для авторизации в LK (если требуется). */
|
|
50
|
+
lkApiToken: z.ZodOptional<z.ZodString>;
|
|
40
51
|
/** Redis URL для cache layer. */
|
|
41
52
|
redisUrl: z.ZodDefault<z.ZodString>;
|
|
42
53
|
/** Включить cache layer. Если false — методы CachedElsClient прозрачно прокидываются в ElsClient. */
|
|
@@ -74,6 +85,8 @@ export declare const ConfigSchema: z.ZodObject<{
|
|
|
74
85
|
metricsEnabled: boolean;
|
|
75
86
|
oidcDemoAppSlug?: string | undefined;
|
|
76
87
|
mcpDatabaseUrl?: string | undefined;
|
|
88
|
+
lkApiBaseUrl?: string | undefined;
|
|
89
|
+
lkApiToken?: string | undefined;
|
|
77
90
|
otelExporterOtlpEndpoint?: string | undefined;
|
|
78
91
|
}, {
|
|
79
92
|
elsBaseUrl: string;
|
|
@@ -94,6 +107,8 @@ export declare const ConfigSchema: z.ZodObject<{
|
|
|
94
107
|
mcpDatabaseUrl?: string | undefined;
|
|
95
108
|
defaultAppId?: string | undefined;
|
|
96
109
|
defaultTier?: "FREE" | "STANDARD" | "PREMIUM" | "UNLIMITED" | undefined;
|
|
110
|
+
lkApiBaseUrl?: string | undefined;
|
|
111
|
+
lkApiToken?: string | undefined;
|
|
97
112
|
redisUrl?: string | undefined;
|
|
98
113
|
cacheEnabled?: boolean | undefined;
|
|
99
114
|
cacheTtlOverrides?: Record<string, number> | undefined;
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAexB,eAAO,MAAM,eAAe,8BAA4B,CAAC;AACzD,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,eAAO,MAAM,YAAY;IACvB;;;OAGG;;;;;IAKH;;;OAGG;;;;;;;IAWH
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAexB,eAAO,MAAM,eAAe,8BAA4B,CAAC;AACzD,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,eAAO,MAAM,YAAY;IACvB;;;OAGG;;;;;IAKH;;;OAGG;;;;;;;IAWH;;;;OAIG;;;;IAQH,gDAAgD;;IAEhD,qEAAqE;;IAErE,wEAAwE;;IAExE,oEAAoE;;IAEpE,0DAA0D;;IAI1D;;;;;;OAMG;;IAEH,wEAAwE;;IAIxE,iCAAiC;;IAEjC,qGAAqG;;IAErG;;;;OAIG;;IAEH,6DAA6D;;IAE7D,gFAAgF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEhF,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAuDlD,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAwDvE"}
|
package/dist/config.js
CHANGED
|
@@ -2,7 +2,7 @@ import { z } from 'zod';
|
|
|
2
2
|
/**
|
|
3
3
|
* Парсинг и валидация переменных окружения для ELS MCP сервера.
|
|
4
4
|
*
|
|
5
|
-
* Источники: process.env.
|
|
5
|
+
* Источники: process.env. Поддерживаются stdio и HTTP transport + OIDC.
|
|
6
6
|
*/
|
|
7
7
|
const DEFAULT_BASE_URL_DEV = 'http://localhost:4010';
|
|
8
8
|
const DEFAULT_BASE_URL_PROD = 'https://api.insoweb.ru/els';
|
|
@@ -20,26 +20,27 @@ export const ConfigSchema = z.object({
|
|
|
20
20
|
logLevel: z.enum(['trace', 'debug', 'info', 'warn', 'error', 'fatal']).default('info'),
|
|
21
21
|
disabledTools: z.array(z.string()).default([]),
|
|
22
22
|
/**
|
|
23
|
-
* Таймаут upstream-запроса в ELS, мс.
|
|
24
|
-
*
|
|
23
|
+
* Таймаут upstream-запроса в ELS, мс. Единый таймаут на все ELS-вызовы;
|
|
24
|
+
* AI-tools при появлении получат отдельный (более длинный).
|
|
25
25
|
*/
|
|
26
26
|
upstreamTimeoutMs: z.number().int().positive().default(30_000),
|
|
27
|
-
// ───
|
|
27
|
+
// ─── HTTP transport ────────────────────────────────────────────────────
|
|
28
28
|
transport: TransportSchema.default('stdio'),
|
|
29
29
|
httpPort: z.number().int().positive().default(3030),
|
|
30
|
-
// ───
|
|
30
|
+
// ─── OIDC ──────────────────────────────────────────────────────────────
|
|
31
31
|
oidcIssuer: z.string().url().default(DEFAULT_OIDC_ISSUER),
|
|
32
32
|
oidcJwksUrl: z.string().url(),
|
|
33
33
|
oidcAudience: z.string().default('els-mcp'),
|
|
34
34
|
/**
|
|
35
|
-
*
|
|
36
|
-
*
|
|
35
|
+
* Fallback appSlug: используется когда LK resolver
|
|
36
|
+
* `GET /api/internal/users/{sub}/apps` недоступен (404/500/timeout) или
|
|
37
|
+
* для всех OIDC-юзеров до его реализации.
|
|
37
38
|
*/
|
|
38
39
|
oidcDemoAppSlug: z.string().optional(),
|
|
39
|
-
// ───
|
|
40
|
+
// ─── discovery / CORS ──────────────────────────────────────────────────
|
|
40
41
|
publicUrl: z.string().url().default(DEFAULT_PUBLIC_URL),
|
|
41
42
|
corsOrigins: z.array(z.string()).default([]),
|
|
42
|
-
// ───
|
|
43
|
+
// ─── PII-redaction + audit + billing ───────────────────────────────────
|
|
43
44
|
/** Включена ли PII-редакция в ответах tools. */
|
|
44
45
|
redactionEnabled: z.boolean().default(true),
|
|
45
46
|
/** Whitelist полей для редакции (пусто → редактим все известные). */
|
|
@@ -50,7 +51,18 @@ export const ConfigSchema = z.object({
|
|
|
50
51
|
defaultAppId: z.string().default('default'),
|
|
51
52
|
/** Tier по умолчанию (для stdio-mode / прокси-режима). */
|
|
52
53
|
defaultTier: z.enum(['FREE', 'STANDARD', 'PREMIUM', 'UNLIMITED']).default('STANDARD'),
|
|
53
|
-
// ───
|
|
54
|
+
// ─── LK API endpoints (для tier/apps resolvers) ────────────────────────
|
|
55
|
+
/**
|
|
56
|
+
* LK API base URL (для резолва apps по OIDC sub и tier по appSlug).
|
|
57
|
+
* Если пустой — используются fallbacks (oidcDemoAppSlug, defaultTier).
|
|
58
|
+
* TODO: ожидаемые эндпоинты на LK:
|
|
59
|
+
* GET {lkApiBaseUrl}/api/internal/users/{sub}/apps — список appSlugs
|
|
60
|
+
* GET {lkApiBaseUrl}/api/internal/apps/{slug}/billing/tier — tier name
|
|
61
|
+
*/
|
|
62
|
+
lkApiBaseUrl: z.string().optional(),
|
|
63
|
+
/** Internal-API service-token для авторизации в LK (если требуется). */
|
|
64
|
+
lkApiToken: z.string().optional(),
|
|
65
|
+
// ─── Cache & Observability ─────────────────────────────────────────────
|
|
54
66
|
/** Redis URL для cache layer. */
|
|
55
67
|
redisUrl: z.string().default('redis://localhost:6379'),
|
|
56
68
|
/** Включить cache layer. Если false — методы CachedElsClient прозрачно прокидываются в ElsClient. */
|
|
@@ -145,6 +157,8 @@ export function loadConfig(env = process.env) {
|
|
|
145
157
|
mcpDatabaseUrl: env.MCP_DATABASE_URL?.trim() || undefined,
|
|
146
158
|
defaultAppId: env.MCP_DEFAULT_APP_ID?.trim() || 'default',
|
|
147
159
|
defaultTier: (env.MCP_DEFAULT_TIER ?? 'STANDARD').toUpperCase(),
|
|
160
|
+
lkApiBaseUrl: env.MCP_LK_API_BASE_URL?.trim() || undefined,
|
|
161
|
+
lkApiToken: env.MCP_LK_API_TOKEN?.trim() || undefined,
|
|
148
162
|
redisUrl: env.MCP_REDIS_URL?.trim() || 'redis://localhost:6379',
|
|
149
163
|
cacheEnabled: env.MCP_CACHE_ENABLED ? env.MCP_CACHE_ENABLED.toLowerCase() !== 'false' : true,
|
|
150
164
|
cacheTtlOverrides: parseCacheTtlOverrides(env),
|
|
@@ -159,12 +173,12 @@ export function loadConfig(env = process.env) {
|
|
|
159
173
|
if (parsed.transport === 'stdio' && parsed.elsApiKey.length === 0) {
|
|
160
174
|
throw new Error('ELS_API_KEY is required for stdio transport');
|
|
161
175
|
}
|
|
162
|
-
//
|
|
176
|
+
// Production-strict ENV validation.
|
|
163
177
|
validateProductionEnv(parsed, env);
|
|
164
178
|
return parsed;
|
|
165
179
|
}
|
|
166
180
|
/**
|
|
167
|
-
*
|
|
181
|
+
* Production ENV-validation:
|
|
168
182
|
* - В `NODE_ENV=production` fail-fast если критичные env vars не заданы.
|
|
169
183
|
* - В dev — только warnings в stderr.
|
|
170
184
|
*
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;GAIG;AAEH,MAAM,oBAAoB,GAAG,uBAAuB,CAAC;AACrD,MAAM,qBAAqB,GAAG,4BAA4B,CAAC;AAE3D,MAAM,mBAAmB,GAAG,yBAAyB,CAAC;AACtD,MAAM,kBAAkB,GAAG,4BAA4B,CAAC;AACxD,MAAM,oBAAoB,GAAG,2CAA2C,CAAC;AAEzE,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AAGzD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC;;;OAGG;IACH,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACjC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC5B,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IACtF,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC9C;;;OAGG;IACH,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;IAE9D,0EAA0E;IAC1E,SAAS,EAAE,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC;IAC3C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAEnD,0EAA0E;IAC1E,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC;IACzD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC7B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC;IAC3C
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/elsClient.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Pool } from 'undici';
|
|
2
2
|
import { mapHttpToToolError, ToolError } from './lib/errors.js';
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* Аналитические эндпоинты, которые покрывает клиент:
|
|
5
5
|
* - POST /errors/query → queryLogsJql
|
|
6
6
|
* - GET /analytics/stats → errorStats
|
|
7
7
|
* - GET /analytics/grouped-errors → groupedErrors
|
|
@@ -10,9 +10,8 @@ import { mapHttpToToolError, ToolError } from './lib/errors.js';
|
|
|
10
10
|
* - GET /analytics/version-timeline→ versionRegression
|
|
11
11
|
* - GET /analytics/heatmap → heatmap
|
|
12
12
|
*
|
|
13
|
-
* POST-варианты с filter-AST (`/analytics/<x>/query`)
|
|
14
|
-
*
|
|
15
|
-
* по необходимости в Phase 3.
|
|
13
|
+
* POST-варианты с filter-AST (`/analytics/<x>/query`) сейчас не выставляются
|
|
14
|
+
* как отдельные tools — LLM может сформировать AST через `query_logs_jql`.
|
|
16
15
|
*/
|
|
17
16
|
/**
|
|
18
17
|
* Тонкий read-only клиент над ELS HTTP API.
|
|
@@ -22,7 +21,8 @@ import { mapHttpToToolError, ToolError } from './lib/errors.js';
|
|
|
22
21
|
* - Bearer auth (ELS API key).
|
|
23
22
|
* - Retry 5xx: 3 попытки, exponential backoff (250ms / 500ms / 1000ms).
|
|
24
23
|
* - 429 НЕ ретраится — прокидывается LLM'у через ToolError + retryAfter.
|
|
25
|
-
* - Timeout 30s per request (single ELS hop; AI-tools
|
|
24
|
+
* - Timeout 30s per request (single ELS hop; AI-tools получат свой,
|
|
25
|
+
* более длинный таймаут когда будут добавлены).
|
|
26
26
|
*
|
|
27
27
|
* Маппинг tools → endpoints (см. README + 03-tools-catalog.md):
|
|
28
28
|
* - GET /errors → searchLogs
|
|
@@ -208,7 +208,7 @@ export class ElsClient {
|
|
|
208
208
|
elsRequestId: pickStringHeader(res.headers, 'x-request-id'),
|
|
209
209
|
};
|
|
210
210
|
}
|
|
211
|
-
// ───
|
|
211
|
+
// ─── Analytics endpoints ──────────────────────────────────────────────────
|
|
212
212
|
/**
|
|
213
213
|
* POST /errors/query — JQL-style structured filter (AST + pagination + search).
|
|
214
214
|
* Возвращает items + total + facets + histogram (та же форма что GET /errors).
|
package/dist/elsClient.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"elsClient.js","sourceRoot":"","sources":["../src/elsClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAmB,MAAM,QAAQ,CAAC;AAG/C,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEhE
|
|
1
|
+
{"version":3,"file":"elsClient.js","sourceRoot":"","sources":["../src/elsClient.ts"],"names":[],"mappings":"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"}
|
package/dist/http/app.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ import { HttpTransportManager } from '../transports/http.js';
|
|
|
6
6
|
import { createJwksResolver } from './jwks.js';
|
|
7
7
|
import type { RedisService } from '../cache/redis.js';
|
|
8
8
|
import type { MiddlewareDeps } from '../middleware/withMiddleware.js';
|
|
9
|
+
import type { LkResolver } from './lkResolver.js';
|
|
9
10
|
/**
|
|
10
11
|
* Создаёт Express-приложение для Streamable HTTP transport.
|
|
11
12
|
*
|
|
@@ -25,10 +26,12 @@ export interface CreateHttpAppOptions {
|
|
|
25
26
|
jwksResolver?: ReturnType<typeof createJwksResolver>;
|
|
26
27
|
/** Для тестов: внешний ElsClient (probe). */
|
|
27
28
|
probeElsClient?: ElsClient;
|
|
28
|
-
/**
|
|
29
|
+
/** Redis для readyz / cache / DCR. */
|
|
29
30
|
redis?: RedisService | null;
|
|
30
|
-
/**
|
|
31
|
+
/** Middleware deps (передаём в transport manager). */
|
|
31
32
|
middlewareDeps?: MiddlewareDeps;
|
|
33
|
+
/** LK resolver для OIDC sub → apps (передаётся в auth middleware). */
|
|
34
|
+
lkResolver?: LkResolver | null;
|
|
32
35
|
}
|
|
33
36
|
export interface HttpAppHandle {
|
|
34
37
|
app: Express;
|
package/dist/http/app.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/http/app.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,KAAK,OAAO,EAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,MAAM,SAAS,CAAC;AAGxG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAQ/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAKtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/http/app.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,KAAK,OAAO,EAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,MAAM,SAAS,CAAC;AAGxG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAQ/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAKtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,uDAAuD;IACvD,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;IACxC,YAAY,CAAC,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;IACrD,6CAA6C;IAC7C,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,sCAAsC;IACtC,KAAK,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAC5B,sDAAsD;IACtD,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,sEAAsE;IACtE,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,OAAO,CAAC;IACb,OAAO,EAAE,oBAAoB,CAAC;IAC9B,WAAW,EAAE,SAAS,GAAG,SAAS,CAAC;CACpC;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,oBAAoB,GAAG,aAAa,CA8GvE;AAgDD,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|