 5978a0b8f5
			
		
	
	5978a0b8f5
	
	
	
		
			
			- 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
 | |
| } |