@selentar/analitoly 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/LICENSE +21 -0
- package/README.md +93 -0
- package/api/dist/dashboards/dash_1775220041958_v1r8io.json +829 -0
- package/api/dist/dashboards/dash_1775222037264_1rrsrd.json +309 -0
- package/api/dist/src/agent/agent.controller.d.ts +26 -0
- package/api/dist/src/agent/agent.controller.js +124 -0
- package/api/dist/src/agent/agent.controller.js.map +1 -0
- package/api/dist/src/agent/agent.module.d.ts +2 -0
- package/api/dist/src/agent/agent.module.js +23 -0
- package/api/dist/src/agent/agent.module.js.map +1 -0
- package/api/dist/src/agent/agent.service.d.ts +39 -0
- package/api/dist/src/agent/agent.service.js +389 -0
- package/api/dist/src/agent/agent.service.js.map +1 -0
- package/api/dist/src/agent/mcp-config.d.ts +9 -0
- package/api/dist/src/agent/mcp-config.js +51 -0
- package/api/dist/src/agent/mcp-config.js.map +1 -0
- package/api/dist/src/app.module.d.ts +2 -0
- package/api/dist/src/app.module.js +52 -0
- package/api/dist/src/app.module.js.map +1 -0
- package/api/dist/src/chart/chart.controller.d.ts +8 -0
- package/api/dist/src/chart/chart.controller.js +38 -0
- package/api/dist/src/chart/chart.controller.js.map +1 -0
- package/api/dist/src/chart/chart.module.d.ts +2 -0
- package/api/dist/src/chart/chart.module.js +24 -0
- package/api/dist/src/chart/chart.module.js.map +1 -0
- package/api/dist/src/chart/chart.service.d.ts +32 -0
- package/api/dist/src/chart/chart.service.js +106 -0
- package/api/dist/src/chart/chart.service.js.map +1 -0
- package/api/dist/src/chat/chat.controller.d.ts +14 -0
- package/api/dist/src/chat/chat.controller.js +73 -0
- package/api/dist/src/chat/chat.controller.js.map +1 -0
- package/api/dist/src/chat/chat.module.d.ts +2 -0
- package/api/dist/src/chat/chat.module.js +22 -0
- package/api/dist/src/chat/chat.module.js.map +1 -0
- package/api/dist/src/chat/chat.service.d.ts +25 -0
- package/api/dist/src/chat/chat.service.js +168 -0
- package/api/dist/src/chat/chat.service.js.map +1 -0
- package/api/dist/src/connection/connection.controller.d.ts +46 -0
- package/api/dist/src/connection/connection.controller.js +189 -0
- package/api/dist/src/connection/connection.controller.js.map +1 -0
- package/api/dist/src/connection/connection.model.d.ts +116 -0
- package/api/dist/src/connection/connection.model.js +23 -0
- package/api/dist/src/connection/connection.model.js.map +1 -0
- package/api/dist/src/connection/connection.module.d.ts +2 -0
- package/api/dist/src/connection/connection.module.js +31 -0
- package/api/dist/src/connection/connection.module.js.map +1 -0
- package/api/dist/src/connection/connection.repository.d.ts +16 -0
- package/api/dist/src/connection/connection.repository.js +195 -0
- package/api/dist/src/connection/connection.repository.js.map +1 -0
- package/api/dist/src/connection/connection.service.d.ts +50 -0
- package/api/dist/src/connection/connection.service.js +343 -0
- package/api/dist/src/connection/connection.service.js.map +1 -0
- package/api/dist/src/context/context.controller.d.ts +13 -0
- package/api/dist/src/context/context.controller.js +86 -0
- package/api/dist/src/context/context.controller.js.map +1 -0
- package/api/dist/src/context/context.module.d.ts +2 -0
- package/api/dist/src/context/context.module.js +39 -0
- package/api/dist/src/context/context.module.js.map +1 -0
- package/api/dist/src/context/context.service.d.ts +32 -0
- package/api/dist/src/context/context.service.js +177 -0
- package/api/dist/src/context/context.service.js.map +1 -0
- package/api/dist/src/dashboard/dashboard.controller.d.ts +21 -0
- package/api/dist/src/dashboard/dashboard.controller.js +109 -0
- package/api/dist/src/dashboard/dashboard.controller.js.map +1 -0
- package/api/dist/src/dashboard/dashboard.model.d.ts +15 -0
- package/api/dist/src/dashboard/dashboard.model.js +3 -0
- package/api/dist/src/dashboard/dashboard.model.js.map +1 -0
- package/api/dist/src/dashboard/dashboard.module.d.ts +2 -0
- package/api/dist/src/dashboard/dashboard.module.js +24 -0
- package/api/dist/src/dashboard/dashboard.module.js.map +1 -0
- package/api/dist/src/dashboard/dashboard.repository.d.ts +9 -0
- package/api/dist/src/dashboard/dashboard.repository.js +72 -0
- package/api/dist/src/dashboard/dashboard.repository.js.map +1 -0
- package/api/dist/src/dashboard/dashboard.service.d.ts +14 -0
- package/api/dist/src/dashboard/dashboard.service.js +87 -0
- package/api/dist/src/dashboard/dashboard.service.js.map +1 -0
- package/api/dist/src/datasource/connectors/connector.interface.d.ts +6 -0
- package/api/dist/src/datasource/connectors/connector.interface.js +3 -0
- package/api/dist/src/datasource/connectors/connector.interface.js.map +1 -0
- package/api/dist/src/datasource/connectors/mongo.connector.d.ts +30 -0
- package/api/dist/src/datasource/connectors/mongo.connector.js +167 -0
- package/api/dist/src/datasource/connectors/mongo.connector.js.map +1 -0
- package/api/dist/src/datasource/connectors/mongo.connector.test.d.ts +1 -0
- package/api/dist/src/datasource/connectors/mongo.connector.test.js +179 -0
- package/api/dist/src/datasource/connectors/mongo.connector.test.js.map +1 -0
- package/api/dist/src/datasource/connectors/postgres.connector.d.ts +50 -0
- package/api/dist/src/datasource/connectors/postgres.connector.js +213 -0
- package/api/dist/src/datasource/connectors/postgres.connector.js.map +1 -0
- package/api/dist/src/datasource/connectors/postgres.connector.test.d.ts +1 -0
- package/api/dist/src/datasource/connectors/postgres.connector.test.js +197 -0
- package/api/dist/src/datasource/connectors/postgres.connector.test.js.map +1 -0
- package/api/dist/src/datasource/datasource.controller.d.ts +16 -0
- package/api/dist/src/datasource/datasource.controller.js +79 -0
- package/api/dist/src/datasource/datasource.controller.js.map +1 -0
- package/api/dist/src/datasource/datasource.model.d.ts +26 -0
- package/api/dist/src/datasource/datasource.model.js +3 -0
- package/api/dist/src/datasource/datasource.model.js.map +1 -0
- package/api/dist/src/datasource/datasource.module.d.ts +2 -0
- package/api/dist/src/datasource/datasource.module.js +31 -0
- package/api/dist/src/datasource/datasource.module.js.map +1 -0
- package/api/dist/src/datasource/datasource.repository.d.ts +11 -0
- package/api/dist/src/datasource/datasource.repository.js +61 -0
- package/api/dist/src/datasource/datasource.repository.js.map +1 -0
- package/api/dist/src/datasource/datasource.service.d.ts +28 -0
- package/api/dist/src/datasource/datasource.service.js +95 -0
- package/api/dist/src/datasource/datasource.service.js.map +1 -0
- package/api/dist/src/example/example.controller.d.ts +10 -0
- package/api/dist/src/example/example.controller.js +43 -0
- package/api/dist/src/example/example.controller.js.map +1 -0
- package/api/dist/src/example/example.model.d.ts +6 -0
- package/api/dist/src/example/example.model.js +3 -0
- package/api/dist/src/example/example.model.js.map +1 -0
- package/api/dist/src/example/example.module.d.ts +2 -0
- package/api/dist/src/example/example.module.js +23 -0
- package/api/dist/src/example/example.module.js.map +1 -0
- package/api/dist/src/example/example.repository.d.ts +6 -0
- package/api/dist/src/example/example.repository.js +30 -0
- package/api/dist/src/example/example.repository.js.map +1 -0
- package/api/dist/src/example/example.service.d.ts +10 -0
- package/api/dist/src/example/example.service.js +31 -0
- package/api/dist/src/example/example.service.js.map +1 -0
- package/api/dist/src/integration/integration.controller.d.ts +15 -0
- package/api/dist/src/integration/integration.controller.js +69 -0
- package/api/dist/src/integration/integration.controller.js.map +1 -0
- package/api/dist/src/integration/integration.model.d.ts +17 -0
- package/api/dist/src/integration/integration.model.js +3 -0
- package/api/dist/src/integration/integration.model.js.map +1 -0
- package/api/dist/src/integration/integration.module.d.ts +2 -0
- package/api/dist/src/integration/integration.module.js +24 -0
- package/api/dist/src/integration/integration.module.js.map +1 -0
- package/api/dist/src/integration/integration.repository.d.ts +6 -0
- package/api/dist/src/integration/integration.repository.js +45 -0
- package/api/dist/src/integration/integration.repository.js.map +1 -0
- package/api/dist/src/integration/integration.service.d.ts +12 -0
- package/api/dist/src/integration/integration.service.js +78 -0
- package/api/dist/src/integration/integration.service.js.map +1 -0
- package/api/dist/src/main.d.ts +1 -0
- package/api/dist/src/main.js +19 -0
- package/api/dist/src/main.js.map +1 -0
- package/api/dist/src/mcp/grafana.mcp.d.ts +1 -0
- package/api/dist/src/mcp/grafana.mcp.js +95 -0
- package/api/dist/src/mcp/grafana.mcp.js.map +1 -0
- package/api/dist/src/mcp/graylog.mcp.d.ts +1 -0
- package/api/dist/src/mcp/graylog.mcp.js +241 -0
- package/api/dist/src/mcp/graylog.mcp.js.map +1 -0
- package/api/dist/src/mcp/mcp-server.d.ts +1 -0
- package/api/dist/src/mcp/mcp-server.js +336 -0
- package/api/dist/src/mcp/mcp-server.js.map +1 -0
- package/api/dist/src/paths.d.ts +8 -0
- package/api/dist/src/paths.js +50 -0
- package/api/dist/src/paths.js.map +1 -0
- package/api/dist/src/paths.test.d.ts +1 -0
- package/api/dist/src/paths.test.js +60 -0
- package/api/dist/src/paths.test.js.map +1 -0
- package/api/dist/src/project/project.controller.d.ts +44 -0
- package/api/dist/src/project/project.controller.js +79 -0
- package/api/dist/src/project/project.controller.js.map +1 -0
- package/api/dist/src/project/project.model.d.ts +19 -0
- package/api/dist/src/project/project.model.js +3 -0
- package/api/dist/src/project/project.model.js.map +1 -0
- package/api/dist/src/project/project.module.d.ts +2 -0
- package/api/dist/src/project/project.module.js +24 -0
- package/api/dist/src/project/project.module.js.map +1 -0
- package/api/dist/src/project/project.repository.d.ts +6 -0
- package/api/dist/src/project/project.repository.js +52 -0
- package/api/dist/src/project/project.repository.js.map +1 -0
- package/api/dist/src/project/project.service.d.ts +17 -0
- package/api/dist/src/project/project.service.js +163 -0
- package/api/dist/src/project/project.service.js.map +1 -0
- package/api/dist/tsconfig.tsbuildinfo +1 -0
- package/api/dist/vitest.config.d.ts +2 -0
- package/api/dist/vitest.config.js +10 -0
- package/api/dist/vitest.config.js.map +1 -0
- package/api/public/dist/Analitoly.png +0 -0
- package/api/public/dist/AnalitolyShort.png +0 -0
- package/api/public/dist/Gitlab.png +0 -0
- package/api/public/dist/Grafana.png +0 -0
- package/api/public/dist/Graylog.png +0 -0
- package/api/public/dist/Mongodb.png +0 -0
- package/api/public/dist/PostgreSQL.png +0 -0
- package/api/public/dist/assets/index-BPB3ckw4.js +222 -0
- package/api/public/dist/assets/index-CSAGa0SG.js +227 -0
- package/api/public/dist/index.html +12 -0
- package/bin/analitoly-mcp.js +18 -0
- package/bin/analitoly.js +38 -0
- package/package.json +54 -0
|
@@ -0,0 +1,389 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.AgentService = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
const fs_1 = require("fs");
|
|
12
|
+
const child_process_1 = require("child_process");
|
|
13
|
+
const path_1 = require("path");
|
|
14
|
+
const os_1 = require("os");
|
|
15
|
+
const crypto = require("crypto");
|
|
16
|
+
const mcp_config_1 = require("./mcp-config");
|
|
17
|
+
const project_repository_1 = require("../project/project.repository");
|
|
18
|
+
const paths_1 = require("../paths");
|
|
19
|
+
const connection_repository_1 = require("../connection/connection.repository");
|
|
20
|
+
const SYSTEM_PROMPT_BASE = `Ты — AI-аналитик Analitoly. Ты помогаешь анализировать данные из различных источников.
|
|
21
|
+
|
|
22
|
+
Тебе доступны ТОЛЬКО MCP-инструменты. Используй их напрямую — НЕ читай файлы конфигурации, НЕ используй Bash.`;
|
|
23
|
+
const ANALITOLY_TOOLS = `
|
|
24
|
+
**analitoly** (базы данных и контекст):
|
|
25
|
+
- get_datasources — список подключённых БД
|
|
26
|
+
- get_schema — схема таблиц/коллекций
|
|
27
|
+
- execute_query — выполнить SQL SELECT или MongoDB запрос
|
|
28
|
+
- initialize_context — собрать схемы и метаданные всех источников (для инициализации)
|
|
29
|
+
- write_context — сохранить проанализированный контекст проекта`;
|
|
30
|
+
const GRAYLOG_TOOLS = `
|
|
31
|
+
**graylog** (логи):
|
|
32
|
+
- search_logs — поиск сообщений (Lucene syntax, относительное время)
|
|
33
|
+
- top_values — top-N значений поля (группировка, "top ошибок по source")
|
|
34
|
+
- field_stats — статистика числового поля (min, max, mean, cardinality)
|
|
35
|
+
- histogram — распределение сообщений по времени (error rate по часам)
|
|
36
|
+
- field_histogram — распределение значений поля по времени
|
|
37
|
+
- count_logs — подсчёт без тел сообщений
|
|
38
|
+
- list_streams — список стримов (источников данных)`;
|
|
39
|
+
const GRAYLOG_STRATEGY = `
|
|
40
|
+
Стратегия анализа логов:
|
|
41
|
+
1. Начинай с count_logs или histogram чтобы понять масштаб
|
|
42
|
+
2. Используй top_values для группировки (top sources, top errors)
|
|
43
|
+
3. Используй search_logs только когда нужны конкретные сообщения
|
|
44
|
+
4. field_stats для числовых метрик (response time, payload size)
|
|
45
|
+
5. histogram для трендов и аномалий`;
|
|
46
|
+
const GRAFANA_TOOLS = `
|
|
47
|
+
**grafana** (метрики):
|
|
48
|
+
- search_dashboards, get_dashboard, query_datasource, list_alerts, list_datasources`;
|
|
49
|
+
const RULES_AND_CHARTS = `
|
|
50
|
+
Правила:
|
|
51
|
+
1. Для БД используй mcp__analitoly__execute_query (только read-only SELECT)
|
|
52
|
+
2. Ограничивай результаты: LIMIT 100 по умолчанию
|
|
53
|
+
3. Интерпретируй результаты на русском языке
|
|
54
|
+
4. Показывай запрос перед выполнением
|
|
55
|
+
5. При ошибке объясни причину и предложи альтернативу
|
|
56
|
+
|
|
57
|
+
Графики с временной осью:
|
|
58
|
+
Когда строишь график с временной осью (x-axis = время), ВСЕГДА передавай rebuildConfig в render_chart.
|
|
59
|
+
В queryTemplate используй {{TIME_FROM}} и {{TIME_TO}} как плейсхолдеры для границ времени.
|
|
60
|
+
queryTemplate — это тот же запрос, который ты выполнил, но с условиями по времени через плейсхолдеры.
|
|
61
|
+
echartsMapping описывает какие колонки результата маппятся на оси: xField — колонка для оси X, series[].yField — колонка для данных серии.
|
|
62
|
+
Используй date_trunc или аналоги для группировки по времени, чтобы результат был компактным.
|
|
63
|
+
|
|
64
|
+
Стиль графиков:
|
|
65
|
+
- Если серия одна — используй оранжевый (#FF8C42) как основной цвет.
|
|
66
|
+
- Если серий 2-3 — используй оранжевый (#FF8C42), teal (#00695C), синий (#1E88E5).
|
|
67
|
+
- Если серий больше — можно любые цвета.
|
|
68
|
+
- Фон графика всегда белый, не задавай backgroundColor.
|
|
69
|
+
- Округляй числа в запросах: ROUND(value, 2) для дробных, целые без дробной части.
|
|
70
|
+
- Для горизонтальных bar-графиков НЕ задавай grid — система настроит автоматически.
|
|
71
|
+
|
|
72
|
+
Инициализация контекста:
|
|
73
|
+
Когда пользователь просит инициализировать контекст (или "проинициализируй", "инициализация"):
|
|
74
|
+
1. Вызови initialize_context — он сам соберёт схемы БД, информацию о проекте и интеграциях
|
|
75
|
+
2. Проанализируй полученные данные — опиши таблицы/коллекции, их назначение, связи между ними, бизнес-логику
|
|
76
|
+
3. Если подключён проект — ОБЯЗАТЕЛЬНО изучи его код:
|
|
77
|
+
- Вызови get_project_info для получения CLAUDE.md
|
|
78
|
+
- Используй Glob для обзора структуры (package.json, src/**)
|
|
79
|
+
- Используй Read для ключевых файлов (package.json, README, конфиги)
|
|
80
|
+
- Опиши: стек технологий, архитектуру, ключевые модули, как код связан с данными в БД
|
|
81
|
+
4. Если нужны дополнительные детали по БД — можешь вызвать execute_query, list_streams и т.д.
|
|
82
|
+
5. Запиши результат через write_context одним markdown-документом на русском
|
|
83
|
+
Будь конкретен — укажи имена таблиц, полей, типы данных, связи. По проекту — стек, архитектуру, ключевые модели и сервисы.
|
|
84
|
+
|
|
85
|
+
Пополнение контекста:
|
|
86
|
+
В процессе работы ты можешь узнать что-то важное, чего нет в контексте — связи между сущностями, особенности данных, нюансы запросов, бизнес-логику. Если обнаружил существенную информацию — дополни контекст через write_context, добавив новые сведения к существующему. Не переписывай с нуля — дополняй.`;
|
|
87
|
+
let AgentService = class AgentService {
|
|
88
|
+
constructor() {
|
|
89
|
+
this.sessions = new Map();
|
|
90
|
+
this.projectRepository = new project_repository_1.ProjectRepository();
|
|
91
|
+
this.connectionRepo = new connection_repository_1.ConnectionRepository();
|
|
92
|
+
}
|
|
93
|
+
buildSystemPrompt(mcpServers, projectConnected) {
|
|
94
|
+
const parts = [SYSTEM_PROMPT_BASE];
|
|
95
|
+
parts.push('\nДоступные MCP-серверы и их инструменты:');
|
|
96
|
+
parts.push(ANALITOLY_TOOLS);
|
|
97
|
+
if (mcpServers.graylog) {
|
|
98
|
+
parts.push(GRAYLOG_TOOLS);
|
|
99
|
+
parts.push(GRAYLOG_STRATEGY);
|
|
100
|
+
}
|
|
101
|
+
if (mcpServers.grafana)
|
|
102
|
+
parts.push(GRAFANA_TOOLS);
|
|
103
|
+
if (projectConnected) {
|
|
104
|
+
parts.push('\n**Код проекта** (доступ через Read, Glob, Grep):');
|
|
105
|
+
parts.push('Используй get_project_info чтобы узнать детали проекта, а Read, Glob, Grep для навигации по коду.');
|
|
106
|
+
}
|
|
107
|
+
parts.push('');
|
|
108
|
+
parts.push(RULES_AND_CHARTS);
|
|
109
|
+
const ctxFile = (0, paths_1.contextPath)();
|
|
110
|
+
if ((0, fs_1.existsSync)(ctxFile)) {
|
|
111
|
+
try {
|
|
112
|
+
const raw = (0, fs_1.readFileSync)(ctxFile, 'utf-8');
|
|
113
|
+
const frontmatterMatch = raw.match(/^---\n([\s\S]*?)\n---\n([\s\S]*)$/);
|
|
114
|
+
const content = frontmatterMatch ? frontmatterMatch[2] : raw;
|
|
115
|
+
let storedFp = '';
|
|
116
|
+
if (frontmatterMatch) {
|
|
117
|
+
const fpLine = frontmatterMatch[1].split('\n').find(l => l.startsWith('fingerprint:'));
|
|
118
|
+
if (fpLine)
|
|
119
|
+
storedFp = fpLine.split(': ')[1]?.trim() ?? '';
|
|
120
|
+
}
|
|
121
|
+
parts.push('\n\n--- КОНТЕКСТ ПРОЕКТА ---');
|
|
122
|
+
parts.push(content);
|
|
123
|
+
const currentFp = this.computeFingerprint();
|
|
124
|
+
if (storedFp && storedFp !== currentFp) {
|
|
125
|
+
const activeConns = this.connectionRepo.readAll(false)
|
|
126
|
+
.filter((c) => c.active)
|
|
127
|
+
.map((c) => `${c.type}: ${c.name}`)
|
|
128
|
+
.join(', ');
|
|
129
|
+
parts.push(`
|
|
130
|
+
[BLOCKING] Контекст устарел — выполни ДО любого ответа пользователю:
|
|
131
|
+
1. Текущие активные подключения: [${activeConns}]
|
|
132
|
+
2. Сравни с контекстом выше — найди источники, которых НЕТ в контексте
|
|
133
|
+
3. Для каждого нового: вызови get_schema / get_project_info / list_streams
|
|
134
|
+
4. Вызови write_context — передай ВЕСЬ контекст (старый + новые секции)
|
|
135
|
+
5. Только после этого отвечай на запрос пользователя
|
|
136
|
+
Не пропускай этот шаг. Не откладывай. Не отвечай пользователю пока контекст не обновлён.`);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
catch {
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
const dashboardCharts = this.connectionRepo.readDashboard();
|
|
143
|
+
if (dashboardCharts.length === 0) {
|
|
144
|
+
parts.push(`
|
|
145
|
+
Составление дашборда:
|
|
146
|
+
Когда пользователь просит составить дашборд, создай 6-10 информативных графиков на основе контекста проекта.
|
|
147
|
+
Для каждого графика: выполни запрос → построй график → вызови render_chart с addToDashboard=true.
|
|
148
|
+
Стратегия:
|
|
149
|
+
- Тренды по времени (активность, рост, динамика) — line/bar графики
|
|
150
|
+
- Распределения (по категориям, типам, статусам) — pie/bar графики
|
|
151
|
+
- Top-N (самые активные, самые частые) — horizontal bar
|
|
152
|
+
- Агрегации (суммы, средние, подсчёты) — bar/gauge
|
|
153
|
+
Ориентируйся на продуктовую аналитику. Для графиков с временной осью — передавай rebuildConfig.
|
|
154
|
+
Не делай меньше 6 и больше 10 графиков. Каждый должен нести ценность.`);
|
|
155
|
+
}
|
|
156
|
+
return parts.join('\n');
|
|
157
|
+
}
|
|
158
|
+
computeFingerprint() {
|
|
159
|
+
const connections = this.connectionRepo.readAll(false);
|
|
160
|
+
const activeIds = connections
|
|
161
|
+
.filter((c) => c.active)
|
|
162
|
+
.map((c) => c.id)
|
|
163
|
+
.sort()
|
|
164
|
+
.join(',');
|
|
165
|
+
return crypto.createHash('md5').update(activeIds).digest('hex').slice(0, 12);
|
|
166
|
+
}
|
|
167
|
+
connect(apiKey) {
|
|
168
|
+
const effectiveKey = process.env.ANTHROPIC_API_KEY || apiKey;
|
|
169
|
+
if (!effectiveKey && !this.hasClaudeCredentials()) {
|
|
170
|
+
throw new common_1.BadRequestException('API key required: set ANTHROPIC_API_KEY env, provide apiKey, or login to Claude Code');
|
|
171
|
+
}
|
|
172
|
+
const sessionId = crypto.randomUUID();
|
|
173
|
+
this.sessions.set(sessionId, {
|
|
174
|
+
apiKey: effectiveKey ?? null,
|
|
175
|
+
sdkSessionId: null,
|
|
176
|
+
usage: {
|
|
177
|
+
totalCostUsd: 0, inputTokens: 0, outputTokens: 0,
|
|
178
|
+
cacheReadTokens: 0, cacheCreationTokens: 0,
|
|
179
|
+
numTurns: 0, durationMs: 0, model: 'claude-sonnet-4-6', modelUsage: {},
|
|
180
|
+
},
|
|
181
|
+
createdAt: new Date().toISOString(),
|
|
182
|
+
lastMessagePreview: '',
|
|
183
|
+
});
|
|
184
|
+
return sessionId;
|
|
185
|
+
}
|
|
186
|
+
hasServerKey() {
|
|
187
|
+
return !!process.env.ANTHROPIC_API_KEY || this.hasClaudeCredentials();
|
|
188
|
+
}
|
|
189
|
+
hasClaudeCredentials() {
|
|
190
|
+
if ((0, fs_1.existsSync)((0, path_1.join)((0, os_1.homedir)(), '.claude', '.credentials.json'))) {
|
|
191
|
+
return true;
|
|
192
|
+
}
|
|
193
|
+
if (process.platform === 'darwin') {
|
|
194
|
+
try {
|
|
195
|
+
const raw = (0, child_process_1.execSync)('security find-generic-password -s "Claude Code-credentials" -w', { encoding: 'utf-8', timeout: 5000, stdio: ['pipe', 'pipe', 'pipe'] }).trim();
|
|
196
|
+
const parsed = JSON.parse(raw);
|
|
197
|
+
return !!parsed?.claudeAiOauth?.accessToken;
|
|
198
|
+
}
|
|
199
|
+
catch {
|
|
200
|
+
return false;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
return false;
|
|
204
|
+
}
|
|
205
|
+
async *sendMessage(sessionId, message) {
|
|
206
|
+
const session = this.sessions.get(sessionId);
|
|
207
|
+
if (!session)
|
|
208
|
+
throw new common_1.BadRequestException('Session not found');
|
|
209
|
+
session.lastMessagePreview = message.slice(0, 80);
|
|
210
|
+
const sdk = await Promise.resolve().then(() => require('@anthropic-ai/claude-agent-sdk'));
|
|
211
|
+
const mcpServers = (0, mcp_config_1.buildMcpServers)();
|
|
212
|
+
console.log('[Agent] MCP servers config:', JSON.stringify(mcpServers, null, 2));
|
|
213
|
+
const allowedTools = ['mcp__analitoly__*'];
|
|
214
|
+
if (mcpServers.graylog)
|
|
215
|
+
allowedTools.push('mcp__graylog__*');
|
|
216
|
+
if (mcpServers.grafana)
|
|
217
|
+
allowedTools.push('mcp__grafana__*');
|
|
218
|
+
const project = this.projectRepository.read();
|
|
219
|
+
const projectConnected = project?.status === 'ready';
|
|
220
|
+
if (projectConnected) {
|
|
221
|
+
allowedTools.push('Read', 'Glob', 'Grep');
|
|
222
|
+
}
|
|
223
|
+
const systemPrompt = this.buildSystemPrompt(mcpServers, projectConnected);
|
|
224
|
+
const options = {
|
|
225
|
+
systemPrompt,
|
|
226
|
+
model: 'claude-sonnet-4-6',
|
|
227
|
+
mcpServers,
|
|
228
|
+
allowedTools,
|
|
229
|
+
permissionMode: 'bypassPermissions',
|
|
230
|
+
allowDangerouslySkipPermissions: true,
|
|
231
|
+
maxTurns: 20,
|
|
232
|
+
includePartialMessages: true,
|
|
233
|
+
...(session.apiKey ? { env: { ANTHROPIC_API_KEY: session.apiKey } } : {}),
|
|
234
|
+
};
|
|
235
|
+
if (projectConnected) {
|
|
236
|
+
options.cwd = project.localPath;
|
|
237
|
+
console.log('[Agent] Project connected, cwd:', project.localPath, 'allowedTools:', allowedTools);
|
|
238
|
+
}
|
|
239
|
+
if (session.sdkSessionId) {
|
|
240
|
+
options.resume = session.sdkSessionId;
|
|
241
|
+
}
|
|
242
|
+
let stream;
|
|
243
|
+
try {
|
|
244
|
+
stream = sdk.query({ prompt: message, options: options });
|
|
245
|
+
}
|
|
246
|
+
catch (err) {
|
|
247
|
+
const errMsg = err instanceof Error ? err.message : String(err);
|
|
248
|
+
if (errMsg.includes('No conversation found') && session.sdkSessionId) {
|
|
249
|
+
console.log('[Agent] SDK session expired, starting fresh');
|
|
250
|
+
session.sdkSessionId = null;
|
|
251
|
+
delete options.resume;
|
|
252
|
+
stream = sdk.query({ prompt: message, options: options });
|
|
253
|
+
}
|
|
254
|
+
else {
|
|
255
|
+
throw err;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
try {
|
|
259
|
+
for await (const msg of stream) {
|
|
260
|
+
if (msg.type === 'system' && msg.subtype === 'init') {
|
|
261
|
+
session.sdkSessionId = msg.session_id;
|
|
262
|
+
console.log('[Agent] Init event — tools:', msg.tools?.length, 'mcpServers:', msg.mcp_servers);
|
|
263
|
+
yield {
|
|
264
|
+
type: 'init',
|
|
265
|
+
sessionId: msg.session_id,
|
|
266
|
+
tools: msg.tools || [],
|
|
267
|
+
mcpServers: msg.mcp_servers || [],
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
if (msg.type === 'assistant') {
|
|
271
|
+
const content = msg.message?.content;
|
|
272
|
+
if (Array.isArray(content)) {
|
|
273
|
+
for (const block of content) {
|
|
274
|
+
if (block.type === 'text') {
|
|
275
|
+
yield { type: 'text', content: block.text };
|
|
276
|
+
}
|
|
277
|
+
if (block.type === 'tool_use') {
|
|
278
|
+
yield { type: 'tool_use', tool_use_id: block.id, name: block.name, input: block.input };
|
|
279
|
+
}
|
|
280
|
+
if (block.type === 'tool_result') {
|
|
281
|
+
yield { type: 'tool_result', name: block.name || '', output: block.text || '' };
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
if (msg.type === 'user') {
|
|
287
|
+
const content = msg.message?.content;
|
|
288
|
+
if (Array.isArray(content)) {
|
|
289
|
+
for (const block of content) {
|
|
290
|
+
if (block.type === 'tool_result') {
|
|
291
|
+
let resultText;
|
|
292
|
+
if (Array.isArray(block.content)) {
|
|
293
|
+
resultText = block.content
|
|
294
|
+
.filter((c) => c.type === 'text')
|
|
295
|
+
.map((c) => c.text)
|
|
296
|
+
.join('');
|
|
297
|
+
}
|
|
298
|
+
yield {
|
|
299
|
+
type: 'tool_result',
|
|
300
|
+
tool_use_id: block.tool_use_id,
|
|
301
|
+
status: 'done',
|
|
302
|
+
result: resultText,
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
if (msg.type === 'result') {
|
|
309
|
+
const result = msg;
|
|
310
|
+
if (result.subtype === 'success') {
|
|
311
|
+
session.usage.totalCostUsd += result.total_cost_usd ?? 0;
|
|
312
|
+
session.usage.numTurns += result.num_turns ?? 0;
|
|
313
|
+
session.usage.durationMs += result.duration_ms ?? 0;
|
|
314
|
+
if (result.usage) {
|
|
315
|
+
session.usage.inputTokens += result.usage.input_tokens ?? 0;
|
|
316
|
+
session.usage.outputTokens += result.usage.output_tokens ?? 0;
|
|
317
|
+
session.usage.cacheReadTokens += result.usage.cache_read_input_tokens ?? 0;
|
|
318
|
+
session.usage.cacheCreationTokens += result.usage.cache_creation_input_tokens ?? 0;
|
|
319
|
+
}
|
|
320
|
+
if (result.modelUsage) {
|
|
321
|
+
for (const [model, mu] of Object.entries(result.modelUsage)) {
|
|
322
|
+
if (!session.usage.modelUsage[model]) {
|
|
323
|
+
session.usage.modelUsage[model] = { inputTokens: 0, outputTokens: 0, costUSD: 0 };
|
|
324
|
+
}
|
|
325
|
+
session.usage.modelUsage[model].inputTokens += mu.inputTokens ?? 0;
|
|
326
|
+
session.usage.modelUsage[model].outputTokens += mu.outputTokens ?? 0;
|
|
327
|
+
session.usage.modelUsage[model].costUSD += mu.costUSD ?? 0;
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
yield {
|
|
331
|
+
type: 'done',
|
|
332
|
+
result: result.result,
|
|
333
|
+
cost: result.total_cost_usd,
|
|
334
|
+
turns: result.num_turns,
|
|
335
|
+
};
|
|
336
|
+
}
|
|
337
|
+
else {
|
|
338
|
+
yield {
|
|
339
|
+
type: 'error',
|
|
340
|
+
message: result.errors?.join('; ') || `Agent error: ${result.subtype}`,
|
|
341
|
+
};
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
catch (err) {
|
|
347
|
+
const errMsg = err instanceof Error ? err.message : String(err);
|
|
348
|
+
if (errMsg.includes('No conversation found') && session.sdkSessionId) {
|
|
349
|
+
console.log('[Agent] SDK session expired mid-stream, resetting');
|
|
350
|
+
session.sdkSessionId = null;
|
|
351
|
+
yield {
|
|
352
|
+
type: 'error',
|
|
353
|
+
message: 'Сессия истекла, отправьте сообщение ещё раз',
|
|
354
|
+
};
|
|
355
|
+
}
|
|
356
|
+
else {
|
|
357
|
+
yield {
|
|
358
|
+
type: 'error',
|
|
359
|
+
message: errMsg,
|
|
360
|
+
};
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
getUsage(sessionId) {
|
|
365
|
+
const session = this.sessions.get(sessionId);
|
|
366
|
+
if (!session)
|
|
367
|
+
throw new common_1.BadRequestException('Session not found');
|
|
368
|
+
return session.usage;
|
|
369
|
+
}
|
|
370
|
+
listSessions() {
|
|
371
|
+
return Array.from(this.sessions.entries()).map(([id, s]) => ({
|
|
372
|
+
sessionId: id,
|
|
373
|
+
createdAt: s.createdAt,
|
|
374
|
+
lastMessagePreview: s.lastMessagePreview,
|
|
375
|
+
numTurns: s.usage.numTurns,
|
|
376
|
+
}));
|
|
377
|
+
}
|
|
378
|
+
hasSession(sessionId) {
|
|
379
|
+
return this.sessions.has(sessionId);
|
|
380
|
+
}
|
|
381
|
+
disconnect(sessionId) {
|
|
382
|
+
this.sessions.delete(sessionId);
|
|
383
|
+
}
|
|
384
|
+
};
|
|
385
|
+
exports.AgentService = AgentService;
|
|
386
|
+
exports.AgentService = AgentService = __decorate([
|
|
387
|
+
(0, common_1.Injectable)()
|
|
388
|
+
], AgentService);
|
|
389
|
+
//# sourceMappingURL=agent.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.service.js","sourceRoot":"","sources":["../../../src/agent/agent.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildMcpServers = buildMcpServers;
|
|
4
|
+
const path = require("path");
|
|
5
|
+
const fs_1 = require("fs");
|
|
6
|
+
const connection_repository_1 = require("../connection/connection.repository");
|
|
7
|
+
const paths_1 = require("../paths");
|
|
8
|
+
function mcpScript(name) {
|
|
9
|
+
const dir = (0, paths_1.mcpScriptsDir)();
|
|
10
|
+
const tsFile = path.join(dir, name);
|
|
11
|
+
if ((0, fs_1.existsSync)(tsFile)) {
|
|
12
|
+
return { command: 'npx', args: ['tsx', tsFile] };
|
|
13
|
+
}
|
|
14
|
+
const jsFile = path.join(dir, name.replace(/\.ts$/, '.js'));
|
|
15
|
+
return { command: 'node', args: [jsFile] };
|
|
16
|
+
}
|
|
17
|
+
const connectionRepo = new connection_repository_1.ConnectionRepository();
|
|
18
|
+
function buildMcpServers() {
|
|
19
|
+
const servers = {};
|
|
20
|
+
servers.analitoly = mcpScript('mcp-server.ts');
|
|
21
|
+
const graylogConn = connectionRepo.findActive('graylog');
|
|
22
|
+
const graylogConfig = graylogConn?.config;
|
|
23
|
+
const graylogUrl = graylogConfig?.baseUrl || process.env.GRAYLOG_BASE_URL;
|
|
24
|
+
const graylogUser = graylogConfig?.username || process.env.GRAYLOG_USERNAME;
|
|
25
|
+
const graylogPass = graylogConfig?.password || process.env.GRAYLOG_PASSWORD;
|
|
26
|
+
if (graylogUrl && graylogUser && graylogPass) {
|
|
27
|
+
servers.graylog = {
|
|
28
|
+
...mcpScript('graylog.mcp.ts'),
|
|
29
|
+
env: {
|
|
30
|
+
GRAYLOG_BASE_URL: graylogUrl,
|
|
31
|
+
GRAYLOG_USERNAME: graylogUser,
|
|
32
|
+
GRAYLOG_PASSWORD: graylogPass,
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
const grafanaConn = connectionRepo.findActive('grafana');
|
|
37
|
+
const grafanaConfig = grafanaConn?.config;
|
|
38
|
+
const grafanaUrl = grafanaConfig?.url || process.env.GRAFANA_URL;
|
|
39
|
+
const grafanaToken = grafanaConfig?.serviceAccountToken || process.env.GRAFANA_SERVICE_ACCOUNT_TOKEN;
|
|
40
|
+
if (grafanaUrl && grafanaToken) {
|
|
41
|
+
servers.grafana = {
|
|
42
|
+
...mcpScript('grafana.mcp.ts'),
|
|
43
|
+
env: {
|
|
44
|
+
GRAFANA_URL: grafanaUrl,
|
|
45
|
+
GRAFANA_TOKEN: grafanaToken,
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
return servers;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=mcp-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-config.js","sourceRoot":"","sources":["../../../src/agent/mcp-config.ts"],"names":[],"mappings":";;AA4BA,0CAwCC;AApED,6BAA6B;AAC7B,2BAAgC;AAChC,+EAA2E;AAY3E,oCAAyC;AAEzC,SAAS,SAAS,CAAC,IAAY;IAC7B,MAAM,GAAG,GAAG,IAAA,qBAAa,GAAE,CAAC;IAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACpC,IAAI,IAAA,eAAU,EAAC,MAAM,CAAC,EAAE,CAAC;QACvB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;IACnD,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;AAC7C,CAAC;AAED,MAAM,cAAc,GAAG,IAAI,4CAAoB,EAAE,CAAC;AAElD,SAAgB,eAAe;IAC7B,MAAM,OAAO,GAAqB,EAAE,CAAC;IAErC,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC;IAG/C,MAAM,WAAW,GAAG,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACzD,MAAM,aAAa,GAAG,WAAW,EAAE,MAAmC,CAAC;IACvE,MAAM,UAAU,GAAG,aAAa,EAAE,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAC1E,MAAM,WAAW,GAAG,aAAa,EAAE,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAC5E,MAAM,WAAW,GAAG,aAAa,EAAE,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAE5E,IAAI,UAAU,IAAI,WAAW,IAAI,WAAW,EAAE,CAAC;QAC7C,OAAO,CAAC,OAAO,GAAG;YAChB,GAAG,SAAS,CAAC,gBAAgB,CAAC;YAC9B,GAAG,EAAE;gBACH,gBAAgB,EAAE,UAAU;gBAC5B,gBAAgB,EAAE,WAAW;gBAC7B,gBAAgB,EAAE,WAAW;aAC9B;SACF,CAAC;IACJ,CAAC;IAGD,MAAM,WAAW,GAAG,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACzD,MAAM,aAAa,GAAG,WAAW,EAAE,MAAmC,CAAC;IACvE,MAAM,UAAU,GAAG,aAAa,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;IACjE,MAAM,YAAY,GAAG,aAAa,EAAE,mBAAmB,IAAI,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC;IAErG,IAAI,UAAU,IAAI,YAAY,EAAE,CAAC;QAC/B,OAAO,CAAC,OAAO,GAAG;YAChB,GAAG,SAAS,CAAC,gBAAgB,CAAC;YAC9B,GAAG,EAAE;gBACH,WAAW,EAAE,UAAU;gBACvB,aAAa,EAAE,YAAY;aAC5B;SACF,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.AppModule = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
const serve_static_1 = require("@nestjs/serve-static");
|
|
12
|
+
const fs_1 = require("fs");
|
|
13
|
+
const paths_1 = require("./paths");
|
|
14
|
+
const example_module_1 = require("./example/example.module");
|
|
15
|
+
const datasource_module_1 = require("./datasource/datasource.module");
|
|
16
|
+
const chat_module_1 = require("./chat/chat.module");
|
|
17
|
+
const agent_module_1 = require("./agent/agent.module");
|
|
18
|
+
const project_module_1 = require("./project/project.module");
|
|
19
|
+
const integration_module_1 = require("./integration/integration.module");
|
|
20
|
+
const connection_module_1 = require("./connection/connection.module");
|
|
21
|
+
const dashboard_module_1 = require("./dashboard/dashboard.module");
|
|
22
|
+
const chart_module_1 = require("./chart/chart.module");
|
|
23
|
+
const context_module_1 = require("./context/context.module");
|
|
24
|
+
const publicPath = (0, paths_1.publicDir)();
|
|
25
|
+
let AppModule = class AppModule {
|
|
26
|
+
};
|
|
27
|
+
exports.AppModule = AppModule;
|
|
28
|
+
exports.AppModule = AppModule = __decorate([
|
|
29
|
+
(0, common_1.Module)({
|
|
30
|
+
imports: [
|
|
31
|
+
...((0, fs_1.existsSync)(publicPath)
|
|
32
|
+
? [
|
|
33
|
+
serve_static_1.ServeStaticModule.forRoot({
|
|
34
|
+
rootPath: publicPath,
|
|
35
|
+
exclude: ['/api/(.*)'],
|
|
36
|
+
}),
|
|
37
|
+
]
|
|
38
|
+
: []),
|
|
39
|
+
example_module_1.ExampleModule,
|
|
40
|
+
datasource_module_1.DataSourceModule,
|
|
41
|
+
chat_module_1.ChatModule,
|
|
42
|
+
agent_module_1.AgentModule,
|
|
43
|
+
project_module_1.ProjectModule,
|
|
44
|
+
integration_module_1.IntegrationModule,
|
|
45
|
+
connection_module_1.ConnectionModule,
|
|
46
|
+
dashboard_module_1.DashboardModule,
|
|
47
|
+
chart_module_1.ChartModule,
|
|
48
|
+
context_module_1.ContextModule,
|
|
49
|
+
],
|
|
50
|
+
})
|
|
51
|
+
], AppModule);
|
|
52
|
+
//# sourceMappingURL=app.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.module.js","sourceRoot":"","sources":["../../src/app.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,uDAAyD;AACzD,2BAAgC;AAChC,mCAAoC;AACpC,6DAAyD;AACzD,sEAAkE;AAClE,oDAAgD;AAChD,uDAAmD;AACnD,6DAAyD;AACzD,yEAAqE;AACrE,sEAAkE;AAClE,mEAA+D;AAC/D,uDAAmD;AACnD,6DAAyD;AAEzD,MAAM,UAAU,GAAG,IAAA,iBAAS,GAAE,CAAC;AAwBxB,IAAM,SAAS,GAAf,MAAM,SAAS;CAAG,CAAA;AAAZ,8BAAS;oBAAT,SAAS;IAtBrB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,GAAG,CAAC,IAAA,eAAU,EAAC,UAAU,CAAC;gBACxB,CAAC,CAAC;oBACE,gCAAiB,CAAC,OAAO,CAAC;wBACxB,QAAQ,EAAE,UAAU;wBACpB,OAAO,EAAE,CAAC,WAAW,CAAC;qBACvB,CAAC;iBACH;gBACH,CAAC,CAAC,EAAE,CAAC;YACP,8BAAa;YACb,oCAAgB;YAChB,wBAAU;YACV,0BAAW;YACX,8BAAa;YACb,sCAAiB;YACjB,oCAAgB;YAChB,kCAAe;YACf,0BAAW;YACX,8BAAa;SACd;KACF,CAAC;GACW,SAAS,CAAG"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ChartService, type RebuildRequest } from './chart.service';
|
|
2
|
+
export declare class ChartController {
|
|
3
|
+
private readonly chartService;
|
|
4
|
+
constructor(chartService: ChartService);
|
|
5
|
+
rebuild(body: RebuildRequest): Promise<{
|
|
6
|
+
echartsOption: Record<string, unknown>;
|
|
7
|
+
}>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.ChartController = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const chart_service_1 = require("./chart.service");
|
|
18
|
+
let ChartController = class ChartController {
|
|
19
|
+
constructor(chartService) {
|
|
20
|
+
this.chartService = chartService;
|
|
21
|
+
}
|
|
22
|
+
async rebuild(body) {
|
|
23
|
+
return this.chartService.rebuild(body);
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
exports.ChartController = ChartController;
|
|
27
|
+
__decorate([
|
|
28
|
+
(0, common_1.Post)('rebuild'),
|
|
29
|
+
__param(0, (0, common_1.Body)()),
|
|
30
|
+
__metadata("design:type", Function),
|
|
31
|
+
__metadata("design:paramtypes", [Object]),
|
|
32
|
+
__metadata("design:returntype", Promise)
|
|
33
|
+
], ChartController.prototype, "rebuild", null);
|
|
34
|
+
exports.ChartController = ChartController = __decorate([
|
|
35
|
+
(0, common_1.Controller)('chart'),
|
|
36
|
+
__metadata("design:paramtypes", [chart_service_1.ChartService])
|
|
37
|
+
], ChartController);
|
|
38
|
+
//# sourceMappingURL=chart.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chart.controller.js","sourceRoot":"","sources":["../../../src/chart/chart.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAwD;AACxD,mDAAoE;AAG7D,IAAM,eAAe,GAArB,MAAM,eAAe;IAC1B,YAA6B,YAA0B;QAA1B,iBAAY,GAAZ,YAAY,CAAc;IAAG,CAAC;IAGrD,AAAN,KAAK,CAAC,OAAO,CAAS,IAAoB;QACxC,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;CACF,CAAA;AAPY,0CAAe;AAIpB;IADL,IAAA,aAAI,EAAC,SAAS,CAAC;IACD,WAAA,IAAA,aAAI,GAAE,CAAA;;;;8CAEpB;0BANU,eAAe;IAD3B,IAAA,mBAAU,EAAC,OAAO,CAAC;qCAEyB,4BAAY;GAD5C,eAAe,CAO3B"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.ChartModule = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
const chart_controller_1 = require("./chart.controller");
|
|
12
|
+
const chart_service_1 = require("./chart.service");
|
|
13
|
+
const datasource_module_1 = require("../datasource/datasource.module");
|
|
14
|
+
let ChartModule = class ChartModule {
|
|
15
|
+
};
|
|
16
|
+
exports.ChartModule = ChartModule;
|
|
17
|
+
exports.ChartModule = ChartModule = __decorate([
|
|
18
|
+
(0, common_1.Module)({
|
|
19
|
+
imports: [datasource_module_1.DataSourceModule],
|
|
20
|
+
controllers: [chart_controller_1.ChartController],
|
|
21
|
+
providers: [chart_service_1.ChartService],
|
|
22
|
+
})
|
|
23
|
+
], ChartModule);
|
|
24
|
+
//# sourceMappingURL=chart.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chart.module.js","sourceRoot":"","sources":["../../../src/chart/chart.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,yDAAqD;AACrD,mDAA+C;AAC/C,uEAAmE;AAO5D,IAAM,WAAW,GAAjB,MAAM,WAAW;CAAG,CAAA;AAAd,kCAAW;sBAAX,WAAW;IALvB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,oCAAgB,CAAC;QAC3B,WAAW,EAAE,CAAC,kCAAe,CAAC;QAC9B,SAAS,EAAE,CAAC,4BAAY,CAAC;KAC1B,CAAC;GACW,WAAW,CAAG"}
|