From 4750966048a73e41f963bcc1459e87ae08fcf5c6 Mon Sep 17 00:00:00 2001 From: Levi Neely Date: Thu, 20 Aug 2026 12:16:01 +0200 Subject: [PATCH] toolsrv: auto-load tools on first use When an agent calls a tool that exists but isn't loaded, toolsrv now automatically loads it instead of returning an error. This eliminates the round-trip of a separate load call. - Remove Registry.Exists() (superseded by auto-load logic) - Fire OnToolsChanged callback after auto-load so olliesrv can update tool definitions for subsequent turns --- cmd/toolsrv/internal/server/proc.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/cmd/toolsrv/internal/server/proc.go b/cmd/toolsrv/internal/server/proc.go index 54fa62a..68d560d 100644 --- a/cmd/toolsrv/internal/server/proc.go +++ b/cmd/toolsrv/internal/server/proc.go @@ -275,7 +275,14 @@ func (st *State) NewProc(ctx context.Context, payload string, background bool) ( info, ok := reg.Lookup(aid, toolName) if !ok { - return "", 0, fmt.Errorf("tool not found: %s", toolName) + // Auto-load if tool exists + if err := reg.Load(aid, toolName); err != nil { + return "", 0, err // "tool not found: X" + } + info, _ = reg.Lookup(aid, toolName) + if st.OnToolsChanged != nil { + st.OnToolsChanged() + } } // Create proc context. For background procs, detach from request context