merge: server architecture modularization
This commit is contained in:
@@ -0,0 +1,152 @@
|
||||
import { createAgentCodeRunAdminConfigService } from '../agent-code-run-admin-config.mjs';
|
||||
import { createManagedChatIntentRouter } from '../chat-intent-router.mjs';
|
||||
import { createConversationMemoryService } from '../conversation-memory.mjs';
|
||||
import { createDirectChatService } from '../direct-chat-service.mjs';
|
||||
import { createEpisodicMemoryService } from '../episodic-memory.mjs';
|
||||
import { createMemoryV2AdminConfigService } from '../memory-v2-admin-config.mjs';
|
||||
import { createManagedMemoryV2Runtime } from '../memory-v2-runtime.mjs';
|
||||
import { createSessionSnapshotService } from '../session-snapshot.mjs';
|
||||
import { createSessionStreamStore } from '../session-stream-store.mjs';
|
||||
import { isSessionStreamReplayEnabled } from '../session-stream.mjs';
|
||||
import { createSkillRuntimeAdminConfigService } from '../skill-runtime-admin-config.mjs';
|
||||
import { createSystemDisclosurePolicyService } from '../system-disclosure-policy.mjs';
|
||||
import { createWechatScheduleLlmConfigService } from '../wechat-schedule-llm-config.mjs';
|
||||
|
||||
export async function bootstrapPortalMemorySessionServices({
|
||||
pool,
|
||||
h5Root,
|
||||
env = process.env,
|
||||
llmProviderService,
|
||||
userAuth,
|
||||
sessionAccess,
|
||||
logger = console,
|
||||
createMemoryV2AdminConfigServiceFn =
|
||||
createMemoryV2AdminConfigService,
|
||||
createSkillRuntimeAdminConfigServiceFn =
|
||||
createSkillRuntimeAdminConfigService,
|
||||
createSystemDisclosurePolicyServiceFn =
|
||||
createSystemDisclosurePolicyService,
|
||||
createAgentCodeRunAdminConfigServiceFn =
|
||||
createAgentCodeRunAdminConfigService,
|
||||
createWechatScheduleLlmConfigServiceFn =
|
||||
createWechatScheduleLlmConfigService,
|
||||
createConversationMemoryServiceFn =
|
||||
createConversationMemoryService,
|
||||
createManagedMemoryV2RuntimeFn =
|
||||
createManagedMemoryV2Runtime,
|
||||
createEpisodicMemoryServiceFn =
|
||||
createEpisodicMemoryService,
|
||||
createSessionSnapshotServiceFn =
|
||||
createSessionSnapshotService,
|
||||
isSessionStreamReplayEnabledFn =
|
||||
isSessionStreamReplayEnabled,
|
||||
createSessionStreamStoreFn =
|
||||
createSessionStreamStore,
|
||||
createDirectChatServiceFn = createDirectChatService,
|
||||
createManagedChatIntentRouterFn =
|
||||
createManagedChatIntentRouter,
|
||||
} = {}) {
|
||||
if (
|
||||
!pool ||
|
||||
!h5Root ||
|
||||
!llmProviderService ||
|
||||
!userAuth ||
|
||||
!sessionAccess
|
||||
) {
|
||||
throw new Error(
|
||||
'bootstrapPortalMemorySessionServices requires memory and session dependencies',
|
||||
);
|
||||
}
|
||||
|
||||
const memoryV2ConfigService =
|
||||
createMemoryV2AdminConfigServiceFn(pool);
|
||||
const skillRuntimeConfigService =
|
||||
createSkillRuntimeAdminConfigServiceFn(pool, {
|
||||
h5Root,
|
||||
});
|
||||
const systemDisclosurePolicyService =
|
||||
createSystemDisclosurePolicyServiceFn(pool);
|
||||
await systemDisclosurePolicyService.initialize();
|
||||
const agentCodeRunPolicyService =
|
||||
createAgentCodeRunAdminConfigServiceFn(pool, { env });
|
||||
const wechatScheduleLlmConfigService =
|
||||
createWechatScheduleLlmConfigServiceFn(pool);
|
||||
|
||||
const getEffectiveEnv = async () => {
|
||||
const state = await memoryV2ConfigService
|
||||
.getRuntimeState()
|
||||
.catch(() => null);
|
||||
return {
|
||||
...env,
|
||||
...(state?.overrides ?? {}),
|
||||
};
|
||||
};
|
||||
const conversationMemoryService =
|
||||
createConversationMemoryServiceFn(pool, {
|
||||
llmProviderService,
|
||||
getEffectiveEnv,
|
||||
});
|
||||
const memoryV2 =
|
||||
await createManagedMemoryV2RuntimeFn({
|
||||
legacyMemoryService: conversationMemoryService,
|
||||
configService: memoryV2ConfigService,
|
||||
mysqlPool: pool,
|
||||
});
|
||||
const episodicMemoryService =
|
||||
createEpisodicMemoryServiceFn(pool, {
|
||||
getEffectiveEnv,
|
||||
logger,
|
||||
});
|
||||
await episodicMemoryService
|
||||
.ensureSchema()
|
||||
.catch((error) => {
|
||||
logger.warn(
|
||||
'[episodic-memory] schema setup degraded; snapshot fallback remains available:',
|
||||
error instanceof Error ? error.message : error,
|
||||
);
|
||||
});
|
||||
|
||||
const sessionSnapshotService =
|
||||
createSessionSnapshotServiceFn(pool, {
|
||||
conversationMemoryService,
|
||||
memoryV2,
|
||||
episodicMemoryService,
|
||||
});
|
||||
const sessionStreamStore =
|
||||
isSessionStreamReplayEnabledFn()
|
||||
? createSessionStreamStoreFn({ pool })
|
||||
: null;
|
||||
const directChatService = createDirectChatServiceFn({
|
||||
userAuth,
|
||||
sessionAccess,
|
||||
llmProviderService,
|
||||
sessionSnapshotService,
|
||||
memoryV2,
|
||||
conversationMemoryService,
|
||||
episodicMemoryService,
|
||||
});
|
||||
const chatIntentRouter =
|
||||
createManagedChatIntentRouterFn({
|
||||
llmProviderService,
|
||||
memoryV2,
|
||||
conversationMemoryService,
|
||||
episodicMemoryService,
|
||||
configService: memoryV2ConfigService,
|
||||
});
|
||||
|
||||
return {
|
||||
memoryV2ConfigService,
|
||||
skillRuntimeConfigService,
|
||||
systemDisclosurePolicyService,
|
||||
agentCodeRunPolicyService,
|
||||
wechatScheduleLlmConfigService,
|
||||
conversationMemoryService,
|
||||
memoryV2,
|
||||
episodicMemoryService,
|
||||
sessionSnapshotService,
|
||||
sessionStreamStore,
|
||||
directChatService,
|
||||
chatIntentRouter,
|
||||
getEffectiveEnv,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user