aidp 0.7.0 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +60 -214
- data/bin/aidp +1 -1
- data/lib/aidp/analysis/kb_inspector.rb +38 -23
- data/lib/aidp/analysis/seams.rb +2 -31
- data/lib/aidp/analysis/tree_sitter_grammar_loader.rb +1 -13
- data/lib/aidp/analysis/tree_sitter_scan.rb +3 -20
- data/lib/aidp/analyze/error_handler.rb +2 -75
- data/lib/aidp/analyze/json_file_storage.rb +292 -0
- data/lib/aidp/analyze/progress.rb +12 -0
- data/lib/aidp/analyze/progress_visualizer.rb +12 -17
- data/lib/aidp/analyze/ruby_maat_integration.rb +13 -31
- data/lib/aidp/analyze/runner.rb +256 -87
- data/lib/aidp/cli/jobs_command.rb +100 -432
- data/lib/aidp/cli.rb +309 -239
- data/lib/aidp/config.rb +298 -10
- data/lib/aidp/debug_logger.rb +195 -0
- data/lib/aidp/debug_mixin.rb +187 -0
- data/lib/aidp/execute/progress.rb +9 -0
- data/lib/aidp/execute/runner.rb +221 -40
- data/lib/aidp/execute/steps.rb +17 -7
- data/lib/aidp/execute/workflow_selector.rb +211 -0
- data/lib/aidp/harness/completion_checker.rb +268 -0
- data/lib/aidp/harness/condition_detector.rb +1526 -0
- data/lib/aidp/harness/config_loader.rb +373 -0
- data/lib/aidp/harness/config_manager.rb +382 -0
- data/lib/aidp/harness/config_schema.rb +1006 -0
- data/lib/aidp/harness/config_validator.rb +355 -0
- data/lib/aidp/harness/configuration.rb +477 -0
- data/lib/aidp/harness/enhanced_runner.rb +494 -0
- data/lib/aidp/harness/error_handler.rb +616 -0
- data/lib/aidp/harness/provider_config.rb +423 -0
- data/lib/aidp/harness/provider_factory.rb +306 -0
- data/lib/aidp/harness/provider_manager.rb +1269 -0
- data/lib/aidp/harness/provider_type_checker.rb +88 -0
- data/lib/aidp/harness/runner.rb +411 -0
- data/lib/aidp/harness/state/errors.rb +28 -0
- data/lib/aidp/harness/state/metrics.rb +219 -0
- data/lib/aidp/harness/state/persistence.rb +128 -0
- data/lib/aidp/harness/state/provider_state.rb +132 -0
- data/lib/aidp/harness/state/ui_state.rb +68 -0
- data/lib/aidp/harness/state/workflow_state.rb +123 -0
- data/lib/aidp/harness/state_manager.rb +586 -0
- data/lib/aidp/harness/status_display.rb +888 -0
- data/lib/aidp/harness/ui/base.rb +16 -0
- data/lib/aidp/harness/ui/enhanced_tui.rb +545 -0
- data/lib/aidp/harness/ui/enhanced_workflow_selector.rb +252 -0
- data/lib/aidp/harness/ui/error_handler.rb +132 -0
- data/lib/aidp/harness/ui/frame_manager.rb +361 -0
- data/lib/aidp/harness/ui/job_monitor.rb +500 -0
- data/lib/aidp/harness/ui/navigation/main_menu.rb +311 -0
- data/lib/aidp/harness/ui/navigation/menu_formatter.rb +120 -0
- data/lib/aidp/harness/ui/navigation/menu_item.rb +142 -0
- data/lib/aidp/harness/ui/navigation/menu_state.rb +139 -0
- data/lib/aidp/harness/ui/navigation/submenu.rb +202 -0
- data/lib/aidp/harness/ui/navigation/workflow_selector.rb +176 -0
- data/lib/aidp/harness/ui/progress_display.rb +280 -0
- data/lib/aidp/harness/ui/question_collector.rb +141 -0
- data/lib/aidp/harness/ui/spinner_group.rb +184 -0
- data/lib/aidp/harness/ui/spinner_helper.rb +152 -0
- data/lib/aidp/harness/ui/status_manager.rb +312 -0
- data/lib/aidp/harness/ui/status_widget.rb +280 -0
- data/lib/aidp/harness/ui/workflow_controller.rb +312 -0
- data/lib/aidp/harness/user_interface.rb +2381 -0
- data/lib/aidp/provider_manager.rb +131 -7
- data/lib/aidp/providers/anthropic.rb +28 -103
- data/lib/aidp/providers/base.rb +170 -0
- data/lib/aidp/providers/cursor.rb +52 -181
- data/lib/aidp/providers/gemini.rb +24 -107
- data/lib/aidp/providers/macos_ui.rb +99 -5
- data/lib/aidp/providers/opencode.rb +194 -0
- data/lib/aidp/storage/csv_storage.rb +172 -0
- data/lib/aidp/storage/file_manager.rb +214 -0
- data/lib/aidp/storage/json_storage.rb +140 -0
- data/lib/aidp/version.rb +1 -1
- data/lib/aidp.rb +54 -39
- data/templates/COMMON/AGENT_BASE.md +11 -0
- data/templates/EXECUTE/00_PRD.md +4 -4
- data/templates/EXECUTE/02_ARCHITECTURE.md +5 -4
- data/templates/EXECUTE/07_TEST_PLAN.md +4 -1
- data/templates/EXECUTE/08_TASKS.md +4 -4
- data/templates/EXECUTE/10_IMPLEMENTATION_AGENT.md +4 -4
- data/templates/README.md +279 -0
- data/templates/aidp-development.yml.example +373 -0
- data/templates/aidp-minimal.yml.example +48 -0
- data/templates/aidp-production.yml.example +475 -0
- data/templates/aidp.yml.example +598 -0
- metadata +93 -69
- data/lib/aidp/analyze/agent_personas.rb +0 -71
- data/lib/aidp/analyze/agent_tool_executor.rb +0 -439
- data/lib/aidp/analyze/data_retention_manager.rb +0 -421
- data/lib/aidp/analyze/database.rb +0 -260
- data/lib/aidp/analyze/dependencies.rb +0 -335
- data/lib/aidp/analyze/export_manager.rb +0 -418
- data/lib/aidp/analyze/focus_guidance.rb +0 -517
- data/lib/aidp/analyze/incremental_analyzer.rb +0 -533
- data/lib/aidp/analyze/language_analysis_strategies.rb +0 -897
- data/lib/aidp/analyze/large_analysis_progress.rb +0 -499
- data/lib/aidp/analyze/memory_manager.rb +0 -339
- data/lib/aidp/analyze/metrics_storage.rb +0 -336
- data/lib/aidp/analyze/parallel_processor.rb +0 -454
- data/lib/aidp/analyze/performance_optimizer.rb +0 -691
- data/lib/aidp/analyze/repository_chunker.rb +0 -697
- data/lib/aidp/analyze/static_analysis_detector.rb +0 -577
- data/lib/aidp/analyze/storage.rb +0 -655
- data/lib/aidp/analyze/tool_configuration.rb +0 -441
- data/lib/aidp/analyze/tool_modernization.rb +0 -750
- data/lib/aidp/database/pg_adapter.rb +0 -148
- data/lib/aidp/database_config.rb +0 -69
- data/lib/aidp/database_connection.rb +0 -72
- data/lib/aidp/job_manager.rb +0 -41
- data/lib/aidp/jobs/base_job.rb +0 -45
- data/lib/aidp/jobs/provider_execution_job.rb +0 -83
- data/lib/aidp/project_detector.rb +0 -117
- data/lib/aidp/providers/agent_supervisor.rb +0 -348
- data/lib/aidp/providers/supervised_base.rb +0 -317
- data/lib/aidp/providers/supervised_cursor.rb +0 -22
- data/lib/aidp/sync.rb +0 -13
- data/lib/aidp/workspace.rb +0 -19
@@ -0,0 +1,598 @@
|
|
1
|
+
# AIDP Configuration File
|
2
|
+
# This file configures the AI Dev Pipeline harness and providers
|
3
|
+
# Copy this file to your project root as 'aidp.yml' and customize as needed
|
4
|
+
|
5
|
+
# Harness configuration
|
6
|
+
harness:
|
7
|
+
# Maximum number of retries for failed operations
|
8
|
+
max_retries: 2
|
9
|
+
|
10
|
+
# Default provider to use when starting execution
|
11
|
+
default_provider: "cursor"
|
12
|
+
|
13
|
+
# Fallback providers in order of preference
|
14
|
+
fallback_providers: ["claude", "gemini"]
|
15
|
+
|
16
|
+
# Restrict to non-BYOK (Bring Your Own Key) providers only
|
17
|
+
restrict_to_non_byok: true
|
18
|
+
|
19
|
+
# Provider weights for load balancing (higher = more preferred)
|
20
|
+
provider_weights:
|
21
|
+
cursor: 3
|
22
|
+
claude: 2
|
23
|
+
gemini: 1
|
24
|
+
|
25
|
+
# Advanced harness features
|
26
|
+
auto_switch_on_error: true # Automatically switch providers on errors
|
27
|
+
auto_switch_on_rate_limit: true # Automatically switch providers on rate limits
|
28
|
+
max_concurrent_requests: 5 # Maximum concurrent requests per provider
|
29
|
+
request_timeout: 300 # Global request timeout in seconds
|
30
|
+
user_feedback_timeout: 300 # Timeout for user feedback requests
|
31
|
+
work_completion_timeout: 1800 # Timeout for work completion detection
|
32
|
+
|
33
|
+
# Circuit breaker configuration
|
34
|
+
circuit_breaker:
|
35
|
+
enabled: true
|
36
|
+
failure_threshold: 5 # Open circuit after 5 failures
|
37
|
+
timeout: 300 # Keep circuit open for 5 minutes
|
38
|
+
half_open_max_calls: 3 # Test with 3 calls when half-open
|
39
|
+
|
40
|
+
# Retry configuration
|
41
|
+
retry:
|
42
|
+
enabled: true
|
43
|
+
max_attempts: 3
|
44
|
+
base_delay: 1.0 # Initial delay in seconds
|
45
|
+
max_delay: 60.0 # Maximum delay in seconds
|
46
|
+
exponential_base: 2.0 # Exponential backoff multiplier
|
47
|
+
jitter: true # Add random jitter to delays
|
48
|
+
|
49
|
+
# Rate limiting configuration
|
50
|
+
rate_limit:
|
51
|
+
enabled: true
|
52
|
+
default_reset_time: 3600 # Default reset time in seconds (1 hour)
|
53
|
+
burst_limit: 10 # Maximum burst requests
|
54
|
+
sustained_limit: 5 # Sustained request limit
|
55
|
+
|
56
|
+
# Load balancing configuration
|
57
|
+
load_balancing:
|
58
|
+
enabled: true
|
59
|
+
strategy: "weighted_round_robin" # weighted_round_robin, least_connections, random
|
60
|
+
health_check_interval: 30 # Health check interval in seconds
|
61
|
+
unhealthy_threshold: 3 # Mark unhealthy after 3 failed checks
|
62
|
+
|
63
|
+
# Model switching configuration
|
64
|
+
model_switching:
|
65
|
+
enabled: true
|
66
|
+
auto_switch_on_error: true # Auto-switch models on errors
|
67
|
+
auto_switch_on_rate_limit: true # Auto-switch models on rate limits
|
68
|
+
fallback_strategy: "sequential" # sequential, load_balanced, random
|
69
|
+
|
70
|
+
# Health check configuration
|
71
|
+
health_check:
|
72
|
+
enabled: true
|
73
|
+
interval: 60 # Health check interval in seconds
|
74
|
+
timeout: 10 # Health check timeout in seconds
|
75
|
+
failure_threshold: 3 # Mark unhealthy after 3 failures
|
76
|
+
success_threshold: 2 # Mark healthy after 2 successes
|
77
|
+
|
78
|
+
# Metrics configuration
|
79
|
+
metrics:
|
80
|
+
enabled: true
|
81
|
+
retention_days: 30 # Keep metrics for 30 days
|
82
|
+
aggregation_interval: 300 # Aggregate metrics every 5 minutes
|
83
|
+
export_interval: 3600 # Export metrics every hour
|
84
|
+
|
85
|
+
# Session configuration
|
86
|
+
session:
|
87
|
+
enabled: true
|
88
|
+
timeout: 1800 # Session timeout in seconds (30 minutes)
|
89
|
+
sticky_sessions: true # Enable sticky sessions
|
90
|
+
session_affinity: "provider_model" # provider, model, provider_model
|
91
|
+
|
92
|
+
# User interface configuration
|
93
|
+
ui:
|
94
|
+
enabled: true
|
95
|
+
interactive_mode: true # Enable interactive prompts
|
96
|
+
file_selection: true # Enable @ file selection
|
97
|
+
progress_display: true # Show real-time progress
|
98
|
+
status_updates: true # Show status updates
|
99
|
+
pause_resume: true # Enable pause/resume controls
|
100
|
+
|
101
|
+
# Error handling configuration
|
102
|
+
error_handling:
|
103
|
+
enabled: true
|
104
|
+
log_errors: true # Log all errors
|
105
|
+
retry_on_error: true # Retry on recoverable errors
|
106
|
+
fallback_on_error: true # Use fallback providers on errors
|
107
|
+
error_notification: true # Notify user of errors
|
108
|
+
|
109
|
+
# Performance optimization
|
110
|
+
performance:
|
111
|
+
enabled: true
|
112
|
+
cache_responses: true # Cache provider responses
|
113
|
+
parallel_processing: true # Enable parallel processing
|
114
|
+
batch_requests: true # Batch multiple requests
|
115
|
+
connection_pooling: true # Use connection pooling
|
116
|
+
|
117
|
+
# Security configuration
|
118
|
+
security:
|
119
|
+
enabled: true
|
120
|
+
ssl_verify: true # Verify SSL certificates
|
121
|
+
allowed_hosts: [] # List of allowed hosts (empty = all)
|
122
|
+
blocked_hosts: [] # List of blocked hosts
|
123
|
+
api_key_rotation: false # Enable API key rotation
|
124
|
+
audit_logging: true # Enable audit logging
|
125
|
+
|
126
|
+
# Provider configurations
|
127
|
+
providers:
|
128
|
+
# Cursor provider (package-based)
|
129
|
+
cursor:
|
130
|
+
type: "package" # package, api, or byok
|
131
|
+
priority: 1 # Provider priority (higher = more preferred)
|
132
|
+
default_flags: [] # Default command-line flags for this provider
|
133
|
+
|
134
|
+
# Available models for this provider
|
135
|
+
models: ["cursor-default", "cursor-fast", "cursor-precise"]
|
136
|
+
|
137
|
+
# Model weights for load balancing
|
138
|
+
model_weights:
|
139
|
+
cursor-default: 3
|
140
|
+
cursor-fast: 2
|
141
|
+
cursor-precise: 1
|
142
|
+
|
143
|
+
# Model-specific configurations
|
144
|
+
models_config:
|
145
|
+
cursor-default:
|
146
|
+
flags: []
|
147
|
+
timeout: 600 # 10 minutes
|
148
|
+
cursor-fast:
|
149
|
+
flags: ["--fast"]
|
150
|
+
timeout: 300 # 5 minutes
|
151
|
+
cursor-precise:
|
152
|
+
flags: ["--precise"]
|
153
|
+
timeout: 900 # 15 minutes
|
154
|
+
|
155
|
+
# Provider features
|
156
|
+
features:
|
157
|
+
file_upload: true
|
158
|
+
code_generation: true
|
159
|
+
analysis: true
|
160
|
+
|
161
|
+
# Monitoring configuration
|
162
|
+
monitoring:
|
163
|
+
enabled: true
|
164
|
+
metrics_interval: 60 # Metrics collection interval in seconds
|
165
|
+
|
166
|
+
# Rate limiting configuration
|
167
|
+
rate_limit:
|
168
|
+
enabled: true
|
169
|
+
requests_per_minute: 60
|
170
|
+
requests_per_hour: 1000
|
171
|
+
burst_limit: 10
|
172
|
+
|
173
|
+
# Retry configuration
|
174
|
+
retry:
|
175
|
+
enabled: true
|
176
|
+
max_attempts: 3
|
177
|
+
base_delay: 1.0
|
178
|
+
max_delay: 60.0
|
179
|
+
exponential_base: 2.0
|
180
|
+
jitter: true
|
181
|
+
|
182
|
+
# Circuit breaker configuration
|
183
|
+
circuit_breaker:
|
184
|
+
enabled: true
|
185
|
+
failure_threshold: 5
|
186
|
+
timeout: 300
|
187
|
+
half_open_max_calls: 3
|
188
|
+
|
189
|
+
# Cost tracking
|
190
|
+
cost:
|
191
|
+
input_cost_per_token: 0.0 # Package-based pricing
|
192
|
+
output_cost_per_token: 0.0
|
193
|
+
fixed_cost_per_request: 0.0
|
194
|
+
currency: "USD"
|
195
|
+
|
196
|
+
# Health check configuration
|
197
|
+
health_check:
|
198
|
+
enabled: true
|
199
|
+
interval: 60
|
200
|
+
timeout: 10
|
201
|
+
failure_threshold: 3
|
202
|
+
success_threshold: 2
|
203
|
+
|
204
|
+
# Logging configuration
|
205
|
+
log:
|
206
|
+
enabled: true
|
207
|
+
level: "info"
|
208
|
+
file: "logs/cursor.log"
|
209
|
+
max_size: 10485760 # 10MB
|
210
|
+
max_files: 5
|
211
|
+
format: "json"
|
212
|
+
|
213
|
+
# Cache configuration
|
214
|
+
cache:
|
215
|
+
enabled: true
|
216
|
+
ttl: 3600 # 1 hour
|
217
|
+
max_size: 100
|
218
|
+
strategy: "lru"
|
219
|
+
|
220
|
+
# Security configuration
|
221
|
+
security:
|
222
|
+
ssl_verify: true
|
223
|
+
allowed_hosts: []
|
224
|
+
blocked_hosts: []
|
225
|
+
timeout: 30
|
226
|
+
max_redirects: 5
|
227
|
+
|
228
|
+
# Claude provider (API-based)
|
229
|
+
claude:
|
230
|
+
type: "api"
|
231
|
+
priority: 2
|
232
|
+
max_tokens: 100000 # Maximum tokens per request
|
233
|
+
default_flags: ["--dangerously-skip-permissions"]
|
234
|
+
|
235
|
+
# Available models for this provider
|
236
|
+
models: ["claude-3-5-sonnet-20241022", "claude-3-5-haiku-20241022", "claude-3-opus-20240229"]
|
237
|
+
|
238
|
+
# Model weights for load balancing
|
239
|
+
model_weights:
|
240
|
+
claude-3-5-sonnet-20241022: 3
|
241
|
+
claude-3-5-haiku-20241022: 2
|
242
|
+
claude-3-opus-20240229: 1
|
243
|
+
|
244
|
+
# Model-specific configurations
|
245
|
+
models_config:
|
246
|
+
claude-3-5-sonnet-20241022:
|
247
|
+
flags: ["--dangerously-skip-permissions"]
|
248
|
+
max_tokens: 200000
|
249
|
+
timeout: 300 # 5 minutes
|
250
|
+
claude-3-5-haiku-20241022:
|
251
|
+
flags: ["--dangerously-skip-permissions"]
|
252
|
+
max_tokens: 200000
|
253
|
+
timeout: 180 # 3 minutes
|
254
|
+
claude-3-opus-20240229:
|
255
|
+
flags: ["--dangerously-skip-permissions"]
|
256
|
+
max_tokens: 200000
|
257
|
+
timeout: 600 # 10 minutes
|
258
|
+
|
259
|
+
# Authentication configuration
|
260
|
+
auth:
|
261
|
+
api_key_env: "ANTHROPIC_API_KEY" # Environment variable for API key
|
262
|
+
|
263
|
+
# Endpoint configuration
|
264
|
+
endpoints:
|
265
|
+
default: "https://api.anthropic.com/v1/messages"
|
266
|
+
|
267
|
+
# Provider features
|
268
|
+
features:
|
269
|
+
file_upload: true
|
270
|
+
code_generation: true
|
271
|
+
analysis: true
|
272
|
+
vision: true
|
273
|
+
|
274
|
+
# Monitoring configuration
|
275
|
+
monitoring:
|
276
|
+
enabled: true
|
277
|
+
metrics_interval: 60
|
278
|
+
|
279
|
+
# Gemini provider (API-based)
|
280
|
+
gemini:
|
281
|
+
type: "api"
|
282
|
+
priority: 3
|
283
|
+
max_tokens: 50000
|
284
|
+
default_flags: []
|
285
|
+
|
286
|
+
# Available models for this provider
|
287
|
+
models: ["gemini-1.5-pro", "gemini-1.5-flash", "gemini-1.0-pro"]
|
288
|
+
|
289
|
+
# Model weights for load balancing
|
290
|
+
model_weights:
|
291
|
+
gemini-1.5-pro: 3
|
292
|
+
gemini-1.5-flash: 2
|
293
|
+
gemini-1.0-pro: 1
|
294
|
+
|
295
|
+
# Model-specific configurations
|
296
|
+
models_config:
|
297
|
+
gemini-1.5-pro:
|
298
|
+
flags: []
|
299
|
+
max_tokens: 100000
|
300
|
+
timeout: 300 # 5 minutes
|
301
|
+
gemini-1.5-flash:
|
302
|
+
flags: []
|
303
|
+
max_tokens: 100000
|
304
|
+
timeout: 180 # 3 minutes
|
305
|
+
gemini-1.0-pro:
|
306
|
+
flags: []
|
307
|
+
max_tokens: 30000
|
308
|
+
timeout: 300 # 5 minutes
|
309
|
+
|
310
|
+
# Authentication configuration
|
311
|
+
auth:
|
312
|
+
api_key_env: "GEMINI_API_KEY" # Environment variable for API key
|
313
|
+
|
314
|
+
# Endpoint configuration
|
315
|
+
endpoints:
|
316
|
+
default: "https://generativelanguage.googleapis.com/v1beta/models"
|
317
|
+
|
318
|
+
# Provider features
|
319
|
+
features:
|
320
|
+
file_upload: true
|
321
|
+
code_generation: true
|
322
|
+
analysis: true
|
323
|
+
vision: true
|
324
|
+
|
325
|
+
# Monitoring configuration
|
326
|
+
monitoring:
|
327
|
+
enabled: true
|
328
|
+
metrics_interval: 60
|
329
|
+
|
330
|
+
# Rate limiting configuration
|
331
|
+
rate_limit:
|
332
|
+
enabled: true
|
333
|
+
requests_per_minute: 60
|
334
|
+
requests_per_hour: 1500
|
335
|
+
tokens_per_minute: 32000
|
336
|
+
tokens_per_hour: 1000000
|
337
|
+
burst_limit: 10
|
338
|
+
|
339
|
+
# Retry configuration
|
340
|
+
retry:
|
341
|
+
enabled: true
|
342
|
+
max_attempts: 3
|
343
|
+
base_delay: 1.0
|
344
|
+
max_delay: 60.0
|
345
|
+
exponential_base: 2.0
|
346
|
+
jitter: true
|
347
|
+
retry_on_rate_limit: true
|
348
|
+
|
349
|
+
# Circuit breaker configuration
|
350
|
+
circuit_breaker:
|
351
|
+
enabled: true
|
352
|
+
failure_threshold: 5
|
353
|
+
timeout: 300
|
354
|
+
half_open_max_calls: 3
|
355
|
+
|
356
|
+
# Cost tracking
|
357
|
+
cost:
|
358
|
+
input_cost_per_token: 0.00000125 # $1.25 per 1M input tokens
|
359
|
+
output_cost_per_token: 0.000005 # $5 per 1M output tokens
|
360
|
+
fixed_cost_per_request: 0.0
|
361
|
+
currency: "USD"
|
362
|
+
|
363
|
+
# Health check configuration
|
364
|
+
health_check:
|
365
|
+
enabled: true
|
366
|
+
interval: 60
|
367
|
+
timeout: 10
|
368
|
+
failure_threshold: 3
|
369
|
+
success_threshold: 2
|
370
|
+
check_url: "https://generativelanguage.googleapis.com/v1beta/models"
|
371
|
+
|
372
|
+
# Logging configuration
|
373
|
+
log:
|
374
|
+
enabled: true
|
375
|
+
level: "info"
|
376
|
+
file: "logs/gemini.log"
|
377
|
+
max_size: 10485760 # 10MB
|
378
|
+
max_files: 5
|
379
|
+
format: "json"
|
380
|
+
log_requests: true
|
381
|
+
log_responses: false
|
382
|
+
|
383
|
+
# Cache configuration
|
384
|
+
cache:
|
385
|
+
enabled: true
|
386
|
+
ttl: 1800 # 30 minutes
|
387
|
+
max_size: 200
|
388
|
+
strategy: "lru"
|
389
|
+
|
390
|
+
# Security configuration
|
391
|
+
security:
|
392
|
+
ssl_verify: true
|
393
|
+
allowed_hosts: ["generativelanguage.googleapis.com"]
|
394
|
+
blocked_hosts: []
|
395
|
+
timeout: 30
|
396
|
+
max_redirects: 5
|
397
|
+
|
398
|
+
# Example BYOK provider
|
399
|
+
# openai:
|
400
|
+
# type: "byok"
|
401
|
+
# priority: 4
|
402
|
+
# default_flags: ["--model", "gpt-4"]
|
403
|
+
# models: ["gpt-4", "gpt-3.5-turbo"]
|
404
|
+
# model_weights:
|
405
|
+
# gpt-4: 3
|
406
|
+
# gpt-3.5-turbo: 2
|
407
|
+
# models_config:
|
408
|
+
# gpt-4:
|
409
|
+
# flags: ["--model", "gpt-4"]
|
410
|
+
# max_tokens: 128000
|
411
|
+
# timeout: 300
|
412
|
+
# gpt-3.5-turbo:
|
413
|
+
# flags: ["--model", "gpt-3.5-turbo"]
|
414
|
+
# max_tokens: 16000
|
415
|
+
# timeout: 180
|
416
|
+
# auth:
|
417
|
+
# api_key_env: "OPENAI_API_KEY"
|
418
|
+
# endpoints:
|
419
|
+
# default: "https://api.openai.com/v1/chat/completions"
|
420
|
+
# features:
|
421
|
+
# file_upload: true
|
422
|
+
# code_generation: true
|
423
|
+
# analysis: true
|
424
|
+
# monitoring:
|
425
|
+
# enabled: true
|
426
|
+
# metrics_interval: 60
|
427
|
+
|
428
|
+
# Provider types explained:
|
429
|
+
# - "package": Uses package-based pricing (e.g., Cursor Pro)
|
430
|
+
# - "api": Uses API-based pricing with token limits
|
431
|
+
# - "byok": Bring Your Own Key (user provides API key)
|
432
|
+
|
433
|
+
# Environment-specific configurations
|
434
|
+
environments:
|
435
|
+
development:
|
436
|
+
harness:
|
437
|
+
max_retries: 1
|
438
|
+
request_timeout: 60
|
439
|
+
providers:
|
440
|
+
cursor:
|
441
|
+
monitoring:
|
442
|
+
enabled: false
|
443
|
+
log:
|
444
|
+
level: "debug"
|
445
|
+
claude:
|
446
|
+
rate_limit:
|
447
|
+
requests_per_minute: 10
|
448
|
+
log:
|
449
|
+
level: "debug"
|
450
|
+
|
451
|
+
production:
|
452
|
+
harness:
|
453
|
+
max_retries: 3
|
454
|
+
request_timeout: 300
|
455
|
+
providers:
|
456
|
+
cursor:
|
457
|
+
monitoring:
|
458
|
+
enabled: true
|
459
|
+
log:
|
460
|
+
level: "warn"
|
461
|
+
claude:
|
462
|
+
rate_limit:
|
463
|
+
requests_per_minute: 50
|
464
|
+
log:
|
465
|
+
level: "info"
|
466
|
+
|
467
|
+
# Mode-specific configurations
|
468
|
+
analyze_mode:
|
469
|
+
harness:
|
470
|
+
max_retries: 2
|
471
|
+
request_timeout: 600
|
472
|
+
providers:
|
473
|
+
cursor:
|
474
|
+
models: ["cursor-default", "cursor-precise"]
|
475
|
+
claude:
|
476
|
+
models: ["claude-3-5-sonnet-20241022"]
|
477
|
+
|
478
|
+
execute_mode:
|
479
|
+
harness:
|
480
|
+
max_retries: 3
|
481
|
+
request_timeout: 300
|
482
|
+
providers:
|
483
|
+
cursor:
|
484
|
+
models: ["cursor-default", "cursor-fast"]
|
485
|
+
claude:
|
486
|
+
models: ["claude-3-5-sonnet-20241022", "claude-3-5-haiku-20241022"]
|
487
|
+
|
488
|
+
# Feature flags
|
489
|
+
features:
|
490
|
+
high_performance:
|
491
|
+
harness:
|
492
|
+
parallel_processing: true
|
493
|
+
batch_requests: true
|
494
|
+
providers:
|
495
|
+
cursor:
|
496
|
+
cache:
|
497
|
+
ttl: 7200 # 2 hours
|
498
|
+
claude:
|
499
|
+
cache:
|
500
|
+
ttl: 3600 # 1 hour
|
501
|
+
|
502
|
+
debugging:
|
503
|
+
harness:
|
504
|
+
log_errors: true
|
505
|
+
error_notification: true
|
506
|
+
providers:
|
507
|
+
cursor:
|
508
|
+
log:
|
509
|
+
level: "debug"
|
510
|
+
log_requests: true
|
511
|
+
log_responses: true
|
512
|
+
claude:
|
513
|
+
log:
|
514
|
+
level: "debug"
|
515
|
+
log_requests: true
|
516
|
+
log_responses: true
|
517
|
+
|
518
|
+
# Time-based configurations
|
519
|
+
time_based:
|
520
|
+
hours:
|
521
|
+
9..17: # Business hours
|
522
|
+
harness:
|
523
|
+
max_retries: 2
|
524
|
+
request_timeout: 180
|
525
|
+
providers:
|
526
|
+
claude:
|
527
|
+
rate_limit:
|
528
|
+
requests_per_minute: 60
|
529
|
+
18..8: # Off hours
|
530
|
+
harness:
|
531
|
+
max_retries: 1
|
532
|
+
request_timeout: 300
|
533
|
+
providers:
|
534
|
+
claude:
|
535
|
+
rate_limit:
|
536
|
+
requests_per_minute: 30
|
537
|
+
days:
|
538
|
+
monday:
|
539
|
+
harness:
|
540
|
+
max_retries: 3
|
541
|
+
friday:
|
542
|
+
harness:
|
543
|
+
max_retries: 1
|
544
|
+
|
545
|
+
# Step-specific configurations
|
546
|
+
steps:
|
547
|
+
analysis:
|
548
|
+
harness:
|
549
|
+
request_timeout: 600
|
550
|
+
providers:
|
551
|
+
cursor:
|
552
|
+
models: ["cursor-precise"]
|
553
|
+
claude:
|
554
|
+
models: ["claude-3-5-sonnet-20241022"]
|
555
|
+
implementation:
|
556
|
+
harness:
|
557
|
+
request_timeout: 300
|
558
|
+
providers:
|
559
|
+
cursor:
|
560
|
+
models: ["cursor-default", "cursor-fast"]
|
561
|
+
claude:
|
562
|
+
models: ["claude-3-5-haiku-20241022"]
|
563
|
+
|
564
|
+
# User-specific configurations
|
565
|
+
users:
|
566
|
+
developer1:
|
567
|
+
harness:
|
568
|
+
max_retries: 2
|
569
|
+
providers:
|
570
|
+
cursor:
|
571
|
+
priority: 1
|
572
|
+
claude:
|
573
|
+
priority: 2
|
574
|
+
developer2:
|
575
|
+
harness:
|
576
|
+
max_retries: 3
|
577
|
+
providers:
|
578
|
+
claude:
|
579
|
+
priority: 1
|
580
|
+
cursor:
|
581
|
+
priority: 2
|
582
|
+
|
583
|
+
# Configuration tips:
|
584
|
+
# - Set max_tokens based on your API plan limits
|
585
|
+
# - Use default_flags to customize provider behavior
|
586
|
+
# - Configure fallback_providers for automatic failover
|
587
|
+
# - Set restrict_to_non_byok: true to avoid BYOK providers
|
588
|
+
# - Adjust provider_weights to control load balancing
|
589
|
+
# - Configure model_weights for model selection within providers
|
590
|
+
# - Set appropriate timeouts for different models
|
591
|
+
# - Enable monitoring for production environments
|
592
|
+
# - Use session_affinity for consistent user experience
|
593
|
+
# - Use environment-specific configs for different deployment stages
|
594
|
+
# - Use mode-specific configs for different execution modes
|
595
|
+
# - Use feature flags to enable/disable functionality
|
596
|
+
# - Use time-based configs for different usage patterns
|
597
|
+
# - Use step-specific configs for different workflow steps
|
598
|
+
# - Use user-specific configs for personalized experiences
|