mirror of
https://github.com/AutoMaker-Org/automaker.git
synced 2026-02-05 09:33:07 +00:00
- Added a new `/sync` endpoint to synchronize the project specification with the current codebase and feature state. - Introduced `syncSpec` function to handle the synchronization logic, updating technology stack, implemented features, and roadmap phases. - Enhanced the running state management to track synchronization tasks alongside existing generation tasks. - Updated UI components to support synchronization actions, including loading indicators and status updates. - Improved logging and error handling for better visibility during sync operations. These changes enhance project management capabilities by ensuring that the specification remains up-to-date with the latest code and feature developments.
71 lines
2.4 KiB
TypeScript
71 lines
2.4 KiB
TypeScript
/**
|
|
* GET / endpoint - Get all running agents
|
|
*/
|
|
|
|
import type { Request, Response } from 'express';
|
|
import type { AutoModeService } from '../../../services/auto-mode-service.js';
|
|
import { getBacklogPlanStatus, getRunningDetails } from '../../backlog-plan/common.js';
|
|
import { getAllRunningGenerations } from '../../app-spec/common.js';
|
|
import path from 'path';
|
|
import { getErrorMessage, logError } from '../common.js';
|
|
|
|
export function createIndexHandler(autoModeService: AutoModeService) {
|
|
return async (_req: Request, res: Response): Promise<void> => {
|
|
try {
|
|
const runningAgents = [...(await autoModeService.getRunningAgents())];
|
|
const backlogPlanStatus = getBacklogPlanStatus();
|
|
const backlogPlanDetails = getRunningDetails();
|
|
|
|
if (backlogPlanStatus.isRunning && backlogPlanDetails) {
|
|
runningAgents.push({
|
|
featureId: `backlog-plan:${backlogPlanDetails.projectPath}`,
|
|
projectPath: backlogPlanDetails.projectPath,
|
|
projectName: path.basename(backlogPlanDetails.projectPath),
|
|
isAutoMode: false,
|
|
title: 'Backlog plan',
|
|
description: backlogPlanDetails.prompt,
|
|
});
|
|
}
|
|
|
|
// Add spec/feature generation tasks
|
|
const specGenerations = getAllRunningGenerations();
|
|
for (const generation of specGenerations) {
|
|
let title: string;
|
|
let description: string;
|
|
|
|
switch (generation.type) {
|
|
case 'feature_generation':
|
|
title = 'Generating features from spec';
|
|
description = 'Creating features from the project specification';
|
|
break;
|
|
case 'sync':
|
|
title = 'Syncing spec with code';
|
|
description = 'Updating spec from codebase and completed features';
|
|
break;
|
|
default:
|
|
title = 'Regenerating spec';
|
|
description = 'Analyzing project and generating specification';
|
|
}
|
|
|
|
runningAgents.push({
|
|
featureId: `spec-generation:${generation.projectPath}`,
|
|
projectPath: generation.projectPath,
|
|
projectName: path.basename(generation.projectPath),
|
|
isAutoMode: false,
|
|
title,
|
|
description,
|
|
});
|
|
}
|
|
|
|
res.json({
|
|
success: true,
|
|
runningAgents,
|
|
totalCount: runningAgents.length,
|
|
});
|
|
} catch (error) {
|
|
logError(error, 'Get running agents failed');
|
|
res.status(500).json({ success: false, error: getErrorMessage(error) });
|
|
}
|
|
};
|
|
}
|