A Docker-like CLI and HTTP API for managing headless VMs
at main 2.6 kB view raw
1import { Data } from "effect"; 2 3// API Errors 4export class ImageNotFoundError extends Data.TaggedError("ImageNotFoundError")<{ 5 id: string; 6}> {} 7 8export class RemoveRunningVmError extends Data.TaggedError( 9 "RemoveRunningVmError", 10)<{ 11 id: string; 12}> {} 13 14export class ParseRequestError extends Data.TaggedError("ParseRequestError")<{ 15 cause?: unknown; 16 message: string; 17}> {} 18 19// Config Errors 20export class VmConfigError extends Data.TaggedError("VmConfigError")<{ 21 cause?: string; 22}> {} 23 24// Volume Errors 25export class VolumeError extends Data.TaggedError("VolumeError")<{ 26 message?: unknown; 27}> {} 28 29// ORAS/Image Registry Errors 30export class PushImageError extends Data.TaggedError("PushImageError")<{ 31 cause?: unknown; 32}> {} 33 34export class PullImageError extends Data.TaggedError("PullImageError")<{ 35 cause?: unknown; 36}> {} 37 38export class CreateDirectoryError extends Data.TaggedError( 39 "CreateDirectoryError", 40)<{ 41 cause?: unknown; 42}> {} 43 44export class ImageAlreadyPulledError extends Data.TaggedError( 45 "ImageAlreadyPulledError", 46)<{ 47 name: string; 48}> {} 49 50// Database Errors 51export class DbError extends Data.TaggedError("DatabaseError")<{ 52 message?: string; 53 cause?: unknown; 54}> {} 55 56export class DbQueryError extends Data.TaggedError("DbQueryError")<{ 57 cause?: unknown; 58}> {} 59 60// Network Errors 61export class NetworkError extends Data.TaggedError("NetworkError")<{ 62 cause?: unknown; 63}> {} 64 65export class BridgeSetupError extends Data.TaggedError("BridgeSetupError")<{ 66 cause?: unknown; 67}> {} 68 69// VM Operation Errors 70export class VmNotFoundError extends Data.TaggedError("VmNotFoundError")<{ 71 name: string; 72}> {} 73 74export class VmAlreadyRunningError extends Data.TaggedError( 75 "VmAlreadyRunningError", 76)<{ 77 name: string; 78}> {} 79 80export class StopCommandError extends Data.TaggedError("StopCommandError")<{ 81 vmName: string; 82 exitCode: number; 83 message?: string; 84}> {} 85 86export class KillQemuError extends Data.TaggedError("KillQemuError")<{ 87 vmName: string; 88}> {} 89 90export class CommandError extends Data.TaggedError("CommandError")<{ 91 cause?: unknown; 92}> {} 93 94// Log Errors 95export class LogCommandError extends Data.TaggedError("LogCommandError")<{ 96 vmName?: string; 97 exitCode?: number; 98 cause?: unknown; 99}> {} 100 101// Image/File Errors 102export class InvalidImageNameError extends Data.TaggedError( 103 "InvalidImageNameError", 104)<{ 105 image: string; 106 cause?: unknown; 107}> {} 108 109export class NoSuchImageError extends Data.TaggedError("NoSuchImageError")<{ 110 cause: string; 111}> {} 112 113export class NoSuchFileError extends Data.TaggedError("NoSuchFileError")<{ 114 cause: string; 115}> {}