Files
kandev/apps/web/hooks/use-session-agentctl.ts
T
2026-01-17 19:02:22 +00:00

29 lines
924 B
TypeScript

import { useEffect } from 'react';
import { useAppStore } from '@/components/state-provider';
import { getWebSocketClient } from '@/lib/ws/connection';
export function useSessionAgentctl(sessionId: string | null) {
const session = useAppStore((state) =>
sessionId ? state.taskSessions.items[sessionId] : undefined
);
const status = useAppStore((state) =>
sessionId ? state.sessionAgentctl.itemsBySessionId[sessionId] : undefined
);
useEffect(() => {
if (!session?.id) return;
const client = getWebSocketClient();
if (!client) return;
return client.subscribeSession(session.id);
}, [session?.id]);
return {
status: status?.status ?? 'starting',
errorMessage: status?.errorMessage,
agentExecutionId: status?.agentExecutionId,
isReady: status?.status === 'ready',
isStarting: status?.status === 'starting' || !status,
isError: status?.status === 'error',
};
}