RegisterHidden saves hidden tools (visible only via TTL)
(tool Tool)
| 90 | |
| 91 | // RegisterHidden saves hidden tools (visible only via TTL) |
| 92 | func (r *ToolRegistry) RegisterHidden(tool Tool) { |
| 93 | r.mu.Lock() |
| 94 | defer r.mu.Unlock() |
| 95 | name := tool.Name() |
| 96 | if !r.toolAllowedLocked(name) { |
| 97 | logger.DebugCF( |
| 98 | "tools", |
| 99 | "Skipped hidden tool registration by agent allowlist", |
| 100 | map[string]any{"name": name}, |
| 101 | ) |
| 102 | return |
| 103 | } |
| 104 | if _, exists := r.tools[name]; exists { |
| 105 | logger.WarnCF("tools", "Hidden tool registration overwrites existing tool", |
| 106 | map[string]any{"name": name}) |
| 107 | } |
| 108 | r.tools[name] = &ToolEntry{ |
| 109 | Tool: tool, |
| 110 | IsCore: false, |
| 111 | TTL: 0, |
| 112 | } |
| 113 | if aware, ok := tool.(mediaStoreAware); ok && r.mediaStore != nil { |
| 114 | aware.SetMediaStore(r.mediaStore) |
| 115 | } |
| 116 | r.version.Add(1) |
| 117 | logger.DebugCF("tools", "Registered hidden tool", map[string]any{"name": name}) |
| 118 | } |
| 119 | |
| 120 | // SetMediaStore injects a MediaStore into all registered tools that can |
| 121 | // consume it, and remembers it for future registrations. |