// Package tools is executus's library of generic, host-agnostic agent tools. // // A host registers the tools it wants against a tool.Registry, then runs an // agent whose RunnableAgent.LowLevelTools name them. Tools split two ways: // // - Always-available, zero-dependency tools (think, ...) need no host backend // and register via Register. A light host (gadfly) can call Register and be // immediately useful. // - Backed tools (web search, file/kv storage, summarize, ...) take a nil-safe // Deps describing their host backend; they register via grouped registrars // (RegisterWeb, RegisterStore, ...) as those land. // // Every tool ships with the same three-stage permission model as mort's, and a // host adds its own domain tools against the SAME registry. package tools import "gitea.stevedudenhoeffer.com/steve/executus/tool" // Register adds the always-available, zero-dependency generic tools to reg // (currently: think). Returns the first registration error, if any. func Register(reg tool.Registry) error { for _, t := range []tool.Tool{ NewThink(), } { if err := reg.Register(t); err != nil { return err } } return nil }