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_init ⇒ Object
- #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
146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 |
# File 'lib/console_agent/console_methods.rb', line 146 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_init - generate/update app guide for better AI context\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
175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 |
# File 'lib/console_agent/console_methods.rb', line 175 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
195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 |
# File 'lib/console_agent/console_methods.rb', line 195 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_init ⇒ Object
133 134 135 136 137 138 139 140 141 142 143 144 |
# File 'lib/console_agent/console_methods.rb', line 133 def ai_init 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.init_guide 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 |