Module: ConsoleAgent::ConsoleMethods
- Defined in:
- lib/console_agent/console_methods.rb
Instance Method Summary collapse
- #ai(query = nil) ⇒ Object
- #ai!(query = nil) ⇒ Object
- #ai?(query = nil) ⇒ Boolean
- #ai_memories(n = nil) ⇒ Object
- #ai_name(identifier, new_name) ⇒ Object
- #ai_resume(identifier = nil) ⇒ Object
- #ai_sessions(n = 10, search: nil) ⇒ Object
- #ai_status ⇒ Object
Instance Method Details
#ai(query = nil) ⇒ Object
133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 |
# File 'lib/console_agent/console_methods.rb', line 133 def ai(query = nil) if query.nil? $stderr.puts "\e[33mUsage: ai \"your question here\"\e[0m" $stderr.puts "\e[33m ai \"query\" - ask + confirm execution\e[0m" $stderr.puts "\e[33m ai! \"query\" - enter interactive mode (or ai! with no args)\e[0m" $stderr.puts "\e[33m ai? \"query\" - explain only, no execution\e[0m" $stderr.puts "\e[33m ai_sessions - list recent sessions\e[0m" $stderr.puts "\e[33m ai_resume - resume a session by name or id\e[0m" $stderr.puts "\e[33m ai_name - name a session: ai_name 42, \"my_label\"\e[0m" $stderr.puts "\e[33m ai_status - show current configuration\e[0m" $stderr.puts "\e[33m ai_memories - show recent memories (ai_memories(n) for last n)\e[0m" return nil end __ensure_console_agent_user require 'console_agent/context_builder' require 'console_agent/providers/base' require 'console_agent/executor' require 'console_agent/repl' repl = Repl.new(__console_agent_binding) repl.one_shot(query.to_s) rescue => e $stderr.puts "\e[31mConsoleAgent error: #{e.message}\e[0m" nil end |
#ai!(query = nil) ⇒ Object
161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 |
# File 'lib/console_agent/console_methods.rb', line 161 def ai!(query = nil) __ensure_console_agent_user require 'console_agent/context_builder' require 'console_agent/providers/base' require 'console_agent/executor' require 'console_agent/repl' repl = Repl.new(__console_agent_binding) if query repl.one_shot(query.to_s) else repl.interactive end rescue => e $stderr.puts "\e[31mConsoleAgent error: #{e.message}\e[0m" nil end |
#ai?(query = nil) ⇒ Boolean
181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 |
# File 'lib/console_agent/console_methods.rb', line 181 def ai?(query = nil) unless query $stderr.puts "\e[33mUsage: ai? \"your question here\" - explain without executing\e[0m" return nil end __ensure_console_agent_user require 'console_agent/context_builder' require 'console_agent/providers/base' require 'console_agent/executor' require 'console_agent/repl' repl = Repl.new(__console_agent_binding) repl.explain(query.to_s) rescue => e $stderr.puts "\e[31mConsoleAgent error: #{e.message}\e[0m" nil end |
#ai_memories(n = nil) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/console_agent/console_methods.rb', line 7 def ai_memories(n = nil) require 'yaml' require 'console_agent/tools/memory_tools' storage = ConsoleAgent.storage keys = storage.list('memories/*.md').sort if keys.empty? $stdout.puts "\e[2mNo memories stored yet.\e[0m" return nil end memories = keys.filter_map do |key| content = storage.read(key) next if content.nil? || content.strip.empty? next unless content =~ /\A---\s*\n(.*?\n)---\s*\n(.*)/m fm = YAML.safe_load($1, permitted_classes: [Time, Date]) || {} fm.merge('description' => $2.strip, 'file' => key) end if memories.empty? $stdout.puts "\e[2mNo memories stored yet.\e[0m" return nil end shown = n ? memories.last(n) : memories.last(5) total = memories.length $stdout.puts "\e[36m[Memories — showing last #{shown.length} of #{total}]\e[0m" shown.each do |m| $stdout.puts "\e[33m #{m['name']}\e[0m" $stdout.puts "\e[2m #{m['description']}\e[0m" = Array(m['tags']) $stdout.puts "\e[2m tags: #{tags.join(', ')}\e[0m" unless .empty? $stdout.puts end path = storage.respond_to?(:root_path) ? File.join(storage.root_path, 'memories') : 'memories/' $stdout.puts "\e[2mStored in: #{path}/\e[0m" $stdout.puts "\e[2mUse ai_memories(n) to show last n.\e[0m" nil end |
#ai_name(identifier, new_name) ⇒ Object
116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
# File 'lib/console_agent/console_methods.rb', line 116 def ai_name(identifier, new_name) require 'console_agent/session_logger' session = __find_session(identifier) unless session $stderr.puts "\e[31mSession not found: #{identifier}\e[0m" return nil end ConsoleAgent::SessionLogger.update(session.id, name: new_name) $stdout.puts "\e[36mSession ##{session.id} named: #{new_name}\e[0m" nil rescue => e $stderr.puts "\e[31mConsoleAgent error: #{e.message}\e[0m" nil end |
#ai_resume(identifier = nil) ⇒ Object
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 |
# File 'lib/console_agent/console_methods.rb', line 87 def ai_resume(identifier = nil) __ensure_console_agent_user require 'console_agent/context_builder' require 'console_agent/providers/base' require 'console_agent/executor' require 'console_agent/repl' require 'console_agent/session_logger' session = if identifier __find_session(identifier) else session_class = Object.const_get('ConsoleAgent::Session') session_class.where(mode: 'interactive', user_name: ConsoleAgent.current_user).recent.first end unless session msg = identifier ? "Session not found: #{identifier}" : "No interactive sessions found." $stderr.puts "\e[31m#{msg}\e[0m" return nil end repl = Repl.new(__console_agent_binding) repl.resume(session) rescue => e $stderr.puts "\e[31mConsoleAgent error: #{e.message}\e[0m" nil end |
#ai_sessions(n = 10, search: nil) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 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 |
# File 'lib/console_agent/console_methods.rb', line 49 def ai_sessions(n = 10, search: nil) require 'console_agent/session_logger' session_class = Object.const_get('ConsoleAgent::Session') scope = session_class.recent scope = scope.search(search) if search sessions = scope.limit(n) if sessions.empty? $stdout.puts "\e[2mNo sessions found.\e[0m" return nil end $stdout.puts "\e[36m[Sessions — showing #{sessions.length}#{search ? " matching \"#{search}\"" : ''}]\e[0m" $stdout.puts sessions.each do |s| id_str = "\e[2m##{s.id}\e[0m" name_str = s.name ? "\e[33m#{s.name}\e[0m " : "" query_str = s.name ? "\e[2m#{truncate_str(s.query, 50)}\e[0m" : truncate_str(s.query, 50) mode_str = "\e[2m[#{s.mode}]\e[0m" time_str = "\e[2m#{time_ago(s.created_at)}\e[0m" tokens = (s.input_tokens || 0) + (s.output_tokens || 0) token_str = tokens > 0 ? "\e[2m#{tokens} tokens\e[0m" : "" $stdout.puts " #{id_str} #{name_str}#{query_str}" $stdout.puts " #{mode_str} #{time_str} #{token_str}" $stdout.puts end $stdout.puts "\e[2mUse ai_resume(id_or_name) to resume a session.\e[0m" $stdout.puts "\e[2mUse ai_sessions(n, search: \"term\") to filter.\e[0m" nil rescue => e $stderr.puts "\e[31mConsoleAgent error: #{e.message}\e[0m" nil end |
#ai_status ⇒ Object
3 4 5 |
# File 'lib/console_agent/console_methods.rb', line 3 def ai_status ConsoleAgent.status end |