mirror of
https://github.com/AutoMaker-Org/automaker.git
synced 2026-02-01 20:23:36 +00:00
feat: implement ideation feature for brainstorming and idea management
- Introduced a new IdeationService to manage brainstorming sessions, including idea creation, analysis, and conversion to features. - Added RESTful API routes for ideation, including session management, idea CRUD operations, and suggestion generation. - Created UI components for the ideation dashboard, prompt selection, and category grid to enhance user experience. - Integrated keyboard shortcuts and navigation for the ideation feature, improving accessibility and workflow. - Updated state management with Zustand to handle ideation-specific data and actions. - Added necessary types and paths for ideation functionality, ensuring type safety and clarity in the codebase.
This commit is contained in:
@@ -13,6 +13,16 @@ import type {
|
||||
AgentModel,
|
||||
GitHubComment,
|
||||
IssueCommentsResult,
|
||||
Idea,
|
||||
IdeaCategory,
|
||||
IdeationSession,
|
||||
IdeationMessage,
|
||||
ProjectAnalysisResult,
|
||||
AnalysisSuggestion,
|
||||
StartSessionOptions,
|
||||
CreateIdeaInput,
|
||||
UpdateIdeaInput,
|
||||
ConvertToFeatureOptions,
|
||||
} from '@automaker/types';
|
||||
import { getJSON, setJSON, removeItem } from './storage';
|
||||
|
||||
@@ -30,6 +40,94 @@ export type {
|
||||
IssueCommentsResult,
|
||||
};
|
||||
|
||||
// Re-export ideation types
|
||||
export type {
|
||||
Idea,
|
||||
IdeaCategory,
|
||||
IdeationSession,
|
||||
IdeationMessage,
|
||||
ProjectAnalysisResult,
|
||||
AnalysisSuggestion,
|
||||
StartSessionOptions,
|
||||
CreateIdeaInput,
|
||||
UpdateIdeaInput,
|
||||
ConvertToFeatureOptions,
|
||||
};
|
||||
|
||||
// Ideation API interface
|
||||
export interface IdeationAPI {
|
||||
// Session management
|
||||
startSession: (
|
||||
projectPath: string,
|
||||
options?: StartSessionOptions
|
||||
) => Promise<{ success: boolean; session?: IdeationSession; error?: string }>;
|
||||
getSession: (
|
||||
projectPath: string,
|
||||
sessionId: string
|
||||
) => Promise<{
|
||||
success: boolean;
|
||||
session?: IdeationSession;
|
||||
messages?: IdeationMessage[];
|
||||
error?: string;
|
||||
}>;
|
||||
sendMessage: (
|
||||
sessionId: string,
|
||||
message: string,
|
||||
options?: { imagePaths?: string[]; model?: string }
|
||||
) => Promise<{ success: boolean; error?: string }>;
|
||||
stopSession: (sessionId: string) => Promise<{ success: boolean; error?: string }>;
|
||||
|
||||
// Ideas CRUD
|
||||
listIdeas: (projectPath: string) => Promise<{ success: boolean; ideas?: Idea[]; error?: string }>;
|
||||
createIdea: (
|
||||
projectPath: string,
|
||||
idea: CreateIdeaInput
|
||||
) => Promise<{ success: boolean; idea?: Idea; error?: string }>;
|
||||
getIdea: (
|
||||
projectPath: string,
|
||||
ideaId: string
|
||||
) => Promise<{ success: boolean; idea?: Idea; error?: string }>;
|
||||
updateIdea: (
|
||||
projectPath: string,
|
||||
ideaId: string,
|
||||
updates: UpdateIdeaInput
|
||||
) => Promise<{ success: boolean; idea?: Idea; error?: string }>;
|
||||
deleteIdea: (
|
||||
projectPath: string,
|
||||
ideaId: string
|
||||
) => Promise<{ success: boolean; error?: string }>;
|
||||
|
||||
// Project analysis
|
||||
analyzeProject: (
|
||||
projectPath: string
|
||||
) => Promise<{ success: boolean; analysis?: ProjectAnalysisResult; error?: string }>;
|
||||
|
||||
// Generate suggestions from a prompt
|
||||
generateSuggestions: (
|
||||
projectPath: string,
|
||||
promptId: string,
|
||||
category: IdeaCategory,
|
||||
count?: number
|
||||
) => Promise<{ success: boolean; suggestions?: AnalysisSuggestion[]; error?: string }>;
|
||||
|
||||
// Convert to feature
|
||||
convertToFeature: (
|
||||
projectPath: string,
|
||||
ideaId: string,
|
||||
options?: ConvertToFeatureOptions
|
||||
) => Promise<{ success: boolean; feature?: any; featureId?: string; error?: string }>;
|
||||
|
||||
// Add suggestion directly to board as feature
|
||||
addSuggestionToBoard: (
|
||||
projectPath: string,
|
||||
suggestion: AnalysisSuggestion
|
||||
) => Promise<{ success: boolean; featureId?: string; error?: string }>;
|
||||
|
||||
// Event subscriptions
|
||||
onStream: (callback: (event: any) => void) => () => void;
|
||||
onAnalysisEvent: (callback: (event: any) => void) => () => void;
|
||||
}
|
||||
|
||||
export interface FileEntry {
|
||||
name: string;
|
||||
isDirectory: boolean;
|
||||
@@ -647,6 +745,7 @@ export interface ElectronAPI {
|
||||
error?: string;
|
||||
}>;
|
||||
};
|
||||
ideation?: IdeationAPI;
|
||||
}
|
||||
|
||||
// Note: Window interface is declared in @/types/electron.d.ts
|
||||
|
||||
Reference in New Issue
Block a user