29 lines
924 B
TypeScript
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',
|
|
};
|
|
}
|