agents

package
v0.4.8 Latest Latest
Warning

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

Go to latest
Published: Feb 27, 2026 License: MIT Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AcquireSlot

func AcquireSlot(ctx context.Context, a Agent) error

AcquireSlot blocks until a test slot is available for the agent or the context is cancelled. Returns a non-nil error if the context expires before a slot opens.

func Register

func Register(a Agent)

func RegisterGate

func RegisterGate(name string, defaultMax int)

RegisterGate sets a concurrency limit for an agent's tests. Tests call AcquireSlot/ReleaseSlot to respect this limit. The limit can be overridden via E2E_CONCURRENT_TEST_LIMIT.

func ReleaseSlot

func ReleaseSlot(a Agent)

ReleaseSlot frees a test slot for the agent.

Types

type Agent

type Agent interface {
	Name() string
	// Binary returns the CLI binary name (e.g. "claude", "gemini").
	Binary() string
	EntireAgent() string
	PromptPattern() string
	// TimeoutMultiplier returns a factor applied to per-test timeouts.
	// Slower agents (e.g. Gemini) return values > 1.
	TimeoutMultiplier() float64
	RunPrompt(ctx context.Context, dir string, prompt string, opts ...Option) (Output, error)
	StartSession(ctx context.Context, dir string) (Session, error)
	// Bootstrap performs one-time CI setup (auth config, warmup, etc.).
	// Called before any tests run. Implementations should be idempotent.
	Bootstrap() error
	// IsTransientError returns true if the error from RunPrompt looks like
	// a transient API failure (e.g. 500, rate limit, network error) that
	// is worth retrying.
	IsTransientError(out Output, err error) bool
}

func All

func All() []Agent

type Claude

type Claude struct{}

func (*Claude) Binary

func (c *Claude) Binary() string

func (*Claude) Bootstrap

func (c *Claude) Bootstrap() error

func (*Claude) EntireAgent

func (c *Claude) EntireAgent() string

func (*Claude) IsTransientError

func (c *Claude) IsTransientError(out Output, _ error) bool

func (*Claude) Name

func (c *Claude) Name() string

func (*Claude) PromptPattern

func (c *Claude) PromptPattern() string

func (*Claude) RunPrompt

func (c *Claude) RunPrompt(ctx context.Context, dir string, prompt string, opts ...Option) (Output, error)

func (*Claude) StartSession

func (c *Claude) StartSession(ctx context.Context, dir string) (Session, error)

func (*Claude) TimeoutMultiplier

func (c *Claude) TimeoutMultiplier() float64

type Gemini

type Gemini struct{}

func (*Gemini) Binary

func (g *Gemini) Binary() string

func (*Gemini) Bootstrap

func (g *Gemini) Bootstrap() error

func (*Gemini) EntireAgent

func (g *Gemini) EntireAgent() string

func (*Gemini) IsTransientError

func (g *Gemini) IsTransientError(out Output, err error) bool

func (*Gemini) Name

func (g *Gemini) Name() string

func (*Gemini) PromptPattern

func (g *Gemini) PromptPattern() string

func (*Gemini) RunPrompt

func (g *Gemini) RunPrompt(ctx context.Context, dir string, prompt string, opts ...Option) (Output, error)

func (*Gemini) StartSession

func (g *Gemini) StartSession(ctx context.Context, dir string) (Session, error)

func (*Gemini) TimeoutMultiplier

func (g *Gemini) TimeoutMultiplier() float64

type Option

type Option func(*runConfig)

func WithModel

func WithModel(model string) Option

func WithPermissionMode

func WithPermissionMode(mode string) Option

func WithPromptTimeout

func WithPromptTimeout(d time.Duration) Option

type Output

type Output struct {
	Command  string
	Stdout   string
	Stderr   string
	ExitCode int
}

type Session

type Session interface {
	Send(input string) error
	WaitFor(pattern string, timeout time.Duration) (string, error)
	Capture() string
	Close() error
}

type TmuxSession

type TmuxSession struct {
	// contains filtered or unexported fields
}

TmuxSession implements Session using tmux for PTY-based interactive agents.

func NewTmuxSession

func NewTmuxSession(name string, dir string, unsetEnv []string, command string, args ...string) (*TmuxSession, error)

NewTmuxSession creates a new tmux session running the given command in dir. unsetEnv lists environment variable names to strip from the session.

func (*TmuxSession) Capture

func (s *TmuxSession) Capture() string

func (*TmuxSession) Close

func (s *TmuxSession) Close() error

func (*TmuxSession) OnClose

func (s *TmuxSession) OnClose(fn func())

OnClose registers a function to run when the session is closed.

func (*TmuxSession) Send

func (s *TmuxSession) Send(input string) error

func (*TmuxSession) SendKeys

func (s *TmuxSession) SendKeys(keys ...string) error

SendKeys sends raw tmux key names without appending Enter.

func (*TmuxSession) WaitFor

func (s *TmuxSession) WaitFor(pattern string, timeout time.Duration) (string, error)

Jump to

Keyboard shortcuts

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