refactor: remove dead notification systems and legacy broadcasts
- Delete claude-hooks.ts store (processHook never called, always empty) - Delete HookNotifications.vue and NotificationLog.vue (orphan components) - Delete claude-status.ts route and broadcastClaudeStatus (no consumers) - Delete agent-bar.md legacy doc - Remove legacy WS 'claude-hook' broadcast (frontend ignores it) - Move isAgentRunning tracking into broadcastClaudeHook
This commit is contained in:
@@ -295,17 +295,6 @@ export function startTerminalServer() {
|
||||
return Response.json({ sessions: list })
|
||||
}
|
||||
|
||||
// Claude status broadcast endpoint
|
||||
if (url.pathname === '/claude-status' && req.method === 'POST') {
|
||||
try {
|
||||
const body = await req.json() as { status: ClaudeStatus, tool?: string, agent?: string }
|
||||
broadcastClaudeStatus(body.status, body.tool, body.agent)
|
||||
return Response.json({ success: true }, { headers: corsHeaders })
|
||||
} catch {
|
||||
return Response.json({ error: 'Invalid JSON' }, { status: 400, headers: corsHeaders })
|
||||
}
|
||||
}
|
||||
|
||||
// Claude hook broadcast endpoint (rich data from stdin)
|
||||
if (url.pathname === '/claude-hook' && req.method === 'POST') {
|
||||
try {
|
||||
@@ -718,57 +707,20 @@ export function startTerminalServer() {
|
||||
return server
|
||||
}
|
||||
|
||||
// Claude status types
|
||||
type ClaudeStatus = 'idle' | 'thinking' | 'toolUse' | 'reading' | 'writing' | 'sessionStart' | 'sessionEnd' | 'permissionRequest' | 'interrupted' | 'error'
|
||||
|
||||
// Broadcast Claude status to ALL clients across ALL sessions
|
||||
export function broadcastClaudeStatus(status: ClaudeStatus, tool?: string, agent?: string) {
|
||||
const agentName = agent || 'claude'
|
||||
|
||||
// Track agent running state
|
||||
if (status === 'sessionStart') {
|
||||
const state = agentSessions.get(agentName)
|
||||
if (state) {
|
||||
state.isAgentRunning = true
|
||||
console.log(`[Terminal] Agent ${agentName} marked as running (sessionStart)`)
|
||||
}
|
||||
} else if (status === 'sessionEnd') {
|
||||
const state = agentSessions.get(agentName)
|
||||
if (state) {
|
||||
state.isAgentRunning = false
|
||||
console.log(`[Terminal] Agent ${agentName} marked as stopped (sessionEnd)`)
|
||||
}
|
||||
}
|
||||
|
||||
const message = JSON.stringify({
|
||||
type: 'claude-status',
|
||||
status,
|
||||
tool,
|
||||
agent: agentName,
|
||||
timestamp: Date.now()
|
||||
})
|
||||
|
||||
const clientCount = broadcastToAll(message)
|
||||
console.log(`[Terminal] Claude status broadcast: ${status}${tool ? ` (${tool})` : ''} → ${clientCount} clients`)
|
||||
|
||||
// Note: session state is updated via broadcastClaudeHook which has full payload context.
|
||||
}
|
||||
|
||||
// Broadcast full Claude hook data to ALL clients
|
||||
// Process hook event and broadcast session state patch to ALL clients
|
||||
export function broadcastClaudeHook(data: Record<string, unknown>) {
|
||||
// ── Update centralized session state and broadcast patch ──
|
||||
const statePatch = sessionState.processHookEvent(data as any)
|
||||
broadcastSessionStatePatch(statePatch)
|
||||
|
||||
// ── Legacy raw broadcast (dual temporal — kept for backward compatibility) ──
|
||||
const message = JSON.stringify({
|
||||
type: 'claude-hook',
|
||||
...data,
|
||||
timestamp: Date.now()
|
||||
})
|
||||
|
||||
const clientCount = broadcastToAll(message)
|
||||
console.log(`[Terminal] Claude hook broadcast: ${data.hook_event_name || 'unknown'}${data.tool_name ? ` (${data.tool_name})` : ''} → ${clientCount} clients`)
|
||||
// Track agent running state in terminal sessions
|
||||
const agentName = (data.agent_name as string) || 'claude'
|
||||
const event = data.hook_event_name as string
|
||||
if (event === 'SessionStart' || event === 'SessionEnd') {
|
||||
const state = agentSessions.get(agentName)
|
||||
if (state) {
|
||||
state.isAgentRunning = event === 'SessionStart'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Broadcast transcript updates to ALL clients
|
||||
|
||||
Reference in New Issue
Block a user