aia 0.9.11 → 0.9.12
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/.version +1 -1
- data/CHANGELOG.md +66 -2
- data/README.md +133 -4
- data/docs/advanced-prompting.md +721 -0
- data/docs/cli-reference.md +582 -0
- data/docs/configuration.md +347 -0
- data/docs/contributing.md +332 -0
- data/docs/directives-reference.md +490 -0
- data/docs/examples/index.md +277 -0
- data/docs/examples/mcp/index.md +479 -0
- data/docs/examples/prompts/analysis/index.md +78 -0
- data/docs/examples/prompts/automation/index.md +108 -0
- data/docs/examples/prompts/development/index.md +125 -0
- data/docs/examples/prompts/index.md +333 -0
- data/docs/examples/prompts/learning/index.md +127 -0
- data/docs/examples/prompts/writing/index.md +62 -0
- data/docs/examples/tools/index.md +292 -0
- data/docs/faq.md +414 -0
- data/docs/guides/available-models.md +366 -0
- data/docs/guides/basic-usage.md +477 -0
- data/docs/guides/chat.md +474 -0
- data/docs/guides/executable-prompts.md +417 -0
- data/docs/guides/first-prompt.md +454 -0
- data/docs/guides/getting-started.md +455 -0
- data/docs/guides/image-generation.md +507 -0
- data/docs/guides/index.md +46 -0
- data/docs/guides/models.md +507 -0
- data/docs/guides/tools.md +856 -0
- data/docs/index.md +173 -0
- data/docs/installation.md +238 -0
- data/docs/mcp-integration.md +612 -0
- data/docs/prompt_management.md +579 -0
- data/docs/security.md +629 -0
- data/docs/tools-and-mcp-examples.md +1186 -0
- data/docs/workflows-and-pipelines.md +563 -0
- data/examples/tools/mcp/github_mcp_server.json +11 -0
- data/examples/tools/mcp/imcp.json +7 -0
- data/lib/aia/chat_processor_service.rb +19 -3
- data/lib/aia/config/base.rb +224 -0
- data/lib/aia/config/cli_parser.rb +409 -0
- data/lib/aia/config/defaults.rb +88 -0
- data/lib/aia/config/file_loader.rb +131 -0
- data/lib/aia/config/validator.rb +184 -0
- data/lib/aia/config.rb +10 -860
- data/lib/aia/directive_processor.rb +27 -372
- data/lib/aia/directives/configuration.rb +114 -0
- data/lib/aia/directives/execution.rb +37 -0
- data/lib/aia/directives/models.rb +178 -0
- data/lib/aia/directives/registry.rb +120 -0
- data/lib/aia/directives/utility.rb +70 -0
- data/lib/aia/directives/web_and_file.rb +71 -0
- data/lib/aia/prompt_handler.rb +23 -3
- data/lib/aia/ruby_llm_adapter.rb +307 -128
- data/lib/aia/session.rb +27 -14
- data/lib/aia/utility.rb +12 -8
- data/lib/aia.rb +11 -2
- data/lib/extensions/ruby_llm/.irbrc +56 -0
- data/mkdocs.yml +165 -0
- metadata +77 -20
- /data/{images → docs/assets/images}/aia.png +0 -0
data/lib/aia/session.rb
CHANGED
@@ -313,26 +313,39 @@ module AIA
|
|
313
313
|
def handle_piped_input
|
314
314
|
return if STDIN.tty?
|
315
315
|
|
316
|
-
|
317
|
-
|
318
|
-
STDIN.reopen("/dev/tty")
|
316
|
+
# Additional check: see if /dev/tty is available before attempting to use it
|
317
|
+
return unless File.exist?("/dev/tty") && File.readable?("/dev/tty") && File.writable?("/dev/tty")
|
319
318
|
|
320
|
-
|
319
|
+
begin
|
320
|
+
original_stdin = STDIN.dup
|
321
|
+
piped_input = STDIN.read.strip
|
322
|
+
STDIN.reopen("/dev/tty")
|
321
323
|
|
322
|
-
|
323
|
-
processed_input = @chat_prompt.to_s
|
324
|
+
return if piped_input.empty?
|
324
325
|
|
325
|
-
|
326
|
+
@chat_prompt.text = piped_input
|
327
|
+
processed_input = @chat_prompt.to_s
|
326
328
|
|
327
|
-
|
328
|
-
response = @chat_processor.process_prompt(@context_manager.get_context)
|
329
|
+
@context_manager.add_to_context(role: "user", content: processed_input)
|
329
330
|
|
330
|
-
|
331
|
-
|
332
|
-
@chat_processor.speak(response) if AIA.speak?
|
333
|
-
@ui_presenter.display_separator
|
331
|
+
@ui_presenter.display_thinking_animation
|
332
|
+
response = @chat_processor.process_prompt(@context_manager.get_context)
|
334
333
|
|
335
|
-
|
334
|
+
@context_manager.add_to_context(role: "assistant", content: response)
|
335
|
+
@chat_processor.output_response(response)
|
336
|
+
@chat_processor.speak(response) if AIA.speak?
|
337
|
+
@ui_presenter.display_separator
|
338
|
+
|
339
|
+
STDIN.reopen(original_stdin)
|
340
|
+
rescue Errno::ENXIO => e
|
341
|
+
# Handle case where /dev/tty is not available (e.g., in some containerized environments)
|
342
|
+
warn "Warning: Unable to handle piped input due to TTY unavailability: #{e.message}"
|
343
|
+
return
|
344
|
+
rescue StandardError => e
|
345
|
+
# Handle any other errors gracefully
|
346
|
+
warn "Warning: Error handling piped input: #{e.message}"
|
347
|
+
return
|
348
|
+
end
|
336
349
|
end
|
337
350
|
|
338
351
|
def run_chat_loop
|
data/lib/aia/utility.rb
CHANGED
@@ -6,11 +6,15 @@ module AIA
|
|
6
6
|
class Utility
|
7
7
|
class << self
|
8
8
|
def tools?
|
9
|
-
!AIA.config.tool_names.empty?
|
9
|
+
AIA.config&.tool_names && !AIA.config.tool_names.empty?
|
10
|
+
end
|
11
|
+
|
12
|
+
def user_tools?
|
13
|
+
AIA.config&.tool_paths && !AIA.config.tool_paths.empty?
|
10
14
|
end
|
11
15
|
|
12
16
|
def supports_tools?
|
13
|
-
AIA.config
|
17
|
+
AIA.config&.client&.model&.supports_functions? || false
|
14
18
|
end
|
15
19
|
|
16
20
|
|
@@ -28,15 +32,15 @@ module AIA
|
|
28
32
|
|
29
33
|
, ,
|
30
34
|
(\\____/) AI Assistant (v#{AIA::VERSION}) is Online
|
31
|
-
(_oo_) #{AIA.config
|
32
|
-
(O) using #{AIA.config
|
35
|
+
(_oo_) #{AIA.config&.model || 'unknown-model'}#{supports_tools? ? ' (supports tools)' : ''}
|
36
|
+
(O) using #{AIA.config&.adapter || 'unknown-adapter'} (v#{RubyLLM::VERSION}#{mcp_version})
|
33
37
|
__||__ \\) model db was last refreshed on
|
34
|
-
[/______\\] / #{AIA.config
|
35
|
-
/ \\__AI__/ \\/ #{tools? ? 'You can share my tools' : 'I did not bring any tools'}
|
38
|
+
[/______\\] / #{AIA.config&.last_refresh || 'unknown'}
|
39
|
+
/ \\__AI__/ \\/ #{user_tools? ? 'I will also use your tools' : (tools? ? 'You can share my tools' : 'I did not bring any tools')}
|
36
40
|
/ /__\\
|
37
|
-
(\\ /____\\ #{tools? ? 'My Toolbox contains:' : ''}
|
41
|
+
(\\ /____\\ #{user_tools? && tools? ? 'My Toolbox contains:' : ''}
|
38
42
|
ROBOT
|
39
|
-
if tools?
|
43
|
+
if user_tools? && tools?
|
40
44
|
tool_names = AIA.config.respond_to?(:tool_names) ? AIA.config.tool_names : AIA.config.tools
|
41
45
|
if tool_names && !tool_names.to_s.empty?
|
42
46
|
puts WordWrapper::MinimumRaggedness.new(
|
data/lib/aia.rb
CHANGED
@@ -89,8 +89,17 @@ module AIA
|
|
89
89
|
build_flags
|
90
90
|
|
91
91
|
# Load Fzf if fuzzy search is enabled and fzf is installed
|
92
|
-
if @config.fuzzy
|
93
|
-
|
92
|
+
if @config.fuzzy
|
93
|
+
begin
|
94
|
+
# Cache fzf availability check for better performance
|
95
|
+
if system('which fzf >/dev/null 2>&1')
|
96
|
+
require_relative 'aia/fzf'
|
97
|
+
else
|
98
|
+
warn "Warning: Fuzzy search enabled but fzf not found. Install fzf for enhanced search capabilities."
|
99
|
+
end
|
100
|
+
rescue StandardError => e
|
101
|
+
warn "Warning: Failed to load fzf: #{e.message}"
|
102
|
+
end
|
94
103
|
end
|
95
104
|
|
96
105
|
prompt_handler = PromptHandler.new
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'ruby_llm'
|
2
|
+
require_relative 'modalities'
|
3
|
+
|
4
|
+
RubyLLM.configure do |config|
|
5
|
+
config.openai_api_key = ENV['OPENAI_API_KEY']
|
6
|
+
end
|
7
|
+
|
8
|
+
C = RubyLLM::Chat.new
|
9
|
+
M = C.model.modalities
|
10
|
+
|
11
|
+
__END__
|
12
|
+
|
13
|
+
# I = ["text", "image", "pdf", "audio", "file"]
|
14
|
+
# O = ["text", "embeddings", "audio", "image", "moderation"]
|
15
|
+
|
16
|
+
# I.each do |i|
|
17
|
+
# puts '#'
|
18
|
+
# O.each do |o|
|
19
|
+
# puts <<~HEREDOC
|
20
|
+
# def #{i}_to_#{o}? = input.include?('#{i}') && output.include?('#{o}')
|
21
|
+
# HEREDOC
|
22
|
+
# end
|
23
|
+
# end
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
#
|
28
|
+
def text_to_text? = input.include?('text') && output.include?('text')
|
29
|
+
def text_to_embeddings? = input.include?('text') && output.include?('embeddings')
|
30
|
+
def text_to_audio? = input.include?('text') && output.include?('audio')
|
31
|
+
def text_to_image? = input.include?('text') && output.include?('image')
|
32
|
+
def text_to_moderation? = input.include?('text') && output.include?('moderation')
|
33
|
+
#
|
34
|
+
def image_to_text? = input.include?('image') && output.include?('text')
|
35
|
+
def image_to_embeddings? = input.include?('image') && output.include?('embeddings')
|
36
|
+
def image_to_audio? = input.include?('image') && output.include?('audio')
|
37
|
+
def image_to_image? = input.include?('image') && output.include?('image')
|
38
|
+
def image_to_moderation? = input.include?('image') && output.include?('moderation')
|
39
|
+
#
|
40
|
+
def pdf_to_text? = input.include?('pdf') && output.include?('text')
|
41
|
+
def pdf_to_embeddings? = input.include?('pdf') && output.include?('embeddings')
|
42
|
+
def pdf_to_audio? = input.include?('pdf') && output.include?('audio')
|
43
|
+
def pdf_to_image? = input.include?('pdf') && output.include?('image')
|
44
|
+
def pdf_to_moderation? = input.include?('pdf') && output.include?('moderation')
|
45
|
+
#
|
46
|
+
def audio_to_text? = input.include?('audio') && output.include?('text')
|
47
|
+
def audio_to_embeddings? = input.include?('audio') && output.include?('embeddings')
|
48
|
+
def audio_to_audio? = input.include?('audio') && output.include?('audio')
|
49
|
+
def audio_to_image? = input.include?('audio') && output.include?('image')
|
50
|
+
def audio_to_moderation? = input.include?('audio') && output.include?('moderation')
|
51
|
+
#
|
52
|
+
def file_to_text? = input.include?('file') && output.include?('text')
|
53
|
+
def file_to_embeddings? = input.include?('file') && output.include?('embeddings')
|
54
|
+
def file_to_audio? = input.include?('file') && output.include?('audio')
|
55
|
+
def file_to_image? = input.include?('file') && output.include?('image')
|
56
|
+
def file_to_moderation? = input.include?('file') && output.include?('moderation')
|
data/mkdocs.yml
ADDED
@@ -0,0 +1,165 @@
|
|
1
|
+
# MkDocs Configuration for AIA Documentation
|
2
|
+
site_name: AIA - AI Assistant
|
3
|
+
site_description: A powerful CLI tool for dynamic prompt management and AI interaction
|
4
|
+
site_author: Dewayne VanHoozer
|
5
|
+
site_url: https://madbomber.github.io/aia
|
6
|
+
copyright: Copyright © 2024 Dewayne VanHoozer
|
7
|
+
|
8
|
+
# Repository information
|
9
|
+
repo_name: madbomber/aia
|
10
|
+
repo_url: https://github.com/madbomber/aia
|
11
|
+
edit_uri: edit/main/docs/
|
12
|
+
|
13
|
+
# Configuration
|
14
|
+
theme:
|
15
|
+
name: material
|
16
|
+
|
17
|
+
# Color scheme - Default to light mode
|
18
|
+
palette:
|
19
|
+
# Palette toggle for light mode (default)
|
20
|
+
- scheme: default
|
21
|
+
primary: blue
|
22
|
+
accent: blue
|
23
|
+
toggle:
|
24
|
+
icon: material/brightness-7
|
25
|
+
name: Switch to dark mode
|
26
|
+
|
27
|
+
# Palette toggle for dark mode
|
28
|
+
- scheme: slate
|
29
|
+
primary: blue
|
30
|
+
accent: blue
|
31
|
+
toggle:
|
32
|
+
icon: material/brightness-4
|
33
|
+
name: Switch to light mode
|
34
|
+
|
35
|
+
# Typography
|
36
|
+
font:
|
37
|
+
text: Roboto
|
38
|
+
code: Roboto Mono
|
39
|
+
|
40
|
+
# Theme features
|
41
|
+
features:
|
42
|
+
# Navigation
|
43
|
+
- navigation.instant
|
44
|
+
- navigation.tracking
|
45
|
+
- navigation.tabs
|
46
|
+
- navigation.tabs.sticky
|
47
|
+
- navigation.sections
|
48
|
+
- navigation.path
|
49
|
+
- navigation.indexes
|
50
|
+
- navigation.top
|
51
|
+
|
52
|
+
# Table of contents
|
53
|
+
- toc.follow
|
54
|
+
|
55
|
+
# Search
|
56
|
+
- search.suggest
|
57
|
+
- search.highlight
|
58
|
+
- search.share
|
59
|
+
|
60
|
+
# Header
|
61
|
+
- header.autohide
|
62
|
+
|
63
|
+
# Content
|
64
|
+
- content.code.copy
|
65
|
+
- content.code.annotate
|
66
|
+
- content.tabs.link
|
67
|
+
- content.tooltips
|
68
|
+
- content.action.edit
|
69
|
+
- content.action.view
|
70
|
+
|
71
|
+
# Plugins
|
72
|
+
plugins:
|
73
|
+
- search:
|
74
|
+
separator: '[\s\-,:!=\[\]()"`/]+|\.(?!\d)|&[lg]t;|(?!\b)(?=[A-Z][a-z])'
|
75
|
+
|
76
|
+
# Extensions
|
77
|
+
markdown_extensions:
|
78
|
+
# Python Markdown
|
79
|
+
- abbr
|
80
|
+
- admonition
|
81
|
+
- attr_list
|
82
|
+
- def_list
|
83
|
+
- footnotes
|
84
|
+
- md_in_html
|
85
|
+
- toc:
|
86
|
+
permalink: true
|
87
|
+
title: On this page
|
88
|
+
|
89
|
+
# Python Markdown Extensions
|
90
|
+
- pymdownx.arithmatex:
|
91
|
+
generic: true
|
92
|
+
- pymdownx.betterem:
|
93
|
+
smart_enable: all
|
94
|
+
- pymdownx.caret
|
95
|
+
- pymdownx.details
|
96
|
+
- pymdownx.emoji:
|
97
|
+
emoji_generator: !!python/name:material.extensions.emoji.to_svg
|
98
|
+
emoji_index: !!python/name:material.extensions.emoji.twemoji
|
99
|
+
- pymdownx.highlight:
|
100
|
+
anchor_linenums: true
|
101
|
+
line_spans: __span
|
102
|
+
pygments_lang_class: true
|
103
|
+
- pymdownx.inlinehilite
|
104
|
+
- pymdownx.keys
|
105
|
+
- pymdownx.magiclink:
|
106
|
+
repo_url_shorthand: true
|
107
|
+
user: madbomber
|
108
|
+
repo: aia
|
109
|
+
- pymdownx.mark
|
110
|
+
- pymdownx.smartsymbols
|
111
|
+
- pymdownx.superfences:
|
112
|
+
custom_fences:
|
113
|
+
- name: mermaid
|
114
|
+
class: mermaid
|
115
|
+
format: !!python/name:pymdownx.superfences.fence_code_format
|
116
|
+
- pymdownx.tabbed:
|
117
|
+
alternate_style: true
|
118
|
+
- pymdownx.tasklist:
|
119
|
+
custom_checkbox: true
|
120
|
+
- pymdownx.tilde
|
121
|
+
|
122
|
+
# Extra CSS and JavaScript
|
123
|
+
extra_css:
|
124
|
+
- assets/css/custom.css
|
125
|
+
|
126
|
+
extra_javascript:
|
127
|
+
- assets/js/mathjax.js
|
128
|
+
- https://polyfill.io/v3/polyfill.min.js?features=es6
|
129
|
+
- https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js
|
130
|
+
|
131
|
+
# Social media and extra configuration
|
132
|
+
extra:
|
133
|
+
social:
|
134
|
+
- icon: fontawesome/brands/github
|
135
|
+
link: https://github.com/madbomber/aia
|
136
|
+
name: AIA on GitHub
|
137
|
+
- icon: fontawesome/solid/gem
|
138
|
+
link: https://rubygems.org/gems/aia
|
139
|
+
name: AIA on RubyGems
|
140
|
+
|
141
|
+
version:
|
142
|
+
provider: mike
|
143
|
+
|
144
|
+
# Navigation
|
145
|
+
nav:
|
146
|
+
- Home: index.md
|
147
|
+
- Installation: installation.md
|
148
|
+
- Configuration: configuration.md
|
149
|
+
- Guides:
|
150
|
+
- guides/index.md
|
151
|
+
- Getting Started: guides/getting-started.md
|
152
|
+
- Chat Mode: guides/chat.md
|
153
|
+
- Working with Models: guides/models.md
|
154
|
+
- Available Models: guides/available-models.md
|
155
|
+
- Image Generation: guides/image-generation.md
|
156
|
+
- Tools Integration: guides/tools.md
|
157
|
+
- Reference:
|
158
|
+
- CLI Parameters: cli-reference.md
|
159
|
+
- Directives: directives-reference.md
|
160
|
+
- Advanced:
|
161
|
+
- Prompt Management: prompt_management.md
|
162
|
+
- Advanced Prompting: advanced-prompting.md
|
163
|
+
- Workflows & Pipelines: workflows-and-pipelines.md
|
164
|
+
- MCP Integration: mcp-integration.md
|
165
|
+
- Tools & MCP Examples: tools-and-mcp-examples.md
|
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: 0.9.
|
4
|
+
version: 0.9.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dewayne VanHoozer
|
@@ -37,6 +37,20 @@ dependencies:
|
|
37
37
|
- - ">="
|
38
38
|
- !ruby/object:Gem::Version
|
39
39
|
version: '0'
|
40
|
+
- !ruby/object:Gem::Dependency
|
41
|
+
name: async
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0'
|
47
|
+
type: :runtime
|
48
|
+
prerelease: false
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
40
54
|
- !ruby/object:Gem::Dependency
|
41
55
|
name: faraday
|
42
56
|
requirement: !ruby/object:Gem::Requirement
|
@@ -71,14 +85,14 @@ dependencies:
|
|
71
85
|
requirements:
|
72
86
|
- - ">="
|
73
87
|
- !ruby/object:Gem::Version
|
74
|
-
version: 1.
|
88
|
+
version: 1.5.1
|
75
89
|
type: :runtime
|
76
90
|
prerelease: false
|
77
91
|
version_requirements: !ruby/object:Gem::Requirement
|
78
92
|
requirements:
|
79
93
|
- - ">="
|
80
94
|
- !ruby/object:Gem::Version
|
81
|
-
version: 1.
|
95
|
+
version: 1.5.1
|
82
96
|
- !ruby/object:Gem::Dependency
|
83
97
|
name: ruby_llm-mcp
|
84
98
|
requirement: !ruby/object:Gem::Requirement
|
@@ -289,20 +303,16 @@ dependencies:
|
|
289
303
|
- - ">="
|
290
304
|
- !ruby/object:Gem::Version
|
291
305
|
version: '0'
|
292
|
-
description:
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
for developers, power users, and AI enthusiasts alike. Transform
|
303
|
-
your command line into a powerhouse of creativity and efficiency.
|
304
|
-
Elevate your workflow with AIA and unleash the full potential of
|
305
|
-
AI at your fingertips!
|
306
|
+
description: 'AIA is a revolutionary CLI console application that brings multi-model
|
307
|
+
AI capabilities to your command line, supporting 20+ providers including OpenAI,
|
308
|
+
Anthropic, and Google. Run multiple AI models simultaneously for comparison, get
|
309
|
+
consensus responses from collaborative AI teams, or compare individual outputs side-by-side.
|
310
|
+
With dynamic prompt management, embedded directives, shell and Ruby integration,
|
311
|
+
interactive chats, and comprehensive history tracking, AIA transforms how you interact
|
312
|
+
with AI. Perfect for developers and AI enthusiasts who want to harness the collective
|
313
|
+
intelligence of multiple AI models from a single, powerful interface.
|
314
|
+
|
315
|
+
'
|
306
316
|
email:
|
307
317
|
- dvanhoozer@gmail.com
|
308
318
|
executables:
|
@@ -321,6 +331,39 @@ files:
|
|
321
331
|
- Rakefile
|
322
332
|
- _notes.txt
|
323
333
|
- bin/aia
|
334
|
+
- docs/advanced-prompting.md
|
335
|
+
- docs/assets/images/aia.png
|
336
|
+
- docs/cli-reference.md
|
337
|
+
- docs/configuration.md
|
338
|
+
- docs/contributing.md
|
339
|
+
- docs/directives-reference.md
|
340
|
+
- docs/examples/index.md
|
341
|
+
- docs/examples/mcp/index.md
|
342
|
+
- docs/examples/prompts/analysis/index.md
|
343
|
+
- docs/examples/prompts/automation/index.md
|
344
|
+
- docs/examples/prompts/development/index.md
|
345
|
+
- docs/examples/prompts/index.md
|
346
|
+
- docs/examples/prompts/learning/index.md
|
347
|
+
- docs/examples/prompts/writing/index.md
|
348
|
+
- docs/examples/tools/index.md
|
349
|
+
- docs/faq.md
|
350
|
+
- docs/guides/available-models.md
|
351
|
+
- docs/guides/basic-usage.md
|
352
|
+
- docs/guides/chat.md
|
353
|
+
- docs/guides/executable-prompts.md
|
354
|
+
- docs/guides/first-prompt.md
|
355
|
+
- docs/guides/getting-started.md
|
356
|
+
- docs/guides/image-generation.md
|
357
|
+
- docs/guides/index.md
|
358
|
+
- docs/guides/models.md
|
359
|
+
- docs/guides/tools.md
|
360
|
+
- docs/index.md
|
361
|
+
- docs/installation.md
|
362
|
+
- docs/mcp-integration.md
|
363
|
+
- docs/prompt_management.md
|
364
|
+
- docs/security.md
|
365
|
+
- docs/tools-and-mcp-examples.md
|
366
|
+
- docs/workflows-and-pipelines.md
|
324
367
|
- examples/README.md
|
325
368
|
- examples/directives/ask.rb
|
326
369
|
- examples/headlines
|
@@ -337,11 +380,12 @@ files:
|
|
337
380
|
- examples/tools/incomplete/workflow_manager_tool.rb
|
338
381
|
- examples/tools/list_files.rb
|
339
382
|
- examples/tools/mcp/README.md
|
383
|
+
- examples/tools/mcp/github_mcp_server.json
|
340
384
|
- examples/tools/mcp/github_mcp_server.rb
|
385
|
+
- examples/tools/mcp/imcp.json
|
341
386
|
- examples/tools/mcp/imcp.rb
|
342
387
|
- examples/tools/read_file.rb
|
343
388
|
- examples/tools/run_shell_command.rb
|
344
|
-
- images/aia.png
|
345
389
|
- justfile
|
346
390
|
- lib/aia.rb
|
347
391
|
- lib/aia/aia_completion.bash
|
@@ -349,8 +393,19 @@ files:
|
|
349
393
|
- lib/aia/aia_completion.zsh
|
350
394
|
- lib/aia/chat_processor_service.rb
|
351
395
|
- lib/aia/config.rb
|
396
|
+
- lib/aia/config/base.rb
|
397
|
+
- lib/aia/config/cli_parser.rb
|
398
|
+
- lib/aia/config/defaults.rb
|
399
|
+
- lib/aia/config/file_loader.rb
|
400
|
+
- lib/aia/config/validator.rb
|
352
401
|
- lib/aia/context_manager.rb
|
353
402
|
- lib/aia/directive_processor.rb
|
403
|
+
- lib/aia/directives/configuration.rb
|
404
|
+
- lib/aia/directives/execution.rb
|
405
|
+
- lib/aia/directives/models.rb
|
406
|
+
- lib/aia/directives/registry.rb
|
407
|
+
- lib/aia/directives/utility.rb
|
408
|
+
- lib/aia/directives/web_and_file.rb
|
354
409
|
- lib/aia/fzf.rb
|
355
410
|
- lib/aia/history_manager.rb
|
356
411
|
- lib/aia/prompt_handler.rb
|
@@ -360,6 +415,7 @@ files:
|
|
360
415
|
- lib/aia/utility.rb
|
361
416
|
- lib/aia/version.rb
|
362
417
|
- lib/extensions/openstruct_merge.rb
|
418
|
+
- lib/extensions/ruby_llm/.irbrc
|
363
419
|
- lib/extensions/ruby_llm/modalities.rb
|
364
420
|
- lib/refinements/string.rb
|
365
421
|
- main.just
|
@@ -369,6 +425,7 @@ files:
|
|
369
425
|
- mcp_servers/launcher.json
|
370
426
|
- mcp_servers/playwright_server_definition.json
|
371
427
|
- mcp_servers/timeserver.json
|
428
|
+
- mkdocs.yml
|
372
429
|
homepage: https://github.com/MadBomber/aia
|
373
430
|
licenses:
|
374
431
|
- MIT
|
@@ -393,6 +450,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
393
450
|
requirements: []
|
394
451
|
rubygems_version: 3.7.1
|
395
452
|
specification_version: 4
|
396
|
-
summary:
|
397
|
-
workflows.
|
453
|
+
summary: Multi-model AI CLI with dynamic prompts, consensus responses, shell & Ruby
|
454
|
+
integration, and seamless chat workflows.
|
398
455
|
test_files: []
|
File without changes
|