import { fetchJson, type ApiRequestOptions } from "../client"; import { getBackendConfig } from "@/lib/config"; import type { ProcessInfo } from "@/lib/types/http"; // Process operations export async function startProcess( sessionId: string, payload: { kind: string; script_name?: string; repo_id?: string }, options?: ApiRequestOptions, ) { return fetchJson<{ process: ProcessInfo }>(`/api/v1/task-sessions/${sessionId}/processes/start`, { ...options, init: { method: "POST", body: JSON.stringify(payload), ...(options?.init ?? {}) }, }); } export async function stopProcess( sessionId: string, payload: { process_id: string }, options?: ApiRequestOptions, ) { return fetchJson( `/api/v1/task-sessions/${sessionId}/processes/${payload.process_id}/stop`, { ...options, init: { method: "POST", ...(options?.init ?? {}) }, }, ); } export async function listSessionProcesses(sessionId: string, options?: ApiRequestOptions) { return fetchJson(`/api/v1/task-sessions/${sessionId}/processes`, options); } export async function getSessionProcess( sessionId: string, processId: string, includeOutput = false, options?: ApiRequestOptions, ) { const baseUrl = options?.baseUrl ?? getBackendConfig().apiBaseUrl; const url = new URL(`${baseUrl}/api/v1/task-sessions/${sessionId}/processes/${processId}`); if (includeOutput) { url.searchParams.set("include_output", "true"); } return fetchJson(url.toString(), options); }