|
|
import { toast } from 'sonner' |
|
|
|
|
|
import { APIRoutes } from './routes' |
|
|
|
|
|
import { AgentDetails, Sessions, TeamDetails } from '@/types/os' |
|
|
|
|
|
export const getAgentsAPI = async ( |
|
|
endpoint: string |
|
|
): Promise<AgentDetails[]> => { |
|
|
const url = APIRoutes.GetAgents(endpoint) |
|
|
try { |
|
|
const response = await fetch(url, { method: 'GET' }) |
|
|
if (!response.ok) { |
|
|
toast.error(`Failed to fetch agents: ${response.statusText}`) |
|
|
return [] |
|
|
} |
|
|
const data = await response.json() |
|
|
return data |
|
|
} catch { |
|
|
toast.error('Error fetching agents') |
|
|
return [] |
|
|
} |
|
|
} |
|
|
|
|
|
export const getStatusAPI = async (base: string): Promise<number> => { |
|
|
const response = await fetch(APIRoutes.Status(base), { |
|
|
method: 'GET' |
|
|
}) |
|
|
return response.status |
|
|
} |
|
|
|
|
|
export const getAllSessionsAPI = async ( |
|
|
base: string, |
|
|
type: 'agent' | 'team', |
|
|
componentId: string, |
|
|
dbId: string |
|
|
): Promise<Sessions | { data: [] }> => { |
|
|
try { |
|
|
const url = new URL(APIRoutes.GetSessions(base)) |
|
|
url.searchParams.set('type', type) |
|
|
url.searchParams.set('component_id', componentId) |
|
|
url.searchParams.set('db_id', dbId) |
|
|
|
|
|
const response = await fetch(url.toString(), { |
|
|
method: 'GET' |
|
|
}) |
|
|
|
|
|
if (!response.ok) { |
|
|
if (response.status === 404) { |
|
|
return { data: [] } |
|
|
} |
|
|
throw new Error(`Failed to fetch sessions: ${response.statusText}`) |
|
|
} |
|
|
return response.json() |
|
|
} catch { |
|
|
return { data: [] } |
|
|
} |
|
|
} |
|
|
|
|
|
export const getSessionAPI = async ( |
|
|
base: string, |
|
|
type: 'agent' | 'team', |
|
|
sessionId: string, |
|
|
dbId?: string |
|
|
) => { |
|
|
|
|
|
const queryParams = new URLSearchParams({ type }) |
|
|
if (dbId) queryParams.append('db_id', dbId) |
|
|
|
|
|
const response = await fetch( |
|
|
`${APIRoutes.GetSession(base, sessionId)}?${queryParams.toString()}`, |
|
|
{ |
|
|
method: 'GET' |
|
|
} |
|
|
) |
|
|
|
|
|
if (!response.ok) { |
|
|
throw new Error(`Failed to fetch session: ${response.statusText}`) |
|
|
} |
|
|
|
|
|
return response.json() |
|
|
} |
|
|
|
|
|
export const deleteSessionAPI = async ( |
|
|
base: string, |
|
|
dbId: string, |
|
|
sessionId: string |
|
|
) => { |
|
|
const queryParams = new URLSearchParams() |
|
|
if (dbId) queryParams.append('db_id', dbId) |
|
|
const response = await fetch( |
|
|
`${APIRoutes.DeleteSession(base, sessionId)}?${queryParams.toString()}`, |
|
|
{ |
|
|
method: 'DELETE' |
|
|
} |
|
|
) |
|
|
return response |
|
|
} |
|
|
|
|
|
export const getTeamsAPI = async (endpoint: string): Promise<TeamDetails[]> => { |
|
|
const url = APIRoutes.GetTeams(endpoint) |
|
|
try { |
|
|
const response = await fetch(url, { method: 'GET' }) |
|
|
if (!response.ok) { |
|
|
toast.error(`Failed to fetch teams: ${response.statusText}`) |
|
|
return [] |
|
|
} |
|
|
const data = await response.json() |
|
|
|
|
|
return data |
|
|
} catch { |
|
|
toast.error('Error fetching teams') |
|
|
return [] |
|
|
} |
|
|
} |
|
|
|
|
|
export const deleteTeamSessionAPI = async ( |
|
|
base: string, |
|
|
teamId: string, |
|
|
sessionId: string |
|
|
) => { |
|
|
const response = await fetch( |
|
|
APIRoutes.DeleteTeamSession(base, teamId, sessionId), |
|
|
{ |
|
|
method: 'DELETE' |
|
|
} |
|
|
) |
|
|
|
|
|
if (!response.ok) { |
|
|
throw new Error(`Failed to delete team session: ${response.statusText}`) |
|
|
} |
|
|
return response |
|
|
} |
|
|
|