Module: ConsoleAgent::ConsoleMethods

Defined in:
lib/console_agent/console_methods.rb

Instance Method Summary collapse

Instance Method Details

#ai(query = nil) ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/console_agent/console_methods.rb', line 49

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_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

  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



72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/console_agent/console_methods.rb', line 72

def ai!(query = nil)
  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



90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# File 'lib/console_agent/console_methods.rb', line 90

def ai?(query = nil)
  unless query
    $stderr.puts "\e[33mUsage: ai? \"your question here\" - explain without executing\e[0m"
    return nil
  end

  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"
    tags = Array(m['tags'])
    $stdout.puts "\e[2m  tags: #{tags.join(', ')}\e[0m" unless tags.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_statusObject



3
4
5
# File 'lib/console_agent/console_methods.rb', line 3

def ai_status
  ConsoleAgent.status
end