Help us shape the future of Go! Take the 2026 Go Developer Survey

tools

package
v0.9.0 Latest Latest
Warning

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

Go to latest
Published: Oct 28, 2026 License: EUPL-1.2 Imports: 23 Imported by: 0

Documentation

Overview

Package tools définit l'interface des outils de l'agent et les outils fichiers.

Index

Constants

View Source
const SnapshotMaxBytes = 10 << 20

SnapshotMaxBytes est la taille au-delà de laquelle un fichier n'est pas copié avant écriture (même valeur que checkpoint.MaxBytes ; tools n'importe pas checkpoint).

Variables

This section is empty.

Functions

func IsSensitive added in v0.3.0

func IsSensitive(path string) bool

IsSensitive rapporte si le nom de base du chemin désigne un fichier de secrets : préfixe .env ou id_rsa, suffixe .pem (insensible à la casse).

func NetworkFrom added in v0.7.0

func NetworkFrom(ctx context.Context) bool

NetworkFrom renvoie le drapeau réseau porté par ctx (false par défaut).

func Truncate

func Truncate(s string, limit int) string

Truncate réduit s à limit caractères (runes) en gardant le début (70 %) et la fin (30 %), avec un marqueur au milieu. Le marqueur s'ajoute à la limite, il n'est pas compté. limit <= 0 ou s assez court : s inchangé.

func WithNetwork added in v0.7.0

func WithNetwork(ctx context.Context, on bool) context.Context

WithNetwork renvoie ctx portant le drapeau réseau de l'appel : vrai quand une règle allow avec network ou la réponse « Autoriser avec réseau » l'accorde.

Types

type Option

type Option func(*options)

Option configure FS.

func WithReadFilter

func WithReadFilter(f func(tool, absPath string) bool) Option

WithReadFilter fait ignorer à grep et glob les fichiers pour lesquels f renvoie false.

func WithSnapshot added in v0.6.0

func WithSnapshot(save func(path string, old []byte) error) Option

WithSnapshot fait appeler save(chemin, ancien contenu) par write_file et edit_file avant d'écraser un fichier existant de taille <= SnapshotMaxBytes. Une erreur de save annule l'écriture.

func WithoutCheckpoints added in v0.6.0

func WithoutCheckpoints() Option

WithoutCheckpoints marque no_checkpoint chaque écriture d'un fichier existant (copies désactivées ou magasin indisponible).

type Registry

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

Registry indexe les outils par nom.

func NewRegistry

func NewRegistry(ts ...Tool) *Registry

func (*Registry) Defs

func (r *Registry) Defs() []llm.ToolDef

Defs renvoie les définitions triées par nom.

func (*Registry) Get

func (r *Registry) Get(name string) (Tool, bool)

func (*Registry) Names added in v0.4.0

func (r *Registry) Names() []string

Names renvoie les noms des outils, triés.

func (*Registry) Only added in v0.4.0

func (r *Registry) Only(names []string) *Registry

Only renvoie une copie restreinte aux outils de names (noms inconnus ignorés ; r nil : registre vide). Le récepteur n'est pas modifié.

func (*Registry) With added in v0.4.0

func (r *Registry) With(ts ...Tool) *Registry

With renvoie une copie du registre complétée de ts (r nil : registre vide plus ts). Le récepteur n'est pas modifié.

type Result

type Result struct {
	Content    string
	IsError    bool
	Path       string
	HashBefore string
	HashAfter  string
	// NoCheckpoint vaut true quand l'écriture n'a pas pu être copiée (fichier
	// trop volumineux pour une copie, voir SnapshotMaxBytes).
	NoCheckpoint bool
	// Denied vaut "policy" quand l'outil a refusé l'appel par règle (vide sinon).
	Denied string
	// ServerDown porte l'identifiant d'un serveur MCP qui vient de tomber pendant
	// cet appel (vide sinon) ; signalé une seule fois par serveur.
	ServerDown string
	// Sandbox indique comment la commande shell s'est exécutée (isolée ou
	// non, réseau accordé ou non) ; nil pour les autres outils.
	Sandbox *event.SandboxUse
	// Untruncated est le texte complet avant troncature (résultat MCP), pour
	// le seul contrôle de classification ; jamais enregistré ni envoyé.
	// Vide : Content est complet.
	Untruncated string
}

Result est le résultat d'une exécution d'outil.

type Risk

type Risk int

Risk classe l'effet d'un outil.

const (
	Read Risk = iota
	Write
	Exec
	Network
)

type ShellOptions added in v0.7.0

type ShellOptions struct {
	// Sandbox est la Spec de base des commandes isolées (nil : non isolées).
	// Son champ Network est remplacé, à chaque appel, par NetworkFrom(ctx).
	Sandbox *sandbox.Spec
	// Env est l'environnement des commandes, déjà filtré des secrets ; nil
	// hérite de l'environnement de tenon.
	Env []string
	// NetworkOpen indique que l'isolation ne coupe pas le réseau (sonde :
	// isolation réseau "none") : une commande confinée a alors le réseau, et
	// le journal le dit.
	NetworkOpen bool
}

ShellOptions règle l'isolation et l'environnement des commandes.

type Target

type Target struct {
	Paths   []string // chemins absolus nettoyés
	Command string
	// ForceAsk impose une validation humaine : Permissions.Check renvoie Ask
	// (Deny si une règle deny correspond), quelles que soient les règles allow.
	ForceAsk bool
}

Target décrit ce qu'une invocation touche (pour le moteur de permissions).

type Tool

type Tool interface {
	Name() string
	Description() string
	Schema() json.RawMessage
	Risk() Risk
	Target(args json.RawMessage) (Target, error)
	// Run renvoie une error uniquement en cas d'annulation du contexte.
	Run(ctx context.Context, args json.RawMessage) (Result, error)
}

Tool est un outil appelable par le modèle.

func FS

func FS(root string, limit int, opts ...Option) []Tool

FS renvoie les outils fichiers et recherche ancrés sur root.

func Shell

func Shell(root string, timeout time.Duration, limit int, opts ShellOptions) Tool

Shell renvoie l'outil d'exécution de commandes, ancré sur root.

Jump to

Keyboard shortcuts

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