// Package domain contains pure domain models with no external dependencies. // These types represent the core business concepts of the application. package domain // ProjectID is a strongly-typed identifier for projects. type ProjectID string // Project represents a claudebox project that can execute commands. type Project struct { ID ProjectID Name string Description string PodName string Status ProjectStatus Workspace string } // ProjectStatus represents the current state of a project's pod. type ProjectStatus string const ( ProjectStatusRunning ProjectStatus = "running" ProjectStatusPending ProjectStatus = "pending" ProjectStatusFailed ProjectStatus = "failed" ProjectStatusNotFound ProjectStatus = "not_found" ProjectStatusUnknown ProjectStatus = "unknown" ProjectStatusError ProjectStatus = "error" ) // IsAvailable returns true if the project can accept commands. func (s ProjectStatus) IsAvailable() bool { return s == ProjectStatusRunning } // IsTerminal returns true if the status is a final state. func (s ProjectStatus) IsTerminal() bool { return s == ProjectStatusFailed || s == ProjectStatusNotFound }