- Agent roles and coordination features - Chat API integration testing - New configuration and workspace management 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
79 lines
2.7 KiB
Go
79 lines
2.7 KiB
Go
package config
|
|
|
|
import (
|
|
"os"
|
|
"strconv"
|
|
"time"
|
|
)
|
|
|
|
// HCFSConfig holds configuration for HCFS integration
|
|
type HCFSConfig struct {
|
|
// API settings
|
|
APIURL string `yaml:"api_url" json:"api_url"`
|
|
APITimeout time.Duration `yaml:"api_timeout" json:"api_timeout"`
|
|
|
|
// Workspace settings
|
|
MountPath string `yaml:"mount_path" json:"mount_path"`
|
|
WorkspaceTimeout time.Duration `yaml:"workspace_timeout" json:"workspace_timeout"`
|
|
|
|
// FUSE settings
|
|
FUSEEnabled bool `yaml:"fuse_enabled" json:"fuse_enabled"`
|
|
FUSEMountPoint string `yaml:"fuse_mount_point" json:"fuse_mount_point"`
|
|
|
|
// Cleanup settings
|
|
IdleCleanupInterval time.Duration `yaml:"idle_cleanup_interval" json:"idle_cleanup_interval"`
|
|
MaxIdleTime time.Duration `yaml:"max_idle_time" json:"max_idle_time"`
|
|
|
|
// Storage settings
|
|
StoreArtifacts bool `yaml:"store_artifacts" json:"store_artifacts"`
|
|
CompressArtifacts bool `yaml:"compress_artifacts" json:"compress_artifacts"`
|
|
}
|
|
|
|
// NewHCFSConfig creates a new HCFS configuration with defaults
|
|
func NewHCFSConfig() *HCFSConfig {
|
|
return &HCFSConfig{
|
|
APIURL: getEnvString("HCFS_API_URL", "http://localhost:8000"),
|
|
APITimeout: getEnvDuration("HCFS_API_TIMEOUT", 30*time.Second),
|
|
MountPath: getEnvString("HCFS_MOUNT_PATH", "/tmp/hcfs-workspaces"),
|
|
WorkspaceTimeout: getEnvDuration("HCFS_WORKSPACE_TIMEOUT", 2*time.Hour),
|
|
FUSEEnabled: getEnvBool("HCFS_FUSE_ENABLED", false),
|
|
FUSEMountPoint: getEnvString("HCFS_FUSE_MOUNT_POINT", "/mnt/hcfs"),
|
|
IdleCleanupInterval: getEnvDuration("HCFS_IDLE_CLEANUP_INTERVAL", 15*time.Minute),
|
|
MaxIdleTime: getEnvDuration("HCFS_MAX_IDLE_TIME", 1*time.Hour),
|
|
StoreArtifacts: getEnvBool("HCFS_STORE_ARTIFACTS", true),
|
|
CompressArtifacts: getEnvBool("HCFS_COMPRESS_ARTIFACTS", false),
|
|
}
|
|
}
|
|
|
|
// IsEnabled returns true if HCFS integration is enabled
|
|
func (c *HCFSConfig) IsEnabled() bool {
|
|
return c.APIURL != "" && c.APIURL != "disabled"
|
|
}
|
|
|
|
// getEnvString gets a string environment variable with a default value
|
|
func getEnvString(key, defaultValue string) string {
|
|
if value := os.Getenv(key); value != "" {
|
|
return value
|
|
}
|
|
return defaultValue
|
|
}
|
|
|
|
// getEnvBool gets a boolean environment variable with a default value
|
|
func getEnvBool(key string, defaultValue bool) bool {
|
|
if value := os.Getenv(key); value != "" {
|
|
if parsed, err := strconv.ParseBool(value); err == nil {
|
|
return parsed
|
|
}
|
|
}
|
|
return defaultValue
|
|
}
|
|
|
|
// getEnvDuration gets a duration environment variable with a default value
|
|
func getEnvDuration(key string, defaultValue time.Duration) time.Duration {
|
|
if value := os.Getenv(key); value != "" {
|
|
if parsed, err := time.ParseDuration(value); err == nil {
|
|
return parsed
|
|
}
|
|
}
|
|
return defaultValue
|
|
} |