heroagent/pkg/servers/heroagent/config.go
2025-05-24 07:24:17 +04:00

86 lines
1.8 KiB
Go

package heroagent
import (
"time"
"git.ourworld.tf/herocode/heroagent/pkg/servers/ui"
"git.ourworld.tf/herocode/heroagent/pkg/servers/webdavserver"
)
// Config holds the configuration for the HeroAgent server factory
type Config struct {
// Redis server configuration
Redis RedisConfig
// WebDAV server configuration
WebDAV WebDAVConfig
// UI server configuration
UI UIConfig
// Job management configuration
Jobs JobsConfig
// Enable/disable specific servers
EnableRedis bool
EnableWebDAV bool
EnableUI bool
EnableJobs bool
}
// RedisConfig holds the configuration for the Redis server
type RedisConfig struct {
TCPPort int
UnixSocketPath string
}
// WebDAVConfig holds the configuration for the WebDAV server
type WebDAVConfig struct {
// Use webdavserver.Config directly
Config webdavserver.Config
}
// UIConfig holds the configuration for the UI server
type UIConfig struct {
// UI server configuration
Port string
// Any additional UI-specific configuration
AppConfig ui.AppConfig
}
// JobsConfig holds the configuration for the job management system
type JobsConfig struct {
// OurDB configuration
OurDBPath string
// Job processing configuration
WorkerCount int
QueuePollInterval time.Duration
}
// DefaultConfig returns the default configuration for the HeroAgent
func DefaultConfig() Config {
return Config{
Redis: RedisConfig{
TCPPort: 6379,
UnixSocketPath: "", // Empty string means use TCP only
},
WebDAV: WebDAVConfig{
Config: webdavserver.DefaultConfig(),
},
UI: UIConfig{
Port: "9001", // Port is a string in UIConfig
AppConfig: ui.AppConfig{},
},
Jobs: JobsConfig{
OurDBPath: "./data/ourdb",
WorkerCount: 5,
QueuePollInterval: 100 * time.Millisecond,
},
EnableRedis: true,
EnableWebDAV: true,
EnableUI: true,
EnableJobs: true,
}
}