Class: Ask::Rails::Harness::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/ask/rails/harness/configuration.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConfiguration

Returns a new instance of Configuration.



15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/ask/rails/harness/configuration.rb', line 15

def initialize
  @default_model = "gpt-4o"
  @max_turns = 25
  @system_prompt = nil
  @tool_concurrency = 5
  @persistence_adapter = nil
  @tools = []
  @current_user = nil
  @allowed_commands = nil
  @denied_commands = nil
  @max_session_age = nil
  @max_sessions = nil
  @environments = {}
end

Instance Attribute Details

#allowed_commandsObject

Returns the value of attribute allowed_commands.



7
8
9
# File 'lib/ask/rails/harness/configuration.rb', line 7

def allowed_commands
  @allowed_commands
end

#current_userObject

Returns the value of attribute current_user.



7
8
9
# File 'lib/ask/rails/harness/configuration.rb', line 7

def current_user
  @current_user
end

#default_modelObject

Returns the value of attribute default_model.



7
8
9
# File 'lib/ask/rails/harness/configuration.rb', line 7

def default_model
  @default_model
end

#denied_commandsObject

Returns the value of attribute denied_commands.



7
8
9
# File 'lib/ask/rails/harness/configuration.rb', line 7

def denied_commands
  @denied_commands
end

#environmentsHash{Symbol => EnvironmentPermissions} (readonly)

Returns per-environment permission rules.

Returns:



13
14
15
# File 'lib/ask/rails/harness/configuration.rb', line 13

def environments
  @environments
end

#max_session_ageObject

Returns the value of attribute max_session_age.



7
8
9
# File 'lib/ask/rails/harness/configuration.rb', line 7

def max_session_age
  @max_session_age
end

#max_sessionsObject

Returns the value of attribute max_sessions.



7
8
9
# File 'lib/ask/rails/harness/configuration.rb', line 7

def max_sessions
  @max_sessions
end

#max_turnsObject

Returns the value of attribute max_turns.



7
8
9
# File 'lib/ask/rails/harness/configuration.rb', line 7

def max_turns
  @max_turns
end

#persistence_adapterObject

Returns the value of attribute persistence_adapter.



7
8
9
# File 'lib/ask/rails/harness/configuration.rb', line 7

def persistence_adapter
  @persistence_adapter
end

#system_promptObject

Returns the value of attribute system_prompt.



7
8
9
# File 'lib/ask/rails/harness/configuration.rb', line 7

def system_prompt
  @system_prompt
end

#tool_concurrencyObject

Returns the value of attribute tool_concurrency.



7
8
9
# File 'lib/ask/rails/harness/configuration.rb', line 7

def tool_concurrency
  @tool_concurrency
end

#toolsObject

Returns the value of attribute tools.



7
8
9
# File 'lib/ask/rails/harness/configuration.rb', line 7

def tools
  @tools
end

Instance Method Details

#effective_allowed_commandsArray<Regexp>?

Resolved allowed commands for the current Rails environment. Falls back to the global allowed_commands if no per-env config.

Returns:

  • (Array<Regexp>, nil)


49
50
51
52
# File 'lib/ask/rails/harness/configuration.rb', line 49

def effective_allowed_commands
  env = @environments[::Rails.env.to_sym]
  env&.allowed_commands || @allowed_commands
end

#effective_denied_commandsArray<Regexp>?

Resolved denied commands for the current Rails environment. Falls back to the global denied_commands if no per-env config.

Returns:

  • (Array<Regexp>, nil)


58
59
60
61
# File 'lib/ask/rails/harness/configuration.rb', line 58

def effective_denied_commands
  env = @environments[::Rails.env.to_sym]
  env&.denied_commands || @denied_commands
end

#effective_modeSymbol?

Resolved access mode for the current Rails environment.

Returns:

  • (Symbol, nil)

    :full_access, :read_only, :ask_before_changes, or nil



66
67
68
69
# File 'lib/ask/rails/harness/configuration.rb', line 66

def effective_mode
  env = @environments[::Rails.env.to_sym]
  env&.mode || nil
end

#environment(name) {|env| ... } ⇒ Object

Configure permissions for a specific Rails environment.

config.environment :production do |env|
env.mode = :read_only
env.allowed_commands = [/^rails routes/]
env.denied_commands = [/rm/, /dropdb/]
end

Parameters:

  • name (Symbol, String)

    environment name (:production, :development, :staging, etc.)

Yields:

  • (env)


39
40
41
42
43
# File 'lib/ask/rails/harness/configuration.rb', line 39

def environment(name)
  env = EnvironmentPermissions.new
  yield env
  @environments[name.to_sym] = env
end