feat(14-05): add PhaseDispatchManager to tRPC context

- Import PhaseDispatchManager type from dispatch module
- Add optional phaseDispatchManager to TRPCContext interface
- Add phaseDispatchManager to CreateContextOptions
- Wire phaseDispatchManager through createContext function

Includes blocking fix: added 'blocked' status to phases schema enum
This commit is contained in:
Lukas May
2026-02-02 13:39:47 +01:00
parent 772fbe6fd1
commit 28622cbd04
3 changed files with 7 additions and 3 deletions

View File

@@ -47,7 +47,7 @@ export const phases = sqliteTable('phases', {
number: integer('number').notNull(),
name: text('name').notNull(),
description: text('description'),
status: text('status', { enum: ['pending', 'in_progress', 'completed'] })
status: text('status', { enum: ['pending', 'in_progress', 'completed', 'blocked'] })
.notNull()
.default('pending'),
createdAt: integer('created_at', { mode: 'timestamp' }).notNull(),

View File

@@ -12,7 +12,7 @@ import type { MessageRepository } from '../db/repositories/message-repository.js
import type { InitiativeRepository } from '../db/repositories/initiative-repository.js';
import type { PhaseRepository } from '../db/repositories/phase-repository.js';
import type { PlanRepository } from '../db/repositories/plan-repository.js';
import type { DispatchManager } from '../dispatch/types.js';
import type { DispatchManager, PhaseDispatchManager } from '../dispatch/types.js';
import type { CoordinationManager } from '../coordination/types.js';
// Re-export for convenience
@@ -44,6 +44,8 @@ export interface TRPCContext {
phaseRepository?: PhaseRepository;
/** Plan repository for plan CRUD operations (optional until server wiring complete) */
planRepository?: PlanRepository;
/** Phase dispatch manager for phase queue operations (optional until server wiring complete) */
phaseDispatchManager?: PhaseDispatchManager;
}
/**
@@ -61,6 +63,7 @@ export interface CreateContextOptions {
initiativeRepository?: InitiativeRepository;
phaseRepository?: PhaseRepository;
planRepository?: PlanRepository;
phaseDispatchManager?: PhaseDispatchManager;
}
/**
@@ -82,5 +85,6 @@ export function createContext(options: CreateContextOptions): TRPCContext {
initiativeRepository: options.initiativeRepository,
phaseRepository: options.phaseRepository,
planRepository: options.planRepository,
phaseDispatchManager: options.phaseDispatchManager,
};
}

View File

@@ -818,7 +818,7 @@ export const appRouter = router({
id: z.string().min(1),
name: z.string().min(1).optional(),
description: z.string().optional(),
status: z.enum(['pending', 'in_progress', 'completed']).optional(),
status: z.enum(['pending', 'in_progress', 'completed', 'blocked']).optional(),
}))
.mutation(async ({ ctx, input }) => {
const repo = requirePhaseRepository(ctx);