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:
2026-02-24 11:42:06 -06:00
parent c8b484b10e
commit 08e73a1eb6
7 changed files with 10 additions and 1362 deletions

View File

@@ -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