llm-shell 0.8.0 → 0.9.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 12bc22975d67ab780255d8c35fc91d6578ddf880db5e10ae639e70d67be7b275
4
- data.tar.gz: ebb7794394c964e7b6ec0e0a18b72678b857d4f22369c05cc6a799de73b6f0db
3
+ metadata.gz: 5a36478ef62c7e7db413c26a66d77da788a7135846d27e200dc236ee2480b2af
4
+ data.tar.gz: 940ecf35df53edd106f0750c3ca6467482ff59c18e45ae05702b9e60a8adff03
5
5
  SHA512:
6
- metadata.gz: c9b748161d32e911d952a1f326f5be0df9be043a70ceefbaccdf92e7456b5bc2dab2ac54d35e74ca1f68275fa16715f672665e248a1b0621ba030a8a072106d9
7
- data.tar.gz: 6fe177aea6672502327c4b1bbfd3a4e27ebe9c1d527c93911876c3f8213a87cbe131353a6407563221b2ed44db112215a85e0a18e5c108fd66dea26fdc59e6b9
6
+ metadata.gz: c36710535f7e59346fbc85dba3e90e1ad6ef4ea72ac2d799d743c8c9f482ac85172962c817e3817898f1c8e51f64e9cf5c6172f8e48377f647b4a5ba033f8531
7
+ data.tar.gz: 568944aaf6e69b314bc39714dd2d33896943e9716556f75e1bdb9ac38dc415fdb933943b24c7fc346a9d2ef4b904875ee74d3187e0f5c34616841215d477242f
data/README.md CHANGED
@@ -12,7 +12,7 @@ it in action.
12
12
  #### General
13
13
 
14
14
  - 🌟 Unified interface for multiple Large Language Models (LLMs)
15
- - 🤝 Supports Gemini, OpenAI, Anthropic, DeepSeek, LlamaCpp and Ollama
15
+ - 🤝 Supports Gemini, OpenAI, Anthropic, xAI (grok), DeepSeek, LlamaCpp and Ollama
16
16
 
17
17
  #### Customize
18
18
 
@@ -131,6 +131,8 @@ gemini:
131
131
  key: YOURKEY
132
132
  anthropic:
133
133
  key: YOURKEY
134
+ xai:
135
+ key: YOURKEY
134
136
  deepseek:
135
137
  key: YOURKEY
136
138
  ollama:
@@ -38,6 +38,8 @@ class LLM::Shell
38
38
  body = "Tool call(s) request"
39
39
  elsif message.tool_return?
40
40
  body = "Tool call(s) return"
41
+ elsif Array === content
42
+ body = content.map { |c| render_message(c, color) }.join("\n")
41
43
  elsif content =~ file_pattern
42
44
  path = content.match(file_pattern) ? Regexp.last_match[1] : nil
43
45
  body = "<file path=#{path} />"
@@ -67,21 +67,24 @@ class LLM::Shell
67
67
  end
68
68
 
69
69
  def eval
70
+ callables = []
71
+ cancels = []
72
+ results = []
70
73
  functions.each do |function|
71
74
  print Paint["system", :bold, :red], " says: ", "\n"
72
75
  print "function: ", function.name, "\n"
73
76
  print "arguments: ", function.arguments, "\n"
74
- print "Do you want to call it? "
75
- input = $stdin.gets.chomp.downcase
77
+ input = Readline.readline("Do you want to call it ? ", true)
76
78
  puts
77
79
  if %w(y yes yep yeah ok).include?(input)
78
- chat function.call
79
- unread.tap { io.rewind }
80
+ callables << function
80
81
  else
81
- chat function.cancel
82
- chat "I decided to not run the function this time. Maybe next time."
82
+ cancels << function
83
83
  end
84
84
  end
85
+ results.concat callables.map(&:call)
86
+ results.concat cancels.map(&:cancel)
87
+ bot.chat(results)
85
88
  end
86
89
 
87
90
  def emit
@@ -4,5 +4,5 @@ module LLM
4
4
  end unless defined?(LLM)
5
5
 
6
6
  class LLM::Shell
7
- VERSION = "0.8.0"
7
+ VERSION = "0.9.0"
8
8
  end
data/llm-shell.gemspec CHANGED
@@ -28,10 +28,11 @@ Gem::Specification.new do |spec|
28
28
  ]
29
29
  spec.require_paths = ["lib"]
30
30
  spec.executables = ["llm-shell"]
31
- spec.add_dependency "llm.rb", "~> 0.11"
31
+ spec.add_dependency "llm.rb", "~> 0.13"
32
32
  spec.add_dependency "paint", "~> 2.1"
33
33
  spec.add_dependency "redcarpet", "~> 3.6"
34
34
  spec.add_dependency "coderay", "~> 1.1"
35
+ spec.add_dependency "reline", "~> 0.6"
35
36
  spec.add_development_dependency "webmock", "~> 3.24.0"
36
37
  spec.add_development_dependency "yard", "~> 0.9.37"
37
38
  spec.add_development_dependency "kramdown", "~> 2.4"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: llm-shell
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Antar Azri
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.11'
19
+ version: '0.13'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0.11'
26
+ version: '0.13'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: paint
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '1.1'
69
+ - !ruby/object:Gem::Dependency
70
+ name: reline
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.6'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.6'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: webmock
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -265,7 +279,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
265
279
  - !ruby/object:Gem::Version
266
280
  version: '0'
267
281
  requirements: []
268
- rubygems_version: 3.7.1
282
+ rubygems_version: 3.6.9
269
283
  specification_version: 4
270
284
  summary: llm-shell is an extensible, developer-oriented command-line console that
271
285
  can interact with multiple Large Language Models (LLMs).