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.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/.version +1 -1
  3. data/CHANGELOG.md +66 -2
  4. data/README.md +133 -4
  5. data/docs/advanced-prompting.md +721 -0
  6. data/docs/cli-reference.md +582 -0
  7. data/docs/configuration.md +347 -0
  8. data/docs/contributing.md +332 -0
  9. data/docs/directives-reference.md +490 -0
  10. data/docs/examples/index.md +277 -0
  11. data/docs/examples/mcp/index.md +479 -0
  12. data/docs/examples/prompts/analysis/index.md +78 -0
  13. data/docs/examples/prompts/automation/index.md +108 -0
  14. data/docs/examples/prompts/development/index.md +125 -0
  15. data/docs/examples/prompts/index.md +333 -0
  16. data/docs/examples/prompts/learning/index.md +127 -0
  17. data/docs/examples/prompts/writing/index.md +62 -0
  18. data/docs/examples/tools/index.md +292 -0
  19. data/docs/faq.md +414 -0
  20. data/docs/guides/available-models.md +366 -0
  21. data/docs/guides/basic-usage.md +477 -0
  22. data/docs/guides/chat.md +474 -0
  23. data/docs/guides/executable-prompts.md +417 -0
  24. data/docs/guides/first-prompt.md +454 -0
  25. data/docs/guides/getting-started.md +455 -0
  26. data/docs/guides/image-generation.md +507 -0
  27. data/docs/guides/index.md +46 -0
  28. data/docs/guides/models.md +507 -0
  29. data/docs/guides/tools.md +856 -0
  30. data/docs/index.md +173 -0
  31. data/docs/installation.md +238 -0
  32. data/docs/mcp-integration.md +612 -0
  33. data/docs/prompt_management.md +579 -0
  34. data/docs/security.md +629 -0
  35. data/docs/tools-and-mcp-examples.md +1186 -0
  36. data/docs/workflows-and-pipelines.md +563 -0
  37. data/examples/tools/mcp/github_mcp_server.json +11 -0
  38. data/examples/tools/mcp/imcp.json +7 -0
  39. data/lib/aia/chat_processor_service.rb +19 -3
  40. data/lib/aia/config/base.rb +224 -0
  41. data/lib/aia/config/cli_parser.rb +409 -0
  42. data/lib/aia/config/defaults.rb +88 -0
  43. data/lib/aia/config/file_loader.rb +131 -0
  44. data/lib/aia/config/validator.rb +184 -0
  45. data/lib/aia/config.rb +10 -860
  46. data/lib/aia/directive_processor.rb +27 -372
  47. data/lib/aia/directives/configuration.rb +114 -0
  48. data/lib/aia/directives/execution.rb +37 -0
  49. data/lib/aia/directives/models.rb +178 -0
  50. data/lib/aia/directives/registry.rb +120 -0
  51. data/lib/aia/directives/utility.rb +70 -0
  52. data/lib/aia/directives/web_and_file.rb +71 -0
  53. data/lib/aia/prompt_handler.rb +23 -3
  54. data/lib/aia/ruby_llm_adapter.rb +307 -128
  55. data/lib/aia/session.rb +27 -14
  56. data/lib/aia/utility.rb +12 -8
  57. data/lib/aia.rb +11 -2
  58. data/lib/extensions/ruby_llm/.irbrc +56 -0
  59. data/mkdocs.yml +165 -0
  60. metadata +77 -20
  61. /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
- original_stdin = STDIN.dup
317
- piped_input = STDIN.read.strip
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
- return if piped_input.empty?
319
+ begin
320
+ original_stdin = STDIN.dup
321
+ piped_input = STDIN.read.strip
322
+ STDIN.reopen("/dev/tty")
321
323
 
322
- @chat_prompt.text = piped_input
323
- processed_input = @chat_prompt.to_s
324
+ return if piped_input.empty?
324
325
 
325
- @context_manager.add_to_context(role: "user", content: processed_input)
326
+ @chat_prompt.text = piped_input
327
+ processed_input = @chat_prompt.to_s
326
328
 
327
- @ui_presenter.display_thinking_animation
328
- response = @chat_processor.process_prompt(@context_manager.get_context)
329
+ @context_manager.add_to_context(role: "user", content: processed_input)
329
330
 
330
- @context_manager.add_to_context(role: "assistant", content: response)
331
- @chat_processor.output_response(response)
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
- STDIN.reopen(original_stdin)
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.client.model.supports_functions?
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.model}#{supports_tools? ? ' (supports tools)' : ''}
32
- (O) using #{AIA.config.adapter} (v#{RubyLLM::VERSION}#{mcp_version})
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.last_refresh}
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 && system('which fzf >/dev/null 2>&1')
93
- require_relative 'aia/fzf'
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 &copy; 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.11
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.3.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.3.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
- Unlock the Power of AI Right from Your Terminal! AIA is a
294
- revolutionary CLI console application designed for generative AI
295
- workflows. With AIA, you can effortlessly manage prompts,
296
- integrate seamlessly with shell and embedded Ruby (ERB), and
297
- engage in interactive chats, all while harnessing advanced
298
- automation features. Experience a new level of productivity with
299
- dynamic prompt management, tailored directives, and comprehensive
300
- history tracking. AIA supports callback functions (Tools) and
301
- model context protocol (MCP) servers, making it the ultimate tool
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: 'AI Assistant: dynamic prompts, shell & Ruby integration, and seamless chat
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