aia 1.1.0 → 2.0.0.0.pre.alpha

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 (170) hide show
  1. checksums.yaml +4 -4
  2. data/.envrc +5 -1
  3. data/.loki +231 -0
  4. data/.quality/flay_baseline.txt +1 -0
  5. data/.quality/flog_baseline.txt +29 -0
  6. data/.quality/reek_baseline.txt +80 -0
  7. data/.rubocop.yml +116 -0
  8. data/.version +1 -1
  9. data/CHANGELOG.md +266 -42
  10. data/IMPLEMENTATION_PLAN.md +506 -0
  11. data/README.md +266 -238
  12. data/Rakefile +118 -5
  13. data/architecture_review.md +314 -0
  14. data/bin/aia +16 -0
  15. data/docs/AGENTS.md +40 -0
  16. data/docs/advanced-prompting.md +67 -3
  17. data/docs/cli-reference.md +312 -56
  18. data/docs/configuration.md +130 -19
  19. data/docs/contributing.md +56 -2
  20. data/docs/directives-reference.md +593 -78
  21. data/docs/faq.md +85 -3
  22. data/docs/guides/available-models.md +1 -1
  23. data/docs/guides/basic-usage.md +6 -6
  24. data/docs/guides/chat.md +40 -16
  25. data/docs/guides/crew.md +239 -0
  26. data/docs/guides/executable-prompts.md +1 -1
  27. data/docs/guides/index.md +1 -0
  28. data/docs/guides/models.md +15 -0
  29. data/docs/index.md +29 -2
  30. data/docs/installation.md +44 -17
  31. data/docs/mcp-integration.md +40 -0
  32. data/docs/prompt_management.md +85 -86
  33. data/docs/security.md +47 -0
  34. data/docs/special_projects_guide.md +386 -0
  35. data/docs/tools-and-mcp-examples.md +23 -0
  36. data/docs/workflows-and-pipelines.md +84 -7
  37. data/examples/.gitignore +1 -0
  38. data/examples/00_setup_aia.sh +27 -44
  39. data/examples/11_multi_model.sh +4 -14
  40. data/examples/12_token_usage.sh +3 -12
  41. data/examples/18_tools.sh +10 -2
  42. data/examples/22_chat_mode.sh +0 -10
  43. data/examples/23_verify.sh +139 -0
  44. data/examples/24_decompose.sh +139 -0
  45. data/examples/25_spawn.sh +139 -0
  46. data/examples/26_debate.sh +97 -0
  47. data/examples/27_mention_routing.sh +157 -0
  48. data/examples/28_model_switching.sh +106 -0
  49. data/examples/29_agent_harness.sh +177 -0
  50. data/examples/README.md +65 -0
  51. data/examples/advanced_multi_robot_capabilities_without_examples.md +106 -0
  52. data/examples/aia_config.yml +1 -1
  53. data/examples/aia_config_orchestrator.yml +45 -0
  54. data/examples/common.sh +19 -0
  55. data/examples/context/tech_stack.md +2 -2
  56. data/examples/prompts_dir/project_summary +2 -2
  57. data/examples/prompts_dir/roles/orchestrator.md +21 -0
  58. data/examples/requirements/sinatra_taskflow_app.md +139 -0
  59. data/examples/rules/01_classify_ruby.rb +16 -0
  60. data/examples/rules/02_prefer_claude_for_code.rb +19 -0
  61. data/examples/rules/03_gate_prompt_length.rb +19 -0
  62. data/examples/rules/04_tool_selection.rb +41 -0
  63. data/examples/rules/README.md +30 -0
  64. data/examples/run_all.sh +48 -15
  65. data/examples/tools/word_count_tool.rb +1 -1
  66. data/lib/AGENTS.md +57 -0
  67. data/lib/aia/chat_loop.rb +306 -159
  68. data/lib/aia/config/cli_parser.rb +174 -111
  69. data/lib/aia/config/defaults.yml +62 -33
  70. data/lib/aia/config/mcp_parser.rb +39 -46
  71. data/lib/aia/config/model_spec.rb +34 -2
  72. data/lib/aia/config/validator.rb +121 -138
  73. data/lib/aia/config.rb +110 -145
  74. data/lib/aia/content_extractor.rb +153 -0
  75. data/lib/aia/cost_calculator.rb +38 -0
  76. data/lib/aia/crew.rb +164 -0
  77. data/lib/aia/debate_handler.rb +166 -0
  78. data/lib/aia/delegate_handler.rb +112 -0
  79. data/lib/aia/directive.rb +33 -18
  80. data/lib/aia/directive_processor.rb +16 -7
  81. data/lib/aia/directives/configuration_directives.rb +160 -20
  82. data/lib/aia/directives/context_directives.rb +38 -26
  83. data/lib/aia/directives/execution_directives.rb +136 -4
  84. data/lib/aia/directives/model_directives.rb +76 -34
  85. data/lib/aia/directives/trakflow_directives.rb +44 -0
  86. data/lib/aia/directives/utility_directives.rb +203 -6
  87. data/lib/aia/directives/web_and_file_directives.rb +96 -60
  88. data/lib/aia/errors.rb +15 -0
  89. data/lib/aia/fact_asserter.rb +27 -0
  90. data/lib/aia/fzf.rb +9 -31
  91. data/lib/aia/handler_context.rb +17 -0
  92. data/lib/aia/handler_protocol.rb +19 -0
  93. data/lib/aia/history_transfer.rb +55 -0
  94. data/lib/aia/input_collector.rb +3 -3
  95. data/lib/aia/layered_orchestrator.rb +448 -0
  96. data/lib/aia/logger.rb +24 -4
  97. data/lib/aia/mcp_config_normalizer.rb +35 -0
  98. data/lib/aia/mcp_connection_manager.rb +305 -0
  99. data/lib/aia/mcp_discovery.rb +44 -0
  100. data/lib/aia/mcp_grouper.rb +33 -0
  101. data/lib/aia/mcp_utility.rb +57 -0
  102. data/lib/aia/mention_router.rb +260 -0
  103. data/lib/aia/model_alias_registry.rb +97 -0
  104. data/lib/aia/model_switch_handler.rb +100 -0
  105. data/lib/aia/network_builder.rb +155 -0
  106. data/lib/aia/network_memory_manager.rb +55 -0
  107. data/lib/aia/patches/ruby_llm_streaming_error.rb +43 -0
  108. data/lib/aia/patches/ruby_llm_tool_error.rb +96 -0
  109. data/lib/aia/pipeline_orchestrator.rb +262 -0
  110. data/lib/aia/plugin_loader.rb +170 -0
  111. data/lib/aia/plugin_monitor.rb +208 -0
  112. data/lib/aia/prompt_decomposer.rb +157 -0
  113. data/lib/aia/prompt_handler.rb +19 -39
  114. data/lib/aia/robot_builder.rb +51 -0
  115. data/lib/aia/robot_factory.rb +334 -0
  116. data/lib/aia/robot_namer.rb +116 -0
  117. data/lib/aia/session.rb +83 -17
  118. data/lib/aia/session_tracker.rb +209 -0
  119. data/lib/aia/similarity_scorer.rb +39 -0
  120. data/lib/aia/skill_utils.rb +105 -1
  121. data/lib/aia/spawn_handler.rb +129 -0
  122. data/lib/aia/spawn_spec_parser.rb +65 -0
  123. data/lib/aia/special_mode_handler.rb +302 -0
  124. data/lib/aia/startup_coordinator.rb +150 -0
  125. data/lib/aia/streaming_runner.rb +169 -0
  126. data/lib/aia/system_prompt_assembler.rb +88 -0
  127. data/lib/aia/task_coordinator.rb +202 -0
  128. data/lib/aia/task_decomposer.rb +57 -0
  129. data/lib/aia/task_executor.rb +51 -0
  130. data/lib/aia/tfidf_math.rb +27 -0
  131. data/lib/aia/tool_filter/tfidf.rb +116 -0
  132. data/lib/aia/tool_filter/wordnet_expander.rb +127 -0
  133. data/lib/aia/tool_filter.rb +82 -0
  134. data/lib/aia/tool_filter_registry.rb +30 -0
  135. data/lib/aia/tool_filter_strategy.rb +143 -0
  136. data/lib/aia/tool_loader.rb +210 -0
  137. data/lib/aia/tool_utility.rb +30 -0
  138. data/lib/aia/tools/delegate_to_foreman_tool.rb +70 -0
  139. data/lib/aia/tools/recruit_robot_tool.rb +60 -0
  140. data/lib/aia/tools/reskill_robot_tool.rb +44 -0
  141. data/lib/aia/tools/task_board_tool.rb +114 -0
  142. data/lib/aia/trakflow_bridge.rb +173 -0
  143. data/lib/aia/turn_state.rb +94 -0
  144. data/lib/aia/ui_presenter.rb +166 -198
  145. data/lib/aia/utility.rb +134 -87
  146. data/lib/aia/{history_manager.rb → variable_input_collector.rb} +8 -9
  147. data/lib/aia/verification_network.rb +58 -0
  148. data/lib/aia.rb +108 -63
  149. data/mkdocs.yml +1 -0
  150. metadata +179 -56
  151. data/justfile +0 -215
  152. data/lib/aia/adapter/chat_execution.rb +0 -242
  153. data/lib/aia/adapter/error_handler.rb +0 -68
  154. data/lib/aia/adapter/gem_activator.rb +0 -57
  155. data/lib/aia/adapter/mcp_connector.rb +0 -274
  156. data/lib/aia/adapter/modality_handlers.rb +0 -167
  157. data/lib/aia/adapter/model_registry.rb +0 -81
  158. data/lib/aia/adapter/multi_model_chat.rb +0 -218
  159. data/lib/aia/adapter/provider_configurator.rb +0 -59
  160. data/lib/aia/adapter/tool_filter.rb +0 -85
  161. data/lib/aia/adapter/tool_loader.rb +0 -90
  162. data/lib/aia/chat_processor_service.rb +0 -164
  163. data/lib/aia/prompt_pipeline.rb +0 -183
  164. data/lib/aia/ruby_llm_adapter.rb +0 -95
  165. data/lib/extensions/openstruct_merge.rb +0 -48
  166. data/lib/extensions/ruby_llm/.irbrc +0 -56
  167. data/lib/extensions/ruby_llm/modalities.rb +0 -36
  168. data/lib/extensions/ruby_llm/provider_fix.rb +0 -79
  169. data/lib/refinements/string.rb +0 -16
  170. data/main.just +0 -76
@@ -1,3 +1,43 @@
1
+ <!-- Tocer[start]: Auto-generated, don't remove. -->
2
+
3
+ ## Table of Contents
4
+
5
+ - [Configuration](#configuration)
6
+ - [Configuration Precedence](#configuration-precedence)
7
+ - [Configuration Files](#configuration-files)
8
+ - [Primary Configuration File](#primary-configuration-file)
9
+ - [Environment Variables](#environment-variables)
10
+ - [Command Line Arguments](#command-line-arguments)
11
+ - [Embedded Directives](#embedded-directives)
12
+ - [Logger Configuration](#logger-configuration)
13
+ - [Configuration File Settings](#configuration-file-settings)
14
+ - [CLI Log Level Override](#cli-log-level-override)
15
+ - [Environment Variables](#environment-variables-1)
16
+ - [Log Levels](#log-levels)
17
+ - [Example: File-Based Logging](#example-file-based-logging)
18
+ - [Advanced Configuration](#advanced-configuration)
19
+ - [Multi-Model Configuration](#multi-model-configuration)
20
+ - [Tool Configuration](#tool-configuration)
21
+ - [MCP Server Configuration](#mcp-server-configuration)
22
+ - [Prompt Directory Structure](#prompt-directory-structure)
23
+ - [Configuration Examples](#configuration-examples)
24
+ - [Development Setup](#development-setup)
25
+ - [Production Setup](#production-setup)
26
+ - [Creative Writing Setup](#creative-writing-setup)
27
+ - [Validation and Troubleshooting](#validation-and-troubleshooting)
28
+ - [Check Configuration](#check-configuration)
29
+ - [Validate Settings](#validate-settings)
30
+ - [Common Issues](#common-issues)
31
+ - [Model Not Found](#model-not-found)
32
+ - [Permission Errors](#permission-errors)
33
+ - [Tool Loading Errors](#tool-loading-errors)
34
+ - [Configuration Migration](#configuration-migration)
35
+ - [Updating from Older Versions](#updating-from-older-versions)
36
+ - [Best Practices](#best-practices)
37
+ - [Security Considerations](#security-considerations)
38
+
39
+ <!-- Tocer[finish]: Auto-generated, don't remove. -->
40
+
1
41
  # Configuration
2
42
 
3
43
  AIA provides a flexible configuration system with multiple layers of precedence, allowing you to customize behavior at different levels.
@@ -27,10 +67,9 @@ service:
27
67
  name: aia
28
68
 
29
69
  # LLM Configuration
30
- # Access: AIA.config.llm.adapter, AIA.config.llm.temperature, etc.
31
- # Env: AIA_LLM__ADAPTER, AIA_LLM__TEMPERATURE, etc.
70
+ # Access: AIA.config.llm.temperature, etc.
71
+ # Env: AIA_LLM__TEMPERATURE, etc.
32
72
  llm:
33
- adapter: ruby_llm # AI adapter to use (currently only ruby_llm)
34
73
  temperature: 0.7 # Creativity/randomness (0.0-2.0)
35
74
  max_tokens: 2048 # Maximum response length
36
75
  top_p: 1.0 # Nucleus sampling
@@ -54,7 +93,7 @@ prompts:
54
93
  roles_dir: ~/.prompts/roles # Full path to roles directory
55
94
  role: ~ # Default role
56
95
  skills: [] # Skill IDs to prepend to prompt (set by --skill/-s)
57
- skills_prefix: skills # Subdirectory name for skill directories
96
+ skills_prefix: ~ # Subdirectory appended to skills base path (nil = unset)
58
97
  system_prompt: ~ # Default system prompt
59
98
  parameter_regex: ~ # Regex for parameter extraction
60
99
 
@@ -81,16 +120,16 @@ output:
81
120
  file: temp.md # Output file (null = no file output)
82
121
  append: false # Append to output file instead of overwriting
83
122
  markdown: true # Format output with Markdown
84
- history_file: ~/.prompts/_prompts.log # Conversation history log
123
+ history_file: ~/.prompts/_prompts.log # Reline chat input history (chat mode only; up to 50 entries)
85
124
 
86
125
  # Audio Configuration
87
126
  # Access: AIA.config.audio.voice, AIA.config.audio.speak_command, etc.
88
127
  # Env: AIA_AUDIO__VOICE, AIA_AUDIO__SPEAK_COMMAND, etc.
89
128
  audio:
90
- voice: alloy # Voice for speech synthesis
91
- speak_command: afplay # Command to play audio files
92
- speech_model: tts-1 # Model for text-to-speech
93
- transcription_model: whisper-1 # Model for speech-to-text
129
+ voice: ~ # Voice name (macOS say: e.g. Samantha; OpenAI: alloy/nova/echo/…)
130
+ speak_command: say # TTS command; macOS default is `say`
131
+ speech_model: ~ # Passed as SPEECH_MODEL env var to the speak command (unset = not passed)
132
+ transcription_model: ~ # Default transcription model for RubyLLM (unset = RubyLLM default)
94
133
 
95
134
  # Image Configuration
96
135
  # Access: AIA.config.image.model, AIA.config.image.size, etc.
@@ -127,11 +166,11 @@ flags:
127
166
  tokens: false # Show token usage
128
167
  no_mcp: false # Disable MCP server processing
129
168
  speak: false # Convert text to speech
130
- terse: false # Request shorter AI responses
131
169
  shell: true # Enable shell integration
132
170
  erb: true # Enable ERB processing
133
171
  clear: false # Clear conversation history
134
172
  consensus: false # Enable consensus mode for multi-model
173
+ thinking: false # Show raw <think> reasoning blocks from local models
135
174
 
136
175
  # Logger Configuration
137
176
  # Access: AIA.config.logger.aia.file, AIA.config.logger.llm.level, etc.
@@ -183,6 +222,41 @@ paths:
183
222
  # Context Files (set at runtime)
184
223
  # Access: AIA.config.context_files (array of file paths)
185
224
  context_files: []
225
+
226
+ # Concurrency Configuration
227
+ # Access: AIA.config.concurrency.auto, .independent_servers, .threshold
228
+ # Controls automatic MCP server parallelization.
229
+ concurrency:
230
+ auto: false # Enable automatic MCP concurrency
231
+ independent_servers: [] # Servers safe to run in parallel
232
+ threshold: 2 # Minimum servers needed to trigger concurrency
233
+
234
+ # Model Aliases (short name → full model ID)
235
+ # Access: AIA.config.model_aliases
236
+ # Example: { "gpt4": "gpt-4o", "sonnet": "claude-sonnet-4-20250514" }
237
+ model_aliases: {}
238
+
239
+ # MCP Server Filtering
240
+ # Access: AIA.config.mcp_use, AIA.config.mcp_skip
241
+ mcp_use: ~ # Array of MCP server names to activate (nil = all)
242
+ mcp_skip: ~ # Array of MCP server names to skip
243
+
244
+ # Tool Filter Flags
245
+ # Access: AIA.config.flags.track_pipeline, AIA.config.flags.expert_routing
246
+ # Env: AIA_FLAGS__TRACK_PIPELINE, AIA_FLAGS__EXPERT_ROUTING, etc.
247
+ # (These belong under flags: but are shown here for reference)
248
+ #
249
+ # flags:
250
+ # track_pipeline: false # Track which pipeline prompts are executed
251
+ # expert_routing: false # Route chat turns to specialist robots
252
+ #
253
+ # Tool Filter Strategy Flags
254
+ # auto_tool_filter: true # TF-IDF cosine similarity filter (on by default)
255
+ # tool_filter_b: false # Zvec HNSW vector DB filter
256
+ # tool_filter_c: false # SqliteVec filter
257
+ # tool_filter_d: false # LSI (latent semantic indexing) filter
258
+ # tool_filter_load: false # Load saved filter model from disk
259
+ # tool_filter_save: false # Save filter model to disk after build
186
260
  ```
187
261
 
188
262
  ## Environment Variables
@@ -192,7 +266,6 @@ Use double underscore (`__`) for nested configuration sections:
192
266
 
193
267
  ```bash
194
268
  # LLM settings (nested under llm:)
195
- export AIA_LLM__ADAPTER="ruby_llm"
196
269
  export AIA_LLM__TEMPERATURE="0.8"
197
270
  export AIA_LLM__MAX_TOKENS="2048"
198
271
  export AIA_LLM__TOP_P="1.0"
@@ -209,7 +282,7 @@ export AIA_PROMPTS__EXTNAME=".md"
209
282
  export AIA_PROMPTS__ROLES_PREFIX="roles"
210
283
  export AIA_PROMPTS__ROLES_DIR="~/.prompts/roles"
211
284
  export AIA_PROMPTS__ROLE="expert"
212
- export AIA_PROMPTS__SKILLS_PREFIX="skills"
285
+ # export AIA_PROMPTS__SKILLS_PREFIX="my-prefix" # No default — unset means use skills.dir directly
213
286
  export AIA_PROMPTS__SYSTEM_PROMPT="my_system_prompt"
214
287
  export AIA_PROMPTS__PARAMETER_REGEX='\{\{(\w+)\}\}'
215
288
 
@@ -223,9 +296,9 @@ export AIA_OUTPUT__MARKDOWN="true"
223
296
  export AIA_OUTPUT__HISTORY_FILE="~/.prompts/_prompts.log"
224
297
 
225
298
  # Audio settings (nested under audio:)
226
- export AIA_AUDIO__VOICE="alloy"
227
- export AIA_AUDIO__SPEAK_COMMAND="afplay"
228
- export AIA_AUDIO__SPEECH_MODEL="tts-1"
299
+ export AIA_AUDIO__VOICE="Samantha" # macOS say voice (see: say -v '?')
300
+ export AIA_AUDIO__SPEAK_COMMAND="say" # default; swap for custom TTS script
301
+ export AIA_AUDIO__SPEECH_MODEL="tts-1" # passed as SPEECH_MODEL to speak_command
229
302
  export AIA_AUDIO__TRANSCRIPTION_MODEL="whisper-1"
230
303
 
231
304
  # Image settings (nested under image:)
@@ -251,11 +324,11 @@ export AIA_FLAGS__FUZZY="false"
251
324
  export AIA_FLAGS__TOKENS="true"
252
325
  export AIA_FLAGS__NO_MCP="false"
253
326
  export AIA_FLAGS__SPEAK="false"
254
- export AIA_FLAGS__TERSE="false"
255
327
  export AIA_FLAGS__SHELL="true"
256
328
  export AIA_FLAGS__ERB="true"
257
329
  export AIA_FLAGS__CLEAR="false"
258
330
  export AIA_FLAGS__CONSENSUS="false"
331
+ export AIA_FLAGS__THINKING="false"
259
332
 
260
333
  # Logger settings (nested under logger:)
261
334
  export AIA_LOGGER__AIA__FILE="~/.config/aia/aia.log"
@@ -476,10 +549,51 @@ prompts:
476
549
  roles_prefix: roles # ~/.prompts/roles/
477
550
  roles_dir: ~/.prompts/roles
478
551
  role: ~ # Default role (null = none)
552
+ skills_prefix: ~ # Prefix appended to skills base (nil = unset, uses skills.dir directly)
553
+ skills: [] # Default skills (empty = none)
479
554
  system_prompt: ~ # Default system prompt
480
555
  parameter_regex: ~ # Custom parameter extraction regex
556
+
557
+ # Top-level directory shortcuts (expand ~ automatically)
558
+ roles:
559
+ dir: ~/.prompts/roles
560
+
561
+ skills:
562
+ dir: ~/.prompts/skills
481
563
  ```
482
564
 
565
+ **Prompt assembly order**:
566
+
567
+ In **pipeline mode** (default), each prompt text is assembled as:
568
+ 1. **Role content** — identity and personality (`--role`)
569
+ 2. **Skill content** — capabilities and approach (`--skill`, in declaration order)
570
+ 3. **User prompt** — the actual request
571
+
572
+ In **chat mode** (`--chat`), the system prompt is assembled once at startup:
573
+ 1. **System prompt** — guardrails and constraints (`--system-prompt`)
574
+ 2. **Role content** — identity and personality (`--role`)
575
+ 3. **Skill content** — injected here so it persists across all turns without repetition
576
+
577
+ Follow-up chat turns carry role and skill context implicitly via conversation history.
578
+
579
+ **Recommended directory layout**:
580
+ ```
581
+ ~/.prompts/
582
+ ├── roles/
583
+ │ ├── ruby_expert.md # "You are a senior Ruby developer..."
584
+ │ └── teacher.md
585
+ ├── skills/
586
+ │ ├── testing/
587
+ │ │ └── SKILL.md # Skill ID: "testing"
588
+ │ ├── debugging/
589
+ │ │ └── SKILL.md # Skill ID: "debugging"
590
+ │ └── refactoring/
591
+ │ └── SKILL.md # Skill ID: "refactoring"
592
+ └── my_prompt.md
593
+ ```
594
+
595
+ Each skill is a **subdirectory** containing a `SKILL.md` file. The skill ID is the subdirectory name. Subdirectories without `SKILL.md` and plain `.md` files are ignored by `--list-skills`.
596
+
483
597
  ## Configuration Examples
484
598
 
485
599
  ### Development Setup
@@ -487,7 +601,6 @@ prompts:
487
601
  ```yaml
488
602
  # ~/.config/aia/aia.yml - Development setup
489
603
  llm:
490
- adapter: ruby_llm
491
604
  temperature: 0.3
492
605
 
493
606
  models:
@@ -513,7 +626,6 @@ flags:
513
626
  ```yaml
514
627
  # ~/.config/aia/aia.yml - Production setup
515
628
  llm:
516
- adapter: ruby_llm
517
629
  temperature: 0.7
518
630
 
519
631
  models:
@@ -542,7 +654,6 @@ flags:
542
654
  ```yaml
543
655
  # ~/.config/aia/aia.yml - Creative writing
544
656
  llm:
545
- adapter: ruby_llm
546
657
  temperature: 1.1
547
658
  max_tokens: 4000
548
659
 
data/docs/contributing.md CHANGED
@@ -1,3 +1,56 @@
1
+ <!-- Tocer[start]: Auto-generated, don't remove. -->
2
+
3
+ ## Table of Contents
4
+
5
+ - [Contributing to AIA](#contributing-to-aia)
6
+ - [Ways to Contribute](#ways-to-contribute)
7
+ - [1. Report Issues](#1-report-issues)
8
+ - [2. Submit Code Changes](#2-submit-code-changes)
9
+ - [3. Improve Documentation](#3-improve-documentation)
10
+ - [4. Contribute Examples](#4-contribute-examples)
11
+ - [Getting Started](#getting-started)
12
+ - [Prerequisites](#prerequisites)
13
+ - [Setting Up Development Environment](#setting-up-development-environment)
14
+ - [Development Guidelines](#development-guidelines)
15
+ - [Code Standards](#code-standards)
16
+ - [Ruby Style Guide](#ruby-style-guide)
17
+ - [Testing Requirements](#testing-requirements)
18
+ - [Documentation Standards](#documentation-standards)
19
+ - [Commit Message Format](#commit-message-format)
20
+ - [Contributing Examples](#contributing-examples)
21
+ - [Prompt Examples](#prompt-examples)
22
+ - [File Structure](#file-structure)
23
+ - [Prompt Template Format](#prompt-template-format)
24
+ - [Tool Examples](#tool-examples)
25
+ - [File Structure](#file-structure-1)
26
+ - [Tool Template](#tool-template)
27
+ - [MCP Client Examples](#mcp-client-examples)
28
+ - [File Structure](#file-structure-2)
29
+ - [Pull Request Process](#pull-request-process)
30
+ - [Before Submitting](#before-submitting)
31
+ - [Submitting the Pull Request](#submitting-the-pull-request)
32
+ - [Review Process](#review-process)
33
+ - [Community Guidelines](#community-guidelines)
34
+ - [Communication](#communication)
35
+ - [Issue Reporting](#issue-reporting)
36
+ - [Feature Requests](#feature-requests)
37
+ - [Security](#security)
38
+ - [Reporting Security Issues](#reporting-security-issues)
39
+ - [Security Best Practices](#security-best-practices)
40
+ - [Recognition](#recognition)
41
+ - [Contributors](#contributors)
42
+ - [Types of Recognition](#types-of-recognition)
43
+ - [Getting Help](#getting-help)
44
+ - [Development Questions](#development-questions)
45
+ - [Code Review](#code-review)
46
+ - [Community Support](#community-support)
47
+ - [Release Process](#release-process)
48
+ - [Version Management](#version-management)
49
+ - [Release Schedule](#release-schedule)
50
+ - [Thank You!](#thank-you)
51
+
52
+ <!-- Tocer[finish]: Auto-generated, don't remove. -->
53
+
1
54
  # Contributing to AIA
2
55
 
3
56
  We welcome contributions to AIA! This guide will help you get started with contributing to the project.
@@ -29,7 +82,7 @@ We welcome contributions to AIA! This guide will help you get started with contr
29
82
  ## Getting Started
30
83
 
31
84
  ### Prerequisites
32
- - Ruby 3.2+ installed
85
+ - Ruby >= 4.0.0 installed
33
86
  - Git for version control
34
87
  - Familiarity with AI/LLM concepts
35
88
  - Understanding of command-line tools
@@ -192,7 +245,7 @@ docs/examples/mcp/
192
245
  1. **Test Your Changes**
193
246
  ```bash
194
247
  rake test
195
- rake integration_test
248
+ rake integration
196
249
  ```
197
250
 
198
251
  2. **Check Code Quality**
@@ -200,6 +253,7 @@ docs/examples/mcp/
200
253
  rubocop
201
254
  reek
202
255
  ```
256
+ Note: `rubocop` and `reek` are not bundled dev dependencies. Install them manually if you wish to run these checks.
203
257
 
204
258
  3. **Update Documentation**
205
259
  - Add/update relevant documentation