Merge Memory V2 runtime facade
This commit is contained in:
+33
-8
@@ -164,6 +164,8 @@ import { startScheduleReminderWorker } from './schedule-reminder-worker.mjs';
|
||||
import { createLlmProviderService, RELAY_BOOTSTRAP } from './llm-providers.mjs';
|
||||
import { createSessionSnapshotService } from './session-snapshot.mjs';
|
||||
import { createConversationMemoryService } from './conversation-memory.mjs';
|
||||
import { createManagedMemoryV2Runtime } from './memory-v2-runtime.mjs';
|
||||
import { createMemoryV2AdminConfigService } from './memory-v2-admin-config.mjs';
|
||||
import { createExperienceService } from './experience-service.mjs';
|
||||
import { attachAsrRoutes } from './asr-proxy.mjs';
|
||||
import { isNativeH5ApiPath } from './policies.mjs';
|
||||
@@ -283,6 +285,8 @@ let agentRunGateway = null;
|
||||
let toolGateway = null;
|
||||
let sessionSnapshotService = null;
|
||||
let conversationMemoryService = null;
|
||||
let memoryV2 = null;
|
||||
let memoryV2ConfigService = null;
|
||||
let mindSpace = null;
|
||||
let mindSpaceAssets = null;
|
||||
let mindSpaceAudit = null;
|
||||
@@ -516,6 +520,11 @@ async function bootstrapUserAuth() {
|
||||
console.warn('LLM provider boot sync skipped:', err instanceof Error ? err.message : err);
|
||||
});
|
||||
conversationMemoryService = createConversationMemoryService(pool);
|
||||
memoryV2ConfigService = createMemoryV2AdminConfigService(pool);
|
||||
memoryV2 = await createManagedMemoryV2Runtime({
|
||||
legacyMemoryService: conversationMemoryService,
|
||||
configService: memoryV2ConfigService,
|
||||
});
|
||||
sessionSnapshotService = createSessionSnapshotService(pool, {
|
||||
conversationMemoryService,
|
||||
});
|
||||
@@ -528,6 +537,7 @@ async function bootstrapUserAuth() {
|
||||
subscriptionService,
|
||||
sessionSnapshotService,
|
||||
conversationMemoryService,
|
||||
memoryV2,
|
||||
localFetchAsset: mindSpaceAssets
|
||||
? async (userId, assetId) => {
|
||||
const { asset, path: assetPath } = await mindSpaceAssets.readAsset(userId, assetId);
|
||||
@@ -1866,7 +1876,8 @@ async function syncUserMemoriesIntoSession(userId, sessionId) {
|
||||
}
|
||||
|
||||
api.post('/user-memory/v1/remember-recent', async (req, res) => {
|
||||
if (!conversationMemoryService?.isEnabled?.()) {
|
||||
const memoryStatus = await memoryV2?.getStatus?.().catch(() => null);
|
||||
if (!memoryStatus?.enabled) {
|
||||
return res.status(503).json({ message: '长期记忆功能未启用' });
|
||||
}
|
||||
if (!tkmindProxy) {
|
||||
@@ -1886,13 +1897,18 @@ api.post('/user-memory/v1/remember-recent', async (req, res) => {
|
||||
|
||||
try {
|
||||
const messages = await loadUserVisibleConversation(sessionId);
|
||||
const result = await conversationMemoryService.saveAndAnalyze(
|
||||
const result = await memoryV2.write({
|
||||
userId: req.currentUser.id,
|
||||
sessionId,
|
||||
req.currentUser.id,
|
||||
messages,
|
||||
);
|
||||
});
|
||||
const syncedToSession = await syncUserMemoriesIntoSession(req.currentUser.id, sessionId);
|
||||
const memories = await conversationMemoryService.listMemories(req.currentUser.id, { limit: 200 });
|
||||
const resolved = await memoryV2.resolve({
|
||||
userId: req.currentUser.id,
|
||||
sessionId,
|
||||
limit: 200,
|
||||
});
|
||||
const memories = Array.isArray(resolved?.memories) ? resolved.memories : [];
|
||||
return res.json({
|
||||
ok: true,
|
||||
analyzed: result.analyzed ?? 0,
|
||||
@@ -1906,7 +1922,8 @@ api.post('/user-memory/v1/remember-recent', async (req, res) => {
|
||||
});
|
||||
|
||||
api.post('/user-memory/v1/sync', async (req, res) => {
|
||||
if (!conversationMemoryService?.isEnabled?.()) {
|
||||
const memoryStatus = await memoryV2?.getStatus?.().catch(() => null);
|
||||
if (!memoryStatus?.enabled) {
|
||||
return res.status(503).json({ message: '长期记忆功能未启用' });
|
||||
}
|
||||
const capabilityState = await ensureUserMemoryCapability(req, res);
|
||||
@@ -1922,9 +1939,17 @@ api.post('/user-memory/v1/sync', async (req, res) => {
|
||||
}
|
||||
|
||||
try {
|
||||
const result = await conversationMemoryService.analyzeUser(req.currentUser.id);
|
||||
const result = await memoryV2.compact({
|
||||
userId: req.currentUser.id,
|
||||
sessionId,
|
||||
});
|
||||
const syncedToSession = await syncUserMemoriesIntoSession(req.currentUser.id, sessionId);
|
||||
const memories = await conversationMemoryService.listMemories(req.currentUser.id, { limit: 200 });
|
||||
const resolved = await memoryV2.resolve({
|
||||
userId: req.currentUser.id,
|
||||
sessionId,
|
||||
limit: 200,
|
||||
});
|
||||
const memories = Array.isArray(resolved?.memories) ? resolved.memories : [];
|
||||
return res.json({
|
||||
ok: true,
|
||||
analyzed: result.analyzed ?? 0,
|
||||
|
||||
Reference in New Issue
Block a user