elelem 0.9.2 → 0.11.0

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 (43) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +8 -118
  3. data/Rakefile +0 -11
  4. data/exe/elelem +8 -79
  5. data/lib/elelem/agent.rb +51 -142
  6. data/lib/elelem/cli.rb +76 -0
  7. data/lib/elelem/commands.rb +49 -0
  8. data/lib/elelem/config.rb +17 -0
  9. data/lib/elelem/conversation.rb +25 -0
  10. data/lib/elelem/input.rb +53 -0
  11. data/lib/elelem/null_input.rb +8 -0
  12. data/lib/elelem/null_output.rb +7 -0
  13. data/lib/elelem/null_tool.rb +18 -0
  14. data/lib/elelem/output.rb +57 -0
  15. data/lib/elelem/plugins.rb +10 -21
  16. data/lib/elelem/prompts/default.erb +3 -0
  17. data/lib/elelem/registration.rb +37 -0
  18. data/lib/elelem/registry.rb +69 -0
  19. data/lib/elelem/result.rb +26 -0
  20. data/lib/elelem/slash_command.rb +18 -0
  21. data/lib/elelem/stub_provider.rb +15 -0
  22. data/lib/elelem/system_prompt.rb +4 -42
  23. data/lib/elelem/tool.rb +6 -14
  24. data/lib/elelem/toolbox.rb +23 -23
  25. data/lib/elelem/version.rb +2 -2
  26. data/lib/elelem.rb +29 -27
  27. metadata +49 -65
  28. data/CHANGELOG.md +0 -280
  29. data/lib/elelem/mcp.rb +0 -96
  30. data/lib/elelem/net/claude.rb +0 -200
  31. data/lib/elelem/net/ollama.rb +0 -78
  32. data/lib/elelem/net/openai.rb +0 -86
  33. data/lib/elelem/net.rb +0 -16
  34. data/lib/elelem/plugins/confirm.rb +0 -12
  35. data/lib/elelem/plugins/edit.rb +0 -15
  36. data/lib/elelem/plugins/eval.rb +0 -20
  37. data/lib/elelem/plugins/execute.rb +0 -18
  38. data/lib/elelem/plugins/mcp.rb +0 -14
  39. data/lib/elelem/plugins/read.rb +0 -21
  40. data/lib/elelem/plugins/verify.rb +0 -47
  41. data/lib/elelem/plugins/write.rb +0 -23
  42. data/lib/elelem/templates/system_prompt.erb +0 -53
  43. data/lib/elelem/terminal.rb +0 -97
@@ -1,97 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Elelem
4
- class Terminal
5
- def initialize(commands: [], quiet: false)
6
- @commands = commands
7
- @quiet = quiet
8
- @dots_thread = nil
9
- setup_completion unless @quiet
10
- end
11
-
12
- def ask(prompt)
13
- Reline.readline(prompt, true)&.strip
14
- end
15
-
16
- def think(text)
17
- return if blank?(text)
18
-
19
- "\e[2;3m#{text}\e[0m"
20
- end
21
-
22
- def markdown(text)
23
- return if @quiet || blank?(text)
24
-
25
- newline(n: 2)
26
- width = $stdout.winsize[1] rescue 80
27
- IO.popen(["glow", "-s", "dark", "-w", width.to_s, "-"], "r+") do |io|
28
- io.write(text)
29
- io.close_write
30
- io.read
31
- end
32
- rescue Errno::ENOENT
33
- text
34
- end
35
-
36
- def print(text)
37
- return if @quiet || blank?(text)
38
-
39
- stop_dots
40
- $stdout.print text
41
- end
42
-
43
- def say(text)
44
- return if @quiet || blank?(text)
45
-
46
- stop_dots
47
- $stdout.puts text
48
- end
49
-
50
- def newline(n: 1)
51
- n.times { $stdout.puts("") }
52
- end
53
-
54
- def waiting
55
- return if @quiet
56
-
57
- @dots_thread = Thread.new do
58
- loop do
59
- $stdout.print "."
60
- $stdout.flush
61
- sleep 0.1
62
- end
63
- end
64
- end
65
-
66
- private
67
-
68
- def blank?(text)
69
- text.nil? || text.strip.empty?
70
- end
71
-
72
- def stop_dots
73
- return unless @dots_thread
74
-
75
- @dots_thread.kill
76
- @dots_thread = nil
77
- newline
78
- end
79
-
80
- def setup_completion
81
- Reline.autocompletion = true
82
- Reline.completion_proc = ->(target, preposing) { complete(target, preposing) }
83
- end
84
-
85
- def complete(target, preposing)
86
- line = "#{preposing}#{target}"
87
- return @commands.select { |c| c.start_with?(line) } if line.start_with?("/") && !preposing.include?(" ")
88
-
89
- complete_files(target)
90
- end
91
-
92
- def complete_files(target)
93
- result = Elelem.sh("bash", args: ["-c", "compgen -f #{target}"])
94
- result[:content].lines.map(&:strip).first(20)
95
- end
96
- end
97
- end