aia 2.0.0.0.pre.alpha → 2.0.0.0.pre.beta2
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/.envrc +5 -1
- data/.loki +3 -223
- data/.reek.yml +160 -0
- data/.rubocop_strict.yml +15 -0
- data/.version +1 -1
- data/CHANGELOG.md +10 -5
- data/README.md +1 -1
- data/Rakefile +0 -113
- data/_typos.toml +10 -0
- data/aia.gemspec +92 -0
- data/config/aia.yml +13 -0
- data/lib/aia/chat_loop.rb +8 -52
- data/lib/aia/config/cli_parser.rb +66 -57
- data/lib/aia/config/mcp_parser.rb +27 -19
- data/lib/aia/config/validator.rb +83 -94
- data/lib/aia/config.rb +3 -2
- data/lib/aia/content_extractor.rb +2 -0
- data/lib/aia/cost_calculator.rb +1 -0
- data/lib/aia/debate_handler.rb +28 -20
- data/lib/aia/delegate_handler.rb +7 -3
- data/lib/aia/directive.rb +10 -8
- data/lib/aia/directives/configuration_directives.rb +115 -101
- data/lib/aia/directives/context_directives.rb +31 -28
- data/lib/aia/directives/execution_directives.rb +18 -13
- data/lib/aia/directives/model_directives.rb +134 -154
- data/lib/aia/directives/trakflow_directives.rb +27 -9
- data/lib/aia/directives/utility_directives.rb +71 -71
- data/lib/aia/directives/web_and_file_directives.rb +63 -50
- data/lib/aia/layered_orchestrator.rb +66 -43
- data/lib/aia/logger.rb +21 -21
- data/lib/aia/mcp_connection_manager.rb +50 -40
- data/lib/aia/mcp_server_config.rb +30 -0
- data/lib/aia/mcp_utility.rb +7 -4
- data/lib/aia/mention_router.rb +7 -50
- data/lib/aia/network_builder.rb +10 -5
- data/lib/aia/network_memory_manager.rb +6 -6
- data/lib/aia/pipeline_orchestrator.rb +20 -10
- data/lib/aia/plugin_monitor.rb +9 -6
- data/lib/aia/prompt_decomposer.rb +5 -3
- data/lib/aia/prompt_handler.rb +43 -49
- data/lib/aia/robot_factory.rb +12 -8
- data/lib/aia/robot_namer.rb +2 -8
- data/lib/aia/session.rb +7 -3
- data/lib/aia/session_tracker.rb +39 -41
- data/lib/aia/similarity_scorer.rb +5 -3
- data/lib/aia/special_mode_handler.rb +52 -32
- data/lib/aia/speech.rb +67 -0
- data/lib/aia/startup_coordinator.rb +1 -0
- data/lib/aia/streaming_runner.rb +6 -3
- data/lib/aia/system_prompt_assembler.rb +11 -7
- data/lib/aia/task_coordinator.rb +10 -5
- data/lib/aia/timing.rb +15 -0
- data/lib/aia/tool_filter.rb +1 -0
- data/lib/aia/tool_filter_strategy.rb +28 -25
- data/lib/aia/tool_introspection.rb +17 -0
- data/lib/aia/tool_loader.rb +12 -6
- data/lib/aia/tools/task_board_tool.rb +1 -0
- data/lib/aia/trakflow_bridge.rb +5 -3
- data/lib/aia/turn_state.rb +1 -0
- data/lib/aia/ui_presenter.rb +67 -59
- data/lib/aia/utility.rb +5 -3
- data/lib/aia/variable_input_collector.rb +1 -0
- data/lib/aia/verification_network.rb +1 -2
- data/lib/aia.rb +16 -0
- metadata +15 -9
- data/.quality/flay_baseline.txt +0 -1
- data/.quality/flog_baseline.txt +0 -29
- data/.quality/reek_baseline.txt +0 -80
data/lib/aia/ui_presenter.rb
CHANGED
|
@@ -7,6 +7,7 @@ require 'reline'
|
|
|
7
7
|
require 'fileutils'
|
|
8
8
|
|
|
9
9
|
module AIA
|
|
10
|
+
# :reek:TooManyMethods -- one small builder per table/report section keeps each display testable in isolation
|
|
10
11
|
class UIPresenter
|
|
11
12
|
USER_PROMPT = "Follow up (cntl-D or 'exit' to end) #=> ".freeze
|
|
12
13
|
HISTORY_FILE = File.join(Dir.home, '.config', 'aia', 'chat_history')
|
|
@@ -25,6 +26,7 @@ module AIA
|
|
|
25
26
|
format_chat_response(response)
|
|
26
27
|
end
|
|
27
28
|
|
|
29
|
+
# :reek:TooManyStatements -- line-by-line rendering with a code-fence state machine; the states share locals
|
|
28
30
|
def format_chat_response(response, output = $stdout)
|
|
29
31
|
indent = ' '
|
|
30
32
|
|
|
@@ -121,6 +123,7 @@ module AIA
|
|
|
121
123
|
result
|
|
122
124
|
end
|
|
123
125
|
|
|
126
|
+
# :reek:TooManyStatements -- one metrics table with header/row/alignment variants for cost vs no-cost display
|
|
124
127
|
def display_token_metrics(metrics)
|
|
125
128
|
return unless metrics
|
|
126
129
|
|
|
@@ -160,83 +163,87 @@ module AIA
|
|
|
160
163
|
write_to_output_file(rendered)
|
|
161
164
|
end
|
|
162
165
|
|
|
163
|
-
#
|
|
166
|
+
# :reek:TooManyStatements -- table assembly: rows, totals, render, output; each piece delegated to a builder
|
|
164
167
|
def display_multi_model_metrics(metrics_list)
|
|
165
168
|
return unless metrics_list && !metrics_list.empty?
|
|
166
169
|
|
|
167
170
|
show_cost = AIA.config.flags.cost
|
|
168
171
|
show_similarity = metrics_list.any? { |m| m.key?(:similarity) }
|
|
169
|
-
|
|
170
|
-
total_output = 0
|
|
171
|
-
total_cost = 0.0
|
|
172
|
-
max_elapsed = 0.0
|
|
172
|
+
totals = MultiModelTotals.new(0, 0, 0.0, 0.0)
|
|
173
173
|
|
|
174
|
+
rows = metrics_list.map { |metrics| multi_model_row(metrics, totals, show_cost, show_similarity) }
|
|
175
|
+
rows << :separator
|
|
176
|
+
rows << multi_model_totals_row(totals, show_cost, show_similarity)
|
|
177
|
+
|
|
178
|
+
table = TTY::Table.new(multi_model_header(show_cost, show_similarity), rows)
|
|
179
|
+
rendered = table.render(:unicode, resize: true,
|
|
180
|
+
alignments: multi_model_alignments(show_cost, show_similarity),
|
|
181
|
+
padding: [0, 1])
|
|
182
|
+
|
|
183
|
+
puts "\nMulti-Model Token Usage"
|
|
184
|
+
puts rendered
|
|
185
|
+
write_to_output_file("Multi-Model Token Usage\n#{rendered}")
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
private
|
|
189
|
+
|
|
190
|
+
# Running totals accumulated while building multi-model table rows.
|
|
191
|
+
MultiModelTotals = Struct.new(:input, :output, :cost, :max_elapsed)
|
|
192
|
+
|
|
193
|
+
def multi_model_header(show_cost, show_similarity)
|
|
174
194
|
header = %w[Model Input Output Total]
|
|
175
195
|
header += %w[Cost x1000] if show_cost
|
|
176
196
|
header << "Time"
|
|
177
197
|
header << "Sim" if show_similarity
|
|
198
|
+
header
|
|
199
|
+
end
|
|
178
200
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
if cost_data[:available]
|
|
196
|
-
row << "$#{'%.5f' % cost_data[:total_cost]}"
|
|
197
|
-
row << "$#{'%.2f' % (cost_data[:total_cost] * 1000)}"
|
|
198
|
-
total_cost += cost_data[:total_cost]
|
|
199
|
-
else
|
|
200
|
-
row += ["N/A", "N/A"]
|
|
201
|
-
end
|
|
202
|
-
end
|
|
201
|
+
def multi_model_row(metrics, totals, show_cost, show_similarity)
|
|
202
|
+
input_tokens = metrics[:input_tokens] || 0
|
|
203
|
+
output_tokens = metrics[:output_tokens] || 0
|
|
204
|
+
elapsed = metrics[:elapsed]
|
|
205
|
+
|
|
206
|
+
totals.input += input_tokens
|
|
207
|
+
totals.output += output_tokens
|
|
208
|
+
totals.max_elapsed = [totals.max_elapsed, elapsed || 0].max
|
|
209
|
+
|
|
210
|
+
row = [(metrics[:model_id] || metrics[:display_name]).to_s,
|
|
211
|
+
input_tokens, output_tokens, input_tokens + output_tokens]
|
|
212
|
+
row += multi_model_cost_cells(metrics, totals) if show_cost
|
|
213
|
+
row << format_elapsed(elapsed)
|
|
214
|
+
row << format_similarity(metrics[:similarity]) if show_similarity
|
|
215
|
+
row
|
|
216
|
+
end
|
|
203
217
|
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
218
|
+
# Cost cells for one row; adds to totals only when pricing is available.
|
|
219
|
+
def multi_model_cost_cells(metrics, totals)
|
|
220
|
+
cost_data = calculate_cost(metrics)
|
|
221
|
+
return %w[N/A N/A] unless cost_data[:available]
|
|
208
222
|
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
223
|
+
cost = cost_data[:total_cost]
|
|
224
|
+
totals.cost += cost
|
|
225
|
+
format_cost_cells(cost)
|
|
226
|
+
end
|
|
213
227
|
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
228
|
+
def format_cost_cells(cost)
|
|
229
|
+
["$#{'%.5f' % cost}", "$#{'%.2f' % (cost * 1000)}"]
|
|
230
|
+
end
|
|
231
|
+
|
|
232
|
+
def multi_model_totals_row(totals, show_cost, show_similarity)
|
|
233
|
+
row = ["TOTAL", totals.input, totals.output, totals.input + totals.output]
|
|
234
|
+
row += totals.cost.positive? ? format_cost_cells(totals.cost) : ["", ""] if show_cost
|
|
235
|
+
row << format_elapsed(totals.max_elapsed)
|
|
236
|
+
row << "" if show_similarity
|
|
237
|
+
row
|
|
238
|
+
end
|
|
224
239
|
|
|
240
|
+
def multi_model_alignments(show_cost, show_similarity)
|
|
225
241
|
alignments = %i[left right right right]
|
|
226
242
|
alignments += %i[right right] if show_cost
|
|
227
243
|
alignments << :right
|
|
228
244
|
alignments << :right if show_similarity
|
|
229
|
-
|
|
230
|
-
table = TTY::Table.new(header, rows)
|
|
231
|
-
rendered = table.render(:unicode, resize: true, alignments: alignments, padding: [0, 1])
|
|
232
|
-
|
|
233
|
-
puts "\nMulti-Model Token Usage"
|
|
234
|
-
puts rendered
|
|
235
|
-
write_to_output_file("Multi-Model Token Usage\n#{rendered}")
|
|
245
|
+
alignments
|
|
236
246
|
end
|
|
237
|
-
# rubocop:enable Metrics/AbcSize, Metrics/MethodLength, Metrics/PerceivedComplexity
|
|
238
|
-
|
|
239
|
-
private
|
|
240
247
|
|
|
241
248
|
def save_chat_history
|
|
242
249
|
history_file = chat_history_file
|
|
@@ -255,8 +262,9 @@ module AIA
|
|
|
255
262
|
return nil if hf == false # --no-history-file disables chat history
|
|
256
263
|
return File.expand_path(hf) if hf
|
|
257
264
|
end
|
|
258
|
-
|
|
259
|
-
|
|
265
|
+
paths = config.respond_to?(:paths) ? config.paths : nil
|
|
266
|
+
if paths.respond_to?(:aia_dir) && paths.aia_dir
|
|
267
|
+
return File.join(File.expand_path(paths.aia_dir), 'chat_history')
|
|
260
268
|
end
|
|
261
269
|
HISTORY_FILE
|
|
262
270
|
end
|
data/lib/aia/utility.rb
CHANGED
|
@@ -132,12 +132,14 @@ module AIA
|
|
|
132
132
|
# Post-connection: connected_mcp_servers is the authoritative name list;
|
|
133
133
|
# mcp_server_tool_counts provides per-server tool counts.
|
|
134
134
|
# Pre-connection fallback: read live from RubyLLM::MCP.clients (--require clients).
|
|
135
|
+
# :reek:TooManyStatements -- authoritative post-connection labels with a live RubyLLM::MCP fallback before connection
|
|
135
136
|
def mcp_client_labels
|
|
136
|
-
|
|
137
|
+
cfg = AIA.config
|
|
138
|
+
return [] if cfg&.flags&.no_mcp
|
|
137
139
|
|
|
138
|
-
connected =
|
|
140
|
+
connected = cfg&.connected_mcp_servers
|
|
139
141
|
unless connected.nil?
|
|
140
|
-
counts =
|
|
142
|
+
counts = cfg&.mcp_server_tool_counts || {}
|
|
141
143
|
return connected.map do |name|
|
|
142
144
|
count = counts[name]
|
|
143
145
|
count ? "#{name}(#{count})" : name
|
|
@@ -9,6 +9,7 @@ module AIA
|
|
|
9
9
|
# No prompt dependency — just handles user input for parameter collection
|
|
10
10
|
end
|
|
11
11
|
|
|
12
|
+
# :reek:TooManyStatements -- one Reline round-trip: question build, readline, Ctrl+D/empty fallbacks, prompt_proc restore
|
|
12
13
|
def request_variable_value(variable_name:, default_value: nil)
|
|
13
14
|
Reline::HISTORY.clear
|
|
14
15
|
|
|
@@ -18,7 +18,7 @@ module AIA
|
|
|
18
18
|
mcp = RobotFactory.mcp_server_configs(config)
|
|
19
19
|
model_id = model.internal_id
|
|
20
20
|
|
|
21
|
-
# rubocop:disable Metrics/BlockLength
|
|
21
|
+
# rubocop:disable-next Metrics/BlockLength
|
|
22
22
|
RobotLab.create_network(name: "aia-verification") do
|
|
23
23
|
worker_a = RobotLab.build(
|
|
24
24
|
name: "verifier-a",
|
|
@@ -52,7 +52,6 @@ module AIA
|
|
|
52
52
|
)
|
|
53
53
|
task :reconcile, reconciler, depends_on: %i[verify_a verify_b]
|
|
54
54
|
end
|
|
55
|
-
# rubocop:enable Metrics/BlockLength
|
|
56
55
|
end
|
|
57
56
|
end
|
|
58
57
|
end
|
data/lib/aia.rb
CHANGED
|
@@ -12,9 +12,13 @@ require_relative 'aia/patches/ruby_llm_tool_error'
|
|
|
12
12
|
require_relative 'aia/patches/ruby_llm_streaming_error'
|
|
13
13
|
|
|
14
14
|
require_relative 'aia/errors'
|
|
15
|
+
require_relative 'aia/timing'
|
|
16
|
+
require_relative 'aia/tool_introspection'
|
|
15
17
|
require_relative 'aia/turn_state'
|
|
16
18
|
require_relative 'aia/content_extractor'
|
|
19
|
+
require_relative 'aia/speech'
|
|
17
20
|
require_relative 'aia/utility'
|
|
21
|
+
require_relative 'aia/mcp_server_config'
|
|
18
22
|
require_relative 'aia/skill_utils'
|
|
19
23
|
require_relative 'aia/version'
|
|
20
24
|
require_relative 'aia/config'
|
|
@@ -142,11 +146,14 @@ module AIA
|
|
|
142
146
|
@config&.output&.append == true
|
|
143
147
|
end
|
|
144
148
|
|
|
149
|
+
# :reek:TooManyStatements -- application boot sequence: parse, validate, log, load plugins, build robots, start session
|
|
145
150
|
def run
|
|
146
151
|
cli_overrides = CLIParser.parse
|
|
147
152
|
@config = Config.setup(cli_overrides)
|
|
148
153
|
return if ConfigValidator.tailor(@config) == :early_exit
|
|
149
154
|
|
|
155
|
+
log_startup
|
|
156
|
+
|
|
150
157
|
PluginLoader.load!(@config)
|
|
151
158
|
start_plugin_monitor
|
|
152
159
|
RobotFactory.setup(@config)
|
|
@@ -162,6 +169,15 @@ module AIA
|
|
|
162
169
|
|
|
163
170
|
private
|
|
164
171
|
|
|
172
|
+
# Record startup in all three log files. Only aia.log gets the full
|
|
173
|
+
# configuration dump; llm.log and mcp.log just note that AIA started,
|
|
174
|
+
# since their configuration is already covered by the aia.log entry.
|
|
175
|
+
def log_startup
|
|
176
|
+
LoggerManager.aia_logger.debug('AIA started up.', @config.to_h)
|
|
177
|
+
LoggerManager.llm_logger.debug('AIA started up.')
|
|
178
|
+
LoggerManager.mcp_logger.debug('AIA started up.')
|
|
179
|
+
end
|
|
180
|
+
|
|
165
181
|
def start_plugin_monitor
|
|
166
182
|
return unless @config.flags.chat
|
|
167
183
|
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: aia
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.0.0.0.pre.
|
|
4
|
+
version: 2.0.0.0.pre.beta2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Dewayne VanHoozer
|
|
@@ -69,16 +69,16 @@ dependencies:
|
|
|
69
69
|
name: lumberjack
|
|
70
70
|
requirement: !ruby/object:Gem::Requirement
|
|
71
71
|
requirements:
|
|
72
|
-
- - "
|
|
72
|
+
- - "~>"
|
|
73
73
|
- !ruby/object:Gem::Version
|
|
74
|
-
version: '
|
|
74
|
+
version: '2.1'
|
|
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: '
|
|
81
|
+
version: '2.1'
|
|
82
82
|
- !ruby/object:Gem::Dependency
|
|
83
83
|
name: activesupport
|
|
84
84
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -422,10 +422,9 @@ files:
|
|
|
422
422
|
- ".config/tocer/configuration.yml"
|
|
423
423
|
- ".envrc"
|
|
424
424
|
- ".loki"
|
|
425
|
-
- ".
|
|
426
|
-
- ".quality/flog_baseline.txt"
|
|
427
|
-
- ".quality/reek_baseline.txt"
|
|
425
|
+
- ".reek.yml"
|
|
428
426
|
- ".rubocop.yml"
|
|
427
|
+
- ".rubocop_strict.yml"
|
|
429
428
|
- ".version"
|
|
430
429
|
- CHANGELOG.md
|
|
431
430
|
- COMMITS.md
|
|
@@ -433,8 +432,11 @@ files:
|
|
|
433
432
|
- LICENSE
|
|
434
433
|
- README.md
|
|
435
434
|
- Rakefile
|
|
435
|
+
- _typos.toml
|
|
436
|
+
- aia.gemspec
|
|
436
437
|
- architecture_review.md
|
|
437
438
|
- bin/aia
|
|
439
|
+
- config/aia.yml
|
|
438
440
|
- docs/AGENTS.md
|
|
439
441
|
- docs/advanced-prompting.md
|
|
440
442
|
- docs/assets/images/aia.png
|
|
@@ -598,6 +600,7 @@ files:
|
|
|
598
600
|
- lib/aia/mcp_connection_manager.rb
|
|
599
601
|
- lib/aia/mcp_discovery.rb
|
|
600
602
|
- lib/aia/mcp_grouper.rb
|
|
603
|
+
- lib/aia/mcp_server_config.rb
|
|
601
604
|
- lib/aia/mcp_utility.rb
|
|
602
605
|
- lib/aia/mention_router.rb
|
|
603
606
|
- lib/aia/model_alias_registry.rb
|
|
@@ -621,6 +624,7 @@ files:
|
|
|
621
624
|
- lib/aia/spawn_handler.rb
|
|
622
625
|
- lib/aia/spawn_spec_parser.rb
|
|
623
626
|
- lib/aia/special_mode_handler.rb
|
|
627
|
+
- lib/aia/speech.rb
|
|
624
628
|
- lib/aia/startup_coordinator.rb
|
|
625
629
|
- lib/aia/streaming_runner.rb
|
|
626
630
|
- lib/aia/system_prompt_assembler.rb
|
|
@@ -628,11 +632,13 @@ files:
|
|
|
628
632
|
- lib/aia/task_decomposer.rb
|
|
629
633
|
- lib/aia/task_executor.rb
|
|
630
634
|
- lib/aia/tfidf_math.rb
|
|
635
|
+
- lib/aia/timing.rb
|
|
631
636
|
- lib/aia/tool_filter.rb
|
|
632
637
|
- lib/aia/tool_filter/tfidf.rb
|
|
633
638
|
- lib/aia/tool_filter/wordnet_expander.rb
|
|
634
639
|
- lib/aia/tool_filter_registry.rb
|
|
635
640
|
- lib/aia/tool_filter_strategy.rb
|
|
641
|
+
- lib/aia/tool_introspection.rb
|
|
636
642
|
- lib/aia/tool_loader.rb
|
|
637
643
|
- lib/aia/tool_utility.rb
|
|
638
644
|
- lib/aia/tools/delegate_to_foreman_tool.rb
|
|
@@ -690,7 +696,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
690
696
|
- !ruby/object:Gem::Version
|
|
691
697
|
version: '0'
|
|
692
698
|
requirements: []
|
|
693
|
-
rubygems_version: 4.0.
|
|
699
|
+
rubygems_version: 4.0.20
|
|
694
700
|
specification_version: 4
|
|
695
701
|
summary: Multi-model AI CLI with dynamic prompts, consensus responses, shell & Ruby
|
|
696
702
|
integration, and seamless chat workflows.
|
data/.quality/flay_baseline.txt
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
1866838872
|
data/.quality/flog_baseline.txt
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
141.7 AIA::ToolFilterStrategy#display_timing_table
|
|
2
|
-
137.5 AIA::ConfigurationDirectives#model
|
|
3
|
-
122.8 AIA::SpecialModeHandler#handle_decomposition
|
|
4
|
-
108.0 AIA::ConfigValidator::load_mcp_tools_grouped
|
|
5
|
-
96.2 AIA::CLIParser::list_available_models
|
|
6
|
-
94.0 AIA::UIPresenter#display_multi_model_metrics
|
|
7
|
-
89.1 AIA::UtilityDirectives#tools
|
|
8
|
-
79.0 AIA::ModelDirectives#show_rubyllm_models
|
|
9
|
-
74.3 AIA::DebateHandler#handle
|
|
10
|
-
71.0 AIA::ConfigurationDirectives#cost
|
|
11
|
-
69.3 AIA::LayeredOrchestrator#handle
|
|
12
|
-
67.1 AIA::UtilityDirectives#mcp
|
|
13
|
-
64.8 AIA::PromptHandler#apply_root_shorthands
|
|
14
|
-
63.2 AIA::ConfigValidator::handle_mcp_list
|
|
15
|
-
62.9 AIA::ModelDirectives#show_ollama_models
|
|
16
|
-
61.9 AIA::ConfigValidator::process_role_configuration
|
|
17
|
-
61.3 AIA::ToolLoader#filtered_tools
|
|
18
|
-
60.7 AIA::SessionTracker#record_network_turn
|
|
19
|
-
60.2 AIA::MCPConnectionManager#connect_one
|
|
20
|
-
58.4 AIA::ChatLoop#speak
|
|
21
|
-
58.4 AIA::WebAndFileDirectives#skills
|
|
22
|
-
57.7 AIA::LayeredOrchestrator#run_specialists_wave
|
|
23
|
-
56.2 AIA::McpParser::convert_mcp_servers_format
|
|
24
|
-
54.8 AIA::MentionRouter#speak
|
|
25
|
-
54.6 AIA::ContextDirectives#review
|
|
26
|
-
54.3 AIA::CLIParser::validate_role_exists
|
|
27
|
-
52.6 AIA::ModelDirectives#show_lms_models
|
|
28
|
-
50.9 AIA::ConfigValidator::load_local_tools
|
|
29
|
-
50.2 AIA::Directive::help
|
data/.quality/reek_baseline.txt
DELETED
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
1 lib/aia.rb
|
|
2
|
-
22 lib/aia/chat_loop.rb
|
|
3
|
-
11 lib/aia/config.rb
|
|
4
|
-
23 lib/aia/config/cli_parser.rb
|
|
5
|
-
4 lib/aia/config/mcp_parser.rb
|
|
6
|
-
1 lib/aia/config/model_spec.rb
|
|
7
|
-
23 lib/aia/config/validator.rb
|
|
8
|
-
7 lib/aia/content_extractor.rb
|
|
9
|
-
1 lib/aia/cost_calculator.rb
|
|
10
|
-
1 lib/aia/crew.rb
|
|
11
|
-
8 lib/aia/debate_handler.rb
|
|
12
|
-
6 lib/aia/delegate_handler.rb
|
|
13
|
-
4 lib/aia/directive.rb
|
|
14
|
-
2 lib/aia/directive_processor.rb
|
|
15
|
-
15 lib/aia/directives/configuration_directives.rb
|
|
16
|
-
12 lib/aia/directives/context_directives.rb
|
|
17
|
-
10 lib/aia/directives/execution_directives.rb
|
|
18
|
-
12 lib/aia/directives/model_directives.rb
|
|
19
|
-
1 lib/aia/directives/trakflow_directives.rb
|
|
20
|
-
11 lib/aia/directives/utility_directives.rb
|
|
21
|
-
11 lib/aia/directives/web_and_file_directives.rb
|
|
22
|
-
2 lib/aia/fact_asserter.rb
|
|
23
|
-
1 lib/aia/fzf.rb
|
|
24
|
-
1 lib/aia/history_transfer.rb
|
|
25
|
-
19 lib/aia/layered_orchestrator.rb
|
|
26
|
-
10 lib/aia/logger.rb
|
|
27
|
-
1 lib/aia/mcp_config_normalizer.rb
|
|
28
|
-
17 lib/aia/mcp_connection_manager.rb
|
|
29
|
-
2 lib/aia/mcp_discovery.rb
|
|
30
|
-
1 lib/aia/mcp_grouper.rb
|
|
31
|
-
2 lib/aia/mcp_utility.rb
|
|
32
|
-
17 lib/aia/mention_router.rb
|
|
33
|
-
2 lib/aia/model_switch_handler.rb
|
|
34
|
-
7 lib/aia/network_builder.rb
|
|
35
|
-
2 lib/aia/network_memory_manager.rb
|
|
36
|
-
1 lib/aia/patches/ruby_llm_streaming_error.rb
|
|
37
|
-
2 lib/aia/patches/ruby_llm_tool_error.rb
|
|
38
|
-
15 lib/aia/pipeline_orchestrator.rb
|
|
39
|
-
2 lib/aia/plugin_loader.rb
|
|
40
|
-
6 lib/aia/plugin_monitor.rb
|
|
41
|
-
2 lib/aia/prompt_decomposer.rb
|
|
42
|
-
19 lib/aia/prompt_handler.rb
|
|
43
|
-
1 lib/aia/robot_builder.rb
|
|
44
|
-
7 lib/aia/robot_factory.rb
|
|
45
|
-
1 lib/aia/robot_namer.rb
|
|
46
|
-
12 lib/aia/session.rb
|
|
47
|
-
5 lib/aia/session_tracker.rb
|
|
48
|
-
2 lib/aia/similarity_scorer.rb
|
|
49
|
-
3 lib/aia/skill_utils.rb
|
|
50
|
-
1 lib/aia/spawn_handler.rb
|
|
51
|
-
14 lib/aia/special_mode_handler.rb
|
|
52
|
-
2 lib/aia/startup_coordinator.rb
|
|
53
|
-
8 lib/aia/streaming_runner.rb
|
|
54
|
-
5 lib/aia/system_prompt_assembler.rb
|
|
55
|
-
10 lib/aia/task_coordinator.rb
|
|
56
|
-
2 lib/aia/tfidf_math.rb
|
|
57
|
-
2 lib/aia/tool_filter.rb
|
|
58
|
-
2 lib/aia/tool_filter/tfidf.rb
|
|
59
|
-
1 lib/aia/tool_filter/wordnet_expander.rb
|
|
60
|
-
12 lib/aia/tool_filter_strategy.rb
|
|
61
|
-
13 lib/aia/tool_loader.rb
|
|
62
|
-
1 lib/aia/tools/delegate_to_foreman_tool.rb
|
|
63
|
-
1 lib/aia/tools/recruit_robot_tool.rb
|
|
64
|
-
1 lib/aia/tools/reskill_robot_tool.rb
|
|
65
|
-
4 lib/aia/tools/task_board_tool.rb
|
|
66
|
-
10 lib/aia/trakflow_bridge.rb
|
|
67
|
-
11 lib/aia/turn_state.rb
|
|
68
|
-
7 lib/aia/ui_presenter.rb
|
|
69
|
-
3 lib/aia/utility.rb
|
|
70
|
-
1 lib/aia/variable_input_collector.rb
|
|
71
|
-
1 lib/aia/verification_network.rb
|
|
72
|
-
26 plugins/cli_help_analyzer_tool.rb
|
|
73
|
-
4 plugins/git_context.rb
|
|
74
|
-
1 plugins/joke.rb
|
|
75
|
-
16 plugins/jq_tool.rb
|
|
76
|
-
2 plugins/list_ruby_methods_tool.rb
|
|
77
|
-
7 plugins/memory_tool.rb
|
|
78
|
-
1 plugins/quick_file_tool.rb
|
|
79
|
-
2 plugins/search_files_tool.rb
|
|
80
|
-
10 plugins/search_replace_tool.rb
|