Class: ClaudeSwarm::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/claude_swarm/configuration.rb

Constant Summary collapse

VALID_PROVIDERS =

Frozen constants for validation

["claude", "openai"].freeze
OPENAI_SPECIFIC_FIELDS =
["temperature", "api_version", "openai_token_env", "base_url", "reasoning_effort", "zdr"].freeze
VALID_API_VERSIONS =
["chat_completion", "responses"].freeze
VALID_REASONING_EFFORTS =
["low", "medium", "high"].freeze
ENV_VAR_PATTERN =

Regex patterns

/\$\{([^}]+)\}/
ENV_VAR_WITH_DEFAULT_PATTERN =
/\$\{([^:}]+)(:=([^}]*))?\}/

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config_path, base_dir: nil, options: {}) ⇒ Configuration

Returns a new instance of Configuration.



16
17
18
19
20
21
22
# File 'lib/claude_swarm/configuration.rb', line 16

def initialize(config_path, base_dir: nil, options: {})
  @config_path = Pathname.new(config_path).expand_path
  @config_dir = @config_path.dirname
  @base_dir = base_dir || @config_dir.to_s
  @options = options
  load_and_validate
end

Instance Attribute Details

#base_dirObject (readonly)

Returns the value of attribute base_dir.



14
15
16
# File 'lib/claude_swarm/configuration.rb', line 14

def base_dir
  @base_dir
end

#configObject (readonly)

Returns the value of attribute config.



14
15
16
# File 'lib/claude_swarm/configuration.rb', line 14

def config
  @config
end

#config_pathObject (readonly)

Returns the value of attribute config_path.



14
15
16
# File 'lib/claude_swarm/configuration.rb', line 14

def config_path
  @config_path
end

#instancesObject (readonly)

Returns the value of attribute instances.



14
15
16
# File 'lib/claude_swarm/configuration.rb', line 14

def instances
  @instances
end

#main_instanceObject (readonly)

Returns the value of attribute main_instance.



14
15
16
# File 'lib/claude_swarm/configuration.rb', line 14

def main_instance
  @main_instance
end

#swarmObject (readonly)

Returns the value of attribute swarm.



14
15
16
# File 'lib/claude_swarm/configuration.rb', line 14

def swarm
  @swarm
end

#swarm_nameObject (readonly)

Returns the value of attribute swarm_name.



14
15
16
# File 'lib/claude_swarm/configuration.rb', line 14

def swarm_name
  @swarm_name
end

Instance Method Details

#after_commandsObject



40
41
42
# File 'lib/claude_swarm/configuration.rb', line 40

def after_commands
  @swarm["after"] || []
end

#before_commandsObject



36
37
38
# File 'lib/claude_swarm/configuration.rb', line 36

def before_commands
  @swarm["before"] || []
end

#connections_for(instance_name) ⇒ Object



32
33
34
# File 'lib/claude_swarm/configuration.rb', line 32

def connections_for(instance_name)
  instances[instance_name][:connections] || []
end

#instance_namesObject



28
29
30
# File 'lib/claude_swarm/configuration.rb', line 28

def instance_names
  instances.keys
end

#main_instance_configObject



24
25
26
# File 'lib/claude_swarm/configuration.rb', line 24

def main_instance_config
  instances[main_instance]
end

#validate_directoriesObject



44
45
46
47
48
49
50
51
# File 'lib/claude_swarm/configuration.rb', line 44

def validate_directories
  @instances.each do |name, instance|
    # Validate all directories in the directories array
    instance[:directories].each do |directory|
      raise Error, "Directory '#{directory}' for instance '#{name}' does not exist" unless File.directory?(directory)
    end
  end
end