mirror of https://github.com/kortix-ai/suna.git
wip
This commit is contained in:
parent
41ee63719d
commit
286e7edeef
|
@ -277,6 +277,8 @@ export function useAgentProcessingJobs(agentId: string) {
|
||||||
return useQuery({
|
return useQuery({
|
||||||
queryKey: knowledgeBaseKeys.processingJobs(agentId),
|
queryKey: knowledgeBaseKeys.processingJobs(agentId),
|
||||||
queryFn: async (): Promise<ProcessingJobsResponse> => {
|
queryFn: async (): Promise<ProcessingJobsResponse> => {
|
||||||
|
console.log('📊 Fetching processing jobs for agent:', agentId);
|
||||||
|
|
||||||
const headers = await getHeaders();
|
const headers = await getHeaders();
|
||||||
const response = await fetch(`${API_URL}/knowledge-base/agents/${agentId}/processing-jobs`, { headers });
|
const response = await fetch(`${API_URL}/knowledge-base/agents/${agentId}/processing-jobs`, { headers });
|
||||||
|
|
||||||
|
@ -285,9 +287,43 @@ export function useAgentProcessingJobs(agentId: string) {
|
||||||
throw new Error(error || 'Failed to fetch processing jobs');
|
throw new Error(error || 'Failed to fetch processing jobs');
|
||||||
}
|
}
|
||||||
|
|
||||||
return await response.json();
|
const data = await response.json();
|
||||||
|
console.log('📊 Processing jobs response:', {
|
||||||
|
agentId,
|
||||||
|
jobCount: data.jobs?.length || 0,
|
||||||
|
activeJobs: data.jobs?.filter(job => job.status === 'processing' || job.status === 'pending').length || 0
|
||||||
|
});
|
||||||
|
|
||||||
|
return data;
|
||||||
},
|
},
|
||||||
enabled: !!agentId,
|
enabled: !!agentId,
|
||||||
refetchInterval: 5000,
|
// Smart polling: only poll when there are active processing jobs
|
||||||
|
refetchInterval: (query) => {
|
||||||
|
const data = query.state.data as ProcessingJobsResponse | undefined;
|
||||||
|
|
||||||
|
// If no data yet, check once after 2 seconds
|
||||||
|
if (!data) {
|
||||||
|
console.log('⏱️ No data yet, polling in 2 seconds');
|
||||||
|
return 2000;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if there are any active processing jobs (pending or processing status)
|
||||||
|
const hasActiveJobs = data.jobs?.some(job =>
|
||||||
|
job.status === 'processing' || job.status === 'pending'
|
||||||
|
);
|
||||||
|
|
||||||
|
const nextInterval = hasActiveJobs ? 3000 : 30000;
|
||||||
|
console.log('⏱️ Polling decision:', {
|
||||||
|
hasActiveJobs,
|
||||||
|
nextInterval: `${nextInterval/1000}s`,
|
||||||
|
jobStatuses: data.jobs?.map(job => job.status) || []
|
||||||
|
});
|
||||||
|
|
||||||
|
// If there are active jobs, poll every 3 seconds
|
||||||
|
// If no active jobs, poll every 30 seconds (much less frequent)
|
||||||
|
return nextInterval;
|
||||||
|
},
|
||||||
|
// Stop polling when window is not focused to save resources
|
||||||
|
refetchIntervalInBackground: false,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue