diff --git a/src/cli/index.ts b/src/cli/index.ts index 7f37911..dfbbb22 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -21,7 +21,10 @@ import { DrizzlePlanRepository, DrizzleTaskRepository, DrizzleMessageRepository, + DrizzleAgentRepository, } from '../db/index.js'; +import { ClaudeAgentManager } from '../agent/index.js'; +import { SimpleGitWorktreeManager } from '../git/index.js'; /** Environment variable for custom port */ const CW_PORT_ENV = 'CW_PORT'; @@ -51,6 +54,11 @@ async function startServer(port?: number): Promise { const planRepository = new DrizzlePlanRepository(db); const taskRepository = new DrizzleTaskRepository(db); const messageRepository = new DrizzleMessageRepository(db); + const agentRepository = new DrizzleAgentRepository(db); + + // Create agent manager with worktree isolation + const worktreeManager = new SimpleGitWorktreeManager(process.cwd(), eventBus); + const agentManager = new ClaudeAgentManager(agentRepository, worktreeManager, eventBus); // Create and start server const server = new CoordinationServer( @@ -59,6 +67,7 @@ async function startServer(port?: number): Promise { logManager, eventBus, { + agentManager, initiativeRepository, phaseRepository, planRepository, diff --git a/src/trpc/router.ts b/src/trpc/router.ts index 3edf19c..699cfd0 100644 --- a/src/trpc/router.ts +++ b/src/trpc/router.ts @@ -408,8 +408,8 @@ export const appRouter = router({ */ listAgents: publicProcedure .query(async ({ ctx }) => { - if (!ctx.agentManager) return []; - return ctx.agentManager.list(); + const agentManager = requireAgentManager(ctx); + return agentManager.list(); }), /** @@ -463,9 +463,9 @@ export const appRouter = router({ getAgentQuestions: publicProcedure .input(agentIdentifierSchema) .query(async ({ ctx, input }): Promise => { - if (!ctx.agentManager) return null; + const agentManager = requireAgentManager(ctx); const agent = await resolveAgent(ctx, input); - return ctx.agentManager.getPendingQuestions(agent.id); + return agentManager.getPendingQuestions(agent.id); }), /** @@ -474,8 +474,8 @@ export const appRouter = router({ */ listWaitingAgents: publicProcedure .query(async ({ ctx }) => { - if (!ctx.agentManager) return []; - const allAgents = await ctx.agentManager.list(); + const agentManager = requireAgentManager(ctx); + const allAgents = await agentManager.list(); return allAgents.filter(agent => agent.status === 'waiting_for_input'); }),