aidp 0.9.6 → 0.10.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/lib/aidp/analyze/error_handler.rb +4 -2
- data/lib/aidp/{analysis → analyze}/kb_inspector.rb +106 -89
- data/lib/aidp/analyze/prioritizer.rb +3 -2
- data/lib/aidp/analyze/ruby_maat_integration.rb +20 -3
- data/lib/aidp/analyze/runner.rb +27 -9
- data/lib/aidp/{analysis → analyze}/seams.rb +1 -1
- data/lib/aidp/analyze/steps.rb +7 -7
- data/lib/aidp/{analysis → analyze}/tree_sitter_grammar_loader.rb +22 -5
- data/lib/aidp/{analysis → analyze}/tree_sitter_scan.rb +32 -15
- data/lib/aidp/cli/first_run_wizard.rb +37 -28
- data/lib/aidp/cli/jobs_command.rb +37 -18
- data/lib/aidp/cli/terminal_io.rb +3 -3
- data/lib/aidp/cli.rb +131 -63
- data/lib/aidp/execute/runner.rb +27 -9
- data/lib/aidp/execute/steps.rb +18 -18
- data/lib/aidp/execute/workflow_selector.rb +36 -21
- data/lib/aidp/harness/enhanced_runner.rb +3 -3
- data/lib/aidp/harness/provider_factory.rb +3 -1
- data/lib/aidp/harness/provider_manager.rb +34 -15
- data/lib/aidp/harness/runner.rb +24 -5
- data/lib/aidp/harness/simple_user_interface.rb +19 -4
- data/lib/aidp/harness/status_display.rb +121 -104
- data/lib/aidp/harness/ui/enhanced_tui.rb +5 -5
- data/lib/aidp/harness/ui/error_handler.rb +3 -2
- data/lib/aidp/harness/ui/frame_manager.rb +52 -32
- data/lib/aidp/harness/ui/navigation/main_menu.rb +23 -14
- data/lib/aidp/harness/ui/progress_display.rb +28 -5
- data/lib/aidp/harness/ui/status_widget.rb +17 -8
- data/lib/aidp/harness/ui/workflow_controller.rb +25 -9
- data/lib/aidp/harness/user_interface.rb +341 -328
- data/lib/aidp/provider_manager.rb +10 -6
- data/lib/aidp/providers/anthropic.rb +3 -3
- data/lib/aidp/providers/base.rb +20 -1
- data/lib/aidp/providers/cursor.rb +6 -8
- data/lib/aidp/providers/gemini.rb +3 -3
- data/lib/aidp/providers/github_copilot.rb +264 -0
- data/lib/aidp/providers/opencode.rb +6 -8
- data/lib/aidp/version.rb +1 -1
- data/lib/aidp.rb +4 -4
- metadata +6 -6
- data/lib/aidp/analyze/progress_visualizer.rb +0 -314
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "tty-prompt"
|
3
4
|
require_relative "harness/provider_factory"
|
4
5
|
|
5
6
|
module Aidp
|
@@ -13,7 +14,8 @@ module Aidp
|
|
13
14
|
end
|
14
15
|
|
15
16
|
# Fallback to legacy method
|
16
|
-
|
17
|
+
prompt = options[:prompt] || TTY::Prompt.new
|
18
|
+
create_legacy_provider(provider_type, prompt: prompt)
|
17
19
|
end
|
18
20
|
|
19
21
|
def load_from_config(config = {}, options = {})
|
@@ -132,16 +134,18 @@ module Aidp
|
|
132
134
|
|
133
135
|
private
|
134
136
|
|
135
|
-
def create_legacy_provider(provider_type)
|
137
|
+
def create_legacy_provider(provider_type, prompt: TTY::Prompt.new)
|
136
138
|
case provider_type
|
137
139
|
when "cursor"
|
138
|
-
Aidp::Providers::Cursor.new
|
140
|
+
Aidp::Providers::Cursor.new(prompt: prompt)
|
139
141
|
when "anthropic"
|
140
|
-
Aidp::Providers::Anthropic.new
|
142
|
+
Aidp::Providers::Anthropic.new(prompt: prompt)
|
141
143
|
when "gemini"
|
142
|
-
Aidp::Providers::Gemini.new
|
144
|
+
Aidp::Providers::Gemini.new(prompt: prompt)
|
143
145
|
when "macos_ui"
|
144
|
-
Aidp::Providers::MacOSUI.new
|
146
|
+
Aidp::Providers::MacOSUI.new(prompt: prompt)
|
147
|
+
when "github_copilot"
|
148
|
+
Aidp::Providers::GithubCopilot.new(prompt: prompt)
|
145
149
|
end
|
146
150
|
end
|
147
151
|
end
|
@@ -58,7 +58,7 @@ module Aidp
|
|
58
58
|
# 4. Default timeout
|
59
59
|
|
60
60
|
if ENV["AIDP_QUICK_MODE"]
|
61
|
-
|
61
|
+
display_message("⚡ Quick mode enabled - 2 minute timeout", type: :highlight)
|
62
62
|
return 120
|
63
63
|
end
|
64
64
|
|
@@ -69,12 +69,12 @@ module Aidp
|
|
69
69
|
# Adaptive timeout based on step type
|
70
70
|
step_timeout = get_adaptive_timeout
|
71
71
|
if step_timeout
|
72
|
-
|
72
|
+
display_message("🧠 Using adaptive timeout: #{step_timeout} seconds", type: :info)
|
73
73
|
return step_timeout
|
74
74
|
end
|
75
75
|
|
76
76
|
# Default timeout (5 minutes for interactive use)
|
77
|
-
|
77
|
+
display_message("📋 Using default timeout: 5 minutes", type: :info)
|
78
78
|
300
|
79
79
|
end
|
80
80
|
|
data/lib/aidp/providers/base.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "tty-prompt"
|
4
|
+
|
3
5
|
module Aidp
|
4
6
|
module Providers
|
5
7
|
class Base
|
@@ -17,7 +19,7 @@ module Aidp
|
|
17
19
|
|
18
20
|
attr_reader :activity_state, :last_activity_time, :start_time, :step_name
|
19
21
|
|
20
|
-
def initialize
|
22
|
+
def initialize(output: nil, prompt: TTY::Prompt.new)
|
21
23
|
@activity_state = :idle
|
22
24
|
@last_activity_time = Time.now
|
23
25
|
@start_time = nil
|
@@ -28,6 +30,8 @@ module Aidp
|
|
28
30
|
@last_output_time = Time.now
|
29
31
|
@job_context = nil
|
30
32
|
@harness_context = nil
|
33
|
+
@output = output
|
34
|
+
@prompt = prompt
|
31
35
|
@harness_metrics = {
|
32
36
|
total_requests: 0,
|
33
37
|
successful_requests: 0,
|
@@ -327,6 +331,21 @@ module Aidp
|
|
327
331
|
# Weighted health score
|
328
332
|
(success_rate * 50) + ((1 - rate_limit_ratio) * 30) + (response_time_score * 0.2)
|
329
333
|
end
|
334
|
+
|
335
|
+
private
|
336
|
+
|
337
|
+
def display_message(message, type: :info)
|
338
|
+
color = case type
|
339
|
+
when :error then :red
|
340
|
+
when :success then :green
|
341
|
+
when :warning then :yellow
|
342
|
+
when :info then :blue
|
343
|
+
when :highlight then :cyan
|
344
|
+
when :muted then :bright_black
|
345
|
+
else :white
|
346
|
+
end
|
347
|
+
@prompt.say(message, color: color)
|
348
|
+
end
|
330
349
|
end
|
331
350
|
end
|
332
351
|
end
|
@@ -95,13 +95,11 @@ module Aidp
|
|
95
95
|
else
|
96
96
|
print "\r🔄 cursor-agent is running... (#{seconds}s)"
|
97
97
|
end
|
98
|
-
$stdout.flush
|
99
98
|
end
|
100
99
|
|
101
100
|
def clear_activity_status
|
102
101
|
# Clear the activity status line
|
103
102
|
print "\r" + " " * 50 + "\r"
|
104
|
-
$stdout.flush
|
105
103
|
end
|
106
104
|
|
107
105
|
def calculate_timeout
|
@@ -112,7 +110,7 @@ module Aidp
|
|
112
110
|
# 4. Default timeout
|
113
111
|
|
114
112
|
if ENV["AIDP_QUICK_MODE"]
|
115
|
-
|
113
|
+
display_message("⚡ Quick mode enabled - 2 minute timeout", type: :highlight)
|
116
114
|
return 120
|
117
115
|
end
|
118
116
|
|
@@ -123,12 +121,12 @@ module Aidp
|
|
123
121
|
# Adaptive timeout based on step type
|
124
122
|
step_timeout = get_adaptive_timeout
|
125
123
|
if step_timeout
|
126
|
-
|
124
|
+
display_message("🧠 Using adaptive timeout: #{step_timeout} seconds", type: :info)
|
127
125
|
return step_timeout
|
128
126
|
end
|
129
127
|
|
130
128
|
# Default timeout (5 minutes for interactive use)
|
131
|
-
|
129
|
+
display_message("📋 Using default timeout: 5 minutes", type: :info)
|
132
130
|
300
|
133
131
|
end
|
134
132
|
|
@@ -161,11 +159,11 @@ module Aidp
|
|
161
159
|
# Only print static messages for state changes
|
162
160
|
case state
|
163
161
|
when :stuck
|
164
|
-
|
162
|
+
display_message("\n⚠️ cursor appears stuck: #{message}", type: :warning)
|
165
163
|
when :completed
|
166
|
-
|
164
|
+
display_message("\n✅ cursor completed: #{message}", type: :success)
|
167
165
|
when :failed
|
168
|
-
|
166
|
+
display_message("\n❌ cursor failed: #{message}", type: :error)
|
169
167
|
end
|
170
168
|
end
|
171
169
|
end
|
@@ -54,7 +54,7 @@ module Aidp
|
|
54
54
|
# 4. Default timeout
|
55
55
|
|
56
56
|
if ENV["AIDP_QUICK_MODE"]
|
57
|
-
|
57
|
+
display_message("⚡ Quick mode enabled - 2 minute timeout", type: :highlight)
|
58
58
|
return 120
|
59
59
|
end
|
60
60
|
|
@@ -65,12 +65,12 @@ module Aidp
|
|
65
65
|
# Adaptive timeout based on step type
|
66
66
|
step_timeout = get_adaptive_timeout
|
67
67
|
if step_timeout
|
68
|
-
|
68
|
+
display_message("🧠 Using adaptive timeout: #{step_timeout} seconds", type: :info)
|
69
69
|
return step_timeout
|
70
70
|
end
|
71
71
|
|
72
72
|
# Default timeout (5 minutes for interactive use)
|
73
|
-
|
73
|
+
display_message("📋 Using default timeout: 5 minutes", type: :info)
|
74
74
|
300
|
75
75
|
end
|
76
76
|
|
@@ -0,0 +1,264 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "timeout"
|
4
|
+
require_relative "base"
|
5
|
+
require_relative "../util"
|
6
|
+
require_relative "../debug_mixin"
|
7
|
+
|
8
|
+
module Aidp
|
9
|
+
module Providers
|
10
|
+
class GithubCopilot < Base
|
11
|
+
include Aidp::DebugMixin
|
12
|
+
|
13
|
+
def self.available?
|
14
|
+
!!Aidp::Util.which("copilot")
|
15
|
+
end
|
16
|
+
|
17
|
+
def name
|
18
|
+
"github_copilot"
|
19
|
+
end
|
20
|
+
|
21
|
+
def available?
|
22
|
+
return false unless self.class.available?
|
23
|
+
|
24
|
+
# Additional check to ensure the CLI is properly configured
|
25
|
+
begin
|
26
|
+
result = Aidp::Util.execute_command("copilot", ["--version"], timeout: 10)
|
27
|
+
result.exit_status == 0
|
28
|
+
rescue
|
29
|
+
false
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def send(prompt:, session: nil)
|
34
|
+
raise "copilot CLI not available" unless self.class.available?
|
35
|
+
|
36
|
+
# Smart timeout calculation
|
37
|
+
timeout_seconds = calculate_timeout
|
38
|
+
|
39
|
+
debug_provider("copilot", "Starting execution", {timeout: timeout_seconds})
|
40
|
+
debug_log("📝 Sending prompt to copilot (length: #{prompt.length})", level: :info)
|
41
|
+
|
42
|
+
# Set up activity monitoring
|
43
|
+
setup_activity_monitoring("copilot", method(:activity_callback))
|
44
|
+
record_activity("Starting copilot execution")
|
45
|
+
|
46
|
+
# Start activity display thread with timeout
|
47
|
+
activity_display_thread = Thread.new do
|
48
|
+
start_time = Time.now
|
49
|
+
loop do
|
50
|
+
sleep 0.5 # Update every 500ms to reduce spam
|
51
|
+
elapsed = Time.now - start_time
|
52
|
+
|
53
|
+
# Break if we've been running too long or state changed
|
54
|
+
break if elapsed > timeout_seconds || @activity_state == :completed || @activity_state == :failed
|
55
|
+
|
56
|
+
print_activity_status(elapsed)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
begin
|
61
|
+
# Use non-interactive mode for automation
|
62
|
+
args = ["-p", prompt, "--allow-all-tools"]
|
63
|
+
|
64
|
+
# Add session support if provided
|
65
|
+
if session && !session.empty?
|
66
|
+
args += ["--resume", session]
|
67
|
+
end
|
68
|
+
|
69
|
+
# Use debug_execute_command for better debugging (no input since prompt is in args)
|
70
|
+
result = debug_execute_command("copilot", args: args, timeout: timeout_seconds)
|
71
|
+
|
72
|
+
# Log the results
|
73
|
+
debug_command("copilot", args: args, input: prompt, output: result.out, error: result.err, exit_code: result.exit_status)
|
74
|
+
|
75
|
+
# Stop activity display
|
76
|
+
activity_display_thread.kill if activity_display_thread.alive?
|
77
|
+
activity_display_thread.join(0.1) # Give it 100ms to finish
|
78
|
+
clear_activity_status
|
79
|
+
|
80
|
+
if result.exit_status == 0
|
81
|
+
mark_completed
|
82
|
+
result.out
|
83
|
+
else
|
84
|
+
mark_failed("copilot failed with exit code #{result.exit_status}")
|
85
|
+
debug_error(StandardError.new("copilot failed"), {exit_code: result.exit_status, stderr: result.err})
|
86
|
+
raise "copilot failed with exit code #{result.exit_status}: #{result.err}"
|
87
|
+
end
|
88
|
+
rescue => e
|
89
|
+
# Stop activity display
|
90
|
+
activity_display_thread.kill if activity_display_thread.alive?
|
91
|
+
activity_display_thread.join(0.1) # Give it 100ms to finish
|
92
|
+
clear_activity_status
|
93
|
+
mark_failed("copilot execution failed: #{e.message}")
|
94
|
+
debug_error(e, {provider: "github_copilot", prompt_length: prompt.length})
|
95
|
+
raise
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
# Enhanced send method with additional options
|
100
|
+
def send_with_options(prompt:, session: nil, tools: nil, log_level: nil, config_file: nil, directories: nil)
|
101
|
+
args = ["-p", prompt]
|
102
|
+
|
103
|
+
# Add session support
|
104
|
+
if session && !session.empty?
|
105
|
+
args += ["--resume", session]
|
106
|
+
end
|
107
|
+
|
108
|
+
# Add tool permissions
|
109
|
+
if tools && !tools.empty?
|
110
|
+
if tools.include?("all")
|
111
|
+
args += ["--allow-all-tools"]
|
112
|
+
else
|
113
|
+
tools.each do |tool|
|
114
|
+
args += ["--allow-tool", tool]
|
115
|
+
end
|
116
|
+
end
|
117
|
+
else
|
118
|
+
# Default to allowing all tools for automation
|
119
|
+
args += ["--allow-all-tools"]
|
120
|
+
end
|
121
|
+
|
122
|
+
# Add logging level
|
123
|
+
if log_level
|
124
|
+
args += ["--log-level", log_level]
|
125
|
+
end
|
126
|
+
|
127
|
+
# Add allowed directories
|
128
|
+
if directories && !directories.empty?
|
129
|
+
directories.each do |dir|
|
130
|
+
args += ["--add-dir", dir]
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
# Use the enhanced version of send
|
135
|
+
send_with_custom_args(prompt: prompt, args: args)
|
136
|
+
end
|
137
|
+
|
138
|
+
# Override health check for GitHub Copilot specific considerations
|
139
|
+
def harness_healthy?
|
140
|
+
return false unless super
|
141
|
+
|
142
|
+
# Additional health checks specific to GitHub Copilot CLI
|
143
|
+
# Check if we can access GitHub (basic connectivity test)
|
144
|
+
begin
|
145
|
+
result = Aidp::Util.execute_command("copilot", ["--help"], timeout: 5)
|
146
|
+
result.exit_status == 0
|
147
|
+
rescue
|
148
|
+
false
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
private
|
153
|
+
|
154
|
+
def send_with_custom_args(prompt:, args:)
|
155
|
+
timeout_seconds = calculate_timeout
|
156
|
+
|
157
|
+
debug_provider("copilot", "Starting execution", {timeout: timeout_seconds, args: args})
|
158
|
+
debug_log("📝 Sending prompt to copilot with custom args", level: :info)
|
159
|
+
|
160
|
+
setup_activity_monitoring("copilot", method(:activity_callback))
|
161
|
+
record_activity("Starting copilot execution with custom args")
|
162
|
+
|
163
|
+
begin
|
164
|
+
result = debug_execute_command("copilot", args: args, timeout: timeout_seconds)
|
165
|
+
debug_command("copilot", args: args, output: result.out, error: result.err, exit_code: result.exit_status)
|
166
|
+
|
167
|
+
if result.exit_status == 0
|
168
|
+
mark_completed
|
169
|
+
result.out
|
170
|
+
else
|
171
|
+
mark_failed("copilot failed with exit code #{result.exit_status}")
|
172
|
+
debug_error(StandardError.new("copilot failed"), {exit_code: result.exit_status, stderr: result.err})
|
173
|
+
raise "copilot failed with exit code #{result.exit_status}: #{result.err}"
|
174
|
+
end
|
175
|
+
rescue => e
|
176
|
+
mark_failed("copilot execution failed: #{e.message}")
|
177
|
+
debug_error(e, {provider: "github_copilot", prompt_length: prompt.length})
|
178
|
+
raise
|
179
|
+
end
|
180
|
+
end
|
181
|
+
|
182
|
+
def print_activity_status(elapsed)
|
183
|
+
# Print activity status during execution with elapsed time
|
184
|
+
minutes = (elapsed / 60).to_i
|
185
|
+
seconds = (elapsed % 60).to_i
|
186
|
+
|
187
|
+
if minutes > 0
|
188
|
+
print "\r🤖 GitHub Copilot CLI is running... (#{minutes}m #{seconds}s)"
|
189
|
+
else
|
190
|
+
print "\r🤖 GitHub Copilot CLI is running... (#{seconds}s)"
|
191
|
+
end
|
192
|
+
end
|
193
|
+
|
194
|
+
def clear_activity_status
|
195
|
+
# Clear the activity status line
|
196
|
+
print "\r" + " " * 60 + "\r"
|
197
|
+
end
|
198
|
+
|
199
|
+
def calculate_timeout
|
200
|
+
# Priority order for timeout calculation:
|
201
|
+
# 1. Quick mode (for testing)
|
202
|
+
# 2. Environment variable override
|
203
|
+
# 3. Adaptive timeout based on step type
|
204
|
+
# 4. Default timeout
|
205
|
+
|
206
|
+
if ENV["AIDP_QUICK_MODE"]
|
207
|
+
display_message("⚡ Quick mode enabled - 2 minute timeout", type: :highlight)
|
208
|
+
return 120
|
209
|
+
end
|
210
|
+
|
211
|
+
if ENV["AIDP_GITHUB_COPILOT_TIMEOUT"]
|
212
|
+
return ENV["AIDP_GITHUB_COPILOT_TIMEOUT"].to_i
|
213
|
+
end
|
214
|
+
|
215
|
+
# Adaptive timeout based on step type
|
216
|
+
step_timeout = get_adaptive_timeout
|
217
|
+
if step_timeout
|
218
|
+
display_message("🧠 Using adaptive timeout: #{step_timeout} seconds", type: :info)
|
219
|
+
return step_timeout
|
220
|
+
end
|
221
|
+
|
222
|
+
# Default timeout (5 minutes for interactive use)
|
223
|
+
display_message("📋 Using default timeout: 5 minutes", type: :info)
|
224
|
+
300
|
225
|
+
end
|
226
|
+
|
227
|
+
def get_adaptive_timeout
|
228
|
+
# Timeout recommendations based on step type patterns
|
229
|
+
step_name = ENV["AIDP_CURRENT_STEP"] || ""
|
230
|
+
|
231
|
+
case step_name
|
232
|
+
when /REPOSITORY_ANALYSIS/
|
233
|
+
180 # 3 minutes - repository analysis can be quick
|
234
|
+
when /ARCHITECTURE_ANALYSIS/
|
235
|
+
600 # 10 minutes - architecture analysis needs more time
|
236
|
+
when /TEST_ANALYSIS/
|
237
|
+
300 # 5 minutes - test analysis is moderate
|
238
|
+
when /FUNCTIONALITY_ANALYSIS/
|
239
|
+
600 # 10 minutes - functionality analysis is complex
|
240
|
+
when /DOCUMENTATION_ANALYSIS/
|
241
|
+
300 # 5 minutes - documentation analysis is moderate
|
242
|
+
when /STATIC_ANALYSIS/
|
243
|
+
450 # 7.5 minutes - static analysis can be intensive
|
244
|
+
when /REFACTORING_RECOMMENDATIONS/
|
245
|
+
600 # 10 minutes - refactoring recommendations are complex
|
246
|
+
else
|
247
|
+
nil # Use default
|
248
|
+
end
|
249
|
+
end
|
250
|
+
|
251
|
+
def activity_callback(state, message, provider)
|
252
|
+
# Handle activity state changes
|
253
|
+
case state
|
254
|
+
when :stuck
|
255
|
+
display_message("\n⚠️ GitHub Copilot CLI appears stuck: #{message}", type: :warning)
|
256
|
+
when :completed
|
257
|
+
display_message("\n✅ GitHub Copilot CLI completed: #{message}", type: :success)
|
258
|
+
when :failed
|
259
|
+
display_message("\n❌ GitHub Copilot CLI failed: #{message}", type: :error)
|
260
|
+
end
|
261
|
+
end
|
262
|
+
end
|
263
|
+
end
|
264
|
+
end
|
@@ -95,13 +95,11 @@ module Aidp
|
|
95
95
|
else
|
96
96
|
print "\r🔄 opencode is running... (#{seconds}s)"
|
97
97
|
end
|
98
|
-
$stdout.flush
|
99
98
|
end
|
100
99
|
|
101
100
|
def clear_activity_status
|
102
101
|
# Clear the activity status line
|
103
102
|
print "\r" + " " * 50 + "\r"
|
104
|
-
$stdout.flush
|
105
103
|
end
|
106
104
|
|
107
105
|
def calculate_timeout
|
@@ -112,7 +110,7 @@ module Aidp
|
|
112
110
|
# 4. Default timeout
|
113
111
|
|
114
112
|
if ENV["AIDP_QUICK_MODE"]
|
115
|
-
|
113
|
+
display_message("⚡ Quick mode enabled - 2 minute timeout", type: :highlight)
|
116
114
|
return 120
|
117
115
|
end
|
118
116
|
|
@@ -123,12 +121,12 @@ module Aidp
|
|
123
121
|
# Adaptive timeout based on step type
|
124
122
|
step_timeout = get_adaptive_timeout
|
125
123
|
if step_timeout
|
126
|
-
|
124
|
+
display_message("🧠 Using adaptive timeout: #{step_timeout} seconds", type: :info)
|
127
125
|
return step_timeout
|
128
126
|
end
|
129
127
|
|
130
128
|
# Default timeout (5 minutes for interactive use)
|
131
|
-
|
129
|
+
display_message("📋 Using default timeout: 5 minutes", type: :info)
|
132
130
|
300
|
133
131
|
end
|
134
132
|
|
@@ -161,11 +159,11 @@ module Aidp
|
|
161
159
|
# Only print static messages for state changes
|
162
160
|
case state
|
163
161
|
when :starting
|
164
|
-
|
162
|
+
display_message("🚀 Starting opencode execution...", type: :info)
|
165
163
|
when :completed
|
166
|
-
|
164
|
+
display_message("✅ opencode execution completed", type: :success)
|
167
165
|
when :failed
|
168
|
-
|
166
|
+
display_message("❌ opencode execution failed: #{message}", type: :error)
|
169
167
|
end
|
170
168
|
end
|
171
169
|
|
data/lib/aidp/version.rb
CHANGED
data/lib/aidp.rb
CHANGED
@@ -33,10 +33,10 @@ require_relative "aidp/analyze/steps"
|
|
33
33
|
require_relative "aidp/analyze/progress"
|
34
34
|
|
35
35
|
# Tree-sitter analysis
|
36
|
-
require_relative "aidp/
|
37
|
-
require_relative "aidp/
|
38
|
-
require_relative "aidp/
|
39
|
-
require_relative "aidp/
|
36
|
+
require_relative "aidp/analyze/tree_sitter_grammar_loader"
|
37
|
+
require_relative "aidp/analyze/seams"
|
38
|
+
require_relative "aidp/analyze/tree_sitter_scan"
|
39
|
+
require_relative "aidp/analyze/kb_inspector"
|
40
40
|
|
41
41
|
# Execute mode
|
42
42
|
require_relative "aidp/execute/steps"
|
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.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bart Agapinan
|
@@ -233,20 +233,19 @@ files:
|
|
233
233
|
- README.md
|
234
234
|
- bin/aidp
|
235
235
|
- lib/aidp.rb
|
236
|
-
- lib/aidp/analysis/kb_inspector.rb
|
237
|
-
- lib/aidp/analysis/seams.rb
|
238
|
-
- lib/aidp/analysis/tree_sitter_grammar_loader.rb
|
239
|
-
- lib/aidp/analysis/tree_sitter_scan.rb
|
240
236
|
- lib/aidp/analyze/error_handler.rb
|
241
237
|
- lib/aidp/analyze/feature_analyzer.rb
|
242
238
|
- lib/aidp/analyze/json_file_storage.rb
|
239
|
+
- lib/aidp/analyze/kb_inspector.rb
|
243
240
|
- lib/aidp/analyze/prioritizer.rb
|
244
241
|
- lib/aidp/analyze/progress.rb
|
245
|
-
- lib/aidp/analyze/progress_visualizer.rb
|
246
242
|
- lib/aidp/analyze/report_generator.rb
|
247
243
|
- lib/aidp/analyze/ruby_maat_integration.rb
|
248
244
|
- lib/aidp/analyze/runner.rb
|
245
|
+
- lib/aidp/analyze/seams.rb
|
249
246
|
- lib/aidp/analyze/steps.rb
|
247
|
+
- lib/aidp/analyze/tree_sitter_grammar_loader.rb
|
248
|
+
- lib/aidp/analyze/tree_sitter_scan.rb
|
250
249
|
- lib/aidp/cli.rb
|
251
250
|
- lib/aidp/cli/first_run_wizard.rb
|
252
251
|
- lib/aidp/cli/jobs_command.rb
|
@@ -307,6 +306,7 @@ files:
|
|
307
306
|
- lib/aidp/providers/base.rb
|
308
307
|
- lib/aidp/providers/cursor.rb
|
309
308
|
- lib/aidp/providers/gemini.rb
|
309
|
+
- lib/aidp/providers/github_copilot.rb
|
310
310
|
- lib/aidp/providers/macos_ui.rb
|
311
311
|
- lib/aidp/providers/opencode.rb
|
312
312
|
- lib/aidp/storage/csv_storage.rb
|