Class: ConsoleAgent::Configuration
- Inherits:
-
Object
- Object
- ConsoleAgent::Configuration
- Defined in:
- lib/console_agent/configuration.rb
Constant Summary collapse
- PROVIDERS =
%i[anthropic openai local].freeze
- PRICING =
{ 'claude-sonnet-4-6' => { input: 3.0 / 1_000_000, output: 15.0 / 1_000_000 }, 'claude-opus-4-6' => { input: 15.0 / 1_000_000, output: 75.0 / 1_000_000 }, 'claude-haiku-4-5-20251001' => { input: 0.80 / 1_000_000, output: 4.0 / 1_000_000 }, }.freeze
- DEFAULT_MAX_TOKENS =
{ 'claude-sonnet-4-6' => 16_000, 'claude-haiku-4-5-20251001' => 16_000, 'claude-opus-4-6' => 4_096, }.freeze
Instance Attribute Summary collapse
-
#admin_password ⇒ Object
Returns the value of attribute admin_password.
-
#admin_username ⇒ Object
Returns the value of attribute admin_username.
-
#api_key ⇒ Object
Returns the value of attribute api_key.
-
#authenticate ⇒ Object
Returns the value of attribute authenticate.
-
#auto_execute ⇒ Object
Returns the value of attribute auto_execute.
-
#connection_class ⇒ Object
Returns the value of attribute connection_class.
-
#debug ⇒ Object
Returns the value of attribute debug.
-
#local_api_key ⇒ Object
Returns the value of attribute local_api_key.
-
#local_model ⇒ Object
Returns the value of attribute local_model.
-
#local_url ⇒ Object
Returns the value of attribute local_url.
-
#max_tokens ⇒ Object
Returns the value of attribute max_tokens.
-
#max_tool_rounds ⇒ Object
Returns the value of attribute max_tool_rounds.
-
#memories_enabled ⇒ Object
Returns the value of attribute memories_enabled.
-
#model ⇒ Object
Returns the value of attribute model.
-
#provider ⇒ Object
Returns the value of attribute provider.
-
#session_logging ⇒ Object
Returns the value of attribute session_logging.
-
#slack_allowed_usernames ⇒ Object
Returns the value of attribute slack_allowed_usernames.
-
#slack_app_token ⇒ Object
Returns the value of attribute slack_app_token.
-
#slack_bot_token ⇒ Object
Returns the value of attribute slack_bot_token.
-
#slack_channel_ids ⇒ Object
Returns the value of attribute slack_channel_ids.
-
#storage_adapter ⇒ Object
Returns the value of attribute storage_adapter.
-
#temperature ⇒ Object
Returns the value of attribute temperature.
-
#thinking_model ⇒ Object
Returns the value of attribute thinking_model.
-
#timeout ⇒ Object
Returns the value of attribute timeout.
Instance Method Summary collapse
-
#initialize ⇒ Configuration
constructor
A new instance of Configuration.
- #resolved_api_key ⇒ Object
- #resolved_max_tokens ⇒ Object
- #resolved_model ⇒ Object
- #resolved_thinking_model ⇒ Object
- #resolved_timeout ⇒ Object
-
#safety_guard(name, &block) ⇒ Object
Register a custom safety guard by name with an around-block.
- #safety_guards ⇒ Object
-
#use_builtin_safety_guard(name, allow: nil) ⇒ Object
Register a built-in safety guard by name.
- #validate! ⇒ Object
Constructor Details
#initialize ⇒ Configuration
Returns a new instance of Configuration.
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/console_agent/configuration.rb', line 27 def initialize @provider = :anthropic @api_key = nil @model = nil @thinking_model = nil @max_tokens = nil @auto_execute = false @temperature = 0.2 @timeout = 30 @debug = false @max_tool_rounds = 200 @storage_adapter = nil @memories_enabled = true @session_logging = true @connection_class = nil @admin_username = nil @admin_password = nil @authenticate = nil @safety_guards = nil @slack_bot_token = nil @slack_app_token = nil @slack_channel_ids = nil @slack_allowed_usernames = nil @local_url = 'http://localhost:11434' @local_model = 'qwen2.5:7b' @local_api_key = nil end |
Instance Attribute Details
#admin_password ⇒ Object
Returns the value of attribute admin_password.
17 18 19 |
# File 'lib/console_agent/configuration.rb', line 17 def admin_password @admin_password end |
#admin_username ⇒ Object
Returns the value of attribute admin_username.
17 18 19 |
# File 'lib/console_agent/configuration.rb', line 17 def admin_username @admin_username end |
#api_key ⇒ Object
Returns the value of attribute api_key.
17 18 19 |
# File 'lib/console_agent/configuration.rb', line 17 def api_key @api_key end |
#authenticate ⇒ Object
Returns the value of attribute authenticate.
17 18 19 |
# File 'lib/console_agent/configuration.rb', line 17 def authenticate @authenticate end |
#auto_execute ⇒ Object
Returns the value of attribute auto_execute.
17 18 19 |
# File 'lib/console_agent/configuration.rb', line 17 def auto_execute @auto_execute end |
#connection_class ⇒ Object
Returns the value of attribute connection_class.
17 18 19 |
# File 'lib/console_agent/configuration.rb', line 17 def connection_class @connection_class end |
#debug ⇒ Object
Returns the value of attribute debug.
17 18 19 |
# File 'lib/console_agent/configuration.rb', line 17 def debug @debug end |
#local_api_key ⇒ Object
Returns the value of attribute local_api_key.
17 18 19 |
# File 'lib/console_agent/configuration.rb', line 17 def local_api_key @local_api_key end |
#local_model ⇒ Object
Returns the value of attribute local_model.
17 18 19 |
# File 'lib/console_agent/configuration.rb', line 17 def local_model @local_model end |
#local_url ⇒ Object
Returns the value of attribute local_url.
17 18 19 |
# File 'lib/console_agent/configuration.rb', line 17 def local_url @local_url end |
#max_tokens ⇒ Object
Returns the value of attribute max_tokens.
17 18 19 |
# File 'lib/console_agent/configuration.rb', line 17 def max_tokens @max_tokens end |
#max_tool_rounds ⇒ Object
Returns the value of attribute max_tool_rounds.
17 18 19 |
# File 'lib/console_agent/configuration.rb', line 17 def max_tool_rounds @max_tool_rounds end |
#memories_enabled ⇒ Object
Returns the value of attribute memories_enabled.
17 18 19 |
# File 'lib/console_agent/configuration.rb', line 17 def memories_enabled @memories_enabled end |
#model ⇒ Object
Returns the value of attribute model.
17 18 19 |
# File 'lib/console_agent/configuration.rb', line 17 def model @model end |
#provider ⇒ Object
Returns the value of attribute provider.
17 18 19 |
# File 'lib/console_agent/configuration.rb', line 17 def provider @provider end |
#session_logging ⇒ Object
Returns the value of attribute session_logging.
17 18 19 |
# File 'lib/console_agent/configuration.rb', line 17 def session_logging @session_logging end |
#slack_allowed_usernames ⇒ Object
Returns the value of attribute slack_allowed_usernames.
17 18 19 |
# File 'lib/console_agent/configuration.rb', line 17 def slack_allowed_usernames @slack_allowed_usernames end |
#slack_app_token ⇒ Object
Returns the value of attribute slack_app_token.
17 18 19 |
# File 'lib/console_agent/configuration.rb', line 17 def slack_app_token @slack_app_token end |
#slack_bot_token ⇒ Object
Returns the value of attribute slack_bot_token.
17 18 19 |
# File 'lib/console_agent/configuration.rb', line 17 def slack_bot_token @slack_bot_token end |
#slack_channel_ids ⇒ Object
Returns the value of attribute slack_channel_ids.
17 18 19 |
# File 'lib/console_agent/configuration.rb', line 17 def slack_channel_ids @slack_channel_ids end |
#storage_adapter ⇒ Object
Returns the value of attribute storage_adapter.
17 18 19 |
# File 'lib/console_agent/configuration.rb', line 17 def storage_adapter @storage_adapter end |
#temperature ⇒ Object
Returns the value of attribute temperature.
17 18 19 |
# File 'lib/console_agent/configuration.rb', line 17 def temperature @temperature end |
#thinking_model ⇒ Object
Returns the value of attribute thinking_model.
17 18 19 |
# File 'lib/console_agent/configuration.rb', line 17 def thinking_model @thinking_model end |
#timeout ⇒ Object
Returns the value of attribute timeout.
17 18 19 |
# File 'lib/console_agent/configuration.rb', line 17 def timeout @timeout end |
Instance Method Details
#resolved_api_key ⇒ Object
100 101 102 103 104 105 106 107 108 109 110 111 |
# File 'lib/console_agent/configuration.rb', line 100 def resolved_api_key return @api_key if @api_key && !@api_key.empty? case @provider when :anthropic ENV['ANTHROPIC_API_KEY'] when :openai ENV['OPENAI_API_KEY'] when :local @local_api_key || 'no-key' end end |
#resolved_max_tokens ⇒ Object
126 127 128 129 130 |
# File 'lib/console_agent/configuration.rb', line 126 def resolved_max_tokens return @max_tokens if @max_tokens DEFAULT_MAX_TOKENS.fetch(resolved_model, 4096) end |
#resolved_model ⇒ Object
113 114 115 116 117 118 119 120 121 122 123 124 |
# File 'lib/console_agent/configuration.rb', line 113 def resolved_model return @model if @model && !@model.empty? case @provider when :anthropic 'claude-sonnet-4-6' when :openai 'gpt-5.3-codex' when :local @local_model end end |
#resolved_thinking_model ⇒ Object
132 133 134 135 136 137 138 139 140 141 142 143 |
# File 'lib/console_agent/configuration.rb', line 132 def resolved_thinking_model return @thinking_model if @thinking_model && !@thinking_model.empty? case @provider when :anthropic 'claude-opus-4-6' when :openai 'gpt-5.3-codex' when :local @local_model end end |
#resolved_timeout ⇒ Object
145 146 147 |
# File 'lib/console_agent/configuration.rb', line 145 def resolved_timeout @provider == :local ? [@timeout, 300].max : @timeout end |
#safety_guard(name, &block) ⇒ Object
Register a custom safety guard by name with an around-block.
config.safety_guard :mailers do |&execute|
ActionMailer::Base.perform_deliveries = false
execute.call
ensure
ActionMailer::Base.perform_deliveries = true
end
70 71 72 |
# File 'lib/console_agent/configuration.rb', line 70 def safety_guard(name, &block) safety_guards.add(name, &block) end |
#safety_guards ⇒ Object
55 56 57 58 59 60 |
# File 'lib/console_agent/configuration.rb', line 55 def safety_guards @safety_guards ||= begin require 'console_agent/safety_guards' SafetyGuards.new end end |
#use_builtin_safety_guard(name, allow: nil) ⇒ Object
Register a built-in safety guard by name. Available: :database_writes, :http_mutations, :mailers
Options:
allow: Array of strings or regexps to allowlist for this guard.
- :http_mutations → hosts (e.g. "s3.amazonaws.com", /googleapis\.com/)
- :database_writes → table names (e.g. "console_agent_sessions")
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
# File 'lib/console_agent/configuration.rb', line 81 def use_builtin_safety_guard(name, allow: nil) require 'console_agent/safety_guards' guard_name = name.to_sym case guard_name when :database_writes safety_guards.add(:database_writes, &BuiltinGuards.database_writes) when :http_mutations safety_guards.add(:http_mutations, &BuiltinGuards.http_mutations) when :mailers safety_guards.add(:mailers, &BuiltinGuards.mailers) else raise ConfigurationError, "Unknown built-in safety guard: #{name}. Available: database_writes, http_mutations, mailers" end if allow Array(allow).each { |key| safety_guards.allow(guard_name, key) } end end |
#validate! ⇒ Object
149 150 151 152 153 154 155 156 157 158 159 160 161 162 |
# File 'lib/console_agent/configuration.rb', line 149 def validate! unless PROVIDERS.include?(@provider) raise ConfigurationError, "Unknown provider: #{@provider}. Valid: #{PROVIDERS.join(', ')}" end if @provider == :local raise ConfigurationError, "No local_url configured for :local provider." unless @local_url && !@local_url.empty? else unless resolved_api_key env_var = @provider == :anthropic ? 'ANTHROPIC_API_KEY' : 'OPENAI_API_KEY' raise ConfigurationError, "No API key. Set config.api_key or #{env_var} env var." end end end |