Class: Aidp::Setup::InMemoryConfigAdapter
- Inherits:
-
Object
- Object
- Aidp::Setup::InMemoryConfigAdapter
- Defined in:
- lib/aidp/setup/in_memory_config_adapter.rb
Overview
Adapter that wraps in-memory configuration from the wizard to provide the same interface as Harness::Configuration.
This enables AGD (AI-Generated Determinism) to work during the interactive configuration wizard before the config file is written to disk.
Instance Attribute Summary collapse
-
#project_dir ⇒ Object
readonly
Returns the value of attribute project_dir.
Instance Method Summary collapse
-
#allow_provider_switch_for_tier? ⇒ Boolean
Check if provider switching for tier is allowed.
-
#autonomous_escalation_config ⇒ Object
Issue #375: Get escalation configuration for autonomous contexts.
-
#autonomous_max_tier ⇒ Object
Issue #375: Get maximum tier for autonomous contexts (watch mode, work loops).
-
#configured_providers ⇒ Object
Get all configured providers.
-
#configured_tiers(provider_name) ⇒ Object
Get all configured tiers for a provider.
-
#default_flags(provider_name) ⇒ Object
Get default flags for a provider.
-
#default_provider ⇒ Object
Get default provider.
-
#default_tier ⇒ Object
Get default thinking tier.
-
#escalation_complexity_threshold ⇒ Object
Get complexity threshold configuration for escalation.
-
#escalation_config ⇒ Object
Get escalation configuration.
-
#escalation_fail_attempts ⇒ Object
Get fail attempts threshold for escalation.
-
#fallback_providers ⇒ Object
Get fallback providers.
-
#filter_definitions ⇒ Object
Get filter definitions.
-
#harness_config ⇒ Object
Get harness-specific configuration.
-
#initialize(config, project_dir) ⇒ InMemoryConfigAdapter
constructor
Initialize with wizard's in-memory config hash.
-
#max_tier ⇒ Object
Get maximum thinking tier.
-
#max_tokens(provider_name) ⇒ Object
Get maximum tokens for a provider.
-
#min_attempts_per_model ⇒ Object
Issue #375: Minimum attempts per model before trying next model in tier.
-
#min_total_attempts_before_escalation ⇒ Object
Issue #375: Minimum total attempts across all models before tier escalation.
-
#model_family(provider_name) ⇒ Object
Get model family for a provider.
-
#models_for_tier(tier, provider_name) ⇒ Object
Get models configured for a specific tier and provider.
-
#output_filtering_config ⇒ Object
Get output filtering configuration.
-
#permission_for_tier(tier) ⇒ Object
Get permission level for a tier.
-
#provider_config(provider_name) ⇒ Object
Get provider configuration.
-
#provider_configured?(provider_name) ⇒ Boolean
Check if provider is configured.
-
#provider_models(provider_name) ⇒ Object
Get provider models configuration.
-
#provider_thinking_tiers(provider_name) ⇒ Object
Get thinking tiers configuration for a provider.
-
#provider_type(provider_name) ⇒ Object
Get provider type (usage_based, subscription, passthrough).
-
#raw_config ⇒ Object
Get raw configuration.
-
#retry_failed_models? ⇒ Boolean
Issue #375: Whether to retry failed models after exhausting untested models.
-
#thinking_config ⇒ Object
Get thinking configuration.
-
#thinking_overrides ⇒ Object
Get thinking tier overrides.
-
#tier_override_for(key) ⇒ Object
Get tier override for a skill or template.
-
#work_loop_config ⇒ Object
Get work loop configuration.
Constructor Details
#initialize(config, project_dir) ⇒ InMemoryConfigAdapter
Initialize with wizard's in-memory config hash
23 24 25 26 27 28 29 30 |
# File 'lib/aidp/setup/in_memory_config_adapter.rb', line 23 def initialize(config, project_dir) @config = config || {} @project_dir = project_dir Aidp.log_debug("in_memory_config_adapter", "initialized", providers: configured_providers, default_provider: default_provider) end |
Instance Attribute Details
#project_dir ⇒ Object (readonly)
Returns the value of attribute project_dir.
17 18 19 |
# File 'lib/aidp/setup/in_memory_config_adapter.rb', line 17 def project_dir @project_dir end |
Instance Method Details
#allow_provider_switch_for_tier? ⇒ Boolean
Check if provider switching for tier is allowed
110 111 112 |
# File 'lib/aidp/setup/in_memory_config_adapter.rb', line 110 def allow_provider_switch_for_tier? thinking_config[:allow_provider_switch] != false end |
#autonomous_escalation_config ⇒ Object
Issue #375: Get escalation configuration for autonomous contexts
166 167 168 |
# File 'lib/aidp/setup/in_memory_config_adapter.rb', line 166 def autonomous_escalation_config thinking_config[:autonomous_escalation] || default_autonomous_escalation_config end |
#autonomous_max_tier ⇒ Object
Issue #375: Get maximum tier for autonomous contexts (watch mode, work loops)
161 162 163 |
# File 'lib/aidp/setup/in_memory_config_adapter.rb', line 161 def autonomous_max_tier thinking_config[:autonomous_max_tier] || default_thinking_config[:autonomous_max_tier] end |
#configured_providers ⇒ Object
Get all configured providers
50 51 52 53 |
# File 'lib/aidp/setup/in_memory_config_adapter.rb', line 50 def configured_providers providers = @config[:providers] || {} providers.keys.map(&:to_s) end |
#configured_tiers(provider_name) ⇒ Object
Get all configured tiers for a provider
105 106 107 |
# File 'lib/aidp/setup/in_memory_config_adapter.rb', line 105 def configured_tiers(provider_name) provider_thinking_tiers(provider_name).keys.map(&:to_s) end |
#default_flags(provider_name) ⇒ Object
Get default flags for a provider
191 192 193 |
# File 'lib/aidp/setup/in_memory_config_adapter.rb', line 191 def default_flags(provider_name) provider_config(provider_name)[:default_flags] || [] end |
#default_provider ⇒ Object
Get default provider
56 57 58 |
# File 'lib/aidp/setup/in_memory_config_adapter.rb', line 56 def default_provider harness_config[:default_provider] end |
#default_tier ⇒ Object
Get default thinking tier
115 116 117 |
# File 'lib/aidp/setup/in_memory_config_adapter.rb', line 115 def default_tier thinking_config[:default_tier] || "mini" end |
#escalation_complexity_threshold ⇒ Object
Get complexity threshold configuration for escalation
156 157 158 |
# File 'lib/aidp/setup/in_memory_config_adapter.rb', line 156 def escalation_complexity_threshold escalation_config[:on_complexity_threshold] || {} end |
#escalation_config ⇒ Object
Get escalation configuration
146 147 148 |
# File 'lib/aidp/setup/in_memory_config_adapter.rb', line 146 def escalation_config thinking_config[:escalation] || default_escalation_config end |
#escalation_fail_attempts ⇒ Object
Get fail attempts threshold for escalation
151 152 153 |
# File 'lib/aidp/setup/in_memory_config_adapter.rb', line 151 def escalation_fail_attempts escalation_config[:on_fail_attempts] || 2 end |
#fallback_providers ⇒ Object
Get fallback providers
61 62 63 |
# File 'lib/aidp/setup/in_memory_config_adapter.rb', line 61 def fallback_providers Array(harness_config[:fallback_providers]) end |
#filter_definitions ⇒ Object
Get filter definitions
219 220 221 |
# File 'lib/aidp/setup/in_memory_config_adapter.rb', line 219 def filter_definitions output_filtering_config[:filter_definitions] || {} end |
#harness_config ⇒ Object
Get harness-specific configuration
33 34 35 36 37 38 |
# File 'lib/aidp/setup/in_memory_config_adapter.rb', line 33 def harness_config config = @config[:harness] || {} Aidp.log_debug("in_memory_config_adapter", "harness_config_retrieved", keys: config.keys) config end |
#max_tier ⇒ Object
Get maximum thinking tier
120 121 122 |
# File 'lib/aidp/setup/in_memory_config_adapter.rb', line 120 def max_tier thinking_config[:max_tier] || "pro" end |
#max_tokens(provider_name) ⇒ Object
Get maximum tokens for a provider
196 197 198 |
# File 'lib/aidp/setup/in_memory_config_adapter.rb', line 196 def max_tokens(provider_name) provider_config(provider_name)[:max_tokens] end |
#min_attempts_per_model ⇒ Object
Issue #375: Minimum attempts per model before trying next model in tier
171 172 173 |
# File 'lib/aidp/setup/in_memory_config_adapter.rb', line 171 def min_attempts_per_model autonomous_escalation_config[:min_attempts_per_model] || 2 end |
#min_total_attempts_before_escalation ⇒ Object
Issue #375: Minimum total attempts across all models before tier escalation
176 177 178 |
# File 'lib/aidp/setup/in_memory_config_adapter.rb', line 176 def min_total_attempts_before_escalation autonomous_escalation_config[:min_total_attempts] || 10 end |
#model_family(provider_name) ⇒ Object
Get model family for a provider
71 72 73 |
# File 'lib/aidp/setup/in_memory_config_adapter.rb', line 71 def model_family(provider_name) provider_config(provider_name)[:model_family] || "auto" end |
#models_for_tier(tier, provider_name) ⇒ Object
Get models configured for a specific tier and provider
82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/aidp/setup/in_memory_config_adapter.rb', line 82 def models_for_tier(tier, provider_name) unless provider_name Aidp.log_debug("in_memory_config_adapter", "models_for_tier_skipped", reason: "no_provider_name") return [] end tier_config = provider_thinking_tiers(provider_name)[tier] || provider_thinking_tiers(provider_name)[tier.to_sym] unless tier_config Aidp.log_debug("in_memory_config_adapter", "models_for_tier_not_found", tier: tier, provider: provider_name) return [] end models = tier_config[:models] || tier_config["models"] result = models ? Array(models).map(&:to_s).compact : [] Aidp.log_debug("in_memory_config_adapter", "models_for_tier_retrieved", tier: tier, provider: provider_name, count: result.size) result end |
#output_filtering_config ⇒ Object
Get output filtering configuration
214 215 216 |
# File 'lib/aidp/setup/in_memory_config_adapter.rb', line 214 def output_filtering_config work_loop_config[:output_filtering] || {} end |
#permission_for_tier(tier) ⇒ Object
Get permission level for a tier
140 141 142 143 |
# File 'lib/aidp/setup/in_memory_config_adapter.rb', line 140 def (tier) = thinking_config[:permissions_by_tier] || {} [tier] || [tier.to_sym] || "tools" end |
#provider_config(provider_name) ⇒ Object
Get provider configuration
41 42 43 44 45 46 47 |
# File 'lib/aidp/setup/in_memory_config_adapter.rb', line 41 def provider_config(provider_name) providers = @config[:providers] || {} config = providers[provider_name.to_sym] || providers[provider_name.to_s] || {} Aidp.log_debug("in_memory_config_adapter", "provider_config_retrieved", provider: provider_name, found: !config.empty?) config end |
#provider_configured?(provider_name) ⇒ Boolean
Check if provider is configured
201 202 203 204 205 206 |
# File 'lib/aidp/setup/in_memory_config_adapter.rb', line 201 def provider_configured?(provider_name) result = configured_providers.include?(provider_name.to_s) Aidp.log_debug("in_memory_config_adapter", "provider_configured_check", provider: provider_name, configured: result) result end |
#provider_models(provider_name) ⇒ Object
Get provider models configuration
186 187 188 |
# File 'lib/aidp/setup/in_memory_config_adapter.rb', line 186 def provider_models(provider_name) provider_config(provider_name)[:models] || [] end |
#provider_thinking_tiers(provider_name) ⇒ Object
Get thinking tiers configuration for a provider
76 77 78 79 |
# File 'lib/aidp/setup/in_memory_config_adapter.rb', line 76 def provider_thinking_tiers(provider_name) cfg = provider_config(provider_name) cfg[:thinking_tiers] || cfg["thinking_tiers"] || {} end |
#provider_type(provider_name) ⇒ Object
Get provider type (usage_based, subscription, passthrough)
66 67 68 |
# File 'lib/aidp/setup/in_memory_config_adapter.rb', line 66 def provider_type(provider_name) provider_config(provider_name)[:type] || "unknown" end |
#raw_config ⇒ Object
Get raw configuration
224 225 226 |
# File 'lib/aidp/setup/in_memory_config_adapter.rb', line 224 def raw_config @config.dup end |
#retry_failed_models? ⇒ Boolean
Issue #375: Whether to retry failed models after exhausting untested models
181 182 183 |
# File 'lib/aidp/setup/in_memory_config_adapter.rb', line 181 def retry_failed_models? autonomous_escalation_config[:retry_failed_models] != false end |
#thinking_config ⇒ Object
Get thinking configuration
125 126 127 |
# File 'lib/aidp/setup/in_memory_config_adapter.rb', line 125 def thinking_config @config[:thinking] || default_thinking_config end |
#thinking_overrides ⇒ Object
Get thinking tier overrides
135 136 137 |
# File 'lib/aidp/setup/in_memory_config_adapter.rb', line 135 def thinking_overrides thinking_config[:overrides] || {} end |
#tier_override_for(key) ⇒ Object
Get tier override for a skill or template
130 131 132 |
# File 'lib/aidp/setup/in_memory_config_adapter.rb', line 130 def tier_override_for(key) thinking_overrides[key] || thinking_overrides[key.to_sym] end |
#work_loop_config ⇒ Object
Get work loop configuration
209 210 211 |
# File 'lib/aidp/setup/in_memory_config_adapter.rb', line 209 def work_loop_config harness_config[:work_loop] || {} end |