mirror of
https://github.com/AutoMaker-Org/automaker.git
synced 2026-02-04 21:23:07 +00:00
- Added new RadioGroup and Switch components for better UI interaction. - Introduced BranchSelector for improved branch selection in feature dialogs. - Updated Autocomplete and BranchAutocomplete components to handle error states. - Refactored feature management to archive verified features instead of deleting them. - Enhanced worktree handling by removing worktreePath from features, relying on branchName instead. - Improved auto mode functionality by integrating branch management and worktree updates. - Cleaned up unused code and optimized existing logic for better performance.
60 lines
1.8 KiB
TypeScript
60 lines
1.8 KiB
TypeScript
/**
|
|
* POST /follow-up-feature endpoint - Follow up on a feature
|
|
*/
|
|
|
|
import type { Request, Response } from "express";
|
|
import type { AutoModeService } from "../../../services/auto-mode-service.js";
|
|
import { createLogger } from "../../../lib/logger.js";
|
|
import { getErrorMessage, logError } from "../common.js";
|
|
|
|
const logger = createLogger("AutoMode");
|
|
|
|
export function createFollowUpFeatureHandler(autoModeService: AutoModeService) {
|
|
return async (req: Request, res: Response): Promise<void> => {
|
|
try {
|
|
const { projectPath, featureId, prompt, imagePaths, useWorktrees } =
|
|
req.body as {
|
|
projectPath: string;
|
|
featureId: string;
|
|
prompt: string;
|
|
imagePaths?: string[];
|
|
useWorktrees?: boolean;
|
|
};
|
|
|
|
if (!projectPath || !featureId || !prompt) {
|
|
res.status(400).json({
|
|
success: false,
|
|
error: "projectPath, featureId, and prompt are required",
|
|
});
|
|
return;
|
|
}
|
|
|
|
// Start follow-up in background
|
|
// followUpFeature derives workDir from feature.branchName
|
|
autoModeService
|
|
.followUpFeature(
|
|
projectPath,
|
|
featureId,
|
|
prompt,
|
|
imagePaths,
|
|
useWorktrees ?? true
|
|
)
|
|
.catch((error) => {
|
|
logger.error(
|
|
`[AutoMode] Follow up feature ${featureId} error:`,
|
|
error
|
|
);
|
|
})
|
|
.finally(() => {
|
|
// Release the starting slot when follow-up completes (success or error)
|
|
// Note: The feature should be in runningFeatures by this point
|
|
});
|
|
|
|
res.json({ success: true });
|
|
} catch (error) {
|
|
logError(error, "Follow up feature failed");
|
|
res.status(500).json({ success: false, error: getErrorMessage(error) });
|
|
}
|
|
};
|
|
}
|