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; }