补齐story与world能力注入链路

This commit is contained in:
2026-04-20 12:10:42 +00:00
parent c3bfd86b53
commit 164ead0681
5 changed files with 33 additions and 6 deletions

View File

@@ -89,6 +89,7 @@
本轮只做一件事:
1.`story/custom world` 的 service 依赖从大仓储接口改成最小 capability
2.`AppContext -> route -> service` 的注入链路同步改成 capability wiring
本轮不做:
@@ -100,4 +101,5 @@
1. `server-node` 编译通过
2. 相关测试 stub 不再依赖完整 `RuntimeRepositoryPort`
3. 文档明确固定“能力先迁、逻辑后搬”的顺序
3. `storyActionRoutes` / `runtimeRoutes` 不再默认把整块 `runtimeRepository` 传进对应 service
4. 文档明确固定“能力先迁、逻辑后搬”的顺序

View File

@@ -14,6 +14,11 @@ import { CustomWorldAgentOrchestrator } from './services/customWorldAgentOrchest
import { CustomWorldAgentSessionStore } from './services/customWorldAgentSessionStore.js';
import { CustomWorldSessionStore } from './services/customWorldSessionStore.js';
import { UpstreamLlmClient } from './services/llmClient.js';
import type {
CustomWorldProfileCapability,
CustomWorldSessionCapability,
RuntimeStoryCapability,
} from './services/runtimeCapabilities.js';
import type { SmsVerificationService } from './services/smsVerificationService.js';
import type { WechatAuthService } from './services/wechatAuthService.js';
import { WechatAuthStateStore } from './services/wechatAuthStateStore.js';
@@ -29,6 +34,9 @@ export type AppContext = {
smsAuthEventRepository: SmsAuthEventRepository;
userSessionRepository: UserSessionRepository;
runtimeRepository: RuntimeRepository;
runtimeStoryCapability: RuntimeStoryCapability;
customWorldSessionCapability: CustomWorldSessionCapability;
customWorldProfileCapability: CustomWorldProfileCapability;
llmClient: UpstreamLlmClient;
customWorldSessions: CustomWorldSessionStore;
customWorldAgentSessions: CustomWorldAgentSessionStore;

View File

@@ -58,7 +58,7 @@ export function createStoryActionRoutes(context: AppContext) {
await resolveRuntimeStoryAction({
runtimeRepository: createRuntimeStorySnapshotRepository({
request,
runtimeRepository: context.runtimeRepository,
runtimeRepository: context.runtimeStoryCapability,
config: context.config,
}),
llmClient: context.llmClient,
@@ -83,7 +83,7 @@ export function createStoryActionRoutes(context: AppContext) {
await getRuntimeStoryState({
runtimeRepository: createRuntimeStorySnapshotRepository({
request,
runtimeRepository: context.runtimeRepository,
runtimeRepository: context.runtimeStoryCapability,
config: context.config,
}),
userId: request.userId!,

View File

@@ -555,7 +555,7 @@ export function createRuntimeRoutes(context: AppContext) {
asyncHandler(async (request, response) => {
sendApiResponse<ListCustomWorldWorksResponse>(response, {
items: await listCustomWorldWorkSummaries(request.userId!, {
runtimeRepository: context.runtimeRepository,
runtimeRepository: context.customWorldProfileCapability,
customWorldAgentSessions: context.customWorldAgentSessions,
}),
});

View File

@@ -17,6 +17,11 @@ import { CustomWorldAgentOrchestrator } from './services/customWorldAgentOrchest
import { CustomWorldAgentSessionStore } from './services/customWorldAgentSessionStore.js';
import { CustomWorldSessionStore } from './services/customWorldSessionStore.js';
import { UpstreamLlmClient } from './services/llmClient.js';
import {
createCustomWorldProfileCapability,
createCustomWorldSessionCapability,
createRuntimeSnapshotCapability,
} from './services/runtimeCapabilities.js';
import { createSmsVerificationService } from './services/smsVerificationService.js';
import { createWechatAuthService } from './services/wechatAuthService.js';
import { WechatAuthStateStore } from './services/wechatAuthStateStore.js';
@@ -80,9 +85,18 @@ export async function createAppContext(config: AppConfig = loadConfig()) {
const logger = createLogger(config);
const db = await createDatabase(config);
const runtimeRepository = new RuntimeRepository(db);
const customWorldAgentSessions = new CustomWorldAgentSessionStore(
const runtimeStoryCapability = createRuntimeSnapshotCapability(
runtimeRepository,
);
const customWorldSessionCapability = createCustomWorldSessionCapability(
runtimeRepository,
);
const customWorldProfileCapability = createCustomWorldProfileCapability(
runtimeRepository,
);
const customWorldAgentSessions = new CustomWorldAgentSessionStore(
customWorldSessionCapability,
);
const context: AppContext = {
config,
logger,
@@ -94,8 +108,11 @@ export async function createAppContext(config: AppConfig = loadConfig()) {
smsAuthEventRepository: new SmsAuthEventRepository(db),
userSessionRepository: new UserSessionRepository(db),
runtimeRepository,
runtimeStoryCapability,
customWorldSessionCapability,
customWorldProfileCapability,
llmClient: new UpstreamLlmClient(config, logger),
customWorldSessions: new CustomWorldSessionStore(runtimeRepository),
customWorldSessions: new CustomWorldSessionStore(customWorldSessionCapability),
customWorldAgentSessions,
customWorldAgentOrchestrator: new CustomWorldAgentOrchestrator(
customWorldAgentSessions,