Skip to content

Commit 5d34a9c

Browse files
awaliuddinclaude
andcommitted
refactor: Extract api-server.ts routes into 6 modular route files
api-server.ts reduced from 3089 → 449 lines (85% reduction). All 71 route handlers extracted into focused modules: - routes/governance.ts: 8 governance endpoints - routes/commands.ts: command execution + EXECUTABLE_COMMANDS - routes/workers.ts: 11 worker pool endpoints - routes/runspaces.ts: 10 runspace CRUD/lifecycle endpoints - routes/features.ts: vision, MCP, state, agents, architecture, YOLO, auth - routes/forge.ts: init, feedback, compliance, errors, diffs, health Shared infrastructure: - route-context.ts: RouteContext interface for dependency injection - middleware.ts: rate limiting, validation schemas Also removes 2 remaining as-any casts in App.tsx and dashboard-live.tsx. Verified: tsc clean, 64 test files pass (1953 tests), real server tested with curl against all major endpoints (Rule 0). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent bef430d commit 5d34a9c

11 files changed

Lines changed: 3118 additions & 2825 deletions

File tree

src/App.tsx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -829,20 +829,22 @@ const DashboardWithEngagement: React.FC<{
829829
}> = ({ visionData, projectState, agentActivity }) => {
830830
const { mode, setMode } = useEngagement();
831831

832-
// Convert VisionData goals to string[] if needed
833-
const normalizedVisionData: import('./components/types').VisionData = {
834-
...visionData,
832+
// Convert VisionData goals to string[] for ChiefOfStaffDashboard
833+
const normalizedVisionData = {
834+
mission: visionData.mission,
835835
goals: Array.isArray(visionData.goals)
836836
? visionData.goals.map(g => typeof g === 'string' ? g : g.title)
837837
: [],
838+
constraints: visionData.constraints,
838839
successMetrics: Array.isArray(visionData.successMetrics)
839840
? visionData.successMetrics.map(m => typeof m === 'string' ? m : m.name)
840841
: [],
842+
timeframe: visionData.timeframe,
841843
};
842844

843845
return (
844846
<ChiefOfStaffDashboard
845-
visionData={normalizedVisionData as any}
847+
visionData={normalizedVisionData}
846848
projectState={projectState}
847849
agentActivity={agentActivity}
848850
onModeChange={setMode}

src/pages/dashboard-live.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -454,7 +454,7 @@ const LiveDashboard: React.FC = () => {
454454
>
455455
<ChiefOfStaffDashboard
456456
visionData={visionData}
457-
projectState={projectState as any}
457+
projectState={projectState as ProjectState}
458458
agentActivity={[]}
459459
onModeChange={setMode}
460460
currentMode={engagementMode}

0 commit comments

Comments
 (0)