import { invoke } from "@tauri-apps/api/core"; import type { Project, ProjectPath, ContainerInfo, SiblingContainer, AppSettings, UpdateInfo, McpServer, FileEntry } from "./types"; // Docker export const checkDocker = () => invoke("check_docker"); export const checkImageExists = () => invoke("check_image_exists"); export const buildImage = () => invoke("build_image"); export const getContainerInfo = (projectId: string) => invoke("get_container_info", { projectId }); export const listSiblingContainers = () => invoke("list_sibling_containers"); // Projects export const listProjects = () => invoke("list_projects"); export const addProject = (name: string, paths: ProjectPath[]) => invoke("add_project", { name, paths }); export const removeProject = (projectId: string) => invoke("remove_project", { projectId }); export const updateProject = (project: Project) => invoke("update_project", { project }); export const startProjectContainer = (projectId: string) => invoke("start_project_container", { projectId }); export const stopProjectContainer = (projectId: string) => invoke("stop_project_container", { projectId }); export const rebuildProjectContainer = (projectId: string) => invoke("rebuild_project_container", { projectId }); // Settings export const getSettings = () => invoke("get_settings"); export const updateSettings = (settings: AppSettings) => invoke("update_settings", { settings }); export const pullImage = (imageName: string) => invoke("pull_image", { imageName }); export const detectAwsConfig = () => invoke("detect_aws_config"); export const listAwsProfiles = () => invoke("list_aws_profiles"); export const detectHostTimezone = () => invoke("detect_host_timezone"); // Terminal export const openTerminalSession = (projectId: string, sessionId: string, sessionType?: string) => invoke("open_terminal_session", { projectId, sessionId, sessionType }); export const terminalInput = (sessionId: string, data: number[]) => invoke("terminal_input", { sessionId, data }); export const terminalResize = (sessionId: string, cols: number, rows: number) => invoke("terminal_resize", { sessionId, cols, rows }); export const closeTerminalSession = (sessionId: string) => invoke("close_terminal_session", { sessionId }); export const pasteImageToTerminal = (sessionId: string, imageData: number[]) => invoke("paste_image_to_terminal", { sessionId, imageData }); export const startAudioBridge = (sessionId: string) => invoke("start_audio_bridge", { sessionId }); export const sendAudioData = (sessionId: string, data: number[]) => invoke("send_audio_data", { sessionId, data }); export const stopAudioBridge = (sessionId: string) => invoke("stop_audio_bridge", { sessionId }); // MCP Servers export const listMcpServers = () => invoke("list_mcp_servers"); export const addMcpServer = (name: string) => invoke("add_mcp_server", { name }); export const updateMcpServer = (server: McpServer) => invoke("update_mcp_server", { server }); export const removeMcpServer = (serverId: string) => invoke("remove_mcp_server", { serverId }); // Files export const listContainerFiles = (projectId: string, path: string) => invoke("list_container_files", { projectId, path }); export const downloadContainerFile = (projectId: string, containerPath: string, hostPath: string) => invoke("download_container_file", { projectId, containerPath, hostPath }); export const uploadFileToContainer = (projectId: string, hostPath: string, containerDir: string) => invoke("upload_file_to_container", { projectId, hostPath, containerDir }); // Updates export const getAppVersion = () => invoke("get_app_version"); export const checkForUpdates = () => invoke("check_for_updates");