aidp 0.7.0 → 0.8.0

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.
Files changed (119) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +60 -214
  3. data/bin/aidp +1 -1
  4. data/lib/aidp/analysis/kb_inspector.rb +38 -23
  5. data/lib/aidp/analysis/seams.rb +2 -31
  6. data/lib/aidp/analysis/tree_sitter_grammar_loader.rb +0 -13
  7. data/lib/aidp/analysis/tree_sitter_scan.rb +3 -20
  8. data/lib/aidp/analyze/error_handler.rb +2 -75
  9. data/lib/aidp/analyze/json_file_storage.rb +292 -0
  10. data/lib/aidp/analyze/progress.rb +12 -0
  11. data/lib/aidp/analyze/progress_visualizer.rb +12 -17
  12. data/lib/aidp/analyze/ruby_maat_integration.rb +13 -31
  13. data/lib/aidp/analyze/runner.rb +256 -87
  14. data/lib/aidp/cli/jobs_command.rb +100 -432
  15. data/lib/aidp/cli.rb +309 -239
  16. data/lib/aidp/config.rb +298 -10
  17. data/lib/aidp/debug_logger.rb +195 -0
  18. data/lib/aidp/debug_mixin.rb +187 -0
  19. data/lib/aidp/execute/progress.rb +9 -0
  20. data/lib/aidp/execute/runner.rb +221 -40
  21. data/lib/aidp/execute/steps.rb +17 -7
  22. data/lib/aidp/execute/workflow_selector.rb +211 -0
  23. data/lib/aidp/harness/completion_checker.rb +268 -0
  24. data/lib/aidp/harness/condition_detector.rb +1526 -0
  25. data/lib/aidp/harness/config_loader.rb +373 -0
  26. data/lib/aidp/harness/config_manager.rb +382 -0
  27. data/lib/aidp/harness/config_schema.rb +1006 -0
  28. data/lib/aidp/harness/config_validator.rb +355 -0
  29. data/lib/aidp/harness/configuration.rb +477 -0
  30. data/lib/aidp/harness/enhanced_runner.rb +494 -0
  31. data/lib/aidp/harness/error_handler.rb +616 -0
  32. data/lib/aidp/harness/provider_config.rb +423 -0
  33. data/lib/aidp/harness/provider_factory.rb +306 -0
  34. data/lib/aidp/harness/provider_manager.rb +1269 -0
  35. data/lib/aidp/harness/provider_type_checker.rb +88 -0
  36. data/lib/aidp/harness/runner.rb +411 -0
  37. data/lib/aidp/harness/state/errors.rb +28 -0
  38. data/lib/aidp/harness/state/metrics.rb +219 -0
  39. data/lib/aidp/harness/state/persistence.rb +128 -0
  40. data/lib/aidp/harness/state/provider_state.rb +132 -0
  41. data/lib/aidp/harness/state/ui_state.rb +68 -0
  42. data/lib/aidp/harness/state/workflow_state.rb +123 -0
  43. data/lib/aidp/harness/state_manager.rb +586 -0
  44. data/lib/aidp/harness/status_display.rb +888 -0
  45. data/lib/aidp/harness/ui/base.rb +16 -0
  46. data/lib/aidp/harness/ui/enhanced_tui.rb +545 -0
  47. data/lib/aidp/harness/ui/enhanced_workflow_selector.rb +252 -0
  48. data/lib/aidp/harness/ui/error_handler.rb +132 -0
  49. data/lib/aidp/harness/ui/frame_manager.rb +361 -0
  50. data/lib/aidp/harness/ui/job_monitor.rb +500 -0
  51. data/lib/aidp/harness/ui/navigation/main_menu.rb +311 -0
  52. data/lib/aidp/harness/ui/navigation/menu_formatter.rb +120 -0
  53. data/lib/aidp/harness/ui/navigation/menu_item.rb +142 -0
  54. data/lib/aidp/harness/ui/navigation/menu_state.rb +139 -0
  55. data/lib/aidp/harness/ui/navigation/submenu.rb +202 -0
  56. data/lib/aidp/harness/ui/navigation/workflow_selector.rb +176 -0
  57. data/lib/aidp/harness/ui/progress_display.rb +280 -0
  58. data/lib/aidp/harness/ui/question_collector.rb +141 -0
  59. data/lib/aidp/harness/ui/spinner_group.rb +184 -0
  60. data/lib/aidp/harness/ui/spinner_helper.rb +152 -0
  61. data/lib/aidp/harness/ui/status_manager.rb +312 -0
  62. data/lib/aidp/harness/ui/status_widget.rb +280 -0
  63. data/lib/aidp/harness/ui/workflow_controller.rb +312 -0
  64. data/lib/aidp/harness/user_interface.rb +2381 -0
  65. data/lib/aidp/provider_manager.rb +131 -7
  66. data/lib/aidp/providers/anthropic.rb +28 -103
  67. data/lib/aidp/providers/base.rb +170 -0
  68. data/lib/aidp/providers/cursor.rb +52 -181
  69. data/lib/aidp/providers/gemini.rb +24 -107
  70. data/lib/aidp/providers/macos_ui.rb +99 -5
  71. data/lib/aidp/providers/opencode.rb +194 -0
  72. data/lib/aidp/storage/csv_storage.rb +172 -0
  73. data/lib/aidp/storage/file_manager.rb +214 -0
  74. data/lib/aidp/storage/json_storage.rb +140 -0
  75. data/lib/aidp/version.rb +1 -1
  76. data/lib/aidp.rb +54 -39
  77. data/templates/COMMON/AGENT_BASE.md +11 -0
  78. data/templates/EXECUTE/00_PRD.md +4 -4
  79. data/templates/EXECUTE/02_ARCHITECTURE.md +5 -4
  80. data/templates/EXECUTE/07_TEST_PLAN.md +4 -1
  81. data/templates/EXECUTE/08_TASKS.md +4 -4
  82. data/templates/EXECUTE/10_IMPLEMENTATION_AGENT.md +4 -4
  83. data/templates/README.md +279 -0
  84. data/templates/aidp-development.yml.example +373 -0
  85. data/templates/aidp-minimal.yml.example +48 -0
  86. data/templates/aidp-production.yml.example +475 -0
  87. data/templates/aidp.yml.example +598 -0
  88. metadata +93 -69
  89. data/lib/aidp/analyze/agent_personas.rb +0 -71
  90. data/lib/aidp/analyze/agent_tool_executor.rb +0 -439
  91. data/lib/aidp/analyze/data_retention_manager.rb +0 -421
  92. data/lib/aidp/analyze/database.rb +0 -260
  93. data/lib/aidp/analyze/dependencies.rb +0 -335
  94. data/lib/aidp/analyze/export_manager.rb +0 -418
  95. data/lib/aidp/analyze/focus_guidance.rb +0 -517
  96. data/lib/aidp/analyze/incremental_analyzer.rb +0 -533
  97. data/lib/aidp/analyze/language_analysis_strategies.rb +0 -897
  98. data/lib/aidp/analyze/large_analysis_progress.rb +0 -499
  99. data/lib/aidp/analyze/memory_manager.rb +0 -339
  100. data/lib/aidp/analyze/metrics_storage.rb +0 -336
  101. data/lib/aidp/analyze/parallel_processor.rb +0 -454
  102. data/lib/aidp/analyze/performance_optimizer.rb +0 -691
  103. data/lib/aidp/analyze/repository_chunker.rb +0 -697
  104. data/lib/aidp/analyze/static_analysis_detector.rb +0 -577
  105. data/lib/aidp/analyze/storage.rb +0 -655
  106. data/lib/aidp/analyze/tool_configuration.rb +0 -441
  107. data/lib/aidp/analyze/tool_modernization.rb +0 -750
  108. data/lib/aidp/database/pg_adapter.rb +0 -148
  109. data/lib/aidp/database_config.rb +0 -69
  110. data/lib/aidp/database_connection.rb +0 -72
  111. data/lib/aidp/job_manager.rb +0 -41
  112. data/lib/aidp/jobs/base_job.rb +0 -45
  113. data/lib/aidp/jobs/provider_execution_job.rb +0 -83
  114. data/lib/aidp/project_detector.rb +0 -117
  115. data/lib/aidp/providers/agent_supervisor.rb +0 -348
  116. data/lib/aidp/providers/supervised_base.rb +0 -317
  117. data/lib/aidp/providers/supervised_cursor.rb +0 -22
  118. data/lib/aidp/sync.rb +0 -13
  119. 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