agent

package
v0.9.0 Latest Latest
Warning

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

Go to latest
Published: Jun 6, 2026 License: MIT Imports: 18 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DefaultMaxTurns    = 200
	DefaultToolTimeout = 10 * time.Minute

	DefaultContextWindow = 400_000

	DefaultReserveTokens = 32_000
)

Variables

View Source
var ErrMaxTurnsExceeded = errors.New("agent: internal turn-loop safety bound exceeded — likely a runaway tool-call cycle")

Functions

This section is empty.

Types

type Agent

type Agent struct {
	*Config

	Messages []Message
	Usage    Usage
	Revision uint64
	// contains filtered or unexported fields
}

func (*Agent) Send

func (a *Agent) Send(ctx context.Context, input []Content) iter.Seq2[Message, error]

type Config

type Config struct {
	Model        func() string
	Effort       func() string
	Tools        func() []tool.Tool
	Instructions func() string

	Hooks hook.Hooks

	MaxTurns    int
	ToolTimeout time.Duration

	ContextWindow int

	ReserveTokens int
	// contains filtered or unexported fields
}

func DefaultConfig

func DefaultConfig() (*Config, error)

func (*Config) Derive added in v0.6.2

func (c *Config) Derive() *Config

func (*Config) Models added in v0.6.9

func (c *Config) Models(ctx context.Context) ([]ModelInfo, error)

type Content

type Content struct {
	Text    string `json:"text,omitempty"`
	Refusal string `json:"refusal,omitempty"`

	File *File `json:"file,omitempty"`

	Reasoning *Reasoning `json:"reasoning,omitempty"`

	ToolCall   *ToolCall   `json:"tool_call,omitempty"`
	ToolResult *ToolResult `json:"tool_result,omitempty"`
}

type File

type File struct {
	Name string `json:"name,omitempty"`
	Data string `json:"data,omitempty"`
}

type Message

type Message struct {
	Role MessageRole `json:"role"`

	Content []Content `json:"content"`
	Hidden  bool      `json:"hidden,omitempty"`
}

type MessageRole

type MessageRole string
const (
	RoleUser      MessageRole = "user"
	RoleAssistant MessageRole = "assistant"
	RoleSystem    MessageRole = "system"
)

type ModelInfo added in v0.6.2

type ModelInfo struct {
	ID string
}

type Reasoning added in v0.6.2

type Reasoning struct {
	ID string `json:"id,omitempty"`

	Summary string `json:"summary,omitempty"`
}

type State added in v0.6.2

type State struct {
	Usage    Usage     `json:"usage"`
	Messages []Message `json:"messages,omitempty"`
	Revision uint64    `json:"-"`
}

func (*State) Load added in v0.6.2

func (s *State) Load(path string) error

func (*State) Save added in v0.6.2

func (s *State) Save(path string) error

type ToolCall

type ToolCall struct {
	ID string `json:"id"`

	Name string `json:"name"`
	Args string `json:"args,omitempty"`
}

type ToolResult

type ToolResult struct {
	ID string `json:"id,omitempty"`

	Name string `json:"name"`
	Args string `json:"args,omitempty"`

	Content string `json:"content,omitempty"`
}

type Usage

type Usage struct {
	InputTokens  int64 `json:"input_tokens"`
	CachedTokens int64 `json:"cached_tokens"`
	OutputTokens int64 `json:"output_tokens"`
}

Directories

Path Synopsis
ask
fs
lsp
mcp

Jump to

Keyboard shortcuts

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