import { jsonResponse, errorResponse } from '../utils/cors' import { PORT_TERMINAL } from '../config' type ClaudeStatus = | 'idle' | 'processing' // UserPromptSubmit - Claude is processing user input | 'toolUse' // PreToolUse - Using a tool (generic) | 'toolDone' // PostToolUse - Tool finished | 'reading' // PreToolUse(Read/Glob/Grep) - Reading files | 'writing' // PreToolUse(Edit/Write) - Writing files | 'sessionStart' // SessionStart - Session just started | 'subagentStart' // SubagentStart - Spawning subagent | 'subagentStop' // SubagentStop - Subagent finished | 'notification' // Notification - Claude sent notification | 'permissionRequest' // PermissionRequest - Waiting for user permission | 'thinking' // Legacy support interface ClaudeStatusPayload { status: ClaudeStatus tool?: string agent?: string } export async function handleClaudeStatus(req: Request): Promise { if (req.method !== 'POST') return null try { const body = await req.json() as ClaudeStatusPayload const validStatuses: ClaudeStatus[] = [ 'idle', 'processing', 'toolUse', 'toolDone', 'reading', 'writing', 'sessionStart', 'subagentStart', 'subagentStop', 'notification', 'permissionRequest', 'thinking' ] if (!body.status || !validStatuses.includes(body.status)) { return errorResponse(`Invalid status. Must be one of: ${validStatuses.join(', ')}`, 400) } // Forward to terminal server for WebSocket broadcast try { await fetch(`http://localhost:${PORT_TERMINAL}/claude-status`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(body) }) } catch (e) { console.error('[claude-status] Failed to forward to terminal server:', e) } return jsonResponse({ success: true, status: body.status }) } catch (e) { return errorResponse('Invalid JSON body', 400) } }