feat: add AI chat builder frontend — types, API client, store, components, page, routing

- TypeScript types for chat session, messages, and responses
- API client module with all 6 endpoints
- Zustand store with session management, message sending, tree generation, import, resume
- 7 chat components: ChatMessage, ChatInput, ChatPanel, PhaseIndicator, ChatToolbar, EmptyPreview, StaticTreePreview
- AIChatBuilderPage with split-panel layout (60% chat / 40% preview)
- Route at /ai/chat with lazy loading
- "Build with AI" button on TreeLibraryPage
- Session resume via URL search params

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
chihlasm
2026-02-27 07:20:04 -05:00
parent 0da67586da
commit 596153085a
15 changed files with 844 additions and 6 deletions

View File

@@ -0,0 +1,43 @@
export type InterviewPhase = 'scoping' | 'discovery' | 'enrichment' | 'review' | 'generation'
export interface ChatMessage {
role: 'user' | 'assistant'
content: string
timestamp: string
}
export interface AIChatStartResponse {
session_id: string
greeting: string
current_phase: InterviewPhase
}
export interface AIChatMessageResponse {
content: string
current_phase: InterviewPhase
working_tree: Record<string, unknown> | null
tree_metadata: Record<string, unknown> | null
}
export interface AIChatSessionResponse {
session_id: string
status: 'active' | 'completed' | 'abandoned'
current_phase: InterviewPhase
flow_type: 'troubleshooting' | 'procedural'
conversation_history: ChatMessage[]
working_tree: Record<string, unknown> | null
tree_metadata: Record<string, unknown> | null
message_count: number
generated_tree: Record<string, unknown> | null
}
export interface AIChatGenerateResponse {
tree_structure: Record<string, unknown>
tree_metadata: Record<string, unknown>
status: string
}
export interface AIChatImportResponse {
tree_id: string
tree_type: string
}

View File

@@ -52,3 +52,13 @@ export type {
AIFixProposal,
AIFixValidationError,
} from './ai-fix'
export type {
InterviewPhase,
ChatMessage,
AIChatStartResponse,
AIChatMessageResponse,
AIChatSessionResponse,
AIChatGenerateResponse,
AIChatImportResponse,
} from './ai-chat'