@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.
Files changed (186) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +93 -0
  3. package/api/dist/dashboards/dash_1775220041958_v1r8io.json +829 -0
  4. package/api/dist/dashboards/dash_1775222037264_1rrsrd.json +309 -0
  5. package/api/dist/src/agent/agent.controller.d.ts +26 -0
  6. package/api/dist/src/agent/agent.controller.js +124 -0
  7. package/api/dist/src/agent/agent.controller.js.map +1 -0
  8. package/api/dist/src/agent/agent.module.d.ts +2 -0
  9. package/api/dist/src/agent/agent.module.js +23 -0
  10. package/api/dist/src/agent/agent.module.js.map +1 -0
  11. package/api/dist/src/agent/agent.service.d.ts +39 -0
  12. package/api/dist/src/agent/agent.service.js +389 -0
  13. package/api/dist/src/agent/agent.service.js.map +1 -0
  14. package/api/dist/src/agent/mcp-config.d.ts +9 -0
  15. package/api/dist/src/agent/mcp-config.js +51 -0
  16. package/api/dist/src/agent/mcp-config.js.map +1 -0
  17. package/api/dist/src/app.module.d.ts +2 -0
  18. package/api/dist/src/app.module.js +52 -0
  19. package/api/dist/src/app.module.js.map +1 -0
  20. package/api/dist/src/chart/chart.controller.d.ts +8 -0
  21. package/api/dist/src/chart/chart.controller.js +38 -0
  22. package/api/dist/src/chart/chart.controller.js.map +1 -0
  23. package/api/dist/src/chart/chart.module.d.ts +2 -0
  24. package/api/dist/src/chart/chart.module.js +24 -0
  25. package/api/dist/src/chart/chart.module.js.map +1 -0
  26. package/api/dist/src/chart/chart.service.d.ts +32 -0
  27. package/api/dist/src/chart/chart.service.js +106 -0
  28. package/api/dist/src/chart/chart.service.js.map +1 -0
  29. package/api/dist/src/chat/chat.controller.d.ts +14 -0
  30. package/api/dist/src/chat/chat.controller.js +73 -0
  31. package/api/dist/src/chat/chat.controller.js.map +1 -0
  32. package/api/dist/src/chat/chat.module.d.ts +2 -0
  33. package/api/dist/src/chat/chat.module.js +22 -0
  34. package/api/dist/src/chat/chat.module.js.map +1 -0
  35. package/api/dist/src/chat/chat.service.d.ts +25 -0
  36. package/api/dist/src/chat/chat.service.js +168 -0
  37. package/api/dist/src/chat/chat.service.js.map +1 -0
  38. package/api/dist/src/connection/connection.controller.d.ts +46 -0
  39. package/api/dist/src/connection/connection.controller.js +189 -0
  40. package/api/dist/src/connection/connection.controller.js.map +1 -0
  41. package/api/dist/src/connection/connection.model.d.ts +116 -0
  42. package/api/dist/src/connection/connection.model.js +23 -0
  43. package/api/dist/src/connection/connection.model.js.map +1 -0
  44. package/api/dist/src/connection/connection.module.d.ts +2 -0
  45. package/api/dist/src/connection/connection.module.js +31 -0
  46. package/api/dist/src/connection/connection.module.js.map +1 -0
  47. package/api/dist/src/connection/connection.repository.d.ts +16 -0
  48. package/api/dist/src/connection/connection.repository.js +195 -0
  49. package/api/dist/src/connection/connection.repository.js.map +1 -0
  50. package/api/dist/src/connection/connection.service.d.ts +50 -0
  51. package/api/dist/src/connection/connection.service.js +343 -0
  52. package/api/dist/src/connection/connection.service.js.map +1 -0
  53. package/api/dist/src/context/context.controller.d.ts +13 -0
  54. package/api/dist/src/context/context.controller.js +86 -0
  55. package/api/dist/src/context/context.controller.js.map +1 -0
  56. package/api/dist/src/context/context.module.d.ts +2 -0
  57. package/api/dist/src/context/context.module.js +39 -0
  58. package/api/dist/src/context/context.module.js.map +1 -0
  59. package/api/dist/src/context/context.service.d.ts +32 -0
  60. package/api/dist/src/context/context.service.js +177 -0
  61. package/api/dist/src/context/context.service.js.map +1 -0
  62. package/api/dist/src/dashboard/dashboard.controller.d.ts +21 -0
  63. package/api/dist/src/dashboard/dashboard.controller.js +109 -0
  64. package/api/dist/src/dashboard/dashboard.controller.js.map +1 -0
  65. package/api/dist/src/dashboard/dashboard.model.d.ts +15 -0
  66. package/api/dist/src/dashboard/dashboard.model.js +3 -0
  67. package/api/dist/src/dashboard/dashboard.model.js.map +1 -0
  68. package/api/dist/src/dashboard/dashboard.module.d.ts +2 -0
  69. package/api/dist/src/dashboard/dashboard.module.js +24 -0
  70. package/api/dist/src/dashboard/dashboard.module.js.map +1 -0
  71. package/api/dist/src/dashboard/dashboard.repository.d.ts +9 -0
  72. package/api/dist/src/dashboard/dashboard.repository.js +72 -0
  73. package/api/dist/src/dashboard/dashboard.repository.js.map +1 -0
  74. package/api/dist/src/dashboard/dashboard.service.d.ts +14 -0
  75. package/api/dist/src/dashboard/dashboard.service.js +87 -0
  76. package/api/dist/src/dashboard/dashboard.service.js.map +1 -0
  77. package/api/dist/src/datasource/connectors/connector.interface.d.ts +6 -0
  78. package/api/dist/src/datasource/connectors/connector.interface.js +3 -0
  79. package/api/dist/src/datasource/connectors/connector.interface.js.map +1 -0
  80. package/api/dist/src/datasource/connectors/mongo.connector.d.ts +30 -0
  81. package/api/dist/src/datasource/connectors/mongo.connector.js +167 -0
  82. package/api/dist/src/datasource/connectors/mongo.connector.js.map +1 -0
  83. package/api/dist/src/datasource/connectors/mongo.connector.test.d.ts +1 -0
  84. package/api/dist/src/datasource/connectors/mongo.connector.test.js +179 -0
  85. package/api/dist/src/datasource/connectors/mongo.connector.test.js.map +1 -0
  86. package/api/dist/src/datasource/connectors/postgres.connector.d.ts +50 -0
  87. package/api/dist/src/datasource/connectors/postgres.connector.js +213 -0
  88. package/api/dist/src/datasource/connectors/postgres.connector.js.map +1 -0
  89. package/api/dist/src/datasource/connectors/postgres.connector.test.d.ts +1 -0
  90. package/api/dist/src/datasource/connectors/postgres.connector.test.js +197 -0
  91. package/api/dist/src/datasource/connectors/postgres.connector.test.js.map +1 -0
  92. package/api/dist/src/datasource/datasource.controller.d.ts +16 -0
  93. package/api/dist/src/datasource/datasource.controller.js +79 -0
  94. package/api/dist/src/datasource/datasource.controller.js.map +1 -0
  95. package/api/dist/src/datasource/datasource.model.d.ts +26 -0
  96. package/api/dist/src/datasource/datasource.model.js +3 -0
  97. package/api/dist/src/datasource/datasource.model.js.map +1 -0
  98. package/api/dist/src/datasource/datasource.module.d.ts +2 -0
  99. package/api/dist/src/datasource/datasource.module.js +31 -0
  100. package/api/dist/src/datasource/datasource.module.js.map +1 -0
  101. package/api/dist/src/datasource/datasource.repository.d.ts +11 -0
  102. package/api/dist/src/datasource/datasource.repository.js +61 -0
  103. package/api/dist/src/datasource/datasource.repository.js.map +1 -0
  104. package/api/dist/src/datasource/datasource.service.d.ts +28 -0
  105. package/api/dist/src/datasource/datasource.service.js +95 -0
  106. package/api/dist/src/datasource/datasource.service.js.map +1 -0
  107. package/api/dist/src/example/example.controller.d.ts +10 -0
  108. package/api/dist/src/example/example.controller.js +43 -0
  109. package/api/dist/src/example/example.controller.js.map +1 -0
  110. package/api/dist/src/example/example.model.d.ts +6 -0
  111. package/api/dist/src/example/example.model.js +3 -0
  112. package/api/dist/src/example/example.model.js.map +1 -0
  113. package/api/dist/src/example/example.module.d.ts +2 -0
  114. package/api/dist/src/example/example.module.js +23 -0
  115. package/api/dist/src/example/example.module.js.map +1 -0
  116. package/api/dist/src/example/example.repository.d.ts +6 -0
  117. package/api/dist/src/example/example.repository.js +30 -0
  118. package/api/dist/src/example/example.repository.js.map +1 -0
  119. package/api/dist/src/example/example.service.d.ts +10 -0
  120. package/api/dist/src/example/example.service.js +31 -0
  121. package/api/dist/src/example/example.service.js.map +1 -0
  122. package/api/dist/src/integration/integration.controller.d.ts +15 -0
  123. package/api/dist/src/integration/integration.controller.js +69 -0
  124. package/api/dist/src/integration/integration.controller.js.map +1 -0
  125. package/api/dist/src/integration/integration.model.d.ts +17 -0
  126. package/api/dist/src/integration/integration.model.js +3 -0
  127. package/api/dist/src/integration/integration.model.js.map +1 -0
  128. package/api/dist/src/integration/integration.module.d.ts +2 -0
  129. package/api/dist/src/integration/integration.module.js +24 -0
  130. package/api/dist/src/integration/integration.module.js.map +1 -0
  131. package/api/dist/src/integration/integration.repository.d.ts +6 -0
  132. package/api/dist/src/integration/integration.repository.js +45 -0
  133. package/api/dist/src/integration/integration.repository.js.map +1 -0
  134. package/api/dist/src/integration/integration.service.d.ts +12 -0
  135. package/api/dist/src/integration/integration.service.js +78 -0
  136. package/api/dist/src/integration/integration.service.js.map +1 -0
  137. package/api/dist/src/main.d.ts +1 -0
  138. package/api/dist/src/main.js +19 -0
  139. package/api/dist/src/main.js.map +1 -0
  140. package/api/dist/src/mcp/grafana.mcp.d.ts +1 -0
  141. package/api/dist/src/mcp/grafana.mcp.js +95 -0
  142. package/api/dist/src/mcp/grafana.mcp.js.map +1 -0
  143. package/api/dist/src/mcp/graylog.mcp.d.ts +1 -0
  144. package/api/dist/src/mcp/graylog.mcp.js +241 -0
  145. package/api/dist/src/mcp/graylog.mcp.js.map +1 -0
  146. package/api/dist/src/mcp/mcp-server.d.ts +1 -0
  147. package/api/dist/src/mcp/mcp-server.js +336 -0
  148. package/api/dist/src/mcp/mcp-server.js.map +1 -0
  149. package/api/dist/src/paths.d.ts +8 -0
  150. package/api/dist/src/paths.js +50 -0
  151. package/api/dist/src/paths.js.map +1 -0
  152. package/api/dist/src/paths.test.d.ts +1 -0
  153. package/api/dist/src/paths.test.js +60 -0
  154. package/api/dist/src/paths.test.js.map +1 -0
  155. package/api/dist/src/project/project.controller.d.ts +44 -0
  156. package/api/dist/src/project/project.controller.js +79 -0
  157. package/api/dist/src/project/project.controller.js.map +1 -0
  158. package/api/dist/src/project/project.model.d.ts +19 -0
  159. package/api/dist/src/project/project.model.js +3 -0
  160. package/api/dist/src/project/project.model.js.map +1 -0
  161. package/api/dist/src/project/project.module.d.ts +2 -0
  162. package/api/dist/src/project/project.module.js +24 -0
  163. package/api/dist/src/project/project.module.js.map +1 -0
  164. package/api/dist/src/project/project.repository.d.ts +6 -0
  165. package/api/dist/src/project/project.repository.js +52 -0
  166. package/api/dist/src/project/project.repository.js.map +1 -0
  167. package/api/dist/src/project/project.service.d.ts +17 -0
  168. package/api/dist/src/project/project.service.js +163 -0
  169. package/api/dist/src/project/project.service.js.map +1 -0
  170. package/api/dist/tsconfig.tsbuildinfo +1 -0
  171. package/api/dist/vitest.config.d.ts +2 -0
  172. package/api/dist/vitest.config.js +10 -0
  173. package/api/dist/vitest.config.js.map +1 -0
  174. package/api/public/dist/Analitoly.png +0 -0
  175. package/api/public/dist/AnalitolyShort.png +0 -0
  176. package/api/public/dist/Gitlab.png +0 -0
  177. package/api/public/dist/Grafana.png +0 -0
  178. package/api/public/dist/Graylog.png +0 -0
  179. package/api/public/dist/Mongodb.png +0 -0
  180. package/api/public/dist/PostgreSQL.png +0 -0
  181. package/api/public/dist/assets/index-BPB3ckw4.js +222 -0
  182. package/api/public/dist/assets/index-CSAGa0SG.js +227 -0
  183. package/api/public/dist/index.html +12 -0
  184. package/bin/analitoly-mcp.js +18 -0
  185. package/bin/analitoly.js +38 -0
  186. package/package.json +54 -0
@@ -0,0 +1,32 @@
1
+ import { DataSourceService } from '../datasource/datasource.service';
2
+ export interface ChartRebuildConfig {
3
+ datasourceType: 'postgresql' | 'mongodb';
4
+ connectionName?: string;
5
+ queryTemplate: string;
6
+ timeColumn: string;
7
+ timeFormat?: 'iso' | 'epoch_s' | 'epoch_ms';
8
+ echartsMapping: {
9
+ xField: string;
10
+ series: Array<{
11
+ yField: string;
12
+ name?: string;
13
+ type: string;
14
+ }>;
15
+ };
16
+ }
17
+ export interface RebuildRequest {
18
+ rebuildConfig: ChartRebuildConfig;
19
+ timeRange: {
20
+ from: string;
21
+ to: string;
22
+ };
23
+ originalOption: Record<string, unknown>;
24
+ }
25
+ export declare class ChartService {
26
+ private readonly datasourceService;
27
+ constructor(datasourceService: DataSourceService);
28
+ rebuild(req: RebuildRequest): Promise<{
29
+ echartsOption: Record<string, unknown>;
30
+ }>;
31
+ private formatTime;
32
+ }
@@ -0,0 +1,106 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ChartService = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const datasource_service_1 = require("../datasource/datasource.service");
15
+ function wrapDates(obj, dates, parentKey) {
16
+ if (typeof obj === 'string' && dates.has(obj) && parentKey !== '$date') {
17
+ return { $date: obj };
18
+ }
19
+ if (Array.isArray(obj)) {
20
+ return obj.map(item => wrapDates(item, dates));
21
+ }
22
+ if (obj !== null && typeof obj === 'object') {
23
+ const result = {};
24
+ for (const [key, value] of Object.entries(obj)) {
25
+ result[key] = wrapDates(value, dates, key);
26
+ }
27
+ return result;
28
+ }
29
+ return obj;
30
+ }
31
+ let ChartService = class ChartService {
32
+ constructor(datasourceService) {
33
+ this.datasourceService = datasourceService;
34
+ }
35
+ async rebuild(req) {
36
+ const { rebuildConfig, timeRange, originalOption } = req;
37
+ const { datasourceType, connectionName, queryTemplate, timeFormat, echartsMapping } = rebuildConfig;
38
+ const fromDate = new Date(timeRange.from);
39
+ const toDate = new Date(timeRange.to);
40
+ if (isNaN(fromDate.getTime()) || isNaN(toDate.getTime())) {
41
+ throw new common_1.BadRequestException('Invalid time range');
42
+ }
43
+ const fromStr = this.formatTime(fromDate, timeFormat ?? 'iso');
44
+ const toStr = this.formatTime(toDate, timeFormat ?? 'iso');
45
+ let query = queryTemplate
46
+ .replace(/\{\{TIME_FROM\}\}/g, fromStr)
47
+ .replace(/\{\{TIME_TO\}\}/g, toStr);
48
+ if (datasourceType === 'mongodb' && (timeFormat ?? 'iso') === 'iso') {
49
+ try {
50
+ const parsed = JSON.parse(query);
51
+ const wrapped = wrapDates(parsed, new Set([fromStr, toStr]));
52
+ query = JSON.stringify(wrapped);
53
+ }
54
+ catch {
55
+ }
56
+ }
57
+ const rows = await this.datasourceService.executeQuery(datasourceType, query, connectionName);
58
+ const newOption = JSON.parse(JSON.stringify(originalOption));
59
+ if (!Array.isArray(rows) || rows.length === 0) {
60
+ if (newOption.xAxis && typeof newOption.xAxis === 'object') {
61
+ newOption.xAxis.data = [];
62
+ }
63
+ if (Array.isArray(newOption.series)) {
64
+ for (const s of newOption.series)
65
+ s.data = [];
66
+ }
67
+ return { echartsOption: newOption };
68
+ }
69
+ const xData = rows.map((row) => row[echartsMapping.xField]);
70
+ if (newOption.xAxis && typeof newOption.xAxis === 'object') {
71
+ newOption.xAxis.data = xData;
72
+ }
73
+ const originalSeries = newOption.series;
74
+ if (Array.isArray(originalSeries)) {
75
+ for (let i = 0; i < echartsMapping.series.length && i < originalSeries.length; i++) {
76
+ const mapping = echartsMapping.series[i];
77
+ originalSeries[i].data = rows.map((row) => {
78
+ const v = row[mapping.yField];
79
+ return typeof v === 'number' && !Number.isInteger(v) ? +v.toFixed(2) : v;
80
+ });
81
+ if (mapping.name)
82
+ originalSeries[i].name = mapping.name;
83
+ if (mapping.type)
84
+ originalSeries[i].type = mapping.type;
85
+ }
86
+ }
87
+ return { echartsOption: newOption };
88
+ }
89
+ formatTime(date, format) {
90
+ switch (format) {
91
+ case 'epoch_s':
92
+ return String(Math.floor(date.getTime() / 1000));
93
+ case 'epoch_ms':
94
+ return String(date.getTime());
95
+ case 'iso':
96
+ default:
97
+ return date.toISOString();
98
+ }
99
+ }
100
+ };
101
+ exports.ChartService = ChartService;
102
+ exports.ChartService = ChartService = __decorate([
103
+ (0, common_1.Injectable)(),
104
+ __metadata("design:paramtypes", [datasource_service_1.DataSourceService])
105
+ ], ChartService);
106
+ //# sourceMappingURL=chart.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart.service.js","sourceRoot":"","sources":["../../../src/chart/chart.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { Response } from 'express';
2
+ import { ChatService } from './chat.service';
3
+ export declare class ChatController {
4
+ private readonly chatService;
5
+ constructor(chatService: ChatService);
6
+ connect(): {
7
+ sessionId: string;
8
+ };
9
+ sendMessage(sessionId: string, message: string, res: Response): Promise<void>;
10
+ getUsage(sessionId: string): import("./chat.service").UsageStats;
11
+ disconnect(sessionId: string): {
12
+ ok: boolean;
13
+ };
14
+ }
@@ -0,0 +1,73 @@
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
+ var _a;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.ChatController = void 0;
17
+ const common_1 = require("@nestjs/common");
18
+ const express_1 = require("express");
19
+ const chat_service_1 = require("./chat.service");
20
+ let ChatController = class ChatController {
21
+ constructor(chatService) {
22
+ this.chatService = chatService;
23
+ }
24
+ connect() {
25
+ const sessionId = this.chatService.createSession();
26
+ return { sessionId };
27
+ }
28
+ async sendMessage(sessionId, message, res) {
29
+ await this.chatService.streamMessage(sessionId, message, res);
30
+ }
31
+ getUsage(sessionId) {
32
+ return this.chatService.getUsage(sessionId);
33
+ }
34
+ disconnect(sessionId) {
35
+ this.chatService.deleteSession(sessionId);
36
+ return { ok: true };
37
+ }
38
+ };
39
+ exports.ChatController = ChatController;
40
+ __decorate([
41
+ (0, common_1.Post)('connect'),
42
+ __metadata("design:type", Function),
43
+ __metadata("design:paramtypes", []),
44
+ __metadata("design:returntype", void 0)
45
+ ], ChatController.prototype, "connect", null);
46
+ __decorate([
47
+ (0, common_1.Post)(':sessionId/message'),
48
+ __param(0, (0, common_1.Param)('sessionId')),
49
+ __param(1, (0, common_1.Body)('message')),
50
+ __param(2, (0, common_1.Res)()),
51
+ __metadata("design:type", Function),
52
+ __metadata("design:paramtypes", [String, String, typeof (_a = typeof express_1.Response !== "undefined" && express_1.Response) === "function" ? _a : Object]),
53
+ __metadata("design:returntype", Promise)
54
+ ], ChatController.prototype, "sendMessage", null);
55
+ __decorate([
56
+ (0, common_1.Get)(':sessionId/usage'),
57
+ __param(0, (0, common_1.Param)('sessionId')),
58
+ __metadata("design:type", Function),
59
+ __metadata("design:paramtypes", [String]),
60
+ __metadata("design:returntype", void 0)
61
+ ], ChatController.prototype, "getUsage", null);
62
+ __decorate([
63
+ (0, common_1.Delete)(':sessionId'),
64
+ __param(0, (0, common_1.Param)('sessionId')),
65
+ __metadata("design:type", Function),
66
+ __metadata("design:paramtypes", [String]),
67
+ __metadata("design:returntype", void 0)
68
+ ], ChatController.prototype, "disconnect", null);
69
+ exports.ChatController = ChatController = __decorate([
70
+ (0, common_1.Controller)('chat'),
71
+ __metadata("design:paramtypes", [chat_service_1.ChatService])
72
+ ], ChatController);
73
+ //# sourceMappingURL=chat.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.controller.js","sourceRoot":"","sources":["../../../src/chat/chat.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAiF;AACjF,qCAAmC;AACnC,iDAA6C;AAGtC,IAAM,cAAc,GAApB,MAAM,cAAc;IACzB,YAA6B,WAAwB;QAAxB,gBAAW,GAAX,WAAW,CAAa;IAAG,CAAC;IAGzD,OAAO;QACL,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;QACnD,OAAO,EAAE,SAAS,EAAE,CAAC;IACvB,CAAC;IAGK,AAAN,KAAK,CAAC,WAAW,CACK,SAAiB,EACpB,OAAe,EACzB,GAAa;QAEpB,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IAChE,CAAC;IAGD,QAAQ,CAAqB,SAAiB;QAC5C,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC;IAGD,UAAU,CAAqB,SAAiB;QAC9C,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAC1C,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC;CACF,CAAA;AA5BY,wCAAc;AAIzB;IADC,IAAA,aAAI,EAAC,SAAS,CAAC;;;;6CAIf;AAGK;IADL,IAAA,aAAI,EAAC,oBAAoB,CAAC;IAExB,WAAA,IAAA,cAAK,EAAC,WAAW,CAAC,CAAA;IAClB,WAAA,IAAA,aAAI,EAAC,SAAS,CAAC,CAAA;IACf,WAAA,IAAA,YAAG,GAAE,CAAA;;yEAAM,kBAAQ,oBAAR,kBAAQ;;iDAGrB;AAGD;IADC,IAAA,YAAG,EAAC,kBAAkB,CAAC;IACd,WAAA,IAAA,cAAK,EAAC,WAAW,CAAC,CAAA;;;;8CAE3B;AAGD;IADC,IAAA,eAAM,EAAC,YAAY,CAAC;IACT,WAAA,IAAA,cAAK,EAAC,WAAW,CAAC,CAAA;;;;gDAG7B;yBA3BU,cAAc;IAD1B,IAAA,mBAAU,EAAC,MAAM,CAAC;qCAEyB,0BAAW;GAD1C,cAAc,CA4B1B"}
@@ -0,0 +1,2 @@
1
+ export declare class ChatModule {
2
+ }
@@ -0,0 +1,22 @@
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.ChatModule = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const chat_controller_1 = require("./chat.controller");
12
+ const chat_service_1 = require("./chat.service");
13
+ let ChatModule = class ChatModule {
14
+ };
15
+ exports.ChatModule = ChatModule;
16
+ exports.ChatModule = ChatModule = __decorate([
17
+ (0, common_1.Module)({
18
+ controllers: [chat_controller_1.ChatController],
19
+ providers: [chat_service_1.ChatService],
20
+ })
21
+ ], ChatModule);
22
+ //# sourceMappingURL=chat.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.module.js","sourceRoot":"","sources":["../../../src/chat/chat.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,uDAAmD;AACnD,iDAA6C;AAMtC,IAAM,UAAU,GAAhB,MAAM,UAAU;CAAG,CAAA;AAAb,gCAAU;qBAAV,UAAU;IAJtB,IAAA,eAAM,EAAC;QACN,WAAW,EAAE,CAAC,gCAAc,CAAC;QAC7B,SAAS,EAAE,CAAC,0BAAW,CAAC;KACzB,CAAC;GACW,UAAU,CAAG"}
@@ -0,0 +1,25 @@
1
+ import { Response } from 'express';
2
+ export interface UsageStats {
3
+ totalCostUsd: number;
4
+ inputTokens: number;
5
+ outputTokens: number;
6
+ cacheReadTokens: number;
7
+ cacheCreationTokens: number;
8
+ numTurns: number;
9
+ durationMs: number;
10
+ model: string;
11
+ modelUsage: Record<string, {
12
+ inputTokens: number;
13
+ outputTokens: number;
14
+ costUSD: number;
15
+ }>;
16
+ }
17
+ export declare class ChatService {
18
+ private sessions;
19
+ private projectRepository;
20
+ createSession(): string;
21
+ private getSession;
22
+ streamMessage(sessionId: string, userMessage: string, res: Response): Promise<void>;
23
+ getUsage(sessionId: string): UsageStats;
24
+ deleteSession(sessionId: string): void;
25
+ }
@@ -0,0 +1,168 @@
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.ChatService = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const claude_agent_sdk_1 = require("@anthropic-ai/claude-agent-sdk");
12
+ const project_repository_1 = require("../project/project.repository");
13
+ const mcp_config_1 = require("../agent/mcp-config");
14
+ let ChatService = class ChatService {
15
+ constructor() {
16
+ this.sessions = new Map();
17
+ this.projectRepository = new project_repository_1.ProjectRepository();
18
+ }
19
+ createSession() {
20
+ const sessionId = crypto.randomUUID();
21
+ this.sessions.set(sessionId, {
22
+ agentSessionId: null,
23
+ usage: {
24
+ totalCostUsd: 0,
25
+ inputTokens: 0,
26
+ outputTokens: 0,
27
+ cacheReadTokens: 0,
28
+ cacheCreationTokens: 0,
29
+ numTurns: 0,
30
+ durationMs: 0,
31
+ model: 'claude-sonnet-4-6',
32
+ modelUsage: {},
33
+ },
34
+ });
35
+ return sessionId;
36
+ }
37
+ getSession(sessionId) {
38
+ const session = this.sessions.get(sessionId);
39
+ if (!session)
40
+ throw new common_1.NotFoundException('Session not found');
41
+ return session;
42
+ }
43
+ async streamMessage(sessionId, userMessage, res) {
44
+ const session = this.getSession(sessionId);
45
+ res.setHeader('Content-Type', 'text/event-stream');
46
+ res.setHeader('Cache-Control', 'no-cache');
47
+ res.setHeader('Connection', 'keep-alive');
48
+ const send = (data) => res.write(`data: ${JSON.stringify(data)}\n\n`);
49
+ try {
50
+ const project = this.projectRepository.read();
51
+ const projectConnected = project?.status === 'ready';
52
+ let systemPrompt = 'Ты — AI-аналитик Analitoly. Помогаешь анализировать данные из подключённых баз данных. ' +
53
+ 'Если нужны данные из БД — используй инструменты get_schema и execute_query. ' +
54
+ 'Отвечай кратко и по делу.';
55
+ const allowedTools = ['mcp__analitoly__*'];
56
+ if (projectConnected) {
57
+ systemPrompt +=
58
+ ' У тебя есть доступ к коду проекта. Используй get_project_info чтобы узнать детали, ' +
59
+ 'а Read, Glob, Grep для навигации по коду и поиска информации.';
60
+ allowedTools.push('Read', 'Glob', 'Grep');
61
+ }
62
+ const servers = (0, mcp_config_1.buildMcpServers)();
63
+ const options = {
64
+ systemPrompt,
65
+ mcpServers: { analitoly: servers.analitoly },
66
+ allowedTools,
67
+ permissionMode: 'bypassPermissions',
68
+ model: 'claude-sonnet-4-6',
69
+ };
70
+ if (projectConnected) {
71
+ options.cwd = project.localPath;
72
+ }
73
+ if (session.agentSessionId) {
74
+ options.resume = session.agentSessionId;
75
+ }
76
+ for await (const message of (0, claude_agent_sdk_1.query)({ prompt: userMessage, options })) {
77
+ const msg = message;
78
+ if (msg.type === 'system' && msg.subtype === 'init') {
79
+ session.agentSessionId = (msg.session_id ?? msg.sessionId) ?? null;
80
+ continue;
81
+ }
82
+ if (msg.type === 'assistant') {
83
+ const content = msg.message?.content;
84
+ if (Array.isArray(content)) {
85
+ for (const block of content) {
86
+ const b = block;
87
+ if (b.type === 'text') {
88
+ send({ type: 'text_delta', text: b.text });
89
+ }
90
+ else if (b.type === 'tool_use') {
91
+ send({ type: 'tool_call', tool_use_id: b.id, tool: b.name, input: b.input });
92
+ }
93
+ }
94
+ }
95
+ continue;
96
+ }
97
+ if (msg.type === 'user') {
98
+ const userContent = msg.message?.content;
99
+ if (Array.isArray(userContent)) {
100
+ for (const block of userContent) {
101
+ const b = block;
102
+ if (b.type === 'tool_result') {
103
+ let resultText;
104
+ const innerContent = b.content;
105
+ if (Array.isArray(innerContent)) {
106
+ resultText = innerContent
107
+ .filter((c) => c.type === 'text')
108
+ .map((c) => c.text)
109
+ .join('');
110
+ }
111
+ send({
112
+ type: 'tool_result',
113
+ tool_use_id: b.tool_use_id,
114
+ status: 'done',
115
+ result: resultText,
116
+ });
117
+ }
118
+ }
119
+ }
120
+ continue;
121
+ }
122
+ if (msg.type === 'result') {
123
+ const result = msg;
124
+ session.usage.totalCostUsd += result.total_cost_usd ?? 0;
125
+ session.usage.numTurns += result.num_turns ?? 0;
126
+ session.usage.durationMs += result.duration_ms ?? 0;
127
+ const usage = result.usage;
128
+ if (usage) {
129
+ session.usage.inputTokens += usage.input_tokens ?? 0;
130
+ session.usage.outputTokens += usage.output_tokens ?? 0;
131
+ session.usage.cacheReadTokens += usage.cache_read_input_tokens ?? 0;
132
+ session.usage.cacheCreationTokens += usage.cache_creation_input_tokens ?? 0;
133
+ }
134
+ const modelUsage = result.modelUsage;
135
+ if (modelUsage) {
136
+ for (const [model, mu] of Object.entries(modelUsage)) {
137
+ if (!session.usage.modelUsage[model]) {
138
+ session.usage.modelUsage[model] = { inputTokens: 0, outputTokens: 0, costUSD: 0 };
139
+ }
140
+ session.usage.modelUsage[model].inputTokens += mu.inputTokens ?? 0;
141
+ session.usage.modelUsage[model].outputTokens += mu.outputTokens ?? 0;
142
+ session.usage.modelUsage[model].costUSD += mu.costUSD ?? 0;
143
+ }
144
+ }
145
+ continue;
146
+ }
147
+ }
148
+ send({ type: 'done' });
149
+ }
150
+ catch (err) {
151
+ send({ type: 'error', message: String(err) });
152
+ }
153
+ finally {
154
+ res.end();
155
+ }
156
+ }
157
+ getUsage(sessionId) {
158
+ return this.getSession(sessionId).usage;
159
+ }
160
+ deleteSession(sessionId) {
161
+ this.sessions.delete(sessionId);
162
+ }
163
+ };
164
+ exports.ChatService = ChatService;
165
+ exports.ChatService = ChatService = __decorate([
166
+ (0, common_1.Injectable)()
167
+ ], ChatService);
168
+ //# sourceMappingURL=chat.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.service.js","sourceRoot":"","sources":["../../../src/chat/chat.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import { ConnectionService } from './connection.service';
2
+ import { CreateConnectionDto, UpdateConnectionDto, ConnectionType, DashboardChartConfig } from './connection.model';
3
+ export declare class ConnectionController {
4
+ private readonly service;
5
+ constructor(service: ConnectionService);
6
+ getAll(includeDeleted?: string): import("./connection.model").Connection[];
7
+ exportConnections(): import("./connection.model").ExportFile;
8
+ getDashboard(): {
9
+ charts: DashboardChartConfig[];
10
+ };
11
+ saveDashboard(body: {
12
+ charts: DashboardChartConfig[];
13
+ }): {
14
+ charts: DashboardChartConfig[];
15
+ };
16
+ getByType(type: ConnectionType): import("./connection.model").Connection[];
17
+ getById(id: string): import("./connection.model").Connection;
18
+ create(dto: CreateConnectionDto): import("./connection.model").Connection;
19
+ testConfig(body: {
20
+ type: ConnectionType;
21
+ config: any;
22
+ }): Promise<{
23
+ connected: boolean;
24
+ error?: string;
25
+ }>;
26
+ importConnections(body: any): {
27
+ imported: number;
28
+ skipped: number;
29
+ dashboardImported?: boolean;
30
+ contextImported?: boolean;
31
+ };
32
+ update(id: string, dto: UpdateConnectionDto): import("./connection.model").Connection;
33
+ delete(id: string): {
34
+ ok: boolean;
35
+ };
36
+ testConnection(id: string): Promise<{
37
+ connected: boolean;
38
+ error?: string;
39
+ }>;
40
+ activate(id: string): Promise<import("./connection.model").Connection>;
41
+ deactivate(id: string): import("./connection.model").Connection;
42
+ connectProject(id: string): Promise<import("./connection.model").Connection>;
43
+ disconnectProject(id: string): Promise<{
44
+ ok: boolean;
45
+ }>;
46
+ }