Class: AIA::Utility
- Inherits:
-
Object
- Object
- AIA::Utility
- Defined in:
- lib/aia/utility.rb
Class Method Summary collapse
-
.connected_mcp_servers? ⇒ Boolean
Returns true if there are any connected MCP servers.
-
.failed_mcp_servers ⇒ Object
Returns list of failed MCP servers with their errors.
-
.mcp_server_names ⇒ Object
Returns only successfully connected MCP server names.
- .mcp_servers? ⇒ Boolean
-
.models_last_refresh ⇒ Object
Returns the last refresh date from models.json modification time.
-
.robot ⇒ Object
Displays the AIA robot ASCII art Yes, its slightly frivolous but it does contain some useful configuration information.
- .supports_tools? ⇒ Boolean
- .tools? ⇒ Boolean
- .user_tools? ⇒ Boolean
Class Method Details
.connected_mcp_servers? ⇒ Boolean
Returns true if there are any connected MCP servers
32 33 34 35 |
# File 'lib/aia/utility.rb', line 32 def connected_mcp_servers? connected = AIA.config&.connected_mcp_servers connected && !connected.empty? end |
.failed_mcp_servers ⇒ Object
Returns list of failed MCP servers with their errors
38 39 40 |
# File 'lib/aia/utility.rb', line 38 def failed_mcp_servers AIA.config&.failed_mcp_servers || [] end |
.mcp_server_names ⇒ Object
Returns only successfully connected MCP server names
21 22 23 24 25 26 27 28 29 |
# File 'lib/aia/utility.rb', line 21 def mcp_server_names # Use connected_mcp_servers if available (populated during MCP setup) connected = AIA.config&.connected_mcp_servers return connected if connected && !connected.empty? # Fallback to configured servers if connection status not yet known return [] unless mcp_servers? AIA.config.mcp_servers.map { |s| s[:name] || s["name"] }.compact end |
.mcp_servers? ⇒ Boolean
16 17 18 |
# File 'lib/aia/utility.rb', line 16 def mcp_servers? AIA.config&.mcp_servers && !AIA.config.mcp_servers.empty? end |
.models_last_refresh ⇒ Object
Returns the last refresh date from models.json modification time
47 48 49 50 51 52 53 54 55 |
# File 'lib/aia/utility.rb', line 47 def models_last_refresh aia_dir = AIA.config&.paths&.aia_dir return nil if aia_dir.nil? models_file = File.join(File.(aia_dir), 'models.json') return nil unless File.exist?(models_file) File.mtime(models_file).strftime('%Y-%m-%d %H:%M') end |
.robot ⇒ Object
Displays the AIA robot ASCII art Yes, its slightly frivolous but it does contain some useful configuration information.
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/aia/utility.rb', line 60 def robot indent = 18 spaces = " "*indent width = TTY::Screen.width - indent - 2 mcp_version = defined?(RubyLLM::MCP::VERSION) ? " MCP v" + RubyLLM::MCP::VERSION : '' # Extract model names from config (handles ModelSpec objects or Hashes) model_display = if AIA.config&.models && !AIA.config.models.empty? models = AIA.config.models models.map do |spec| if spec.is_a?(AIA::ModelSpec) spec.name elsif spec.is_a?(Hash) spec[:name] || spec['name'] || spec.to_s else spec.to_s end end.join(', ') else 'unknown-model' end # Build MCP line based on connection status mcp_line = if !mcp_servers? '' # No MCP servers configured elsif connected_mcp_servers? "MCP: #{mcp_server_names.join(', ')}" else "MCP: (none connected)" end puts <<-ROBOT , , (\\____/) AI Assistant (v#{AIA::VERSION}) is Online (_oo_) #{model_display}#{supports_tools? ? ' (supports tools)' : ''} (O) using ruby_llm (v#{RubyLLM::VERSION}#{mcp_version}) __||__ \\) model db was last refreshed on [/______\\] / #{models_last_refresh || 'unknown'} / \\__AI__/ \\/ #{user_tools? ? 'I will also use your tools' : (tools? ? 'You can share my tools' : 'I did not bring any tools')} / /__\\ #{mcp_line} (\\ /____\\ #{user_tools? && tools? ? 'My Toolbox contains:' : ''} ROBOT if user_tools? && tools? tool_names = AIA.config.tool_names if tool_names && !tool_names.to_s.empty? puts WordWrapper::MinimumRaggedness.new( width, tool_names.to_s # String of tool names, comma separated ).wrap .split("\n") .map{|s| spaces+s+"\n"} .join end end end |
.supports_tools? ⇒ Boolean
42 43 44 |
# File 'lib/aia/utility.rb', line 42 def supports_tools? AIA.client&.model&.supports_functions? || false end |