Documentation
¶
Index ¶
- type Client
- type EggConfig
- type EggEnv
- type EggResources
- type RunConfig
- type Server
- func (s *Server) Kill(ctx context.Context, req *pb.KillRequest) (*pb.KillResponse, error)
- func (s *Server) Resize(ctx context.Context, req *pb.ResizeRequest) (*pb.ResizeResponse, error)
- func (s *Server) RunSession(ctx context.Context, rc RunConfig) error
- func (s *Server) Session(stream pb.Egg_SessionServer) error
- type Session
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client wraps the generated gRPC client for a single egg process.
func (*Client) AttachSession ¶
AttachSession opens a bidirectional stream for PTY I/O.
type EggConfig ¶ added in v0.8.0
type EggConfig struct {
Isolation string `yaml:"isolation"`
Mounts []string `yaml:"mounts"` // "~/repos:rw" or "~/repos" (default rw)
Deny []string `yaml:"deny"` // paths to mask
Resources EggResources `yaml:"resources"`
Env EggEnv `yaml:"env"`
Shell string `yaml:"shell"`
DangerouslySkipPermissions bool `yaml:"dangerously_skip_permissions"`
}
EggConfig holds the sandbox and environment configuration for egg sessions.
func DefaultEggConfig ¶ added in v0.8.0
func DefaultEggConfig() *EggConfig
DefaultEggConfig returns the permissive default config used when no egg.yaml exists.
func DiscoverEggConfig ¶ added in v0.8.0
DiscoverEggConfig looks for egg.yaml in the given directory, falls back to the wing default, then to built-in defaults.
func LoadEggConfig ¶ added in v0.8.0
LoadEggConfig reads and parses an egg.yaml file.
func LoadEggConfigFromYAML ¶ added in v0.8.0
LoadEggConfigFromYAML parses an egg config from a YAML string.
func (*EggConfig) BuildEnv ¶ added in v0.8.0
BuildEnv filters the host environment based on the config.
func (*EggConfig) BuildEnvMap ¶ added in v0.8.0
BuildEnvMap returns the environment as a map for proto SpawnRequest.
func (*EggConfig) ToSandboxConfig ¶ added in v0.8.0
ToSandboxConfig converts the egg config to a sandbox.Config.
type EggEnv ¶ added in v0.8.0
type EggEnv struct {
AllowAll bool `yaml:"allow_all"`
Allow []string `yaml:"allow"` // explicit allowlist
}
EggEnv configures environment variable handling.
type EggResources ¶ added in v0.8.0
type EggResources struct {
CPU string `yaml:"cpu"` // duration: "300s"
Memory string `yaml:"memory"` // size: "2GB"
MaxFDs uint32 `yaml:"max_fds"`
}
EggResources configures resource limits for sandboxed processes.
func (*EggResources) CPUDuration ¶ added in v0.8.0
func (r *EggResources) CPUDuration() time.Duration
CPUDuration parses the CPU field as a duration.
func (*EggResources) MemBytes ¶ added in v0.8.0
func (r *EggResources) MemBytes() uint64
MemBytes parses the Memory field as bytes (supports GB, MB suffixes).
type RunConfig ¶ added in v0.9.0
type RunConfig struct {
Agent string
CWD string
Isolation string
Shell string
Mounts []string // "~/repos:rw" format
Deny []string
Env map[string]string
Rows uint32
Cols uint32
DangerouslySkipPermissions bool
CPULimit time.Duration
MemLimit uint64
MaxFDs uint32
}
RunConfig holds everything needed to start a single egg session.
type Server ¶
type Server struct {
pb.UnimplementedEggServer
// contains filtered or unexported fields
}
Server implements the Egg gRPC service — wraps a SINGLE process. Each egg is its own child process with its own socket/PID/token in ~/.wingthing/eggs/<session-id>/.
func NewServer ¶
NewServer creates a new per-session egg server. dir is the session directory: ~/.wingthing/eggs/<session-id>/
func (*Server) Kill ¶
func (s *Server) Kill(ctx context.Context, req *pb.KillRequest) (*pb.KillResponse, error)
Kill terminates the session.
func (*Server) Resize ¶
func (s *Server) Resize(ctx context.Context, req *pb.ResizeRequest) (*pb.ResizeResponse, error)
Resize changes the terminal dimensions.
func (*Server) RunSession ¶ added in v0.9.0
RunSession is the core lifecycle: create sandbox, start agent in PTY, serve gRPC, exit when done.