mirror of
https://github.com/AutoMaker-Org/automaker.git
synced 2026-02-01 20:23:36 +00:00
- Updated the ideation routes to include an EventEmitter for better event management. - Added a new endpoint to handle adding suggestions to the board, ensuring consistent category mapping. - Modified existing routes to emit events for idea creation, update, and deletion, improving frontend notifications. - Refactored the convert and create idea handlers to utilize the new event system. - Removed static guided prompts data in favor of dynamic fetching from the backend API.
110 lines
3.6 KiB
TypeScript
110 lines
3.6 KiB
TypeScript
/**
|
|
* Ideation routes - HTTP API for brainstorming and idea management
|
|
*/
|
|
|
|
import { Router } from 'express';
|
|
import type { EventEmitter } from '../../lib/events.js';
|
|
import { validatePathParams } from '../../middleware/validate-paths.js';
|
|
import type { IdeationService } from '../../services/ideation-service.js';
|
|
import type { FeatureLoader } from '../../services/feature-loader.js';
|
|
|
|
// Route handlers
|
|
import { createSessionStartHandler } from './routes/session-start.js';
|
|
import { createSessionMessageHandler } from './routes/session-message.js';
|
|
import { createSessionStopHandler } from './routes/session-stop.js';
|
|
import { createSessionGetHandler } from './routes/session-get.js';
|
|
import { createIdeasListHandler } from './routes/ideas-list.js';
|
|
import { createIdeasCreateHandler } from './routes/ideas-create.js';
|
|
import { createIdeasGetHandler } from './routes/ideas-get.js';
|
|
import { createIdeasUpdateHandler } from './routes/ideas-update.js';
|
|
import { createIdeasDeleteHandler } from './routes/ideas-delete.js';
|
|
import { createAnalyzeHandler, createGetAnalysisHandler } from './routes/analyze.js';
|
|
import { createConvertHandler } from './routes/convert.js';
|
|
import { createAddSuggestionHandler } from './routes/add-suggestion.js';
|
|
import { createPromptsHandler, createPromptsByCategoryHandler } from './routes/prompts.js';
|
|
import { createSuggestionsGenerateHandler } from './routes/suggestions-generate.js';
|
|
|
|
export function createIdeationRoutes(
|
|
events: EventEmitter,
|
|
ideationService: IdeationService,
|
|
featureLoader: FeatureLoader
|
|
): Router {
|
|
const router = Router();
|
|
|
|
// Session management
|
|
router.post(
|
|
'/session/start',
|
|
validatePathParams('projectPath'),
|
|
createSessionStartHandler(ideationService)
|
|
);
|
|
router.post('/session/message', createSessionMessageHandler(ideationService));
|
|
router.post('/session/stop', createSessionStopHandler(events, ideationService));
|
|
router.post(
|
|
'/session/get',
|
|
validatePathParams('projectPath'),
|
|
createSessionGetHandler(ideationService)
|
|
);
|
|
|
|
// Ideas CRUD
|
|
router.post(
|
|
'/ideas/list',
|
|
validatePathParams('projectPath'),
|
|
createIdeasListHandler(ideationService)
|
|
);
|
|
router.post(
|
|
'/ideas/create',
|
|
validatePathParams('projectPath'),
|
|
createIdeasCreateHandler(events, ideationService)
|
|
);
|
|
router.post(
|
|
'/ideas/get',
|
|
validatePathParams('projectPath'),
|
|
createIdeasGetHandler(ideationService)
|
|
);
|
|
router.post(
|
|
'/ideas/update',
|
|
validatePathParams('projectPath'),
|
|
createIdeasUpdateHandler(events, ideationService)
|
|
);
|
|
router.post(
|
|
'/ideas/delete',
|
|
validatePathParams('projectPath'),
|
|
createIdeasDeleteHandler(events, ideationService)
|
|
);
|
|
|
|
// Project analysis
|
|
router.post('/analyze', validatePathParams('projectPath'), createAnalyzeHandler(ideationService));
|
|
router.post(
|
|
'/analysis',
|
|
validatePathParams('projectPath'),
|
|
createGetAnalysisHandler(ideationService)
|
|
);
|
|
|
|
// Convert to feature
|
|
router.post(
|
|
'/convert',
|
|
validatePathParams('projectPath'),
|
|
createConvertHandler(events, ideationService, featureLoader)
|
|
);
|
|
|
|
// Add suggestion to board as a feature
|
|
router.post(
|
|
'/add-suggestion',
|
|
validatePathParams('projectPath'),
|
|
createAddSuggestionHandler(ideationService, featureLoader)
|
|
);
|
|
|
|
// Guided prompts (no validation needed - static data)
|
|
router.get('/prompts', createPromptsHandler(ideationService));
|
|
router.get('/prompts/:category', createPromptsByCategoryHandler(ideationService));
|
|
|
|
// Generate suggestions (structured output)
|
|
router.post(
|
|
'/suggestions/generate',
|
|
validatePathParams('projectPath'),
|
|
createSuggestionsGenerateHandler(ideationService)
|
|
);
|
|
|
|
return router;
|
|
}
|