30 lines
1.4 KiB
TypeScript
30 lines
1.4 KiB
TypeScript
import { asClass, createContainer, InjectionMode } from "awilix";
|
|
import { FSModelConfigRepo, IModelConfigRepo } from "../models/repo.js";
|
|
import { FSMcpConfigRepo, IMcpConfigRepo } from "../mcp/repo.js";
|
|
import { FSAgentsRepo, IAgentsRepo } from "../agents/repo.js";
|
|
import { FSRunsRepo, IRunsRepo } from "../runs/repo.js";
|
|
import { IMonotonicallyIncreasingIdGenerator, IdGen } from "../application/lib/id-gen.js";
|
|
import { IMessageQueue, InMemoryMessageQueue } from "../application/lib/message-queue.js";
|
|
import { IBus, InMemoryBus } from "../application/lib/bus.js";
|
|
import { IRunsLock, InMemoryRunsLock } from "../runs/lock.js";
|
|
import { IAgentRuntime, AgentRuntime } from "../agents/runtime.js";
|
|
|
|
const container = createContainer({
|
|
injectionMode: InjectionMode.PROXY,
|
|
strict: true,
|
|
});
|
|
|
|
container.register({
|
|
idGenerator: asClass<IMonotonicallyIncreasingIdGenerator>(IdGen).singleton(),
|
|
messageQueue: asClass<IMessageQueue>(InMemoryMessageQueue).singleton(),
|
|
bus: asClass<IBus>(InMemoryBus).singleton(),
|
|
runsLock: asClass<IRunsLock>(InMemoryRunsLock).singleton(),
|
|
agentRuntime: asClass<IAgentRuntime>(AgentRuntime).singleton(),
|
|
|
|
mcpConfigRepo: asClass<IMcpConfigRepo>(FSMcpConfigRepo).singleton(),
|
|
modelConfigRepo: asClass<IModelConfigRepo>(FSModelConfigRepo).singleton(),
|
|
agentsRepo: asClass<IAgentsRepo>(FSAgentsRepo).singleton(),
|
|
runsRepo: asClass<IRunsRepo>(FSRunsRepo).singleton(),
|
|
});
|
|
|
|
export default container; |