aidp 0.32.0 → 0.34.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 (112) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +35 -0
  3. data/lib/aidp/analyze/feature_analyzer.rb +322 -320
  4. data/lib/aidp/analyze/tree_sitter_scan.rb +3 -0
  5. data/lib/aidp/auto_update/coordinator.rb +97 -7
  6. data/lib/aidp/auto_update.rb +0 -12
  7. data/lib/aidp/cli/devcontainer_commands.rb +0 -5
  8. data/lib/aidp/cli/eval_command.rb +399 -0
  9. data/lib/aidp/cli/harness_command.rb +1 -1
  10. data/lib/aidp/cli/security_command.rb +416 -0
  11. data/lib/aidp/cli/tools_command.rb +6 -4
  12. data/lib/aidp/cli.rb +172 -4
  13. data/lib/aidp/comment_consolidator.rb +78 -0
  14. data/lib/aidp/concurrency/exec.rb +3 -0
  15. data/lib/aidp/concurrency.rb +0 -3
  16. data/lib/aidp/config.rb +113 -1
  17. data/lib/aidp/config_paths.rb +91 -0
  18. data/lib/aidp/daemon/runner.rb +8 -4
  19. data/lib/aidp/errors.rb +134 -0
  20. data/lib/aidp/evaluations/context_capture.rb +205 -0
  21. data/lib/aidp/evaluations/evaluation_record.rb +114 -0
  22. data/lib/aidp/evaluations/evaluation_storage.rb +250 -0
  23. data/lib/aidp/evaluations.rb +23 -0
  24. data/lib/aidp/execute/async_work_loop_runner.rb +4 -1
  25. data/lib/aidp/execute/interactive_repl.rb +6 -2
  26. data/lib/aidp/execute/prompt_evaluator.rb +359 -0
  27. data/lib/aidp/execute/repl_macros.rb +100 -1
  28. data/lib/aidp/execute/work_loop_runner.rb +719 -58
  29. data/lib/aidp/execute/work_loop_state.rb +4 -1
  30. data/lib/aidp/execute/workflow_selector.rb +3 -0
  31. data/lib/aidp/harness/ai_decision_engine.rb +79 -0
  32. data/lib/aidp/harness/ai_filter_factory.rb +285 -0
  33. data/lib/aidp/harness/capability_registry.rb +2 -0
  34. data/lib/aidp/harness/condition_detector.rb +3 -0
  35. data/lib/aidp/harness/config_loader.rb +3 -0
  36. data/lib/aidp/harness/config_schema.rb +97 -1
  37. data/lib/aidp/harness/config_validator.rb +1 -1
  38. data/lib/aidp/harness/configuration.rb +61 -5
  39. data/lib/aidp/harness/enhanced_runner.rb +14 -11
  40. data/lib/aidp/harness/error_handler.rb +3 -0
  41. data/lib/aidp/harness/filter_definition.rb +212 -0
  42. data/lib/aidp/harness/generated_filter_strategy.rb +197 -0
  43. data/lib/aidp/harness/output_filter.rb +50 -25
  44. data/lib/aidp/harness/output_filter_config.rb +129 -0
  45. data/lib/aidp/harness/provider_factory.rb +3 -0
  46. data/lib/aidp/harness/provider_manager.rb +96 -2
  47. data/lib/aidp/harness/runner.rb +5 -12
  48. data/lib/aidp/harness/state/persistence.rb +3 -0
  49. data/lib/aidp/harness/state_manager.rb +3 -0
  50. data/lib/aidp/harness/status_display.rb +28 -20
  51. data/lib/aidp/harness/test_runner.rb +179 -41
  52. data/lib/aidp/harness/thinking_depth_manager.rb +44 -28
  53. data/lib/aidp/harness/ui/enhanced_tui.rb +4 -0
  54. data/lib/aidp/harness/ui/enhanced_workflow_selector.rb +4 -0
  55. data/lib/aidp/harness/ui/error_handler.rb +3 -0
  56. data/lib/aidp/harness/ui/job_monitor.rb +4 -0
  57. data/lib/aidp/harness/ui/navigation/submenu.rb +2 -2
  58. data/lib/aidp/harness/ui/navigation/workflow_selector.rb +6 -0
  59. data/lib/aidp/harness/ui/spinner_helper.rb +3 -0
  60. data/lib/aidp/harness/ui/workflow_controller.rb +3 -0
  61. data/lib/aidp/harness/user_interface.rb +3 -0
  62. data/lib/aidp/loader.rb +195 -0
  63. data/lib/aidp/logger.rb +3 -0
  64. data/lib/aidp/message_display.rb +31 -0
  65. data/lib/aidp/metadata/compiler.rb +29 -17
  66. data/lib/aidp/metadata/query.rb +1 -1
  67. data/lib/aidp/metadata/scanner.rb +8 -1
  68. data/lib/aidp/metadata/tool_metadata.rb +13 -13
  69. data/lib/aidp/metadata/validator.rb +10 -0
  70. data/lib/aidp/metadata.rb +16 -0
  71. data/lib/aidp/pr_worktree_manager.rb +20 -8
  72. data/lib/aidp/provider_manager.rb +4 -7
  73. data/lib/aidp/providers/base.rb +2 -0
  74. data/lib/aidp/security/rule_of_two_enforcer.rb +210 -0
  75. data/lib/aidp/security/secrets_proxy.rb +328 -0
  76. data/lib/aidp/security/secrets_registry.rb +227 -0
  77. data/lib/aidp/security/trifecta_state.rb +220 -0
  78. data/lib/aidp/security/watch_mode_handler.rb +306 -0
  79. data/lib/aidp/security/work_loop_adapter.rb +277 -0
  80. data/lib/aidp/security.rb +56 -0
  81. data/lib/aidp/setup/wizard.rb +283 -11
  82. data/lib/aidp/skills.rb +0 -5
  83. data/lib/aidp/storage/csv_storage.rb +3 -0
  84. data/lib/aidp/style_guide/selector.rb +360 -0
  85. data/lib/aidp/tooling_detector.rb +283 -16
  86. data/lib/aidp/version.rb +1 -1
  87. data/lib/aidp/watch/auto_merger.rb +274 -0
  88. data/lib/aidp/watch/auto_pr_processor.rb +125 -7
  89. data/lib/aidp/watch/build_processor.rb +16 -1
  90. data/lib/aidp/watch/change_request_processor.rb +682 -150
  91. data/lib/aidp/watch/ci_fix_processor.rb +262 -4
  92. data/lib/aidp/watch/feedback_collector.rb +191 -0
  93. data/lib/aidp/watch/hierarchical_pr_strategy.rb +256 -0
  94. data/lib/aidp/watch/implementation_verifier.rb +142 -1
  95. data/lib/aidp/watch/plan_generator.rb +70 -13
  96. data/lib/aidp/watch/plan_processor.rb +12 -5
  97. data/lib/aidp/watch/projects_processor.rb +286 -0
  98. data/lib/aidp/watch/repository_client.rb +871 -22
  99. data/lib/aidp/watch/review_processor.rb +33 -6
  100. data/lib/aidp/watch/runner.rb +80 -29
  101. data/lib/aidp/watch/state_store.rb +233 -0
  102. data/lib/aidp/watch/sub_issue_creator.rb +221 -0
  103. data/lib/aidp/watch.rb +5 -7
  104. data/lib/aidp/workflows/guided_agent.rb +4 -0
  105. data/lib/aidp/workstream_cleanup.rb +0 -2
  106. data/lib/aidp/workstream_executor.rb +3 -4
  107. data/lib/aidp/worktree.rb +61 -12
  108. data/lib/aidp/worktree_branch_manager.rb +347 -101
  109. data/lib/aidp.rb +21 -106
  110. data/templates/implementation/iterative_implementation.md +46 -3
  111. metadata +91 -36
  112. data/lib/aidp/config/paths.rb +0 -131
@@ -6,11 +6,54 @@ You are implementing a feature or fix within the AIDP work loop using an iterati
6
6
 
7
7
  {{task_description}}
8
8
 
9
- ## Important Instructions
9
+ ## ⚠️ CRITICAL: Task Filing Required
10
10
 
11
- ### 1. Break Down the Work
11
+ **You MUST file tasks BEFORE beginning implementation.** The work loop requires at least one task to be created and completed for the work to be considered done.
12
12
 
13
- If this is a multi-step feature, **break it into concrete subtasks** using the persistent tasklist:
13
+ ### Why Tasks Are Required
14
+
15
+ 1. **Prevents premature completion** - Tasks ensure all requirements are tracked
16
+ 2. **Enables progress tracking** - Each task represents verifiable progress
17
+ 3. **Supports iteration** - If tests fail, tasks show what remains
18
+ 4. **Audit trail** - Tasks document what was actually implemented
19
+
20
+ ### First Action: File Your Tasks
21
+
22
+ **IMMEDIATELY** in your first iteration, file tasks for this work:
23
+
24
+ ```text
25
+ File task: "description" priority: high|medium|low tags: tag1,tag2
26
+ ```
27
+
28
+ **Example - If implementing a feature:**
29
+
30
+ ```text
31
+ File task: "Create core implementation for [feature name]" priority: high tags: implementation
32
+ File task: "Add unit tests for [feature name]" priority: high tags: testing
33
+ File task: "Add integration tests if needed" priority: medium tags: testing
34
+ File task: "Update documentation" priority: low tags: docs
35
+ ```
36
+
37
+ **Example - If fixing a bug:**
38
+
39
+ ```text
40
+ File task: "Identify root cause of [bug description]" priority: high tags: investigation
41
+ File task: "Implement fix for [bug description]" priority: high tags: bugfix
42
+ File task: "Add regression test" priority: high tags: testing
43
+ ```
44
+
45
+ ### Task Filing Guidelines
46
+
47
+ - **At least one task is required** - You cannot complete without tasks
48
+ - **Tasks should be specific** - "Implement user auth" not "Do the work"
49
+ - **Include testing tasks** - Every implementation needs tests
50
+ - **Cover the full scope** - Review the requirements and ensure all are covered by tasks
51
+
52
+ ## Implementation Process
53
+
54
+ ### 1. File Tasks First (REQUIRED)
55
+
56
+ Break down the work into concrete subtasks using the persistent tasklist:
14
57
 
15
58
  ```text
16
59
  File task: "Subtask description here" priority: high|medium|low tags: tag1,tag2
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aidp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.32.0
4
+ version: 0.34.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bart Agapinan
@@ -52,61 +52,89 @@ dependencies:
52
52
  - !ruby/object:Gem::Version
53
53
  version: '1.5'
54
54
  - !ruby/object:Gem::Dependency
55
- name: thor
55
+ name: ostruct
56
56
  requirement: !ruby/object:Gem::Requirement
57
57
  requirements:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
- version: '1.3'
60
+ version: '0.6'
61
61
  type: :runtime
62
62
  prerelease: false
63
63
  version_requirements: !ruby/object:Gem::Requirement
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: '1.3'
67
+ version: '0.6'
68
68
  - !ruby/object:Gem::Dependency
69
- name: tty-cursor
69
+ name: pastel
70
70
  requirement: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: '0.7'
74
+ version: '0.8'
75
75
  type: :runtime
76
76
  prerelease: false
77
77
  version_requirements: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
- version: '0.7'
81
+ version: '0.8'
82
82
  - !ruby/object:Gem::Dependency
83
- name: tty-screen
83
+ name: ruby_llm
84
84
  requirement: !ruby/object:Gem::Requirement
85
85
  requirements:
86
86
  - - "~>"
87
87
  - !ruby/object:Gem::Version
88
- version: '0.8'
88
+ version: '1.9'
89
89
  type: :runtime
90
90
  prerelease: false
91
91
  version_requirements: !ruby/object:Gem::Requirement
92
92
  requirements:
93
93
  - - "~>"
94
94
  - !ruby/object:Gem::Version
95
- version: '0.8'
95
+ version: '1.9'
96
96
  - !ruby/object:Gem::Dependency
97
- name: tty-reader
97
+ name: ruby_tree_sitter
98
98
  requirement: !ruby/object:Gem::Requirement
99
99
  requirements:
100
100
  - - "~>"
101
101
  - !ruby/object:Gem::Version
102
- version: '0.9'
102
+ version: '2.0'
103
103
  type: :runtime
104
104
  prerelease: false
105
105
  version_requirements: !ruby/object:Gem::Requirement
106
106
  requirements:
107
107
  - - "~>"
108
108
  - !ruby/object:Gem::Version
109
- version: '0.9'
109
+ version: '2.0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: thor
112
+ requirement: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: '1.3'
117
+ type: :runtime
118
+ prerelease: false
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '1.3'
124
+ - !ruby/object:Gem::Dependency
125
+ name: zeitwerk
126
+ requirement: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - "~>"
129
+ - !ruby/object:Gem::Version
130
+ version: '2.7'
131
+ type: :runtime
132
+ prerelease: false
133
+ version_requirements: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - "~>"
136
+ - !ruby/object:Gem::Version
137
+ version: '2.7'
110
138
  - !ruby/object:Gem::Dependency
111
139
  name: tty-box
112
140
  requirement: !ruby/object:Gem::Requirement
@@ -122,47 +150,47 @@ dependencies:
122
150
  - !ruby/object:Gem::Version
123
151
  version: '0.7'
124
152
  - !ruby/object:Gem::Dependency
125
- name: tty-table
153
+ name: tty-command
126
154
  requirement: !ruby/object:Gem::Requirement
127
155
  requirements:
128
156
  - - "~>"
129
157
  - !ruby/object:Gem::Version
130
- version: '0.12'
158
+ version: '0.10'
131
159
  type: :runtime
132
160
  prerelease: false
133
161
  version_requirements: !ruby/object:Gem::Requirement
134
162
  requirements:
135
163
  - - "~>"
136
164
  - !ruby/object:Gem::Version
137
- version: '0.12'
165
+ version: '0.10'
138
166
  - !ruby/object:Gem::Dependency
139
- name: tty-progressbar
167
+ name: tty-cursor
140
168
  requirement: !ruby/object:Gem::Requirement
141
169
  requirements:
142
170
  - - "~>"
143
171
  - !ruby/object:Gem::Version
144
- version: '0.18'
172
+ version: '0.7'
145
173
  type: :runtime
146
174
  prerelease: false
147
175
  version_requirements: !ruby/object:Gem::Requirement
148
176
  requirements:
149
177
  - - "~>"
150
178
  - !ruby/object:Gem::Version
151
- version: '0.18'
179
+ version: '0.7'
152
180
  - !ruby/object:Gem::Dependency
153
- name: tty-spinner
181
+ name: tty-progressbar
154
182
  requirement: !ruby/object:Gem::Requirement
155
183
  requirements:
156
184
  - - "~>"
157
185
  - !ruby/object:Gem::Version
158
- version: '0.9'
186
+ version: '0.18'
159
187
  type: :runtime
160
188
  prerelease: false
161
189
  version_requirements: !ruby/object:Gem::Requirement
162
190
  requirements:
163
191
  - - "~>"
164
192
  - !ruby/object:Gem::Version
165
- version: '0.9'
193
+ version: '0.18'
166
194
  - !ruby/object:Gem::Dependency
167
195
  name: tty-prompt
168
196
  requirement: !ruby/object:Gem::Requirement
@@ -178,66 +206,66 @@ dependencies:
178
206
  - !ruby/object:Gem::Version
179
207
  version: '0.23'
180
208
  - !ruby/object:Gem::Dependency
181
- name: pastel
209
+ name: tty-reader
182
210
  requirement: !ruby/object:Gem::Requirement
183
211
  requirements:
184
212
  - - "~>"
185
213
  - !ruby/object:Gem::Version
186
- version: '0.8'
214
+ version: '0.9'
187
215
  type: :runtime
188
216
  prerelease: false
189
217
  version_requirements: !ruby/object:Gem::Requirement
190
218
  requirements:
191
219
  - - "~>"
192
220
  - !ruby/object:Gem::Version
193
- version: '0.8'
221
+ version: '0.9'
194
222
  - !ruby/object:Gem::Dependency
195
- name: ruby_tree_sitter
223
+ name: tty-screen
196
224
  requirement: !ruby/object:Gem::Requirement
197
225
  requirements:
198
226
  - - "~>"
199
227
  - !ruby/object:Gem::Version
200
- version: '2.0'
228
+ version: '0.8'
201
229
  type: :runtime
202
230
  prerelease: false
203
231
  version_requirements: !ruby/object:Gem::Requirement
204
232
  requirements:
205
233
  - - "~>"
206
234
  - !ruby/object:Gem::Version
207
- version: '2.0'
235
+ version: '0.8'
208
236
  - !ruby/object:Gem::Dependency
209
- name: tty-command
237
+ name: tty-spinner
210
238
  requirement: !ruby/object:Gem::Requirement
211
239
  requirements:
212
240
  - - "~>"
213
241
  - !ruby/object:Gem::Version
214
- version: '0.10'
242
+ version: '0.9'
215
243
  type: :runtime
216
244
  prerelease: false
217
245
  version_requirements: !ruby/object:Gem::Requirement
218
246
  requirements:
219
247
  - - "~>"
220
248
  - !ruby/object:Gem::Version
221
- version: '0.10'
249
+ version: '0.9'
222
250
  - !ruby/object:Gem::Dependency
223
- name: ruby_llm
251
+ name: tty-table
224
252
  requirement: !ruby/object:Gem::Requirement
225
253
  requirements:
226
254
  - - "~>"
227
255
  - !ruby/object:Gem::Version
228
- version: '1.9'
256
+ version: '0.12'
229
257
  type: :runtime
230
258
  prerelease: false
231
259
  version_requirements: !ruby/object:Gem::Requirement
232
260
  requirements:
233
261
  - - "~>"
234
262
  - !ruby/object:Gem::Version
235
- version: '1.9'
263
+ version: '0.12'
236
264
  description: The AI-Dev-Pipeline (AIDP) CLI provides a powerful, markdown-driven workflow
237
265
  for software development. It supports in-depth project analysis to understand existing
238
266
  codebases and an execution mode to systematically implement new features.
239
267
  email:
240
- - bart@sonic.next
268
+ - bart@sonic.net
241
269
  executables:
242
270
  - aidp
243
271
  extensions: []
@@ -275,6 +303,7 @@ files:
275
303
  - lib/aidp/cli/config_command.rb
276
304
  - lib/aidp/cli/devcontainer_commands.rb
277
305
  - lib/aidp/cli/enhanced_input.rb
306
+ - lib/aidp/cli/eval_command.rb
278
307
  - lib/aidp/cli/first_run_wizard.rb
279
308
  - lib/aidp/cli/harness_command.rb
280
309
  - lib/aidp/cli/issue_importer.rb
@@ -282,19 +311,25 @@ files:
282
311
  - lib/aidp/cli/mcp_dashboard.rb
283
312
  - lib/aidp/cli/models_command.rb
284
313
  - lib/aidp/cli/providers_command.rb
314
+ - lib/aidp/cli/security_command.rb
285
315
  - lib/aidp/cli/terminal_io.rb
286
316
  - lib/aidp/cli/tools_command.rb
317
+ - lib/aidp/comment_consolidator.rb
287
318
  - lib/aidp/concurrency.rb
288
319
  - lib/aidp/concurrency/backoff.rb
289
320
  - lib/aidp/concurrency/exec.rb
290
321
  - lib/aidp/concurrency/wait.rb
291
322
  - lib/aidp/config.rb
292
- - lib/aidp/config/paths.rb
323
+ - lib/aidp/config_paths.rb
293
324
  - lib/aidp/core_ext/class_attribute.rb
294
325
  - lib/aidp/daemon/process_manager.rb
295
326
  - lib/aidp/daemon/runner.rb
296
327
  - lib/aidp/debug_mixin.rb
297
328
  - lib/aidp/errors.rb
329
+ - lib/aidp/evaluations.rb
330
+ - lib/aidp/evaluations/context_capture.rb
331
+ - lib/aidp/evaluations/evaluation_record.rb
332
+ - lib/aidp/evaluations/evaluation_storage.rb
298
333
  - lib/aidp/execute/agent_signal_parser.rb
299
334
  - lib/aidp/execute/async_work_loop_runner.rb
300
335
  - lib/aidp/execute/checkpoint.rb
@@ -306,6 +341,7 @@ files:
306
341
  - lib/aidp/execute/interactive_repl.rb
307
342
  - lib/aidp/execute/persistent_tasklist.rb
308
343
  - lib/aidp/execute/progress.rb
344
+ - lib/aidp/execute/prompt_evaluator.rb
309
345
  - lib/aidp/execute/prompt_manager.rb
310
346
  - lib/aidp/execute/repl_macros.rb
311
347
  - lib/aidp/execute/runner.rb
@@ -316,6 +352,7 @@ files:
316
352
  - lib/aidp/execute/workflow_selector.rb
317
353
  - lib/aidp/firewall/provider_requirements_collector.rb
318
354
  - lib/aidp/harness/ai_decision_engine.rb
355
+ - lib/aidp/harness/ai_filter_factory.rb
319
356
  - lib/aidp/harness/capability_registry.rb
320
357
  - lib/aidp/harness/completion_checker.rb
321
358
  - lib/aidp/harness/condition_detector.rb
@@ -327,11 +364,14 @@ files:
327
364
  - lib/aidp/harness/deprecation_cache.rb
328
365
  - lib/aidp/harness/enhanced_runner.rb
329
366
  - lib/aidp/harness/error_handler.rb
367
+ - lib/aidp/harness/filter_definition.rb
330
368
  - lib/aidp/harness/filter_strategy.rb
369
+ - lib/aidp/harness/generated_filter_strategy.rb
331
370
  - lib/aidp/harness/generic_filter_strategy.rb
332
371
  - lib/aidp/harness/model_cache.rb
333
372
  - lib/aidp/harness/model_registry.rb
334
373
  - lib/aidp/harness/output_filter.rb
374
+ - lib/aidp/harness/output_filter_config.rb
335
375
  - lib/aidp/harness/provider_config.rb
336
376
  - lib/aidp/harness/provider_factory.rb
337
377
  - lib/aidp/harness/provider_info.rb
@@ -379,8 +419,10 @@ files:
379
419
  - lib/aidp/init/project_analyzer.rb
380
420
  - lib/aidp/init/runner.rb
381
421
  - lib/aidp/jobs/background_runner.rb
422
+ - lib/aidp/loader.rb
382
423
  - lib/aidp/logger.rb
383
424
  - lib/aidp/message_display.rb
425
+ - lib/aidp/metadata.rb
384
426
  - lib/aidp/metadata/cache.rb
385
427
  - lib/aidp/metadata/compiler.rb
386
428
  - lib/aidp/metadata/parser.rb
@@ -424,6 +466,13 @@ files:
424
466
  - lib/aidp/providers/opencode.rb
425
467
  - lib/aidp/rescue_logging.rb
426
468
  - lib/aidp/safe_directory.rb
469
+ - lib/aidp/security.rb
470
+ - lib/aidp/security/rule_of_two_enforcer.rb
471
+ - lib/aidp/security/secrets_proxy.rb
472
+ - lib/aidp/security/secrets_registry.rb
473
+ - lib/aidp/security/trifecta_state.rb
474
+ - lib/aidp/security/watch_mode_handler.rb
475
+ - lib/aidp/security/work_loop_adapter.rb
427
476
  - lib/aidp/setup/devcontainer/backup_manager.rb
428
477
  - lib/aidp/setup/devcontainer/generator.rb
429
478
  - lib/aidp/setup/devcontainer/parser.rb
@@ -445,21 +494,26 @@ files:
445
494
  - lib/aidp/storage/csv_storage.rb
446
495
  - lib/aidp/storage/file_manager.rb
447
496
  - lib/aidp/storage/json_storage.rb
497
+ - lib/aidp/style_guide/selector.rb
448
498
  - lib/aidp/tooling_detector.rb
449
499
  - lib/aidp/util.rb
450
500
  - lib/aidp/utils/devcontainer_detector.rb
451
501
  - lib/aidp/version.rb
452
502
  - lib/aidp/watch.rb
503
+ - lib/aidp/watch/auto_merger.rb
453
504
  - lib/aidp/watch/auto_pr_processor.rb
454
505
  - lib/aidp/watch/auto_processor.rb
455
506
  - lib/aidp/watch/build_processor.rb
456
507
  - lib/aidp/watch/change_request_processor.rb
457
508
  - lib/aidp/watch/ci_fix_processor.rb
458
509
  - lib/aidp/watch/ci_log_extractor.rb
510
+ - lib/aidp/watch/feedback_collector.rb
459
511
  - lib/aidp/watch/github_state_extractor.rb
512
+ - lib/aidp/watch/hierarchical_pr_strategy.rb
460
513
  - lib/aidp/watch/implementation_verifier.rb
461
514
  - lib/aidp/watch/plan_generator.rb
462
515
  - lib/aidp/watch/plan_processor.rb
516
+ - lib/aidp/watch/projects_processor.rb
463
517
  - lib/aidp/watch/repository_client.rb
464
518
  - lib/aidp/watch/repository_safety_checker.rb
465
519
  - lib/aidp/watch/review_processor.rb
@@ -469,6 +523,7 @@ files:
469
523
  - lib/aidp/watch/reviewers/senior_dev_reviewer.rb
470
524
  - lib/aidp/watch/runner.rb
471
525
  - lib/aidp/watch/state_store.rb
526
+ - lib/aidp/watch/sub_issue_creator.rb
472
527
  - lib/aidp/workflows/definitions.rb
473
528
  - lib/aidp/workflows/guided_agent.rb
474
529
  - lib/aidp/workflows/selector.rb
@@ -1,131 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "fileutils"
4
-
5
- module Aidp
6
- # Centralized path management for all AIDP internal files
7
- # Ensures consistent file locations and prevents path-related bugs
8
- module ConfigPaths
9
- # Get the main AIDP directory for a project
10
- def self.aidp_dir(project_dir = Dir.pwd)
11
- File.join(project_dir, ".aidp")
12
- end
13
-
14
- # Get the main configuration file path
15
- def self.config_file(project_dir = Dir.pwd)
16
- File.join(aidp_dir(project_dir), "aidp.yml")
17
- end
18
-
19
- # Get the configuration directory path
20
- def self.config_dir(project_dir = Dir.pwd)
21
- aidp_dir(project_dir)
22
- end
23
-
24
- # Get the progress directory path
25
- def self.progress_dir(project_dir = Dir.pwd)
26
- File.join(aidp_dir(project_dir), "progress")
27
- end
28
-
29
- # Get the execute progress file path
30
- def self.execute_progress_file(project_dir = Dir.pwd)
31
- File.join(progress_dir(project_dir), "execute.yml")
32
- end
33
-
34
- # Get the analyze progress file path
35
- def self.analyze_progress_file(project_dir = Dir.pwd)
36
- File.join(progress_dir(project_dir), "analyze.yml")
37
- end
38
-
39
- # Get the harness state directory path
40
- def self.harness_state_dir(project_dir = Dir.pwd)
41
- File.join(aidp_dir(project_dir), "harness")
42
- end
43
-
44
- # Get the harness state file path for a specific mode
45
- def self.harness_state_file(mode, project_dir = Dir.pwd)
46
- File.join(harness_state_dir(project_dir), "#{mode}_state.json")
47
- end
48
-
49
- # Get the providers directory path
50
- def self.providers_dir(project_dir = Dir.pwd)
51
- File.join(aidp_dir(project_dir), "providers")
52
- end
53
-
54
- # Get the provider info file path
55
- def self.provider_info_file(provider_name, project_dir = Dir.pwd)
56
- File.join(providers_dir(project_dir), "#{provider_name}_info.yml")
57
- end
58
-
59
- # Get the jobs directory path
60
- def self.jobs_dir(project_dir = Dir.pwd)
61
- File.join(aidp_dir(project_dir), "jobs")
62
- end
63
-
64
- # Get the checkpoint file path
65
- def self.checkpoint_file(project_dir = Dir.pwd)
66
- File.join(aidp_dir(project_dir), "checkpoint.yml")
67
- end
68
-
69
- # Get the checkpoint history file path
70
- def self.checkpoint_history_file(project_dir = Dir.pwd)
71
- File.join(aidp_dir(project_dir), "checkpoint_history.jsonl")
72
- end
73
-
74
- # Get the JSON storage directory path
75
- def self.json_storage_dir(project_dir = Dir.pwd)
76
- File.join(aidp_dir(project_dir), "json")
77
- end
78
-
79
- # Check if the main configuration file exists
80
- def self.config_exists?(project_dir = Dir.pwd)
81
- File.exist?(config_file(project_dir))
82
- end
83
-
84
- # Ensure the main AIDP directory exists
85
- def self.ensure_aidp_dir(project_dir = Dir.pwd)
86
- dir = aidp_dir(project_dir)
87
- FileUtils.mkdir_p(dir) unless Dir.exist?(dir)
88
- dir
89
- end
90
-
91
- # Ensure the configuration directory exists
92
- def self.ensure_config_dir(project_dir = Dir.pwd)
93
- ensure_aidp_dir(project_dir)
94
- end
95
-
96
- # Ensure the progress directory exists
97
- def self.ensure_progress_dir(project_dir = Dir.pwd)
98
- dir = progress_dir(project_dir)
99
- FileUtils.mkdir_p(dir) unless Dir.exist?(dir)
100
- dir
101
- end
102
-
103
- # Ensure the harness state directory exists
104
- def self.ensure_harness_state_dir(project_dir = Dir.pwd)
105
- dir = harness_state_dir(project_dir)
106
- FileUtils.mkdir_p(dir) unless Dir.exist?(dir)
107
- dir
108
- end
109
-
110
- # Ensure the providers directory exists
111
- def self.ensure_providers_dir(project_dir = Dir.pwd)
112
- dir = providers_dir(project_dir)
113
- FileUtils.mkdir_p(dir) unless Dir.exist?(dir)
114
- dir
115
- end
116
-
117
- # Ensure the jobs directory exists
118
- def self.ensure_jobs_dir(project_dir = Dir.pwd)
119
- dir = jobs_dir(project_dir)
120
- FileUtils.mkdir_p(dir) unless Dir.exist?(dir)
121
- dir
122
- end
123
-
124
- # Ensure the JSON storage directory exists
125
- def self.ensure_json_storage_dir(project_dir = Dir.pwd)
126
- dir = json_storage_dir(project_dir)
127
- FileUtils.mkdir_p(dir) unless Dir.exist?(dir)
128
- dir
129
- end
130
- end
131
- end