/** * SpecSprite 核心类型定义 * 基于 vibecli 的成功模式,复用和扩展核心类型 */ export type ProjectType = 'blog' | 'ecommerce' | 'saas' | 'portfolio' | 'landing_page' | 'generic'; export interface ValidationResult { valid: boolean; errors: string[]; warnings: string[]; } export interface PRDMetadata { name: string; version: string; generated_at: string; confidence_score: number; session_id: string; } export interface ProjectInfo { type: ProjectType; description: string; target_audience: string; key_features: string[]; business_model?: string; scale_expectations?: 'small' | 'medium' | 'large'; } export interface TechStackConfig { framework: string; database?: string; ui_library: string; deployment_platform?: string; additional_tools: string[]; } export interface FeatureFlags { auth: boolean; payment: boolean; admin: boolean; search: boolean; upload: boolean; realtime: boolean; analytics: boolean; email: boolean; [key: string]: boolean; } export interface FeatureSpecification { name: string; description: string; requirements: string[]; dependencies: string[]; implementation_notes: string[]; } export interface PRDSchema { metadata: PRDMetadata; project: ProjectInfo; tech_stack: TechStackConfig; features: FeatureFlags; specifications: FeatureSpecification[]; constraints: { budget?: 'low' | 'medium' | 'high'; timeline?: 'urgent' | 'normal' | 'flexible'; team_size?: number; complexity_preference?: 'simple' | 'standard' | 'advanced'; }; /** * 运行环境配置。 * CodePaladin 的 PRD 校验要求必须包含该字段, * 至少提供 variables 与 secrets 两个键。 */ environment: { /** 环境变量映射,如 { NEXT_PUBLIC_API_URL: "https://..." } */ variables: Record; /** 需要在部署阶段手动配置的机密变量 key 列表 */ secrets: string[]; }; next_steps: string[]; } export interface GeneratePRDInput { user_input: string; session_id?: string; continue_conversation?: boolean; } export interface GeneratePRDOutput { type: 'conversation' | 'prd' | 'clarification'; session_id: string; content: { message?: string; questions?: string[]; suggestions?: string[]; prd?: PRDSchema; debug_info?: { expert_used: string; confidence: number; reasoning: string; }; }; } export interface ConversationTurn { id: string; timestamp: Date; type: 'user' | 'assistant' | 'system'; content: string; metadata?: { intent?: string; confidence?: number; features_detected?: string[]; }; } export interface AccumulatedContext { project_type?: ProjectType; detected_features: string[]; user_preferences: Record; clarifications_resolved: string[]; tech_preferences: string[]; constraints: Record; } export interface SpecSpriteSession { id: string; started_at: Date; last_activity: Date; conversation_history: ConversationTurn[]; accumulated_context: AccumulatedContext; current_expert?: string; status: 'active' | 'completed' | 'abandoned'; readiness_score: number; } export interface ExpertRoleCard { id: string; name: string; project_type: ProjectType; description: string; conversation_flow: { opening_questions: string[]; core_topics: string[]; clarification_templates: string[]; completion_criteria: string[]; }; knowledge_base: { recommended_tech_stack: string[]; common_features: string[]; best_practices: string[]; pitfalls_to_avoid: string[]; }; } export interface LLMRequest { prompt: string; context?: { session_id: string; expert_role?: string; conversation_history?: ConversationTurn[]; user_context?: AccumulatedContext; }; temperature?: number; max_tokens?: number; } export interface LLMResponse { content: string; metadata?: { model: string; tokens_used: number; confidence?: number; }; } export interface IntentAnalysisResult { project_type: ProjectType; confidence: number; detected_features: string[]; complexity_estimate: 'simple' | 'medium' | 'complex'; clarifications_needed: string[]; suggestions: string[]; reasoning: string; } export interface ReadinessAnalysis { ready_for_prd: boolean; confidence: number; missing_information: string[]; clarification_questions: string[]; current_completeness: number; } export declare class SpecSpriteError extends Error { code: string; context?: Record | undefined; constructor(message: string, code: string, context?: Record | undefined); } export interface ErrorContext { session_id?: string; operation?: string; user_input?: string; timestamp: Date; } export interface SpecSpriteConfig { server: { name: string; version: string; debug: boolean; }; llm: { default_temperature: number; max_tokens: number; timeout_ms: number; }; conversation: { session_timeout_minutes: number; max_conversation_turns: number; min_confidence_for_prd: number; }; experts: { default_expert: string; confidence_threshold: number; }; } //# sourceMappingURL=types.d.ts.map