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.
- checksums.yaml +4 -4
- data/README.md +35 -0
- data/lib/aidp/analyze/feature_analyzer.rb +322 -320
- data/lib/aidp/analyze/tree_sitter_scan.rb +3 -0
- data/lib/aidp/auto_update/coordinator.rb +97 -7
- data/lib/aidp/auto_update.rb +0 -12
- data/lib/aidp/cli/devcontainer_commands.rb +0 -5
- data/lib/aidp/cli/eval_command.rb +399 -0
- data/lib/aidp/cli/harness_command.rb +1 -1
- data/lib/aidp/cli/security_command.rb +416 -0
- data/lib/aidp/cli/tools_command.rb +6 -4
- data/lib/aidp/cli.rb +172 -4
- data/lib/aidp/comment_consolidator.rb +78 -0
- data/lib/aidp/concurrency/exec.rb +3 -0
- data/lib/aidp/concurrency.rb +0 -3
- data/lib/aidp/config.rb +113 -1
- data/lib/aidp/config_paths.rb +91 -0
- data/lib/aidp/daemon/runner.rb +8 -4
- data/lib/aidp/errors.rb +134 -0
- data/lib/aidp/evaluations/context_capture.rb +205 -0
- data/lib/aidp/evaluations/evaluation_record.rb +114 -0
- data/lib/aidp/evaluations/evaluation_storage.rb +250 -0
- data/lib/aidp/evaluations.rb +23 -0
- data/lib/aidp/execute/async_work_loop_runner.rb +4 -1
- data/lib/aidp/execute/interactive_repl.rb +6 -2
- data/lib/aidp/execute/prompt_evaluator.rb +359 -0
- data/lib/aidp/execute/repl_macros.rb +100 -1
- data/lib/aidp/execute/work_loop_runner.rb +719 -58
- data/lib/aidp/execute/work_loop_state.rb +4 -1
- data/lib/aidp/execute/workflow_selector.rb +3 -0
- data/lib/aidp/harness/ai_decision_engine.rb +79 -0
- data/lib/aidp/harness/ai_filter_factory.rb +285 -0
- data/lib/aidp/harness/capability_registry.rb +2 -0
- data/lib/aidp/harness/condition_detector.rb +3 -0
- data/lib/aidp/harness/config_loader.rb +3 -0
- data/lib/aidp/harness/config_schema.rb +97 -1
- data/lib/aidp/harness/config_validator.rb +1 -1
- data/lib/aidp/harness/configuration.rb +61 -5
- data/lib/aidp/harness/enhanced_runner.rb +14 -11
- data/lib/aidp/harness/error_handler.rb +3 -0
- data/lib/aidp/harness/filter_definition.rb +212 -0
- data/lib/aidp/harness/generated_filter_strategy.rb +197 -0
- data/lib/aidp/harness/output_filter.rb +50 -25
- data/lib/aidp/harness/output_filter_config.rb +129 -0
- data/lib/aidp/harness/provider_factory.rb +3 -0
- data/lib/aidp/harness/provider_manager.rb +96 -2
- data/lib/aidp/harness/runner.rb +5 -12
- data/lib/aidp/harness/state/persistence.rb +3 -0
- data/lib/aidp/harness/state_manager.rb +3 -0
- data/lib/aidp/harness/status_display.rb +28 -20
- data/lib/aidp/harness/test_runner.rb +179 -41
- data/lib/aidp/harness/thinking_depth_manager.rb +44 -28
- data/lib/aidp/harness/ui/enhanced_tui.rb +4 -0
- data/lib/aidp/harness/ui/enhanced_workflow_selector.rb +4 -0
- data/lib/aidp/harness/ui/error_handler.rb +3 -0
- data/lib/aidp/harness/ui/job_monitor.rb +4 -0
- data/lib/aidp/harness/ui/navigation/submenu.rb +2 -2
- data/lib/aidp/harness/ui/navigation/workflow_selector.rb +6 -0
- data/lib/aidp/harness/ui/spinner_helper.rb +3 -0
- data/lib/aidp/harness/ui/workflow_controller.rb +3 -0
- data/lib/aidp/harness/user_interface.rb +3 -0
- data/lib/aidp/loader.rb +195 -0
- data/lib/aidp/logger.rb +3 -0
- data/lib/aidp/message_display.rb +31 -0
- data/lib/aidp/metadata/compiler.rb +29 -17
- data/lib/aidp/metadata/query.rb +1 -1
- data/lib/aidp/metadata/scanner.rb +8 -1
- data/lib/aidp/metadata/tool_metadata.rb +13 -13
- data/lib/aidp/metadata/validator.rb +10 -0
- data/lib/aidp/metadata.rb +16 -0
- data/lib/aidp/pr_worktree_manager.rb +20 -8
- data/lib/aidp/provider_manager.rb +4 -7
- data/lib/aidp/providers/base.rb +2 -0
- data/lib/aidp/security/rule_of_two_enforcer.rb +210 -0
- data/lib/aidp/security/secrets_proxy.rb +328 -0
- data/lib/aidp/security/secrets_registry.rb +227 -0
- data/lib/aidp/security/trifecta_state.rb +220 -0
- data/lib/aidp/security/watch_mode_handler.rb +306 -0
- data/lib/aidp/security/work_loop_adapter.rb +277 -0
- data/lib/aidp/security.rb +56 -0
- data/lib/aidp/setup/wizard.rb +283 -11
- data/lib/aidp/skills.rb +0 -5
- data/lib/aidp/storage/csv_storage.rb +3 -0
- data/lib/aidp/style_guide/selector.rb +360 -0
- data/lib/aidp/tooling_detector.rb +283 -16
- data/lib/aidp/version.rb +1 -1
- data/lib/aidp/watch/auto_merger.rb +274 -0
- data/lib/aidp/watch/auto_pr_processor.rb +125 -7
- data/lib/aidp/watch/build_processor.rb +16 -1
- data/lib/aidp/watch/change_request_processor.rb +682 -150
- data/lib/aidp/watch/ci_fix_processor.rb +262 -4
- data/lib/aidp/watch/feedback_collector.rb +191 -0
- data/lib/aidp/watch/hierarchical_pr_strategy.rb +256 -0
- data/lib/aidp/watch/implementation_verifier.rb +142 -1
- data/lib/aidp/watch/plan_generator.rb +70 -13
- data/lib/aidp/watch/plan_processor.rb +12 -5
- data/lib/aidp/watch/projects_processor.rb +286 -0
- data/lib/aidp/watch/repository_client.rb +871 -22
- data/lib/aidp/watch/review_processor.rb +33 -6
- data/lib/aidp/watch/runner.rb +80 -29
- data/lib/aidp/watch/state_store.rb +233 -0
- data/lib/aidp/watch/sub_issue_creator.rb +221 -0
- data/lib/aidp/watch.rb +5 -7
- data/lib/aidp/workflows/guided_agent.rb +4 -0
- data/lib/aidp/workstream_cleanup.rb +0 -2
- data/lib/aidp/workstream_executor.rb +3 -4
- data/lib/aidp/worktree.rb +61 -12
- data/lib/aidp/worktree_branch_manager.rb +347 -101
- data/lib/aidp.rb +21 -106
- data/templates/implementation/iterative_implementation.md +46 -3
- metadata +91 -36
- 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
|
-
##
|
|
9
|
+
## ⚠️ CRITICAL: Task Filing Required
|
|
10
10
|
|
|
11
|
-
|
|
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
|
-
|
|
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.
|
|
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:
|
|
55
|
+
name: ostruct
|
|
56
56
|
requirement: !ruby/object:Gem::Requirement
|
|
57
57
|
requirements:
|
|
58
58
|
- - "~>"
|
|
59
59
|
- !ruby/object:Gem::Version
|
|
60
|
-
version: '
|
|
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: '
|
|
67
|
+
version: '0.6'
|
|
68
68
|
- !ruby/object:Gem::Dependency
|
|
69
|
-
name:
|
|
69
|
+
name: pastel
|
|
70
70
|
requirement: !ruby/object:Gem::Requirement
|
|
71
71
|
requirements:
|
|
72
72
|
- - "~>"
|
|
73
73
|
- !ruby/object:Gem::Version
|
|
74
|
-
version: '0.
|
|
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.
|
|
81
|
+
version: '0.8'
|
|
82
82
|
- !ruby/object:Gem::Dependency
|
|
83
|
-
name:
|
|
83
|
+
name: ruby_llm
|
|
84
84
|
requirement: !ruby/object:Gem::Requirement
|
|
85
85
|
requirements:
|
|
86
86
|
- - "~>"
|
|
87
87
|
- !ruby/object:Gem::Version
|
|
88
|
-
version: '
|
|
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: '
|
|
95
|
+
version: '1.9'
|
|
96
96
|
- !ruby/object:Gem::Dependency
|
|
97
|
-
name:
|
|
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
|
|
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
|
|
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-
|
|
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.
|
|
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.
|
|
165
|
+
version: '0.10'
|
|
138
166
|
- !ruby/object:Gem::Dependency
|
|
139
|
-
name: tty-
|
|
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.
|
|
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.
|
|
179
|
+
version: '0.7'
|
|
152
180
|
- !ruby/object:Gem::Dependency
|
|
153
|
-
name: tty-
|
|
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.
|
|
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.
|
|
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:
|
|
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.
|
|
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.
|
|
221
|
+
version: '0.9'
|
|
194
222
|
- !ruby/object:Gem::Dependency
|
|
195
|
-
name:
|
|
223
|
+
name: tty-screen
|
|
196
224
|
requirement: !ruby/object:Gem::Requirement
|
|
197
225
|
requirements:
|
|
198
226
|
- - "~>"
|
|
199
227
|
- !ruby/object:Gem::Version
|
|
200
|
-
version: '
|
|
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: '
|
|
235
|
+
version: '0.8'
|
|
208
236
|
- !ruby/object:Gem::Dependency
|
|
209
|
-
name: tty-
|
|
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.
|
|
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.
|
|
249
|
+
version: '0.9'
|
|
222
250
|
- !ruby/object:Gem::Dependency
|
|
223
|
-
name:
|
|
251
|
+
name: tty-table
|
|
224
252
|
requirement: !ruby/object:Gem::Requirement
|
|
225
253
|
requirements:
|
|
226
254
|
- - "~>"
|
|
227
255
|
- !ruby/object:Gem::Version
|
|
228
|
-
version: '
|
|
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: '
|
|
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.
|
|
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/
|
|
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
|
data/lib/aidp/config/paths.rb
DELETED
|
@@ -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
|