diff --git a/.ralph/prd.json b/.ralph/prd.json index 16600d8..265d7d7 100644 --- a/.ralph/prd.json +++ b/.ralph/prd.json @@ -284,7 +284,7 @@ "go test ./pkg/config -run TestDefaultConfig passes" ], "priority": 19, - "passes": false, + "passes": true, "notes": "" }, { diff --git a/cmd/picoclaw/main.go b/cmd/picoclaw/main.go index 93e3072..750d5b3 100644 --- a/cmd/picoclaw/main.go +++ b/cmd/picoclaw/main.go @@ -660,7 +660,7 @@ func gatewayCmd() { cfg.WorkspacePath(), nil, 30*60, - true, + cfg.Heartbeat.Enabled, ) channelManager, err := channels.NewManager(cfg, msgBus) diff --git a/pkg/config/config.go b/pkg/config/config.go index 1755111..b96e998 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -15,6 +15,7 @@ type Config struct { Providers ProvidersConfig `json:"providers"` Gateway GatewayConfig `json:"gateway"` Tools ToolsConfig `json:"tools"` + Heartbeat HeartbeatConfig `json:"heartbeat"` mu sync.RWMutex } @@ -96,6 +97,10 @@ type SlackConfig struct { AllowFrom []string `json:"allow_from" env:"PICOCLAW_CHANNELS_SLACK_ALLOW_FROM"` } +type HeartbeatConfig struct { + Enabled bool `json:"enabled" env:"PICOCLAW_HEARTBEAT_ENABLED"` +} + type ProvidersConfig struct { Anthropic ProviderConfig `json:"anthropic"` OpenAI ProviderConfig `json:"openai"` @@ -211,6 +216,9 @@ func DefaultConfig() *Config { }, }, }, + Heartbeat: HeartbeatConfig{ + Enabled: true, + }, } } diff --git a/pkg/config/config_test.go b/pkg/config/config_test.go new file mode 100644 index 0000000..20dc650 --- /dev/null +++ b/pkg/config/config_test.go @@ -0,0 +1,24 @@ +package config + +import ( + "testing" +) + +// TestDefaultConfig_HeartbeatEnabled verifies heartbeat is enabled by default +func TestDefaultConfig_HeartbeatEnabled(t *testing.T) { + cfg := DefaultConfig() + + if !cfg.Heartbeat.Enabled { + t.Error("Heartbeat should be enabled by default") + } +} + +// TestDefaultConfig_HeartbeatCanBeDisabled verifies heartbeat can be disabled via config +func TestDefaultConfig_HeartbeatCanBeDisabled(t *testing.T) { + cfg := &Config{} + cfg.Heartbeat.Enabled = false + + if cfg.Heartbeat.Enabled { + t.Error("Heartbeat should be disabled when set to false") + } +}