File size: 3,103 Bytes
bbe4eea |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 |
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
) => {
// build query 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
}
|