Files
Genarrative/server-node/src/services/customWorldRuntimeProvider.ts

47 lines
1.8 KiB
TypeScript

import type { CustomWorldProfileCapability, CustomWorldSessionCapability } from './runtimeCapabilities.js';
import { CustomWorldAgentOrchestrator } from './customWorldAgentOrchestrator.js';
import { CustomWorldAgentSessionStore } from './customWorldAgentSessionStore.js';
import { CustomWorldSessionStore } from './customWorldSessionStore.js';
import type { UpstreamLlmClient } from './llmClient.js';
export type CustomWorldRuntimeProvider = {
customWorldSessions: CustomWorldSessionStore;
customWorldAgentSessions: CustomWorldAgentSessionStore;
customWorldAgentOrchestrator: CustomWorldAgentOrchestrator;
customWorldWorkSummaryDependencies: {
runtimeRepository: CustomWorldProfileCapability;
customWorldAgentSessions: CustomWorldAgentSessionStore;
};
};
export function createCustomWorldRuntimeProvider(params: {
customWorldSessionCapability: CustomWorldSessionCapability;
customWorldProfileCapability: CustomWorldProfileCapability;
llmClient: UpstreamLlmClient | null;
runtimeLlmClient?: UpstreamLlmClient | null;
singleTurnLlmClient?: UpstreamLlmClient | null;
}) {
const customWorldSessions = new CustomWorldSessionStore(
params.customWorldSessionCapability,
);
const customWorldAgentSessions = new CustomWorldAgentSessionStore(
params.customWorldSessionCapability,
);
return {
customWorldSessions,
customWorldAgentSessions,
customWorldAgentOrchestrator: new CustomWorldAgentOrchestrator(
customWorldAgentSessions,
params.runtimeLlmClient ?? params.llmClient,
{
singleTurnLlmClient: params.singleTurnLlmClient,
},
),
customWorldWorkSummaryDependencies: {
runtimeRepository: params.customWorldProfileCapability,
customWorldAgentSessions,
},
} satisfies CustomWorldRuntimeProvider;
}