feat: centralized PTY-scoped session state, sync engine debug panel, lifecycle states, WS monitor
- Refactor session state to use ptySessionId as primary key across all components - Add SessionStateManager with PTY-scoped hook processing, approval tracking, notifications - Add sync-engine debug panel (AgentStatesSection, HookTimelineSection, TerminalRegistrySection, WsMonitorSection) - Add useLifecycleStates composable for continuous state chips (session, responding, tool, subagent, compacting) - Add WS monitor endpoint and composable for real-time connection health - Enhance SessionLifecycleStatus with animated state chips and badge counts - Enhance SystemMessage with expanded content and better formatting - Update hooks (approval-permission, approval-plan, notify) with pty_session injection - Update approval system to derive pending lists from PTY-scoped state - Update ChatContainer with PTY-derived agent status and lifecycle events - Update AgentBadge with PTY-scoped status colors - Improve PiP window, approval window, and loading window handling
This commit is contained in:
@@ -12,6 +12,9 @@ export async function handleClaudeHook(req: Request): Promise<Response | null> {
|
||||
let agent = url.searchParams.get('agent') || ''
|
||||
const body = await req.json() as HookPayload
|
||||
|
||||
// Read PTY session ID from env-injected query param
|
||||
const ptySession = url.searchParams.get('pty_session') || ''
|
||||
|
||||
// Auto-detect agent from session_id or transcript_path
|
||||
if (!agent && body.session_id) {
|
||||
agent = sessionState.findAgentBySessionId(body.session_id) || ''
|
||||
@@ -54,8 +57,8 @@ export async function handleClaudeHook(req: Request): Promise<Response | null> {
|
||||
}
|
||||
}
|
||||
|
||||
// Inject agent name into hook data for WS consumers
|
||||
const hookData = { ...body, agent_name: agent }
|
||||
// Inject agent name and PTY session into hook data for WS consumers
|
||||
const hookData = { ...body, agent_name: agent, pty_session: ptySession }
|
||||
|
||||
// 1. Broadcast full hook data via WebSocket (always, even for subagents)
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user