memento-mcp-server 2.2.1 → 2.2.2
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/dist/node_modules/@memento/core/dist/database/schema.sql +4 -15
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/category-quality-aggregator.d.ts.map +1 -1
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/category-quality-aggregator.js +16 -9
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/category-quality-aggregator.js.map +1 -1
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/pair-rank-outcome.d.ts +30 -0
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/pair-rank-outcome.d.ts.map +1 -0
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/pair-rank-outcome.js +56 -0
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/pair-rank-outcome.js.map +1 -0
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/search-quality-benchmark-fixtures.d.ts +6 -0
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/search-quality-benchmark-fixtures.d.ts.map +1 -1
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/search-quality-benchmark-fixtures.js +11 -0
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/search-quality-benchmark-fixtures.js.map +1 -1
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/search-quality-metrics.d.ts +2 -0
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/search-quality-metrics.d.ts.map +1 -1
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/search-quality-metrics.js.map +1 -1
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/search-quality-review-verifier.d.ts +4 -0
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/search-quality-review-verifier.d.ts.map +1 -1
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/search-quality-review-verifier.js +71 -1
- package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/search-quality-review-verifier.js.map +1 -1
- package/dist/node_modules/@memento/core/dist/domains/search/repositories/vector-performance.repository.d.ts.map +1 -1
- package/dist/node_modules/@memento/core/dist/domains/search/repositories/vector-performance.repository.js +0 -1
- package/dist/node_modules/@memento/core/dist/domains/search/repositories/vector-performance.repository.js.map +1 -1
- package/dist/node_modules/@memento/core/dist/domains/search/repositories/vector-search/vector-search-availability.d.ts.map +1 -1
- package/dist/node_modules/@memento/core/dist/domains/search/repositories/vector-search/vector-search-availability.js +0 -1
- package/dist/node_modules/@memento/core/dist/domains/search/repositories/vector-search/vector-search-availability.js.map +1 -1
- package/dist/node_modules/@memento/core/dist/domains/search/repositories/vector-search/vector-search-runtime-context.d.ts +1 -1
- package/dist/node_modules/@memento/core/dist/domains/search/repositories/vector-search/vector-search-runtime-context.d.ts.map +1 -1
- package/dist/node_modules/@memento/core/dist/domains/search/repositories/vector-search/vector-search-runtime-context.js +2 -3
- package/dist/node_modules/@memento/core/dist/domains/search/repositories/vector-search/vector-search-runtime-context.js.map +1 -1
- package/dist/node_modules/@memento/core/dist/infrastructure/database/sqlite/migration/dependency-validator.d.ts.map +1 -1
- package/dist/node_modules/@memento/core/dist/infrastructure/database/sqlite/migration/dependency-validator.js +0 -1
- package/dist/node_modules/@memento/core/dist/infrastructure/database/sqlite/migration/dependency-validator.js.map +1 -1
- package/dist/node_modules/@memento/core/dist/infrastructure/database/sqlite/migration/migrations/045-vec-orphan-cleanup.d.ts.map +1 -1
- package/dist/node_modules/@memento/core/dist/infrastructure/database/sqlite/migration/migrations/045-vec-orphan-cleanup.js +0 -1
- package/dist/node_modules/@memento/core/dist/infrastructure/database/sqlite/migration/migrations/045-vec-orphan-cleanup.js.map +1 -1
- package/dist/node_modules/@memento/core/dist/infrastructure/database/sqlite/migration/migrations/053-narrow-legacy-vec-allowlist.d.ts.map +1 -1
- package/dist/node_modules/@memento/core/dist/infrastructure/database/sqlite/migration/migrations/053-narrow-legacy-vec-allowlist.js +30 -20
- package/dist/node_modules/@memento/core/dist/infrastructure/database/sqlite/migration/migrations/053-narrow-legacy-vec-allowlist.js.map +1 -1
- package/dist/node_modules/@memento/core/dist/infrastructure/database/sqlite/migration/migrations/055-drop-redundant-relation-indexes.d.ts +21 -0
- package/dist/node_modules/@memento/core/dist/infrastructure/database/sqlite/migration/migrations/055-drop-redundant-relation-indexes.d.ts.map +1 -0
- package/dist/node_modules/@memento/core/dist/infrastructure/database/sqlite/migration/migrations/055-drop-redundant-relation-indexes.js +48 -0
- package/dist/node_modules/@memento/core/dist/infrastructure/database/sqlite/migration/migrations/055-drop-redundant-relation-indexes.js.map +1 -0
- package/dist/node_modules/@memento/core/dist/infrastructure/database/sqlite/migration/migrations/056-drop-legacy-memory-item-vec.d.ts +20 -0
- package/dist/node_modules/@memento/core/dist/infrastructure/database/sqlite/migration/migrations/056-drop-legacy-memory-item-vec.d.ts.map +1 -0
- package/dist/node_modules/@memento/core/dist/infrastructure/database/sqlite/migration/migrations/056-drop-legacy-memory-item-vec.js +52 -0
- package/dist/node_modules/@memento/core/dist/infrastructure/database/sqlite/migration/migrations/056-drop-legacy-memory-item-vec.js.map +1 -0
- package/dist/node_modules/@memento/core/dist/infrastructure/database/sqlite/vec-schema.d.ts.map +1 -1
- package/dist/node_modules/@memento/core/dist/infrastructure/database/sqlite/vec-schema.js +9 -6
- package/dist/node_modules/@memento/core/dist/infrastructure/database/sqlite/vec-schema.js.map +1 -1
- package/dist/node_modules/@memento/core/dist/shared/config/vector-search.config.js +2 -2
- package/dist/node_modules/@memento/core/dist/shared/config/vector-search.config.js.map +1 -1
- package/dist/node_modules/@memento/core/dist/shared/types/benchmark.types.d.ts +6 -3
- package/dist/node_modules/@memento/core/dist/shared/types/benchmark.types.d.ts.map +1 -1
- package/dist/node_modules/@memento/core/dist/shared/types/benchmark.types.js +5 -9
- package/dist/node_modules/@memento/core/dist/shared/types/benchmark.types.js.map +1 -1
- package/dist/node_modules/@memento/core/dist/shared/utils/sql-security-validator.d.ts +2 -2
- package/dist/node_modules/@memento/core/dist/shared/utils/sql-security-validator.d.ts.map +1 -1
- package/dist/node_modules/@memento/core/dist/shared/utils/sql-security-validator.js +2 -7
- package/dist/node_modules/@memento/core/dist/shared/utils/sql-security-validator.js.map +1 -1
- package/dist/node_modules/@memento/core/package.json +1 -1
- package/dist/server/routes/admin/admin-memory-review.routes.d.ts.map +1 -1
- package/dist/server/routes/admin/admin-memory-review.routes.js +53 -26
- package/dist/server/routes/admin/admin-memory-review.routes.js.map +1 -1
- package/dist/server/routes/admin/admin-relations.routes.d.ts.map +1 -1
- package/dist/server/routes/admin/admin-relations.routes.js +66 -102
- package/dist/server/routes/admin/admin-relations.routes.js.map +1 -1
- package/dist/server/routes/admin/admin-stats-and-health.routes.d.ts.map +1 -1
- package/dist/server/routes/admin/admin-stats-and-health.routes.js +49 -22
- package/dist/server/routes/admin/admin-stats-and-health.routes.js.map +1 -1
- package/dist/server/routes/admin/admin-telemetry.routes.d.ts.map +1 -1
- package/dist/server/routes/admin/admin-telemetry.routes.js +53 -44
- package/dist/server/routes/admin/admin-telemetry.routes.js.map +1 -1
- package/dist/server/routes/admin/admin-tools.routes.d.ts.map +1 -1
- package/dist/server/routes/admin/admin-tools.routes.js +51 -62
- package/dist/server/routes/admin/admin-tools.routes.js.map +1 -1
- package/dist/server/routes/api.routes.d.ts.map +1 -1
- package/dist/server/routes/api.routes.js +26 -21
- package/dist/server/routes/api.routes.js.map +1 -1
- package/dist/server/routes/quality.routes.d.ts.map +1 -1
- package/dist/server/routes/quality.routes.js +189 -178
- package/dist/server/routes/quality.routes.js.map +1 -1
- package/package.json +1 -1
|
@@ -2,11 +2,14 @@
|
|
|
2
2
|
* Admin: 메모리 정리, 통계(망각/성능/공고화), DB 최적화, 에러/알림 스텁
|
|
3
3
|
*/
|
|
4
4
|
import { logger } from '@memento/core';
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
function databaseUnavailable(res) {
|
|
6
|
+
return res.status(500).json({ error: '데이터베이스가 연결되지 않았습니다' });
|
|
7
|
+
}
|
|
8
|
+
function postMemoryCleanup(db) {
|
|
9
|
+
return async (_req, res) => {
|
|
7
10
|
try {
|
|
8
11
|
if (!db) {
|
|
9
|
-
return res
|
|
12
|
+
return databaseUnavailable(res);
|
|
10
13
|
}
|
|
11
14
|
const result = await db.prepare(`
|
|
12
15
|
DELETE FROM memory_item
|
|
@@ -29,11 +32,13 @@ export function registerAdminStatsAndHealthRoutes(router, db, serverServices) {
|
|
|
29
32
|
message: error instanceof Error ? error.message : 'Unknown error'
|
|
30
33
|
});
|
|
31
34
|
}
|
|
32
|
-
}
|
|
33
|
-
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
function getForgettingStats(db) {
|
|
38
|
+
return async (_req, res) => {
|
|
34
39
|
try {
|
|
35
40
|
if (!db) {
|
|
36
|
-
return res
|
|
41
|
+
return databaseUnavailable(res);
|
|
37
42
|
}
|
|
38
43
|
const stats = await db.prepare(`
|
|
39
44
|
SELECT
|
|
@@ -59,11 +64,13 @@ export function registerAdminStatsAndHealthRoutes(router, db, serverServices) {
|
|
|
59
64
|
message: error instanceof Error ? error.message : 'Unknown error'
|
|
60
65
|
});
|
|
61
66
|
}
|
|
62
|
-
}
|
|
63
|
-
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
function getPerformanceStats(db) {
|
|
70
|
+
return async (_req, res) => {
|
|
64
71
|
try {
|
|
65
72
|
if (!db) {
|
|
66
|
-
return res
|
|
73
|
+
return databaseUnavailable(res);
|
|
67
74
|
}
|
|
68
75
|
const stats = await db.prepare(`
|
|
69
76
|
SELECT
|
|
@@ -90,11 +97,13 @@ export function registerAdminStatsAndHealthRoutes(router, db, serverServices) {
|
|
|
90
97
|
message: error instanceof Error ? error.message : 'Unknown error'
|
|
91
98
|
});
|
|
92
99
|
}
|
|
93
|
-
}
|
|
94
|
-
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
function getConsolidationStats(db, serverServices) {
|
|
103
|
+
return async (req, res) => {
|
|
95
104
|
try {
|
|
96
105
|
if (!db) {
|
|
97
|
-
return res
|
|
106
|
+
return databaseUnavailable(res);
|
|
98
107
|
}
|
|
99
108
|
const telemetry = serverServices?.telemetryService;
|
|
100
109
|
if (!telemetry) {
|
|
@@ -119,11 +128,13 @@ export function registerAdminStatsAndHealthRoutes(router, db, serverServices) {
|
|
|
119
128
|
message: error instanceof Error ? error.message : 'Unknown error'
|
|
120
129
|
});
|
|
121
130
|
}
|
|
122
|
-
}
|
|
123
|
-
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
function postDatabaseOptimize(db) {
|
|
134
|
+
return async (_req, res) => {
|
|
124
135
|
try {
|
|
125
136
|
if (!db) {
|
|
126
|
-
return res
|
|
137
|
+
return databaseUnavailable(res);
|
|
127
138
|
}
|
|
128
139
|
await db.prepare('VACUUM').run();
|
|
129
140
|
await db.prepare('ANALYZE').run();
|
|
@@ -141,8 +152,10 @@ export function registerAdminStatsAndHealthRoutes(router, db, serverServices) {
|
|
|
141
152
|
message: error instanceof Error ? error.message : 'Unknown error'
|
|
142
153
|
});
|
|
143
154
|
}
|
|
144
|
-
}
|
|
145
|
-
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
function getErrorStats() {
|
|
158
|
+
return async (_req, res) => {
|
|
146
159
|
try {
|
|
147
160
|
res.json({
|
|
148
161
|
message: '에러 통계 조회 완료',
|
|
@@ -163,8 +176,10 @@ export function registerAdminStatsAndHealthRoutes(router, db, serverServices) {
|
|
|
163
176
|
message: error instanceof Error ? error.message : 'Unknown error'
|
|
164
177
|
});
|
|
165
178
|
}
|
|
166
|
-
}
|
|
167
|
-
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
function postErrorResolve() {
|
|
182
|
+
return async (req, res) => {
|
|
168
183
|
try {
|
|
169
184
|
const { errorId, resolvedBy, reason } = req.body;
|
|
170
185
|
res.json({
|
|
@@ -184,8 +199,10 @@ export function registerAdminStatsAndHealthRoutes(router, db, serverServices) {
|
|
|
184
199
|
message: error instanceof Error ? error.message : 'Unknown error'
|
|
185
200
|
});
|
|
186
201
|
}
|
|
187
|
-
}
|
|
188
|
-
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
function getPerformanceAlerts() {
|
|
205
|
+
return async (_req, res) => {
|
|
189
206
|
try {
|
|
190
207
|
res.json({
|
|
191
208
|
message: '성능 알림 조회 완료',
|
|
@@ -202,6 +219,16 @@ export function registerAdminStatsAndHealthRoutes(router, db, serverServices) {
|
|
|
202
219
|
message: error instanceof Error ? error.message : 'Unknown error'
|
|
203
220
|
});
|
|
204
221
|
}
|
|
205
|
-
}
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
export function registerAdminStatsAndHealthRoutes(router, db, serverServices) {
|
|
225
|
+
router.post('/memory/cleanup', postMemoryCleanup(db));
|
|
226
|
+
router.get('/stats/forgetting', getForgettingStats(db));
|
|
227
|
+
router.get('/stats/performance', getPerformanceStats(db));
|
|
228
|
+
router.get('/stats/consolidation', getConsolidationStats(db, serverServices));
|
|
229
|
+
router.post('/database/optimize', postDatabaseOptimize(db));
|
|
230
|
+
router.get('/stats/errors', getErrorStats());
|
|
231
|
+
router.post('/errors/resolve', postErrorResolve());
|
|
232
|
+
router.get('/alerts/performance', getPerformanceAlerts());
|
|
206
233
|
}
|
|
207
234
|
//# sourceMappingURL=admin-stats-and-health.routes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-stats-and-health.routes.js","sourceRoot":"","sources":["../../../../src/server/routes/admin/admin-stats-and-health.routes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAGvC,
|
|
1
|
+
{"version":3,"file":"admin-stats-and-health.routes.js","sourceRoot":"","sources":["../../../../src/server/routes/admin/admin-stats-and-health.routes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-telemetry.routes.d.ts","sourceRoot":"","sources":["../../../../src/server/routes/admin/admin-telemetry.routes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"admin-telemetry.routes.d.ts","sourceRoot":"","sources":["../../../../src/server/routes/admin/admin-telemetry.routes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAqB,MAAM,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAM3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AA+LzD,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,EAC5B,cAAc,EAAE,cAAc,GAAG,IAAI,GACpC,IAAI,CAMN"}
|
|
@@ -3,102 +3,107 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { logger } from '@memento/core';
|
|
5
5
|
import { TELEMETRY_PERIODS, effectiveTelemetryPeriod } from './admin-telemetry-utils.js';
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
function telemetryUnavailable(res) {
|
|
7
|
+
return res.status(503).json({ error: 'DB unavailable' });
|
|
8
|
+
}
|
|
9
|
+
function telemetryInternalError(res, error) {
|
|
10
|
+
return res.status(500).json({
|
|
11
|
+
error: 'Internal error',
|
|
12
|
+
message: error instanceof Error ? error.message : 'Unknown error'
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
function ownerQuery(value) {
|
|
16
|
+
const ownerQ = value;
|
|
17
|
+
return ownerQ === undefined || ownerQ === '' ? null : ownerQ;
|
|
18
|
+
}
|
|
19
|
+
function getSearchQuality(db, serverServices) {
|
|
20
|
+
return (req, res) => {
|
|
8
21
|
try {
|
|
9
22
|
if (!db || !serverServices?.telemetryService) {
|
|
10
|
-
return res
|
|
23
|
+
return telemetryUnavailable(res);
|
|
11
24
|
}
|
|
12
25
|
const periodRaw = req.query.period;
|
|
13
26
|
const effectivePeriod = effectiveTelemetryPeriod(periodRaw);
|
|
14
27
|
if (!TELEMETRY_PERIODS.includes(effectivePeriod)) {
|
|
15
28
|
return res.status(400).json({ error: 'Invalid period', allowed: TELEMETRY_PERIODS });
|
|
16
29
|
}
|
|
17
|
-
const
|
|
18
|
-
const data = serverServices.telemetryService.getSearchQuality(effectivePeriod, ownerQ === undefined || ownerQ === '' ? null : ownerQ);
|
|
30
|
+
const data = serverServices.telemetryService.getSearchQuality(effectivePeriod, ownerQuery(req.query.owner_id));
|
|
19
31
|
return res.json(data);
|
|
20
32
|
}
|
|
21
33
|
catch (error) {
|
|
22
34
|
logger.error('telemetry search-quality failed', {
|
|
23
35
|
error: error instanceof Error ? error.message : String(error)
|
|
24
36
|
});
|
|
25
|
-
return res
|
|
26
|
-
error: 'Internal error',
|
|
27
|
-
message: error instanceof Error ? error.message : 'Unknown error'
|
|
28
|
-
});
|
|
37
|
+
return telemetryInternalError(res, error);
|
|
29
38
|
}
|
|
30
|
-
}
|
|
31
|
-
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
function getMemoryQuality(db, serverServices) {
|
|
42
|
+
return (req, res) => {
|
|
32
43
|
try {
|
|
33
44
|
if (!db || !serverServices?.telemetryService) {
|
|
34
|
-
return res
|
|
45
|
+
return telemetryUnavailable(res);
|
|
35
46
|
}
|
|
36
|
-
const
|
|
37
|
-
const data = serverServices.telemetryService.getMemoryQuality('24h', ownerQ === undefined || ownerQ === '' ? null : ownerQ);
|
|
47
|
+
const data = serverServices.telemetryService.getMemoryQuality('24h', ownerQuery(req.query.owner_id));
|
|
38
48
|
return res.json(data);
|
|
39
49
|
}
|
|
40
50
|
catch (error) {
|
|
41
51
|
logger.error('telemetry memory-quality failed', {
|
|
42
52
|
error: error instanceof Error ? error.message : String(error)
|
|
43
53
|
});
|
|
44
|
-
return res
|
|
45
|
-
error: 'Internal error',
|
|
46
|
-
message: error instanceof Error ? error.message : 'Unknown error'
|
|
47
|
-
});
|
|
54
|
+
return telemetryInternalError(res, error);
|
|
48
55
|
}
|
|
49
|
-
}
|
|
50
|
-
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
function getSystemTelemetry(db, serverServices) {
|
|
59
|
+
return (req, res) => {
|
|
51
60
|
try {
|
|
52
61
|
if (!db || !serverServices?.telemetryService) {
|
|
53
|
-
return res
|
|
62
|
+
return telemetryUnavailable(res);
|
|
54
63
|
}
|
|
55
64
|
const periodRaw = req.query.period;
|
|
56
65
|
const effectivePeriod = effectiveTelemetryPeriod(periodRaw);
|
|
57
66
|
if (!TELEMETRY_PERIODS.includes(effectivePeriod)) {
|
|
58
67
|
return res.status(400).json({ error: 'Invalid period', allowed: TELEMETRY_PERIODS });
|
|
59
68
|
}
|
|
60
|
-
const
|
|
61
|
-
const data = serverServices.telemetryService.getSystemMetrics(effectivePeriod, ownerQ === undefined || ownerQ === '' ? null : ownerQ);
|
|
69
|
+
const data = serverServices.telemetryService.getSystemMetrics(effectivePeriod, ownerQuery(req.query.owner_id));
|
|
62
70
|
return res.json(data);
|
|
63
71
|
}
|
|
64
72
|
catch (error) {
|
|
65
73
|
logger.error('telemetry system failed', {
|
|
66
74
|
error: error instanceof Error ? error.message : String(error)
|
|
67
75
|
});
|
|
68
|
-
return res
|
|
69
|
-
error: 'Internal error',
|
|
70
|
-
message: error instanceof Error ? error.message : 'Unknown error'
|
|
71
|
-
});
|
|
76
|
+
return telemetryInternalError(res, error);
|
|
72
77
|
}
|
|
73
|
-
}
|
|
74
|
-
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
function getFeedbackTelemetry(db, serverServices) {
|
|
81
|
+
return (req, res) => {
|
|
75
82
|
try {
|
|
76
83
|
if (!db || !serverServices?.telemetryService) {
|
|
77
|
-
return res
|
|
84
|
+
return telemetryUnavailable(res);
|
|
78
85
|
}
|
|
79
86
|
const periodRaw = req.query.period;
|
|
80
87
|
const effectivePeriod = effectiveTelemetryPeriod(periodRaw);
|
|
81
88
|
if (!TELEMETRY_PERIODS.includes(effectivePeriod)) {
|
|
82
89
|
return res.status(400).json({ error: 'Invalid period', allowed: TELEMETRY_PERIODS });
|
|
83
90
|
}
|
|
84
|
-
const
|
|
85
|
-
const data = serverServices.telemetryService.getFeedbackQuality(effectivePeriod, ownerQ === undefined || ownerQ === '' ? null : ownerQ);
|
|
91
|
+
const data = serverServices.telemetryService.getFeedbackQuality(effectivePeriod, ownerQuery(req.query.owner_id));
|
|
86
92
|
return res.json(data);
|
|
87
93
|
}
|
|
88
94
|
catch (error) {
|
|
89
95
|
logger.error('telemetry feedback failed', {
|
|
90
96
|
error: error instanceof Error ? error.message : String(error)
|
|
91
97
|
});
|
|
92
|
-
return res
|
|
93
|
-
error: 'Internal error',
|
|
94
|
-
message: error instanceof Error ? error.message : 'Unknown error'
|
|
95
|
-
});
|
|
98
|
+
return telemetryInternalError(res, error);
|
|
96
99
|
}
|
|
97
|
-
}
|
|
98
|
-
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
function getTelemetryEvents(db, serverServices) {
|
|
103
|
+
return (req, res) => {
|
|
99
104
|
try {
|
|
100
105
|
if (!db || !serverServices?.telemetryService) {
|
|
101
|
-
return res
|
|
106
|
+
return telemetryUnavailable(res);
|
|
102
107
|
}
|
|
103
108
|
const from = req.query.from;
|
|
104
109
|
const to = req.query.to;
|
|
@@ -163,11 +168,15 @@ export function registerAdminTelemetryRoutes(router, db, serverServices) {
|
|
|
163
168
|
logger.error('telemetry events failed', {
|
|
164
169
|
error: error instanceof Error ? error.message : String(error)
|
|
165
170
|
});
|
|
166
|
-
return res
|
|
167
|
-
error: 'Internal error',
|
|
168
|
-
message: error instanceof Error ? error.message : 'Unknown error'
|
|
169
|
-
});
|
|
171
|
+
return telemetryInternalError(res, error);
|
|
170
172
|
}
|
|
171
|
-
}
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
export function registerAdminTelemetryRoutes(router, db, serverServices) {
|
|
176
|
+
router.get('/telemetry/search-quality', getSearchQuality(db, serverServices));
|
|
177
|
+
router.get('/telemetry/memory-quality', getMemoryQuality(db, serverServices));
|
|
178
|
+
router.get('/telemetry/system', getSystemTelemetry(db, serverServices));
|
|
179
|
+
router.get('/telemetry/feedback', getFeedbackTelemetry(db, serverServices));
|
|
180
|
+
router.get('/telemetry/events', getTelemetryEvents(db, serverServices));
|
|
172
181
|
}
|
|
173
182
|
//# sourceMappingURL=admin-telemetry.routes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-telemetry.routes.js","sourceRoot":"","sources":["../../../../src/server/routes/admin/admin-telemetry.routes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EACL,MAAM,EAGP,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEzF,
|
|
1
|
+
{"version":3,"file":"admin-telemetry.routes.js","sourceRoot":"","sources":["../../../../src/server/routes/admin/admin-telemetry.routes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-tools.routes.d.ts","sourceRoot":"","sources":["../../../../src/server/routes/admin/admin-tools.routes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"admin-tools.routes.d.ts","sourceRoot":"","sources":["../../../../src/server/routes/admin/admin-tools.routes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAqB,MAAM,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAS3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAwLzD,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,EAC5B,cAAc,EAAE,cAAc,GAAG,IAAI,GACpC,IAAI,CAKN"}
|
|
@@ -2,26 +2,33 @@
|
|
|
2
2
|
* Admin: MCP에서 제거된 운영 도구(앵커 복원, 임베딩 마이그레이션, 변환, 메타 통계)
|
|
3
3
|
*/
|
|
4
4
|
import { RestoreAnchorsTool, MigrateEmbeddingsTool, GetMetaMemoryStatsTool, IntrospectionHealTool, logger, createToolContext } from '@memento/core';
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
function servicesUnavailable(res) {
|
|
6
|
+
return res.status(500).json({ error: '데이터베이스 또는 서비스가 연결되지 않았습니다' });
|
|
7
|
+
}
|
|
8
|
+
function toolContext(db, serverServices) {
|
|
9
|
+
return createToolContext({ db, services: serverServices });
|
|
10
|
+
}
|
|
11
|
+
function respondWithToolResult(res, message, resultText) {
|
|
12
|
+
const resultData = JSON.parse(resultText);
|
|
13
|
+
if (resultData.success === false) {
|
|
14
|
+
return res.status(400).json(resultData);
|
|
15
|
+
}
|
|
16
|
+
return res.json({
|
|
17
|
+
message,
|
|
18
|
+
...resultData,
|
|
19
|
+
timestamp: new Date().toISOString()
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
function postAnchorRestore(db, serverServices) {
|
|
23
|
+
return async (req, res) => {
|
|
7
24
|
try {
|
|
8
25
|
if (!db || !serverServices) {
|
|
9
|
-
return res
|
|
26
|
+
return servicesUnavailable(res);
|
|
10
27
|
}
|
|
11
28
|
const { agent_id } = req.body;
|
|
12
|
-
const toolContext = createToolContext({ db, services: serverServices });
|
|
13
29
|
const restoreTool = new RestoreAnchorsTool();
|
|
14
|
-
const result = await restoreTool.handle({ agent_id }, toolContext);
|
|
15
|
-
|
|
16
|
-
const resultData = JSON.parse(resultText);
|
|
17
|
-
if (resultData.success === false) {
|
|
18
|
-
return res.status(400).json(resultData);
|
|
19
|
-
}
|
|
20
|
-
return res.json({
|
|
21
|
-
message: '앵커 복원 완료',
|
|
22
|
-
...resultData,
|
|
23
|
-
timestamp: new Date().toISOString()
|
|
24
|
-
});
|
|
30
|
+
const result = await restoreTool.handle({ agent_id }, toolContext(db, serverServices));
|
|
31
|
+
return respondWithToolResult(res, '앵커 복원 완료', result.content[0]?.text || '{}');
|
|
25
32
|
}
|
|
26
33
|
catch (error) {
|
|
27
34
|
logger.error('Anchor restoration failed', {
|
|
@@ -32,11 +39,13 @@ export function registerAdminToolRoutes(router, db, serverServices) {
|
|
|
32
39
|
message: error instanceof Error ? error.message : 'Unknown error'
|
|
33
40
|
});
|
|
34
41
|
}
|
|
35
|
-
}
|
|
36
|
-
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
function postEmbeddingMigrate(db, serverServices) {
|
|
45
|
+
return async (req, res) => {
|
|
37
46
|
try {
|
|
38
47
|
if (!db || !serverServices) {
|
|
39
|
-
return res
|
|
48
|
+
return servicesUnavailable(res);
|
|
40
49
|
}
|
|
41
50
|
const { source_provider, target_provider, batch_size, dry_run } = req.body;
|
|
42
51
|
if (!target_provider) {
|
|
@@ -44,24 +53,14 @@ export function registerAdminToolRoutes(router, db, serverServices) {
|
|
|
44
53
|
error: 'target_provider는 필수입니다'
|
|
45
54
|
});
|
|
46
55
|
}
|
|
47
|
-
const toolContext = createToolContext({ db, services: serverServices });
|
|
48
56
|
const migrateTool = new MigrateEmbeddingsTool();
|
|
49
57
|
const result = await migrateTool.handle({
|
|
50
58
|
source_provider,
|
|
51
59
|
target_provider,
|
|
52
60
|
batch_size: batch_size || 100,
|
|
53
61
|
dry_run: dry_run || false
|
|
54
|
-
}, toolContext);
|
|
55
|
-
|
|
56
|
-
const resultData = JSON.parse(resultText);
|
|
57
|
-
if (resultData.success === false) {
|
|
58
|
-
return res.status(400).json(resultData);
|
|
59
|
-
}
|
|
60
|
-
return res.json({
|
|
61
|
-
message: '임베딩 마이그레이션 완료',
|
|
62
|
-
...resultData,
|
|
63
|
-
timestamp: new Date().toISOString()
|
|
64
|
-
});
|
|
62
|
+
}, toolContext(db, serverServices));
|
|
63
|
+
return respondWithToolResult(res, '임베딩 마이그레이션 완료', result.content[0]?.text || '{}');
|
|
65
64
|
}
|
|
66
65
|
catch (error) {
|
|
67
66
|
logger.error('Embedding migration failed', {
|
|
@@ -72,14 +71,15 @@ export function registerAdminToolRoutes(router, db, serverServices) {
|
|
|
72
71
|
message: error instanceof Error ? error.message : 'Unknown error'
|
|
73
72
|
});
|
|
74
73
|
}
|
|
75
|
-
}
|
|
76
|
-
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
function postIntrospectionHeal(db, serverServices) {
|
|
77
|
+
return async (req, res) => {
|
|
77
78
|
try {
|
|
78
79
|
if (!db || !serverServices) {
|
|
79
|
-
return res
|
|
80
|
+
return servicesUnavailable(res);
|
|
80
81
|
}
|
|
81
82
|
const { provider, dry_run, low_confidence_threshold, high_failure_count_threshold, demote_factor, min_importance, soft_delete_importance_threshold } = req.body ?? {};
|
|
82
|
-
const toolContext = createToolContext({ db, services: serverServices });
|
|
83
83
|
const healTool = new IntrospectionHealTool();
|
|
84
84
|
const result = await healTool.handle({
|
|
85
85
|
provider,
|
|
@@ -89,17 +89,8 @@ export function registerAdminToolRoutes(router, db, serverServices) {
|
|
|
89
89
|
demote_factor,
|
|
90
90
|
min_importance,
|
|
91
91
|
soft_delete_importance_threshold
|
|
92
|
-
}, toolContext);
|
|
93
|
-
|
|
94
|
-
const resultData = JSON.parse(resultText);
|
|
95
|
-
if (resultData.success === false) {
|
|
96
|
-
return res.status(400).json(resultData);
|
|
97
|
-
}
|
|
98
|
-
return res.json({
|
|
99
|
-
message: 'Introspection heal 완료',
|
|
100
|
-
...resultData,
|
|
101
|
-
timestamp: new Date().toISOString()
|
|
102
|
-
});
|
|
92
|
+
}, toolContext(db, serverServices));
|
|
93
|
+
return respondWithToolResult(res, 'Introspection heal 완료', result.content[0]?.text || '{}');
|
|
103
94
|
}
|
|
104
95
|
catch (error) {
|
|
105
96
|
logger.error('Introspection heal failed', {
|
|
@@ -110,15 +101,15 @@ export function registerAdminToolRoutes(router, db, serverServices) {
|
|
|
110
101
|
message: error instanceof Error ? error.message : 'Unknown error'
|
|
111
102
|
});
|
|
112
103
|
}
|
|
113
|
-
}
|
|
114
|
-
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
function getMetaMemoryStats(db, serverServices) {
|
|
107
|
+
return async (req, res) => {
|
|
115
108
|
try {
|
|
116
109
|
if (!db || !serverServices) {
|
|
117
|
-
return res
|
|
110
|
+
return servicesUnavailable(res);
|
|
118
111
|
}
|
|
119
112
|
const { memory_id, memory_ids, min_recall_count, min_confidence, limit } = req.query;
|
|
120
|
-
const toolContext = createToolContext({ db, services: serverServices });
|
|
121
|
-
const statsTool = new GetMetaMemoryStatsTool();
|
|
122
113
|
const params = {};
|
|
123
114
|
if (memory_id !== undefined && memory_id !== '') {
|
|
124
115
|
if (typeof memory_id !== 'string') {
|
|
@@ -153,17 +144,9 @@ export function registerAdminToolRoutes(router, db, serverServices) {
|
|
|
153
144
|
}
|
|
154
145
|
params.limit = l;
|
|
155
146
|
}
|
|
156
|
-
const
|
|
157
|
-
const
|
|
158
|
-
|
|
159
|
-
if (resultData.success === false) {
|
|
160
|
-
return res.status(400).json(resultData);
|
|
161
|
-
}
|
|
162
|
-
return res.json({
|
|
163
|
-
message: '메타 메모리 통계 조회 완료',
|
|
164
|
-
...resultData,
|
|
165
|
-
timestamp: new Date().toISOString()
|
|
166
|
-
});
|
|
147
|
+
const statsTool = new GetMetaMemoryStatsTool();
|
|
148
|
+
const result = await statsTool.handle(params, toolContext(db, serverServices));
|
|
149
|
+
return respondWithToolResult(res, '메타 메모리 통계 조회 완료', result.content[0]?.text || '{}');
|
|
167
150
|
}
|
|
168
151
|
catch (error) {
|
|
169
152
|
logger.error('Meta memory stats retrieval failed', {
|
|
@@ -174,6 +157,12 @@ export function registerAdminToolRoutes(router, db, serverServices) {
|
|
|
174
157
|
message: error instanceof Error ? error.message : 'Unknown error'
|
|
175
158
|
});
|
|
176
159
|
}
|
|
177
|
-
}
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
export function registerAdminToolRoutes(router, db, serverServices) {
|
|
163
|
+
router.post('/anchors/restore', postAnchorRestore(db, serverServices));
|
|
164
|
+
router.post('/embeddings/migrate', postEmbeddingMigrate(db, serverServices));
|
|
165
|
+
router.post('/introspection/heal', postIntrospectionHeal(db, serverServices));
|
|
166
|
+
router.get('/memory/meta-stats', getMetaMemoryStats(db, serverServices));
|
|
178
167
|
}
|
|
179
168
|
//# sourceMappingURL=admin-tools.routes.js.map
|