@oas-tools/oas-telemetry 0.7.1 → 0.8.0-alpha.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/.env.example +17 -3
- package/README.md +1 -2
- package/dist/cjs/config/bootConfig.cjs +16 -14
- package/dist/cjs/config/config.cjs +120 -125
- package/dist/cjs/config/config.types.cjs +1 -4
- package/dist/cjs/docs/openapi.yaml +158 -4
- package/dist/cjs/index.cjs +27 -30
- package/dist/cjs/routesManager.cjs +62 -70
- package/dist/cjs/telemetry/custom-implementations/exporters/DiskLogExporter.cjs +121 -0
- package/dist/cjs/telemetry/custom-implementations/exporters/DiskMetricExporter.cjs +101 -0
- package/dist/cjs/telemetry/custom-implementations/exporters/DiskTraceExporter.cjs +103 -0
- package/dist/cjs/telemetry/custom-implementations/exporters/InMemoryDbLogExporter.cjs +194 -190
- package/dist/cjs/telemetry/custom-implementations/exporters/InMemoryDbMetricExporter.cjs +147 -99
- package/dist/cjs/telemetry/custom-implementations/exporters/InMemoryDbSpanExporter.cjs +143 -116
- package/dist/cjs/telemetry/custom-implementations/exporters/MultiMetricExporter.cjs +57 -0
- package/dist/cjs/telemetry/custom-implementations/instrumentations/logsInstrumentation.cjs +92 -0
- package/dist/cjs/telemetry/custom-implementations/metrics/tsdb/Chunk.cjs +159 -0
- package/dist/cjs/telemetry/custom-implementations/metrics/tsdb/Series.cjs +168 -0
- package/dist/cjs/telemetry/custom-implementations/metrics/tsdb/SeriesRegistry.cjs +392 -0
- package/dist/cjs/telemetry/custom-implementations/metrics/tsdb/types.cjs +2 -0
- package/dist/cjs/telemetry/custom-implementations/metrics/tsdb/utils.cjs +77 -0
- package/dist/cjs/telemetry/custom-implementations/processors/dynamicMultiLogProcessor.cjs +65 -63
- package/dist/cjs/telemetry/custom-implementations/processors/dynamicMultiSpanProcessor.cjs +63 -62
- package/dist/cjs/telemetry/custom-implementations/utils/circular.cjs +47 -47
- package/dist/cjs/telemetry/custom-implementations/wrappers.cjs +209 -138
- package/dist/cjs/telemetry/initializeTelemetry.cjs +35 -91
- package/dist/cjs/telemetry/persistence/DiskImporter.cjs +85 -0
- package/dist/cjs/telemetry/persistence/DiskUtils.cjs +61 -0
- package/dist/cjs/telemetry/persistence/DiskWriter.cjs +66 -0
- package/dist/cjs/telemetry/telemetryConfigurator.cjs +139 -72
- package/dist/cjs/telemetry/telemetryRegistry.cjs +45 -31
- package/dist/cjs/tlm-ai/agent.cjs +49 -64
- package/dist/cjs/tlm-ai/aiController.cjs +54 -76
- package/dist/cjs/tlm-ai/aiRoutes.cjs +17 -20
- package/dist/cjs/tlm-ai/aiService.cjs +91 -95
- package/dist/cjs/tlm-ai/tools.cjs +177 -174
- package/dist/cjs/tlm-auth/authController.cjs +80 -123
- package/dist/cjs/tlm-auth/authMiddleware.cjs +25 -30
- package/dist/cjs/tlm-auth/authRoutes.cjs +11 -14
- package/dist/cjs/tlm-log/logController.cjs +135 -116
- package/dist/cjs/tlm-log/logRoutes.cjs +19 -20
- package/dist/cjs/tlm-log/logService.cjs +29 -0
- package/dist/cjs/tlm-metric/metricsController.cjs +154 -122
- package/dist/cjs/tlm-metric/metricsRoutes.cjs +22 -20
- package/dist/cjs/tlm-metric/metricsService.cjs +26 -0
- package/dist/cjs/tlm-plugin/pluginController.cjs +128 -140
- package/dist/cjs/tlm-plugin/pluginProcess.cjs +89 -94
- package/dist/cjs/tlm-plugin/pluginRoutes.cjs +11 -14
- package/dist/cjs/tlm-plugin/pluginService.cjs +73 -74
- package/dist/cjs/tlm-trace/traceController.cjs +140 -123
- package/dist/cjs/tlm-trace/traceRoutes.cjs +19 -20
- package/dist/cjs/tlm-trace/traceService.cjs +29 -0
- package/dist/cjs/tlm-ui/uiRoutes.cjs +63 -32
- package/dist/cjs/tlm-util/utilController.cjs +68 -70
- package/dist/cjs/tlm-util/utilRoutes.cjs +51 -63
- package/dist/cjs/types/index.cjs +2 -5
- package/dist/cjs/utils/logger.cjs +38 -43
- package/dist/cjs/utils/regexUtils.cjs +22 -22
- package/dist/esm/config/bootConfig.js +5 -2
- package/dist/esm/config/config.js +9 -2
- package/dist/esm/docs/openapi.yaml +158 -4
- package/dist/esm/index.js +9 -8
- package/dist/esm/routesManager.js +6 -10
- package/dist/esm/telemetry/custom-implementations/exporters/DiskLogExporter.js +114 -0
- package/dist/esm/telemetry/custom-implementations/exporters/DiskMetricExporter.js +94 -0
- package/dist/esm/telemetry/custom-implementations/exporters/DiskTraceExporter.js +96 -0
- package/dist/esm/telemetry/custom-implementations/exporters/InMemoryDbLogExporter.js +38 -7
- package/dist/esm/telemetry/custom-implementations/exporters/InMemoryDbMetricExporter.js +107 -48
- package/dist/esm/telemetry/custom-implementations/exporters/InMemoryDbSpanExporter.js +60 -29
- package/dist/esm/telemetry/custom-implementations/exporters/MultiMetricExporter.js +53 -0
- package/dist/esm/telemetry/custom-implementations/instrumentations/logsInstrumentation.js +85 -0
- package/dist/esm/telemetry/custom-implementations/metrics/tsdb/Chunk.js +155 -0
- package/dist/esm/telemetry/custom-implementations/metrics/tsdb/Series.js +164 -0
- package/dist/esm/telemetry/custom-implementations/metrics/tsdb/SeriesRegistry.js +385 -0
- package/dist/esm/telemetry/custom-implementations/metrics/tsdb/types.js +1 -0
- package/dist/esm/telemetry/custom-implementations/metrics/tsdb/utils.js +74 -0
- package/dist/esm/telemetry/custom-implementations/processors/dynamicMultiLogProcessor.js +2 -1
- package/dist/esm/telemetry/custom-implementations/processors/dynamicMultiSpanProcessor.js +1 -1
- package/dist/esm/telemetry/custom-implementations/wrappers.js +77 -6
- package/dist/esm/telemetry/initializeTelemetry.js +27 -69
- package/dist/esm/telemetry/persistence/DiskImporter.js +78 -0
- package/dist/esm/telemetry/persistence/DiskUtils.js +51 -0
- package/dist/esm/telemetry/persistence/DiskWriter.js +59 -0
- package/dist/esm/telemetry/telemetryConfigurator.js +110 -39
- package/dist/esm/telemetry/telemetryRegistry.js +12 -1
- package/dist/esm/tlm-ai/agent.js +5 -3
- package/dist/esm/tlm-ai/aiController.js +3 -3
- package/dist/esm/tlm-ai/aiService.js +6 -2
- package/dist/esm/tlm-ai/tools.js +5 -9
- package/dist/esm/tlm-auth/authController.js +3 -2
- package/dist/esm/tlm-log/logController.js +62 -18
- package/dist/esm/tlm-log/logRoutes.js +3 -1
- package/dist/esm/tlm-log/logService.js +25 -0
- package/dist/esm/tlm-metric/metricsController.js +116 -50
- package/dist/esm/tlm-metric/metricsRoutes.js +8 -3
- package/dist/esm/tlm-metric/metricsService.js +22 -0
- package/dist/esm/tlm-plugin/pluginController.js +6 -11
- package/dist/esm/tlm-plugin/pluginService.js +2 -4
- package/dist/esm/tlm-trace/traceController.js +87 -36
- package/dist/esm/tlm-trace/traceRoutes.js +3 -1
- package/dist/esm/tlm-trace/traceService.js +25 -0
- package/dist/esm/tlm-ui/uiRoutes.js +5 -5
- package/dist/esm/tlm-util/utilController.js +3 -9
- package/dist/esm/tlm-util/utilRoutes.js +2 -2
- package/dist/types/config/bootConfig.d.ts +3 -0
- package/dist/types/config/config.d.ts +48 -7
- package/dist/types/config/config.types.d.ts +7 -0
- package/dist/types/index.d.ts +2 -3
- package/dist/types/telemetry/custom-implementations/exporters/DiskLogExporter.d.ts +24 -0
- package/dist/types/telemetry/custom-implementations/exporters/DiskMetricExporter.d.ts +23 -0
- package/dist/types/telemetry/custom-implementations/exporters/DiskTraceExporter.d.ts +23 -0
- package/dist/types/telemetry/custom-implementations/exporters/InMemoryDbLogExporter.d.ts +3 -1
- package/dist/types/telemetry/custom-implementations/exporters/InMemoryDbMetricExporter.d.ts +56 -15
- package/dist/types/telemetry/custom-implementations/exporters/InMemoryDbSpanExporter.d.ts +8 -4
- package/dist/types/telemetry/custom-implementations/exporters/MultiMetricExporter.d.ts +9 -0
- package/dist/types/telemetry/custom-implementations/instrumentations/logsInstrumentation.d.ts +23 -0
- package/dist/types/telemetry/custom-implementations/metrics/tsdb/Chunk.d.ts +49 -0
- package/dist/types/telemetry/custom-implementations/metrics/tsdb/Series.d.ts +67 -0
- package/dist/types/telemetry/custom-implementations/metrics/tsdb/SeriesRegistry.d.ts +69 -0
- package/dist/types/telemetry/custom-implementations/metrics/tsdb/types.d.ts +68 -0
- package/dist/types/telemetry/custom-implementations/metrics/tsdb/utils.d.ts +21 -0
- package/dist/types/telemetry/custom-implementations/processors/dynamicMultiLogProcessor.d.ts +2 -2
- package/dist/types/telemetry/custom-implementations/wrappers.d.ts +2 -1
- package/dist/types/telemetry/persistence/DiskImporter.d.ts +17 -0
- package/dist/types/telemetry/persistence/DiskUtils.d.ts +11 -0
- package/dist/types/telemetry/persistence/DiskWriter.d.ts +21 -0
- package/dist/types/telemetry/telemetryConfigurator.d.ts +1 -1
- package/dist/types/telemetry/telemetryRegistry.d.ts +8 -0
- package/dist/types/tlm-ai/agent.d.ts +1 -1
- package/dist/types/tlm-ai/aiService.d.ts +1 -1
- package/dist/types/tlm-log/logController.d.ts +2 -0
- package/dist/types/tlm-log/logService.d.ts +4 -0
- package/dist/types/tlm-metric/metricsController.d.ts +11 -2
- package/dist/types/tlm-metric/metricsService.d.ts +6 -0
- package/dist/types/tlm-trace/traceController.d.ts +9 -7
- package/dist/types/tlm-trace/traceService.d.ts +4 -0
- package/dist/types/types/index.d.ts +2 -2
- package/dist/ui/assets/{ApiDocsPage-C_VVPPHa.js → ApiDocsPage-DTCgVbW2.js} +2 -2
- package/dist/ui/assets/CollapsibleCard-lWgfsaAn.js +1 -0
- package/dist/ui/assets/DevToolsPage-DEhf8CBy.js +1 -0
- package/dist/ui/assets/LandingPage-CfEHCDxY.js +6 -0
- package/dist/ui/assets/LogsPage-DFDKRuGH.js +1 -0
- package/dist/ui/assets/{NotFoundPage-B3quk3P1.js → NotFoundPage-DCy0DcV7.js} +1 -1
- package/dist/ui/assets/PluginCreatePage-BawZ5_-h.js +50 -0
- package/dist/ui/assets/PluginPage-D3FmgU7d.js +27 -0
- package/dist/ui/assets/TraceSpansPage-D0_L45Rb.js +6 -0
- package/dist/ui/assets/VirtualizedListPanel-q605n9He.js +16 -0
- package/dist/ui/assets/alert-DBAFshSi.js +1133 -0
- package/dist/ui/assets/badge-DGNBtnxU.js +1 -0
- package/dist/ui/assets/{chevron-down-CPsvsmqj.js → chevron-down-CFEqYzGC.js} +1 -1
- package/dist/ui/assets/{chevron-up-Df9jMo1X.js → chevron-up-lDnFwAJq.js} +1 -1
- package/dist/ui/assets/{circle-alert-DOPQPvU8.js → circle-alert-BpYUuRs7.js} +1 -1
- package/dist/ui/assets/dialog-1dRyI6SC.js +15 -0
- package/dist/ui/assets/index-C7RfU6hR.js +1 -0
- package/dist/ui/assets/index-C9dDYIpd.js +305 -0
- package/dist/ui/assets/index-D6f1KjWV.css +1 -0
- package/dist/ui/assets/info-CuJQWoBU.js +6 -0
- package/dist/ui/assets/{input-Dzvg_ZEZ.js → input-BLXaar0X.js} +1 -1
- package/dist/ui/assets/label-DfAcltsl.js +1 -0
- package/dist/ui/assets/{loader-circle-CrvlRy5o.js → loader-circle-B7oLyPsi.js} +1 -1
- package/dist/ui/assets/{loginPage-qa4V-B70.js → loginPage-DswZvOJ-.js} +1 -1
- package/dist/ui/assets/metrics-page-BhtXrfUW.js +31 -0
- package/dist/ui/assets/metrics-page-D1GxaB_c.css +1 -0
- package/dist/ui/assets/popover-IDker85U.js +11 -0
- package/dist/ui/assets/select-B8y5IidE.js +6 -0
- package/dist/ui/assets/separator-B6EzrxYY.js +6 -0
- package/dist/ui/assets/severityOptions-DtCsaAZK.js +11 -0
- package/dist/ui/assets/square-pen-D_oecB1x.js +6 -0
- package/dist/ui/assets/switch-Dqo0XkRD.js +1 -0
- package/dist/ui/assets/trace-DJq1miYa.js +1 -0
- package/dist/ui/assets/upload-prIohEdY.js +11 -0
- package/dist/ui/assets/{utilService-DNyqzwj0.js → utilService-C8TJKLqs.js} +1 -1
- package/dist/ui/assets/wand-sparkles-OgXuzsSx.js +6 -0
- package/dist/ui/index.html +2 -2
- package/package.json +44 -49
- package/dist/ui/assets/CollapsibleCard-B3KR_8mL.js +0 -1
- package/dist/ui/assets/DevToolsPage-OyZcDcmw.js +0 -1
- package/dist/ui/assets/LandingPage-CppFBA6K.js +0 -6
- package/dist/ui/assets/LogsPage-9Fq8GArS.js +0 -26
- package/dist/ui/assets/PluginCreatePage-X_aCH4t4.js +0 -50
- package/dist/ui/assets/PluginPage-DMDSihrZ.js +0 -27
- package/dist/ui/assets/alert-jQ9HCPIf.js +0 -1133
- package/dist/ui/assets/badge-CNq0-mH5.js +0 -1
- package/dist/ui/assets/card-DFAwwhN3.js +0 -1
- package/dist/ui/assets/index-BkD6DijD.js +0 -15
- package/dist/ui/assets/index-CERGVYZK.js +0 -292
- package/dist/ui/assets/index-CSIPf9qw.css +0 -1
- package/dist/ui/assets/label-DuVnkZ4q.js +0 -1
- package/dist/ui/assets/select-DhS8YUtJ.js +0 -1
- package/dist/ui/assets/separator-isK4chBP.js +0 -6
- package/dist/ui/assets/severityOptions-O38dSOfk.js +0 -11
- package/dist/ui/assets/switch-Z3mImG9n.js +0 -1
- package/dist/ui/assets/tabs-_77MUUQe.js +0 -16
- package/dist/ui/assets/upload-C1LT4Gkb.js +0 -16
|
@@ -1,92 +1,70 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.createConversation = createConversation;
|
|
7
|
-
exports.deleteConversation = deleteConversation;
|
|
8
|
-
exports.getConversationHistory = getConversationHistory;
|
|
9
4
|
exports.listConversations = listConversations;
|
|
5
|
+
exports.getConversationHistory = getConversationHistory;
|
|
6
|
+
exports.deleteConversation = deleteConversation;
|
|
10
7
|
exports.sendMessage = sendMessage;
|
|
11
|
-
|
|
8
|
+
const aiService_js_1 = require("./aiService.cjs");
|
|
12
9
|
async function createConversation(req, res) {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}
|
|
20
|
-
}
|
|
10
|
+
try {
|
|
11
|
+
const conversation = (0, aiService_js_1.getAiService)().createConversation();
|
|
12
|
+
res.status(201).json(conversation);
|
|
13
|
+
}
|
|
14
|
+
catch (err) {
|
|
15
|
+
res.status(500).json({ error: err.message });
|
|
16
|
+
}
|
|
21
17
|
}
|
|
22
18
|
async function listConversations(req, res) {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
}
|
|
31
|
-
}
|
|
19
|
+
try {
|
|
20
|
+
// Only return id and name for each conversation
|
|
21
|
+
const conversations = (0, aiService_js_1.getAiService)().listConversationsMinimal();
|
|
22
|
+
res.json(conversations);
|
|
23
|
+
}
|
|
24
|
+
catch (err) {
|
|
25
|
+
res.status(500).json({ error: err.message });
|
|
26
|
+
}
|
|
32
27
|
}
|
|
33
28
|
async function getConversationHistory(req, res) {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
29
|
+
try {
|
|
30
|
+
const conversationId = req.params.conversationId;
|
|
31
|
+
const conversation = (0, aiService_js_1.getAiService)().getConversation(conversationId);
|
|
32
|
+
if (!conversation) {
|
|
33
|
+
res.status(404).json({ error: 'Not found' });
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
res.json(conversation);
|
|
37
|
+
}
|
|
38
|
+
catch (err) {
|
|
39
|
+
res.status(500).json({ error: err.message });
|
|
44
40
|
}
|
|
45
|
-
res.json(conversation);
|
|
46
|
-
} catch (err) {
|
|
47
|
-
res.status(500).json({
|
|
48
|
-
error: err.message
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
41
|
}
|
|
52
42
|
async function deleteConversation(req, res) {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
43
|
+
try {
|
|
44
|
+
const conversationId = req.params.conversationId;
|
|
45
|
+
const deleted = (0, aiService_js_1.getAiService)().deleteConversation(conversationId);
|
|
46
|
+
if (!deleted) {
|
|
47
|
+
res.status(404).json({ error: 'Not found' });
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
res.status(204).send();
|
|
51
|
+
}
|
|
52
|
+
catch (err) {
|
|
53
|
+
res.status(500).json({ error: err.message });
|
|
63
54
|
}
|
|
64
|
-
res.status(204).send();
|
|
65
|
-
} catch (err) {
|
|
66
|
-
res.status(500).json({
|
|
67
|
-
error: err.message
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
55
|
}
|
|
71
56
|
async function sendMessage(req, res) {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
57
|
+
try {
|
|
58
|
+
const conversationId = req.params.conversationId;
|
|
59
|
+
const { content } = req.body;
|
|
60
|
+
if (!content) {
|
|
61
|
+
res.status(400).json({ error: 'Missing content' });
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
const messages = await (0, aiService_js_1.getAiService)().sendMessage(conversationId, content);
|
|
65
|
+
res.json(messages);
|
|
66
|
+
}
|
|
67
|
+
catch (err) {
|
|
68
|
+
res.status(500).json({ error: err.message });
|
|
84
69
|
}
|
|
85
|
-
|
|
86
|
-
res.json(messages);
|
|
87
|
-
} catch (err) {
|
|
88
|
-
res.status(500).json({
|
|
89
|
-
error: err.message
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
}
|
|
70
|
+
}
|
|
@@ -1,23 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.getAIRoutes = void 0;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const getAIRoutes = oasTlmConfig => {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
4
|
+
const express_1 = require("express");
|
|
5
|
+
const aiController_js_1 = require("./aiController.cjs");
|
|
6
|
+
const aiService_js_1 = require("./aiService.cjs");
|
|
7
|
+
const getAIRoutes = (oasTlmConfig) => {
|
|
8
|
+
const router = (0, express_1.Router)();
|
|
9
|
+
(0, aiService_js_1.configureAiService)(oasTlmConfig); //oasTlmConfig.ai.openAIKey
|
|
10
|
+
router.get('/chat/health', (req, res) => {
|
|
11
|
+
res.status(200).send('AI service is healthy');
|
|
12
|
+
});
|
|
13
|
+
router.get('/chat', aiController_js_1.listConversations);
|
|
14
|
+
router.post('/chat', aiController_js_1.createConversation);
|
|
15
|
+
router.get('/chat/:conversationId', aiController_js_1.getConversationHistory);
|
|
16
|
+
router.post('/chat/:conversationId/message', aiController_js_1.sendMessage);
|
|
17
|
+
router.delete('/chat/:conversationId', aiController_js_1.deleteConversation);
|
|
18
|
+
return router;
|
|
22
19
|
};
|
|
23
|
-
exports.getAIRoutes = getAIRoutes;
|
|
20
|
+
exports.getAIRoutes = getAIRoutes;
|
|
@@ -1,109 +1,105 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
});
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.configureAiService = configureAiService;
|
|
7
7
|
exports.getAiService = getAiService;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
8
|
+
const openai_1 = __importDefault(require("openai"));
|
|
9
|
+
const agent_js_1 = require("./agent.cjs");
|
|
11
10
|
class AIService {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
timestamp: new Date().toISOString(),
|
|
45
|
-
content: "This is a telemetry chat. Focus your replies strictly on the topics and instructions defined by the system prompts and the available tools. Do not answer outside of these boundaries. Reply in the same language as the question."
|
|
46
|
-
});
|
|
47
|
-
if (this.extraPrompts.length > 0) {
|
|
48
|
-
this.extraPrompts.forEach(prompt => {
|
|
11
|
+
config;
|
|
12
|
+
conversations = new Map();
|
|
13
|
+
openai;
|
|
14
|
+
model;
|
|
15
|
+
extraPrompts;
|
|
16
|
+
constructor(config) {
|
|
17
|
+
this.config = config;
|
|
18
|
+
this.openai = new openai_1.default({
|
|
19
|
+
apiKey: this.config.apiKey,
|
|
20
|
+
});
|
|
21
|
+
this.model = config.model;
|
|
22
|
+
this.extraPrompts = config.extraPrompts || [];
|
|
23
|
+
}
|
|
24
|
+
createConversation() {
|
|
25
|
+
const id = Math.random().toString(36).substring(2, 15);
|
|
26
|
+
const conversation = { id, messages: [] };
|
|
27
|
+
this.conversations.set(id, conversation);
|
|
28
|
+
return conversation;
|
|
29
|
+
}
|
|
30
|
+
listConversations() {
|
|
31
|
+
return Array.from(this.conversations.values());
|
|
32
|
+
}
|
|
33
|
+
getConversation(id) {
|
|
34
|
+
return this.conversations.get(id);
|
|
35
|
+
}
|
|
36
|
+
deleteConversation(id) {
|
|
37
|
+
return this.conversations.delete(id);
|
|
38
|
+
}
|
|
39
|
+
async sendMessage(conversationId, content, model) {
|
|
40
|
+
const conversation = this.conversations.get(conversationId);
|
|
41
|
+
if (!conversation)
|
|
42
|
+
throw new Error('Conversation not found');
|
|
49
43
|
conversation.messages.push({
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
44
|
+
role: 'system',
|
|
45
|
+
timestamp: new Date().toISOString(),
|
|
46
|
+
content: "This is a telemetry chat. Focus your replies strictly on the topics and instructions defined by the system prompts and the available tools. Do not answer outside of these boundaries. Reply in the same language as the question."
|
|
53
47
|
});
|
|
54
|
-
|
|
48
|
+
if (this.extraPrompts.length > 0) {
|
|
49
|
+
this.extraPrompts.forEach(prompt => {
|
|
50
|
+
conversation.messages.push({ role: 'system', content: prompt, timestamp: new Date().toISOString() });
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
conversation.messages.push({ role: 'user', content, timestamp: new Date().toISOString() });
|
|
54
|
+
// Set conversation name if not set
|
|
55
|
+
if (!('name' in conversation) || !conversation.name) {
|
|
56
|
+
conversation.name = content.slice(0, 30);
|
|
57
|
+
}
|
|
58
|
+
// Use the agent function with tools
|
|
59
|
+
// Internaly pushes new messages to conversation.messages
|
|
60
|
+
const currentMessagesCount = conversation.messages.length;
|
|
61
|
+
await (0, agent_js_1.agent)(this.openai, conversation.messages, model || this.model);
|
|
62
|
+
// Return the last assistant message (the one just added by agent)
|
|
63
|
+
const generatedMessages = conversation.messages.slice(currentMessagesCount);
|
|
64
|
+
return generatedMessages;
|
|
55
65
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
// Set conversation name if not set
|
|
62
|
-
if (!('name' in conversation) || !conversation.name) {
|
|
63
|
-
conversation.name = content.slice(0, 30);
|
|
66
|
+
listConversationsMinimal() {
|
|
67
|
+
return Array.from(this.conversations.values()).map(c => ({
|
|
68
|
+
id: c.id,
|
|
69
|
+
name: c.name,
|
|
70
|
+
}));
|
|
64
71
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
async listModels() {
|
|
80
|
-
const {
|
|
81
|
-
data
|
|
82
|
-
} = await this.openai.models.list();
|
|
83
|
-
return data.map(m => m.id).sort();
|
|
84
|
-
}
|
|
85
|
-
async isValidModel(modelId) {
|
|
86
|
-
try {
|
|
87
|
-
await this.openai.models.retrieve(modelId);
|
|
88
|
-
return true;
|
|
89
|
-
} catch {
|
|
90
|
-
return false;
|
|
72
|
+
async listModels() {
|
|
73
|
+
const { data } = await this.openai.models.list();
|
|
74
|
+
return data
|
|
75
|
+
.map(m => m.id)
|
|
76
|
+
.sort();
|
|
77
|
+
}
|
|
78
|
+
async isValidModel(modelId) {
|
|
79
|
+
try {
|
|
80
|
+
await this.openai.models.retrieve(modelId);
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
91
86
|
}
|
|
92
|
-
}
|
|
93
87
|
}
|
|
94
88
|
let aiService;
|
|
95
89
|
function configureAiService(config) {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
90
|
+
const openAIKey = config.ai?.openAIKey;
|
|
91
|
+
const model = config.ai.openAIModel;
|
|
92
|
+
const extraPrompts = config.ai.extraContextPrompts;
|
|
93
|
+
if (!openAIKey)
|
|
94
|
+
throw new Error('OpenAI API key is required');
|
|
95
|
+
aiService = new AIService({
|
|
96
|
+
apiKey: openAIKey,
|
|
97
|
+
model,
|
|
98
|
+
extraPrompts
|
|
99
|
+
});
|
|
105
100
|
}
|
|
106
101
|
function getAiService() {
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
102
|
+
if (!aiService)
|
|
103
|
+
throw new Error('AI Service not configured');
|
|
104
|
+
return aiService;
|
|
105
|
+
}
|