types

package
v1.103.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 3, 2026 License: Apache-2.0 Imports: 13 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ProcessStateDisabled    = "Disabled"
	ProcessStateForeground  = "Foreground"
	ProcessStatePending     = "Pending"
	ProcessStateRunning     = "Running"
	ProcessStateLaunching   = "Launching"
	ProcessStateLaunched    = "Launched"
	ProcessStateRestarting  = "Restarting"
	ProcessStateTerminating = "Terminating"
	ProcessStateCompleted   = "Completed"
	ProcessStateSkipped     = "Skipped"
	ProcessStateError       = "Error"
	ProcessStateScheduled   = "Scheduled"
)
View Source
const (
	ProcessHealthReady    = "Ready"
	ProcessHealthNotReady = "Not Ready"
	ProcessHealthUnknown  = PlaceHolderValue
)
View Source
const (
	ProcessUpdateUpdated = "updated"
	ProcessUpdateRemoved = "removed"
	ProcessUpdateAdded   = "added"
	ProcessUpdateError   = "error"
)
View Source
const DefaultLaunchTimeout = 5
View Source
const DefaultNamespace = "default"
View Source
const PlaceHolderValue = "-"

Variables

This section is empty.

Functions

func DisplayProcessStatus added in v1.73.0

func DisplayProcessStatus(state ProcessState) string

Display a process status for the UI.

In particular, this displays "Failed" if the process has completed with a non-zero exit code. This makes it clearer when a process has failed, as opposed to exiting successfully.

We can't change the `Status` field to "Failed" directly because that would change the JSON API behavior, but we can change it in the TUI.

Types

type ArgReference added in v1.94.0

type ArgReference struct {
	Name         string
	HasDefault   bool
	DefaultValue string
	IsEscaped    bool
}

ArgReference represents a found argument reference in a command

func ExtractArgReferences added in v1.94.0

func ExtractArgReferences(command string) ([]ArgReference, error)

ExtractArgReferences extracts @{...} patterns from a command string Supports @{arg}, @{arg:default}, and escaped \@{arg}

type DependencyGraph added in v1.87.0

type DependencyGraph struct {
	AllNodes map[string]*DependencyNode `json:"-" yaml:"-"`
	Nodes    map[string]*DependencyNode `json:"nodes" yaml:"nodes"`
}

DependencyGraph represents the full process dependency structure

func BuildDependencyGraph added in v1.87.0

func BuildDependencyGraph(processes Processes) *DependencyGraph

BuildDependencyGraph constructs a dependency graph from process configurations

func NewDependencyGraph added in v1.87.0

func NewDependencyGraph() *DependencyGraph

NewDependencyGraph creates an empty dependency graph

func (*DependencyGraph) RebuildInternalIndices added in v1.87.0

func (g *DependencyGraph) RebuildInternalIndices()

RebuildInternalIndices reconstructs AllNodes from the recursive Nodes map. This is useful on the client side after receiving the graph via JSON/YAML.

func (*DependencyGraph) ToMermaid added in v1.87.0

func (g *DependencyGraph) ToMermaid() string

ToMermaid outputs the dependency graph in Mermaid flowchart format

type DependencyLink struct {
	*DependencyNode `yaml:",inline"`
	Type            string `json:"dependency_type" yaml:"dependency_type"`
}

DependencyLink wraps a node with the dependency condition

type DependencyNode added in v1.87.0

type DependencyNode struct {
	Name      string                    `json:"name" yaml:"name"`
	Status    string                    `json:"process_status" yaml:"process_status"`
	IsReady   string                    `json:"is_ready" yaml:"is_ready"`
	DependsOn map[string]DependencyLink `json:"depends_on,omitempty" yaml:"depends_on,omitempty" swaggertype:"object"`
}

DependencyNode represents a process in the dependency graph

type DependsOnConfig

type DependsOnConfig map[string]ProcessDependency

Where key is process name.

type DeprecationParams

type DeprecationParams struct {
	StartTime time.Time
}

type EnvCmd added in v1.46.0

type EnvCmd map[string]string

type Environment

type Environment []string

type LogRotationConfig added in v0.69.0

type LogRotationConfig struct {
	// Directory to log to when filelogging is enabled
	Directory string `yaml:"directory,omitempty"`
	// Filename is the name of the logfile which will be placed inside the directory
	Filename string `yaml:"filename,omitempty"`
	// MaxSize the max size in MB of the logfile before it's rolled
	MaxSize int `yaml:"max_size_mb,omitempty"`
	// MaxBackups the max number of rolled files to keep
	MaxBackups int `yaml:"max_backups,omitempty"`
	// MaxAge the max age in days to keep a logfile
	MaxAge int `yaml:"max_age_days,omitempty"`
	// Compress determines if the rotated log files should be compressed
	// using gzip. The default is not to perform compression.
	Compress bool `json:"compress" yaml:"compress,omitempty"`
}

LogRotationConfig is the configuration for logging

type LoggerConfig added in v0.69.0

type LoggerConfig struct {
	// Rotation is the configuration for logging rotation
	Rotation *LogRotationConfig `yaml:"rotation,omitempty"`
	// FieldsOrder is the order in which fields are logged
	FieldsOrder []string `yaml:"fields_order,omitempty"`
	// DisableJSON disables log JSON formatting
	DisableJSON bool `yaml:"disable_json,omitempty"`
	// TimestampFormat is the format of the timestamp
	TimestampFormat string `yaml:"timestamp_format,omitempty"`
	// NoColor disables coloring
	NoColor bool `yaml:"no_color,omitempty"`
	// NoMetadata disables log metadata (process, replica)
	NoMetadata bool `yaml:"no_metadata,omitempty"`
	// AddTimestamp adds timestamp to log
	AddTimestamp bool `yaml:"add_timestamp,omitempty"`
	// FlushEachLine flushes the logger on each line
	FlushEachLine bool `yaml:"flush_each_line,omitempty"`
}

type MCPArgument added in v1.94.0

type MCPArgument struct {
	Name        string          `yaml:"name"`
	Type        MCPArgumentType `yaml:"type"`
	Description string          `yaml:"description,omitempty"`
	Required    bool            `yaml:"required,omitempty"`
	Default     string          `yaml:"default,omitempty"`
}

MCPArgument defines a single argument for an MCP tool

type MCPArgumentType added in v1.94.0

type MCPArgumentType string

MCPArgumentType represents the type of an MCP argument

const (
	MCPArgTypeString  MCPArgumentType = "string"
	MCPArgTypeNumber  MCPArgumentType = "number"
	MCPArgTypeBoolean MCPArgumentType = "boolean"
	MCPArgTypeInteger MCPArgumentType = "integer"
)

func (MCPArgumentType) IsValid added in v1.94.0

func (t MCPArgumentType) IsValid() bool

IsValid checks if the argument type is valid

type MCPProcessConfig added in v1.94.0

type MCPProcessConfig struct {
	Type      MCPProcessType `yaml:"type"`
	Arguments []MCPArgument  `yaml:"arguments,omitempty"`
	Timeout   string         `yaml:"timeout,omitempty"` // Optional: overrides global timeout
}

MCPProcessConfig defines the MCP-specific configuration for a process

func (*MCPProcessConfig) GetTimeout added in v1.94.0

func (m *MCPProcessConfig) GetTimeout() (time.Duration, error)

GetTimeout returns the timeout duration for this MCP process Returns 0 if not set (caller should fall back to global timeout)

func (*MCPProcessConfig) IsResource added in v1.94.0

func (m *MCPProcessConfig) IsResource() bool

IsResource returns true if this is a resource-type process

func (*MCPProcessConfig) IsTool added in v1.94.0

func (m *MCPProcessConfig) IsTool() bool

IsTool returns true if this is a tool-type process

func (*MCPProcessConfig) Validate added in v1.94.0

func (m *MCPProcessConfig) Validate(processName string, command string, args []string) error

Validate checks if the MCP process configuration is valid

type MCPProcessType added in v1.94.0

type MCPProcessType string

MCPProcessType represents the type of MCP process

const (
	MCPProcessTypeTool     MCPProcessType = "tool"
	MCPProcessTypeResource MCPProcessType = "resource"
)

type MCPServerConfig added in v1.94.0

type MCPServerConfig struct {
	Host      string `yaml:"host,omitempty"`
	Port      int    `yaml:"port,omitempty"`
	Transport string `yaml:"transport,omitempty"` // Optional: defaults to "sse"
	Timeout   string `yaml:"timeout,omitempty"`   // Optional: defaults to "5m"
}

MCPServerConfig defines the top-level MCP server configuration

func (*MCPServerConfig) GetTimeout added in v1.94.0

func (m *MCPServerConfig) GetTimeout() (time.Duration, error)

GetTimeout returns the timeout duration for the MCP server Returns 0 if not set (caller should use default)

func (*MCPServerConfig) IsEnabled added in v1.94.0

func (m *MCPServerConfig) IsEnabled() bool

IsEnabled returns true if MCP server is configured

func (*MCPServerConfig) IsSSE added in v1.94.0

func (m *MCPServerConfig) IsSSE() bool

IsSSE returns true if transport is sse (or default)

func (*MCPServerConfig) IsStdio added in v1.94.0

func (m *MCPServerConfig) IsStdio() bool

IsStdio returns true if transport is stdio

func (*MCPServerConfig) Validate added in v1.94.0

func (m *MCPServerConfig) Validate() error

Validate checks if the MCP server configuration is valid

type MemoryState added in v0.77.4

type MemoryState struct {
	Allocated      uint64 `json:"allocated"`
	TotalAllocated uint64 `json:"totalAllocated"`
	SystemMemory   uint64 `json:"systemMemory"`
	GcCycles       uint32 `json:"gcCycles"`
}

type ProcessCondition added in v1.64.1

type ProcessCondition int
const (
	// ProcessConditionCompleted is the type for waiting until a process has completed (any exit code).
	ProcessConditionCompleted ProcessCondition = iota
	// ProcessConditionCompletedSuccessfully is the type for waiting until a process has completed successfully (exit code 0).
	ProcessConditionCompletedSuccessfully
	// ProcessConditionHealthy is the type for waiting until a process is healthy.
	ProcessConditionHealthy
	// ProcessConditionStarted is the type for waiting until a process has started (default).
	ProcessConditionStarted
	// ProcessConditionLogReady is the type for waiting until a process has printed a predefined log line
	ProcessConditionLogReady
)

func (ProcessCondition) MarshalYAML added in v1.100.0

func (c ProcessCondition) MarshalYAML() (interface{}, error)

func (ProcessCondition) String added in v1.64.1

func (i ProcessCondition) String() string

func (*ProcessCondition) UnmarshalYAML added in v1.64.1

func (c *ProcessCondition) UnmarshalYAML(node *yaml.Node) error

type ProcessConfig

type ProcessConfig struct {
	Name                    string                 `yaml:",omitempty"`
	Disabled                bool                   `yaml:"disabled,omitempty"`
	IsDaemon                bool                   `yaml:"is_daemon,omitempty"`
	Command                 string                 `yaml:"command,omitempty"`
	Entrypoint              []string               `yaml:"entrypoint,omitempty"`
	LogLocation             string                 `yaml:"log_location,omitempty"`
	LoggerConfig            *LoggerConfig          `yaml:"log_configuration,omitempty"`
	Environment             Environment            `yaml:"environment,omitempty"`
	EnvFile                 string                 `yaml:"env_file,omitempty"`
	RestartPolicy           RestartPolicyConfig    `yaml:"availability,omitempty"`
	DependsOn               DependsOnConfig        `yaml:"depends_on,omitempty"`
	LivenessProbe           *health.Probe          `yaml:"liveness_probe,omitempty"`
	ReadinessProbe          *health.Probe          `yaml:"readiness_probe,omitempty"`
	ReadyLogLine            string                 `yaml:"ready_log_line,omitempty"`
	ShutDownParams          ShutDownParams         `yaml:"shutdown,omitempty"`
	DisableAnsiColors       bool                   `yaml:"disable_ansi_colors,omitempty"`
	WorkingDir              string                 `yaml:"working_dir,omitempty"`
	Namespace               string                 `yaml:"namespace,omitempty"`
	Replicas                int                    `yaml:"replicas,omitempty"`
	Extensions              map[string]interface{} `yaml:",inline"`
	Description             string                 `yaml:"description,omitempty"`
	Vars                    Vars                   `yaml:"vars,omitempty"`
	IsForeground            bool                   `yaml:"is_foreground,omitempty"`
	IsTty                   bool                   `yaml:"is_tty,omitempty"`
	IsElevated              bool                   `yaml:"is_elevated,omitempty"`
	IsInteractive           bool                   `yaml:"is_interactive,omitempty"`
	LaunchTimeout           int                    `yaml:"launch_timeout_seconds,omitempty"`
	IsDisabled              string                 `yaml:"is_disabled,omitempty"`
	DisableDotEnv           bool                   `yaml:"is_dotenv_disabled,omitempty"`
	OriginalConfig          string                 `yaml:"original_config,omitempty"`
	ReplicaNum              int                    `yaml:"replica_num,omitempty"`
	ReplicaName             string                 `yaml:"replica_name,omitempty"`
	Executable              string                 `yaml:"executable,omitempty"`
	Args                    []string               `yaml:"args,omitempty"`
	Schedule                *ScheduleConfig        `yaml:"schedule,omitempty"`
	MCP                     *MCPProcessConfig      `yaml:"mcp,omitempty"`
	TruncateLog             bool                   `yaml:"truncate_log,omitempty"`
	DisableCommandRendering bool                   `yaml:"is_template_disabled,omitempty"`
}

func (*ProcessConfig) AssignProcessExecutableAndArgs added in v1.34.0

func (p *ProcessConfig) AssignProcessExecutableAndArgs(shellConf *command.ShellConfig, elevatedShellArg string)

func (*ProcessConfig) CalculateReplicaName added in v0.55.0

func (p *ProcessConfig) CalculateReplicaName() string

func (*ProcessConfig) Compare added in v1.27.0

func (p *ProcessConfig) Compare(another *ProcessConfig) bool

Compare returns true if two process configs are equal

func (*ProcessConfig) GetDependencies

func (p *ProcessConfig) GetDependencies() []string

func (*ProcessConfig) IsDeferred added in v0.77.4

func (p *ProcessConfig) IsDeferred() bool

func (*ProcessConfig) IsMCP added in v1.94.0

func (p *ProcessConfig) IsMCP() bool

IsMCP returns true if this process is MCP-enabled

func (*ProcessConfig) IsMCPResource added in v1.94.0

func (p *ProcessConfig) IsMCPResource() bool

IsMCPResource returns true if this is an MCP resource

func (*ProcessConfig) IsMCPTool added in v1.94.0

func (p *ProcessConfig) IsMCPTool() bool

IsMCPTool returns true if this is an MCP tool

func (*ProcessConfig) ValidateProcessConfig added in v1.34.0

func (p *ProcessConfig) ValidateProcessConfig() error

type ProcessDependency

type ProcessDependency struct {
	Condition  ProcessCondition       `` /* 166-byte string literal not displayed */
	Extensions map[string]interface{} `yaml:",inline"`
}

type ProcessFunc

type ProcessFunc func(process ProcessConfig) error

type ProcessPorts added in v0.55.0

type ProcessPorts struct {
	Name     string   `json:"name"`
	TcpPorts []uint16 `json:"tcp_ports"`
	UdpPorts []uint16 `json:"udp_ports"`
}

type ProcessState

type ProcessState struct {
	Name             string        `json:"name"`
	Namespace        string        `json:"namespace"`
	Status           string        `json:"status"`
	SystemTime       string        `json:"system_time"`
	Age              time.Duration `json:"age" swaggertype:"primitive,integer"`
	Health           string        `json:"is_ready"`
	HasHealthProbe   bool          `json:"has_ready_probe"`
	Restarts         int           `json:"restarts"`
	ExitCode         int           `json:"exit_code"`
	Pid              int           `json:"pid"`
	IsElevated       bool          `json:"is_elevated"`
	PasswordProvided bool          `json:"password_provided"`
	Mem              int64         `json:"mem"`
	CPU              float64       `json:"cpu"`
	IsRunning        bool          `json:"is_running"`
	NextRunTime      *time.Time    `json:"next_run_time,omitempty"`
}

func NewProcessState added in v0.55.0

func NewProcessState(proc *ProcessConfig) *ProcessState

func (*ProcessState) IsReady added in v1.63.0

func (p *ProcessState) IsReady() bool

Check if a process is running and healthy.

If `hasHealthProbe` is true, the process must be healthy to be considered ready.

func (*ProcessState) IsReadyReason added in v1.63.0

func (p *ProcessState) IsReadyReason() (bool, string)

Check if a process is running and healthy and explain why.

If `hasHealthProbe` is true, the process must be healthy to be considered ready.

The explanation may be empty.

type Processes

type Processes map[string]ProcessConfig

type ProcessesState added in v0.50.0

type ProcessesState struct {
	States []ProcessState `json:"data"`
}

func (*ProcessesState) IsReady added in v1.63.0

func (p *ProcessesState) IsReady() bool

type Project

type Project struct {
	Version             string               `yaml:",omitempty"`
	Name                string               `yaml:"name,omitempty"`
	LogLocation         string               `yaml:"log_location,omitempty"`
	LogLevel            string               `yaml:"log_level,omitempty"`
	LogLength           int                  `yaml:"log_length,omitempty"`
	LoggerConfig        *LoggerConfig        `yaml:"log_configuration,omitempty"`
	LogFormat           string               `yaml:"log_format,omitempty"`
	Processes           Processes            `yaml:"processes"`
	Environment         Environment          `yaml:"environment,omitempty"`
	ShellConfig         *command.ShellConfig `yaml:"shell,omitempty"`
	IsStrict            bool                 `yaml:"is_strict,omitempty"`
	Vars                Vars                 `yaml:"vars,omitempty"`
	DisableEnvExpansion bool                 `yaml:"disable_env_expansion,omitempty"`
	IsTuiDisabled       bool                 `yaml:"is_tui_disabled,omitempty"`
	ExtendsProject      string               `yaml:"extends,omitempty"`
	EnvCommands         EnvCmd               `yaml:"env_cmds,omitempty"`
	IsOrderedShutdown   bool                 `yaml:"ordered_shutdown,omitempty"`
	FileNames           []string             `yaml:"file_names,omitempty"`
	EnvFileNames        []string             `yaml:"env_file_names,omitempty"`
	DotEnvVars          map[string]string    `yaml:"dot_env_vars,omitempty"`
	Extensions          map[string]any       `yaml:",inline"`
	MCPServer           *MCPServerConfig     `yaml:"mcp_server,omitempty"`
}

func (*Project) GetDependenciesOrderNames

func (p *Project) GetDependenciesOrderNames() ([]string, error)

func (*Project) GetElevatedShellArg added in v1.46.0

func (p *Project) GetElevatedShellArg() string

func (*Project) GetLexicographicProcessNames

func (p *Project) GetLexicographicProcessNames() ([]string, error)

func (*Project) GetProcesses added in v0.75.0

func (p *Project) GetProcesses(names ...string) ([]ProcessConfig, error)

func (*Project) WithProcesses

func (p *Project) WithProcesses(names []string, fn ProcessFunc) error

WithProcesses run ProcessFunc on each Process and dependencies in dependency order

type ProjectState added in v0.75.0

type ProjectState struct {
	FileNames         []string      `json:"fileNames"`
	UpTime            time.Duration `json:"upTime" swaggertype:"primitive,integer"`
	StartTime         time.Time     `json:"startTime"`
	ProcessNum        int           `json:"processNum"`
	RunningProcessNum int           `json:"runningProcessNum"`
	UserName          string        `json:"userName"`
	Version           string        `json:"version"`
	ProjectName       string        `json:"projectName"`
	MemoryState       *MemoryState  `json:"memoryState,omitempty"`
}

type RestartPolicy added in v1.64.1

type RestartPolicy int
const (
	RestartPolicyNo RestartPolicy = iota
	RestartPolicyAlways
	RestartPolicyOnFailure
	RestartPolicyExitOnFailure
)

func (RestartPolicy) MarshalYAML added in v1.100.0

func (p RestartPolicy) MarshalYAML() (interface{}, error)

func (RestartPolicy) String added in v1.64.1

func (i RestartPolicy) String() string

func (*RestartPolicy) UnmarshalYAML added in v1.64.1

func (p *RestartPolicy) UnmarshalYAML(node *yaml.Node) error

type RestartPolicyConfig

type RestartPolicyConfig struct {
	Restart        RestartPolicy `yaml:",omitempty" jsonschema:"type=string,enum=always,enum=on_failure,enum=exit_on_failure,enum=no"`
	BackoffSeconds int           `yaml:"backoff_seconds,omitempty"`
	MaxRestarts    int           `yaml:"max_restarts,omitempty"`
	ExitOnEnd      bool          `yaml:"exit_on_end,omitempty"`
	ExitOnSkipped  bool          `yaml:"exit_on_skipped,omitempty"`
}

type ScheduleConfig added in v1.87.0

type ScheduleConfig struct {
	// Cron expression for cron-based scheduling (e.g., "0 2 * * *")
	Cron string `yaml:"cron,omitempty" json:"cron,omitempty"`

	// Timezone for cron expression (e.g., "UTC", "America/New_York")
	Timezone string `yaml:"timezone,omitempty" json:"timezone,omitempty"`

	// Interval for interval-based scheduling (e.g., "30m", "1h", "5s")
	Interval string `yaml:"interval,omitempty" json:"interval,omitempty"`

	// RunOnStart determines whether to run immediately when process-compose starts
	RunOnStart bool `yaml:"run_on_start,omitempty" json:"run_on_start,omitempty"`

	// MaxConcurrent limits concurrent executions (default: 1)
	MaxConcurrent int `yaml:"max_concurrent,omitempty" json:"max_concurrent,omitempty"`
}

ScheduleConfig defines the scheduling configuration for a process.

func (*ScheduleConfig) GetIntervalDuration added in v1.87.0

func (s *ScheduleConfig) GetIntervalDuration() (time.Duration, error)

GetIntervalDuration parses and returns the interval as a duration.

func (*ScheduleConfig) GetMaxConcurrent added in v1.87.0

func (s *ScheduleConfig) GetMaxConcurrent() int

GetMaxConcurrent returns the max concurrent value, defaulting to 1.

func (*ScheduleConfig) GetTimezone added in v1.87.0

func (s *ScheduleConfig) GetTimezone() (*time.Location, error)

GetTimezone returns the configured timezone location.

func (*ScheduleConfig) IsScheduled added in v1.87.0

func (s *ScheduleConfig) IsScheduled() bool

IsScheduled returns true if this config has any scheduling defined.

type ShutDownParams

type ShutDownParams struct {
	ShutDownCommand string `yaml:"command,omitempty"`
	ShutDownTimeout int    `yaml:"timeout_seconds,omitempty"`
	Signal          int    `yaml:"signal,omitempty"`
	ParentOnly      bool   `yaml:"parent_only,omitempty"`
}

type Vars added in v0.75.0

type Vars map[string]any

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL