agent

package
v0.16.0 Latest Latest
Warning

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

Go to latest
Published: Jun 11, 2026 License: MIT Imports: 13 Imported by: 0

Documentation

Overview

Package agent provides tool definitions for the autonomous agentic verification loop used during code generation. Tools include sandboxed file I/O (read, write, list), Go toolchain operations (build, test, get, mod tidy), and linting — all scoped to a project root directory for safety.

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrBuildFailed        = errors.New("build failed")
	ErrTestFailed         = errors.New("tests failed")
	ErrGoGetFailed        = errors.New("go get failed")
	ErrLinterFailed       = errors.New("lint issues found")
	ErrGoModTidyFailed    = errors.New("go mod tidy failed")
	ErrPathInvalid        = errors.New("path is outside of allowed directory")
	ErrInvalidPackageName = errors.New("invalid package name")
)
View Source
var ErrQueryQuestionRequired = errors.New("query_user requires a question")

ErrQueryQuestionRequired is returned when the model calls query_user without a question.

Functions

func GoBuildTool

func GoBuildTool(afs afero.Fs, basePath string) chat.Tool

GoBuildTool returns a tool for running 'go build ./...'.

func GoGetTool

func GoGetTool(afs afero.Fs, basePath string) chat.Tool

GoGetTool returns a tool for running 'go get'.

func GoModTidyTool

func GoModTidyTool(afs afero.Fs, basePath string) chat.Tool

GoModTidyTool returns a tool for running 'go mod tidy'.

func GoTestTool

func GoTestTool(afs afero.Fs, basePath string) chat.Tool

GoTestTool returns a tool for running 'go test ./...'.

func LinterTool

func LinterTool(afs afero.Fs, basePath string) chat.Tool

LinterTool returns a tool for running 'golangci-lint run --fix'.

func ListDirTool

func ListDirTool(afs afero.Fs, basePath string) chat.Tool

ListDirTool returns a tool for listing directory contents.

func QueryUserTool added in v0.16.0

func QueryUserTool(prompter UserPrompter) chat.Tool

QueryUserTool returns a tool that lets the model ask the human a clarifying question rather than guess. It is only registered for interactive runs; the prompter performs the actual interaction.

func ReadFileTool

func ReadFileTool(afs afero.Fs, basePath string) chat.Tool

ReadFileTool returns a tool for reading file content.

func ReadFilesTool added in v0.16.0

func ReadFilesTool(afs afero.Fs, basePath string) chat.Tool

ReadFilesTool returns a tool for reading several files in a single call, so the agent doesn't spend a round-trip per file. Each file's content is returned under a header; a path that can't be read is reported inline rather than failing the whole batch.

func TreeTool added in v0.16.0

func TreeTool(afs afero.Fs, basePath string) chat.Tool

TreeTool returns a tool that lists a directory and all its subdirectories recursively in a single call, as sorted relative paths. It saves the agent from walking the layout one folder at a time with list_dir.

func WriteFileTool

func WriteFileTool(afs afero.Fs, basePath string) chat.Tool

WriteFileTool returns a tool for writing content to a file.

Types

type UserPrompter added in v0.16.0

type UserPrompter func(ctx context.Context, question string, suggestions []string) (string, error)

UserPrompter asks the user a question, offering the model's suggested answers, and returns the reply (a chosen suggestion or free text). It backs the query_user tool; the caller supplies an interactive implementation and omits the tool entirely in non-interactive runs.

Jump to

Keyboard shortcuts

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