diff --git a/pkg/config/config.go b/pkg/config/config.go index 9bd9894bd..8ed3da130 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -997,6 +997,7 @@ type ToolsConfig struct { I2C ToolConfig `json:"i2c" yaml:"-" envPrefix:"PICOCLAW_TOOLS_I2C_"` InstallSkill ToolConfig `json:"install_skill" yaml:"-" envPrefix:"PICOCLAW_TOOLS_INSTALL_SKILL_"` ListDir ToolConfig `json:"list_dir" yaml:"-" envPrefix:"PICOCLAW_TOOLS_LIST_DIR_"` + LoadImage ToolConfig `json:"load_image" yaml:"-" envPrefix:"PICOCLAW_TOOLS_LOAD_IMAGE_"` Message ToolConfig `json:"message" yaml:"-" envPrefix:"PICOCLAW_TOOLS_MESSAGE_"` ReadFile ReadFileToolConfig `json:"read_file" yaml:"-" envPrefix:"PICOCLAW_TOOLS_READ_FILE_"` Serial ToolConfig `json:"serial" yaml:"-" envPrefix:"PICOCLAW_TOOLS_SERIAL_"` @@ -1727,6 +1728,8 @@ func (t *ToolsConfig) IsToolEnabled(name string) bool { return t.InstallSkill.Enabled case "list_dir": return t.ListDir.Enabled + case "load_image": + return t.LoadImage.Enabled case "message": return t.Message.Enabled case "read_file": diff --git a/pkg/config/config_test.go b/pkg/config/config_test.go index d744e15dc..964176125 100644 --- a/pkg/config/config_test.go +++ b/pkg/config/config_test.go @@ -1247,6 +1247,36 @@ func TestDefaultConfig_FilterMinLength(t *testing.T) { } } +func TestDefaultConfig_LoadImageEnabled(t *testing.T) { + cfg := DefaultConfig() + if !cfg.Tools.LoadImage.Enabled { + t.Fatal("DefaultConfig().Tools.LoadImage.Enabled should be true") + } + if !cfg.Tools.IsToolEnabled("load_image") { + t.Fatal("DefaultConfig().Tools.IsToolEnabled(load_image) should be true") + } +} + +func TestLoadConfig_LoadImageCanBeDisabled(t *testing.T) { + dir := t.TempDir() + configPath := filepath.Join(dir, "config.json") + raw := "{\n \"version\": 2,\n \"tools\": {\n \"load_image\": {\n \"enabled\": false\n }\n }\n}\n" + if err := os.WriteFile(configPath, []byte(raw), 0o600); err != nil { + t.Fatalf("WriteFile() error: %v", err) + } + + cfg, err := LoadConfig(configPath) + if err != nil { + t.Fatalf("LoadConfig() error: %v", err) + } + if cfg.Tools.LoadImage.Enabled { + t.Fatal("LoadConfig().Tools.LoadImage.Enabled should be false") + } + if cfg.Tools.IsToolEnabled("load_image") { + t.Fatal("LoadConfig().Tools.IsToolEnabled(load_image) should be false") + } +} + func TestToolsConfig_GetFilterMinLength(t *testing.T) { tests := []struct { name string diff --git a/pkg/config/defaults.go b/pkg/config/defaults.go index 6171f4626..995817f12 100644 --- a/pkg/config/defaults.go +++ b/pkg/config/defaults.go @@ -444,6 +444,9 @@ func DefaultConfig() *Config { ListDir: ToolConfig{ Enabled: true, }, + LoadImage: ToolConfig{ + Enabled: true, + }, Message: ToolConfig{ Enabled: true, },