fix(config): make load_image configurable

This commit is contained in:
afjcjsbx 2026-05-15 20:44:19 +02:00
parent 0df050ff2e
commit 83c93619be
3 changed files with 36 additions and 0 deletions

View file

@ -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":

View file

@ -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

View file

@ -444,6 +444,9 @@ func DefaultConfig() *Config {
ListDir: ToolConfig{
Enabled: true,
},
LoadImage: ToolConfig{
Enabled: true,
},
Message: ToolConfig{
Enabled: true,
},