Documentation
¶
Index ¶
- Constants
- Variables
- func AgentSearchPaths() []string
- func EnvKeyFor(path string) string
- type Config
- type FileOutputConfig
- type LoggingConfig
- type LokiOutputConfig
- type MetricsConfig
- type PathType
- type SecurityConfig
- type ShutdownConfig
- type SupervisorConfig
- type TimeoutConfig
- type TransportConfig
- type WatchdogConfig
Constants ¶
View Source
const EnvPrefix = "RUNTIME"
EnvPrefix is the prefix on every environment variable that overrides a config key. It is RUNTIME, not GAPI.
Variables ¶
View Source
var ( // QUICStreamTimeout is the max time for a single QUIC stream operation. // Rationale: Covers network latency + agent marshaling/unmarshaling (< 10s typical). QUICStreamTimeout = 10 * time.Second // QUICIdleTimeout is the connection idle timeout before automatic closure. // Rationale: Balances connection reuse vs resource cleanup (1 minute idle acceptable). QUICIdleTimeout = 60 * time.Second )
QUIC Transport Timeouts
View Source
var ( // ClientPendingTimeout is the max wait for an agent to enter PENDING state. // Rationale: Fast-fail if supervisor doesn't acknowledge command quickly. ClientPendingTimeout = 2 * time.Second // ClientTerminalTimeout is the max wait for an agent to reach terminal state (RUNNING/STOPPED/FAILED). // Rationale: Covers Python startup, health checks, socket binding (< 20s for well-behaved agents). ClientTerminalTimeout = 20 * time.Second )
Client Lifecycle Timeouts
View Source
var ( // SupervisorStartDeadline is the max time for an agent to report ready after start command. // Rationale: Aligns with ClientTerminalTimeout to prevent supervisor-client mismatch. SupervisorStartDeadline = 20 * time.Second // SupervisorShutdownTimeout is the graceful shutdown timeout before force-kill. // Rationale: Allows agents to flush logs, close connections (5s is reasonable grace period). SupervisorShutdownTimeout = 5 * time.Second )
Supervisor Timeouts
View Source
var ( // TestAgentStartTimeout is the max time to wait for agent start in tests. // Rationale: CI environments may be slow; 2-minute buffer covers edge cases. TestAgentStartTimeout = 120 * time.Second // TestAgentStopTimeout is the max time to wait for agent stop in tests. // Rationale: Covers graceful shutdown + Python interpreter cleanup. TestAgentStopTimeout = 60 * time.Second )
Test Timeouts (more generous for CI environments)
Functions ¶
func AgentSearchPaths ¶
func AgentSearchPaths() []string
AgentSearchPaths returns the ordered list of directories to search for agents. Paths are searched in order, with earlier paths taking precedence.
Priority order (highest to lowest):
- Development paths (GAPI_DEV_AGENTS, ./agents)
- User paths (XDG_DATA_HOME/gapi/agents, ~/.local/share/gapi/agents, ~/.gapi/agents)
- System paths (/usr/local/lib/gapi/agents, /usr/lib/gapi/agents)
Environment variable overrides:
- GAPI_AGENT_PATH: Replaces entire search path (colon-separated)
- GAPI_DEV_AGENTS: Adds development path (highest priority)
- GAPI_SKIP_SYSTEM_AGENTS: Skip system paths if set to "1" or "true"
Types ¶
type Config ¶
type Config struct {
Transport TransportConfig `mapstructure:"transport"`
Security SecurityConfig `mapstructure:"security"`
Metrics MetricsConfig `mapstructure:"metrics"`
Logging LoggingConfig `mapstructure:"logging"`
Timeouts TimeoutConfig `mapstructure:"timeouts"`
Supervisor SupervisorConfig `mapstructure:"supervisor"`
}
type FileOutputConfig ¶
type FileOutputConfig struct {
Enabled bool `mapstructure:"enabled"`
Path string `mapstructure:"path"`
MaxSize int `mapstructure:"maxSize"` // MB
MaxBackups int `mapstructure:"maxBackups"` // Number of old files to keep
MaxAge int `mapstructure:"maxAge"` // Days
Compress bool `mapstructure:"compress"`
}
type LoggingConfig ¶
type LoggingConfig struct {
Level string `mapstructure:"level"` // trace, debug, info, warn, error
Format string `mapstructure:"format"` // json, console
File FileOutputConfig `mapstructure:"file"`
Loki LokiOutputConfig `mapstructure:"loki"`
}
type LokiOutputConfig ¶
type MetricsConfig ¶
type PathType ¶
type PathType int
PathType represents the type of agent path
func ClassifyPath ¶
ClassifyPath determines the type of a given agent path
type SecurityConfig ¶
type SecurityConfig struct {
VerifyKey string `mapstructure:"verifyKey"` // Path to public key
}
type ShutdownConfig ¶
type ShutdownConfig struct {
GracePeriod string `mapstructure:"gracePeriod"`
}
type SupervisorConfig ¶
type SupervisorConfig struct {
ProductionMode bool `mapstructure:"productionMode"`
// Pid1Mode activates the Phase-0 pre-userspace boot sequence
// (subreaper, PID-1 signals, kmsg, early mounts). Off by default:
// gapid runs as an ordinary supervisor unless it IS init.
Pid1Mode bool `mapstructure:"pid1Mode"`
// NoEarlyMounts skips the mount phase (the OCI runtime owns mounts
// in a container).
NoEarlyMounts bool `mapstructure:"noEarlyMounts"`
Watchdog WatchdogConfig `mapstructure:"watchdog"`
Shutdown ShutdownConfig `mapstructure:"shutdown"`
}
type TimeoutConfig ¶
type TimeoutConfig struct {
QUICStream string `mapstructure:"quicStream"`
QUICIdle string `mapstructure:"quicIdle"`
ClientPending string `mapstructure:"clientPending"`
ClientTerminal string `mapstructure:"clientTerminal"`
SupervisorStart string `mapstructure:"supervisorStart"`
SupervisorShutdown string `mapstructure:"supervisorShutdown"`
}
type TransportConfig ¶
type WatchdogConfig ¶
Click to show internal directories.
Click to hide internal directories.