import { apiClient } from "./client"; import type { Session } from "../types/session"; import type { ToolInstance } from "../types/tool-instance"; export type { Session } from "../types/session"; export type { ToolInstance } from "../types/tool-instance"; export async function listInstances( projectId: string, repoId: string, ): Promise { const response = await apiClient.get( `/projects/${projectId}/repositories/${repoId}/instances`, ); return response.data.instances; } export async function createInstance( projectId: string, repoId: string, toolTypeId: string, displayName?: string, ): Promise { const response = await apiClient.post( `/projects/${projectId}/repositories/${repoId}/instances`, { tool_type_id: toolTypeId, display_name: displayName, }, ); return response.data; } export async function startInstance( projectId: string, repoId: string, instanceId: string, ): Promise<{ status: string; url?: string }> { const response = await apiClient.post( `/projects/${projectId}/repositories/${repoId}/instances/${instanceId}/start`, ); return response.data; } export async function stopInstance( projectId: string, repoId: string, instanceId: string, ): Promise<{ status: string }> { const response = await apiClient.post( `/projects/${projectId}/repositories/${repoId}/instances/${instanceId}/stop`, ); return response.data; } export async function restartInstance( projectId: string, repoId: string, instanceId: string, ): Promise<{ status: string; url?: string }> { const response = await apiClient.post( `/projects/${projectId}/repositories/${repoId}/instances/${instanceId}/restart`, ); return response.data; } export async function deleteInstance( projectId: string, repoId: string, instanceId: string, ): Promise { await apiClient.delete( `/projects/${projectId}/repositories/${repoId}/instances/${instanceId}`, ); } export async function getUserSessions(): Promise { const response = await apiClient.get("/users/me/sessions"); return response.data.sessions; } export async function checkInstanceHealth( projectId: string, repoId: string, instanceId: string, ): Promise<{ healthy: boolean; status_code: number | null; error?: string }> { const response = await apiClient.get( `/projects/${projectId}/repositories/${repoId}/instances/${instanceId}/health`, ); return response.data; } export async function recreateInstanceTunnel( projectId: string, repoId: string, instanceId: string, ): Promise<{ status: string; url?: string }> { const response = await apiClient.post( `/projects/${projectId}/repositories/${repoId}/instances/${instanceId}/recreate-tunnel`, ); return response.data; }