llm-shell 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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4ec2b8025a69a836d633b92ae23c86e8e6d8c6ce42ed6d2da08194909ade1de8
4
- data.tar.gz: 8a29bfddd6bfef7973483d8efca2e182d3aced3b82bf771beb73f673fc7861a2
3
+ metadata.gz: 893a1e0d06613c74c57690458a780c334a30f0e265a3bdfd0e2a17b93f96d8f3
4
+ data.tar.gz: cf2cb67da47f2817fa7c1fa52b491c3564918c228766a915d93b1c1bd2f59f9e
5
5
  SHA512:
6
- metadata.gz: 6595412e81ab721f64ab2275ed087e8d01321a8d56c5d4b2566d31f1c0fa0a59c01ddd8981c6c4771c0896481586244bffa642ed8275416c8b2e93010a43956c
7
- data.tar.gz: 3ad0f23e6fabc847984b750d86e4adcefb46f2f0748416bcabd91ad5664b4745acb04d80e4faf0e63cd7e2b3747d555e0fe921d961ef611f886a6ba0c34bfa0a
6
+ metadata.gz: 414008dcde8859de7f6189b75a883c82afc622143fe06bf1cb6a9fc8f60f113f681235224be75f1dd5aa8d62acd9bc921d32f315b2603edbdf3b5081e2033e7f
7
+ data.tar.gz: 2c54a22daf9ad8cb887797027d3012b482f3c782585736268a6bdd7a2eaa0ea22fde3d7ab168769d71d679520d80d9890155d5b675bfa6ef30cd3a154aa23f8d
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Robert Gleeson
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/README.md CHANGED
@@ -1,169 +1,28 @@
1
- ## About
2
-
3
- llm-shell is an extensible, developer-oriented command-line
4
- console that can interact with multiple Large Language Models
5
- (LLMs). It serves as both a demo of the [llmrb/llm](https://github.com/llmrb/llm)
6
- library and a tool to help improve the library through real-world
7
- usage and feedback.
8
-
9
- ## Features
10
-
11
- #### General
12
-
13
- - 🌟 Unified interface for multiple Large Language Models (LLMs)
14
- - 🤝 Supports Gemini, OpenAI, Anthropic, xAI (grok), DeepSeek, LlamaCpp and Ollama
15
-
16
- #### Customize
17
-
18
- - 📤 Attach local files as conversation context
19
- - 🔧 Extend with your own functions and tool calls
20
- - 🚀 Extend with your own console commands
21
-
22
- #### Shell
23
-
24
- - 🤖 Builtin auto-complete powered by Readline
25
- - 🎨 Builtin syntax highlighting powered by Coderay
26
- - 📄 Deploys the less pager for long outputs
27
- - 📝 Advanced Markdown formatting and output
28
-
29
- ## Demo
30
-
31
- <details>
32
- <summary>Reveal demo</summary>
33
- <img src="share/llm-shell/examples/demo.gif/">
34
- </details>
35
-
36
- <details>
37
- <summary>Reveal demo</summary>
38
- <img src="share/llm-shell/examples/demo.png/">
39
- </details>
40
-
41
- ## Customization
42
-
43
- #### Functions
44
-
45
- > For security and safety reasons, a user must confirm the execution of
46
- > all function calls before they happen
47
-
48
- llm-shell can be extended with your own functions (also known as tool calls).
49
- This can be done by creating a Ruby file in the `~/.llm-shell/functions/`
50
- directory &ndash; with one file per function.
51
-
52
- The functions are loaded at boot time. The functions are shared with
53
- the LLM and the LLM can request their execution. The LLM is also made
54
- aware of a function's return value after it has been called.
55
- See the
56
- [functions/](lib/llm/shell/functions/)
57
- directory for more examples:
58
-
59
-
60
- ```ruby
61
- LLM.function(:system) do |fn|
62
- fn.description "Run a shell command"
63
- fn.params do |schema|
64
- schema.object(command: schema.string.required)
65
- end
66
- fn.define do |command:|
67
- ro, wo = IO.pipe
68
- re, we = IO.pipe
69
- Process.wait Process.spawn(command, out: wo, err: we)
70
- [wo,we].each(&:close)
71
- {stderr: re.read, stdout: ro.read}
72
- end
73
- end
74
- ```
75
-
76
- #### Commands
77
-
78
- llm-shell can be extended with your own console commands. This can be
79
- done by creating a Ruby file in the `~/.llm-shell/commands/` directory &ndash;
80
- with one file per command. The commands are loaded at boot time.
81
- See the
82
- [commands/](lib/llm/shell/commands/)
83
- directory for more examples:
84
-
85
- ```ruby
86
- LLM.command "say-hello" do |cmd|
87
- cmd.description "Say hello to somebody"
88
- cmd.define do |name|
89
- io.rewind.print "Hello #{name}!"
90
- end
91
- end
92
- ```
93
-
94
- #### Prompts
95
-
96
- > It is recommended that custom prompts instruct the LLM to emit markdown,
97
- > otherwise you might see unexpected results because llm-shell assumes the LLM
98
- > will emit markdown.
99
-
100
- The first message in a conversation is sometimes known as a "system prompt",
101
- and it defines the expectations and rules to be followed by an LLM throughout
102
- a conversation. The default prompt used by llm-shell can be found at
103
- [default.txt](share/llm-shell/prompts/default.txt).
104
-
105
- The prompt can be changed by adding a file to the `~/.llm-shell/prompts/` directory,
106
- and then choosing it at boot time with the `-r PROMPT`, `--prompt PROMPT` options.
107
- Generally you probably want to fork [default.txt](share/llm-shell/prompts/default.txt)
108
- to conserve the original prompt rules around markdown and files, then modify it to
109
- suit your own needs and preferences.
110
-
111
- ## Settings
112
-
113
- #### YAML
114
-
115
- The console client can be configured at the command line through option switches,
116
- or through a YAML file. The YAML file can contain the same options that could be
117
- specified at the command line. For cloud providers the key option is the only
118
- required parameter, everything else has defaults. The YAML file is read from the
119
- path `${HOME}/.llm-shell/config.yml` and it has the following format:
120
-
121
- ```yaml
122
- # ~/.config/llm-shell.yml
123
- openai:
124
- key: YOURKEY
125
- gemini:
126
- key: YOURKEY
127
- anthropic:
128
- key: YOURKEY
129
- xai:
130
- key: YOURKEY
131
- deepseek:
132
- key: YOURKEY
133
- ollama:
134
- host: localhost
135
- model: deepseek-coder:6.7b
136
- llamacpp:
137
- host: localhost
138
- model: qwen3
139
- tools:
140
- - system
141
- ```
142
-
143
- ## Usage
144
-
145
- #### CLI
146
-
147
- ```bash
148
- Usage: llm-shell [OPTIONS]
149
- -p, --provider NAME Required. Options: gemini, openai, anthropic, ollama or llamacpp.
150
- -k, --key [KEY] Optional. Required by gemini, openai, and anthropic.
151
- -m, --model [MODEL] Optional. The name of a model.
152
- -h, --host [HOST] Optional. Sometimes required by ollama.
153
- -o, --port [PORT] Optional. Sometimes required by ollama.
154
- -f, --files [GLOB] Optional. Glob pattern(s) separated by a comma.
155
- -r, --prompt [PROMPT] Optional. The prompt to use.
156
- -v, --version Optional. Print the version and exit
157
- ```
158
-
159
- ## Install
160
-
161
- llm-shell can be installed via [rubygems.org](https://rubygems.org/gems/llm-shell)
162
-
163
- gem install llm-shell
1
+ <p align="center">
2
+ <a href="https://r.uby.dev">
3
+ <img
4
+ src="rubydev.svg"
5
+ width="400"
6
+ height="200"
7
+ border="0"
8
+ alt="a r.uby.dev project"
9
+ >
10
+ </a>
11
+ </p>
12
+
13
+ > [r.uby.dev](https://r.uby.dev/) project.
14
+
15
+ Welcome to the canonical llm-shell repository.
16
+
17
+ This repository provides a RubyGem that includes
18
+ the [llm.rb](https://github.com/r-uby-dev/llm) runtime
19
+ and the optional dependencies that it requires to
20
+ run the llm.rb console.
21
+
22
+ It is a convenience gem that reduces installing the
23
+ llm.rb console to a single line: `gem install llm-shell`.
164
24
 
165
25
  ## License
166
26
 
167
- [BSD Zero Clause](https://choosealicense.com/licenses/0bsd/)
168
- <br>
27
+ MIT. <br>
169
28
  See [LICENSE](./LICENSE)
data/exe/llm-shell ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ begin
4
+ Process.spawn File.join(Gem.bindir, "llm.rb"), *ARGV
5
+ Process.wait
6
+ rescue Interrupt
7
+ end
data/llm-shell.gemspec CHANGED
@@ -1,46 +1,36 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "lib/llm/shell/version"
4
-
5
3
  Gem::Specification.new do |spec|
6
4
  spec.name = "llm-shell"
7
- spec.version = LLM::Shell::VERSION
8
- spec.authors = ["Antar Azri", "0x1eef"]
9
- spec.email = ["azantar@proton.me", "0x1eef@proton.me"]
5
+ spec.version = "0.11.0"
6
+ spec.authors = ["Robert Gleeson"]
7
+ spec.email = ["robert@r.uby.dev"]
8
+
9
+ spec.summary = "The llm.rb console in a single RubyGem"
10
+ spec.description = <<~DESCRIPTION
11
+ The llm.rb console distributed as a single RubyGem that includes the optional
12
+ llm.rb dependencies. It is a convenience gem that reduces installing the
13
+ llm.rb console to a single line: `gem install llm-shell`.
14
+ DESCRIPTION
10
15
 
11
- spec.summary = "llm-shell is an extensible, developer-oriented " \
12
- "command-line console that can interact with multiple " \
13
- "Large Language Models (LLMs)."
14
- spec.description = spec.summary
15
- spec.homepage = "https://github.com/llmrb/llm-shell"
16
- spec.license = "0BSD"
17
- spec.required_ruby_version = ">= 3.2"
16
+ spec.license = "MIT"
17
+ spec.required_ruby_version = ">= 3.3.0"
18
18
 
19
+ spec.homepage = "https://r.uby.dev"
19
20
  spec.metadata["homepage_uri"] = spec.homepage
20
- spec.metadata["source_code_uri"] = spec.homepage
21
+ spec.metadata["source_code_uri"] = "https://github.com/r-uby-dev/llm-shell"
22
+ spec.metadata["documentation_uri"] = spec.homepage
21
23
 
22
- spec.files = Dir[
23
- "README.md", "LICENSE",
24
- "lib/*.rb", "lib/**/*.rb",
25
- "libexec/*", "libexec/**/*",
26
- "share/llm-shell/prompts/*",
27
- "bin/*", "llm-shell.gemspec"
28
- ]
29
- spec.require_paths = ["lib"]
24
+ spec.files = Dir["LICENSE", "README.md", "llm-shell.gemspec", "exe/llm-shell"]
25
+ spec.bindir = "exe"
30
26
  spec.executables = ["llm-shell"]
31
- spec.add_dependency "llm.rb", "~> 0.13"
32
- spec.add_dependency "paint", "~> 2.1"
33
- spec.add_dependency "redcarpet", "~> 3.6"
34
- spec.add_dependency "coderay", "~> 1.1"
35
- spec.add_dependency "reline", "~> 0.6"
36
- spec.add_development_dependency "webmock", "~> 3.24.0"
37
- spec.add_development_dependency "yard", "~> 0.9.37"
38
- spec.add_development_dependency "kramdown", "~> 2.4"
39
- spec.add_development_dependency "webrick", "~> 1.8"
40
- spec.add_development_dependency "test-cmd.rb", "~> 0.12.0"
41
- spec.add_development_dependency "rake", "~> 13.0"
42
- spec.add_development_dependency "rspec", "~> 3.0"
43
- spec.add_development_dependency "standard", "~> 1.40"
44
- spec.add_development_dependency "vcr", "~> 6.0"
45
- spec.add_development_dependency "dotenv", "~> 2.8"
27
+
28
+ ##
29
+ # The dependencies that are required to run
30
+ # the llm.rb console
31
+ spec.add_dependency "llm.rb", "~> 15.3"
32
+ spec.add_dependency "test-cmd.rb", "~> 2.7"
33
+ spec.add_dependency "curses", "~> 1.7"
34
+ spec.add_dependency "kramdown", "~> 2.5"
35
+ spec.add_dependency "unicode-display_width", "~> 3.2"
46
36
  end
metadata CHANGED
@@ -1,12 +1,11 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: llm-shell
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.2
4
+ version: 0.11.0
5
5
  platform: ruby
6
6
  authors:
7
- - Antar Azri
8
- - '0x1eef'
9
- bindir: bin
7
+ - Robert Gleeson
8
+ bindir: exe
10
9
  cert_chain: []
11
10
  date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
@@ -16,256 +15,92 @@ dependencies:
16
15
  requirements:
17
16
  - - "~>"
18
17
  - !ruby/object:Gem::Version
19
- version: '0.13'
18
+ version: '15.3'
20
19
  type: :runtime
21
20
  prerelease: false
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
23
  - - "~>"
25
24
  - !ruby/object:Gem::Version
26
- version: '0.13'
25
+ version: '15.3'
27
26
  - !ruby/object:Gem::Dependency
28
- name: paint
27
+ name: test-cmd.rb
29
28
  requirement: !ruby/object:Gem::Requirement
30
29
  requirements:
31
30
  - - "~>"
32
31
  - !ruby/object:Gem::Version
33
- version: '2.1'
32
+ version: '2.7'
34
33
  type: :runtime
35
34
  prerelease: false
36
35
  version_requirements: !ruby/object:Gem::Requirement
37
36
  requirements:
38
37
  - - "~>"
39
38
  - !ruby/object:Gem::Version
40
- version: '2.1'
39
+ version: '2.7'
41
40
  - !ruby/object:Gem::Dependency
42
- name: redcarpet
41
+ name: curses
43
42
  requirement: !ruby/object:Gem::Requirement
44
43
  requirements:
45
44
  - - "~>"
46
45
  - !ruby/object:Gem::Version
47
- version: '3.6'
46
+ version: '1.7'
48
47
  type: :runtime
49
48
  prerelease: false
50
49
  version_requirements: !ruby/object:Gem::Requirement
51
50
  requirements:
52
51
  - - "~>"
53
52
  - !ruby/object:Gem::Version
54
- version: '3.6'
53
+ version: '1.7'
55
54
  - !ruby/object:Gem::Dependency
56
- name: coderay
55
+ name: kramdown
57
56
  requirement: !ruby/object:Gem::Requirement
58
57
  requirements:
59
58
  - - "~>"
60
59
  - !ruby/object:Gem::Version
61
- version: '1.1'
60
+ version: '2.5'
62
61
  type: :runtime
63
62
  prerelease: false
64
63
  version_requirements: !ruby/object:Gem::Requirement
65
64
  requirements:
66
65
  - - "~>"
67
66
  - !ruby/object:Gem::Version
68
- version: '1.1'
67
+ version: '2.5'
69
68
  - !ruby/object:Gem::Dependency
70
- name: reline
69
+ name: unicode-display_width
71
70
  requirement: !ruby/object:Gem::Requirement
72
71
  requirements:
73
72
  - - "~>"
74
73
  - !ruby/object:Gem::Version
75
- version: '0.6'
74
+ version: '3.2'
76
75
  type: :runtime
77
76
  prerelease: false
78
77
  version_requirements: !ruby/object:Gem::Requirement
79
78
  requirements:
80
79
  - - "~>"
81
80
  - !ruby/object:Gem::Version
82
- version: '0.6'
83
- - !ruby/object:Gem::Dependency
84
- name: webmock
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: 3.24.0
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: 3.24.0
97
- - !ruby/object:Gem::Dependency
98
- name: yard
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: 0.9.37
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: 0.9.37
111
- - !ruby/object:Gem::Dependency
112
- name: kramdown
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: '2.4'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: '2.4'
125
- - !ruby/object:Gem::Dependency
126
- name: webrick
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - "~>"
130
- - !ruby/object:Gem::Version
131
- version: '1.8'
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - "~>"
137
- - !ruby/object:Gem::Version
138
- version: '1.8'
139
- - !ruby/object:Gem::Dependency
140
- name: test-cmd.rb
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - "~>"
144
- - !ruby/object:Gem::Version
145
- version: 0.12.0
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - "~>"
151
- - !ruby/object:Gem::Version
152
- version: 0.12.0
153
- - !ruby/object:Gem::Dependency
154
- name: rake
155
- requirement: !ruby/object:Gem::Requirement
156
- requirements:
157
- - - "~>"
158
- - !ruby/object:Gem::Version
159
- version: '13.0'
160
- type: :development
161
- prerelease: false
162
- version_requirements: !ruby/object:Gem::Requirement
163
- requirements:
164
- - - "~>"
165
- - !ruby/object:Gem::Version
166
- version: '13.0'
167
- - !ruby/object:Gem::Dependency
168
- name: rspec
169
- requirement: !ruby/object:Gem::Requirement
170
- requirements:
171
- - - "~>"
172
- - !ruby/object:Gem::Version
173
- version: '3.0'
174
- type: :development
175
- prerelease: false
176
- version_requirements: !ruby/object:Gem::Requirement
177
- requirements:
178
- - - "~>"
179
- - !ruby/object:Gem::Version
180
- version: '3.0'
181
- - !ruby/object:Gem::Dependency
182
- name: standard
183
- requirement: !ruby/object:Gem::Requirement
184
- requirements:
185
- - - "~>"
186
- - !ruby/object:Gem::Version
187
- version: '1.40'
188
- type: :development
189
- prerelease: false
190
- version_requirements: !ruby/object:Gem::Requirement
191
- requirements:
192
- - - "~>"
193
- - !ruby/object:Gem::Version
194
- version: '1.40'
195
- - !ruby/object:Gem::Dependency
196
- name: vcr
197
- requirement: !ruby/object:Gem::Requirement
198
- requirements:
199
- - - "~>"
200
- - !ruby/object:Gem::Version
201
- version: '6.0'
202
- type: :development
203
- prerelease: false
204
- version_requirements: !ruby/object:Gem::Requirement
205
- requirements:
206
- - - "~>"
207
- - !ruby/object:Gem::Version
208
- version: '6.0'
209
- - !ruby/object:Gem::Dependency
210
- name: dotenv
211
- requirement: !ruby/object:Gem::Requirement
212
- requirements:
213
- - - "~>"
214
- - !ruby/object:Gem::Version
215
- version: '2.8'
216
- type: :development
217
- prerelease: false
218
- version_requirements: !ruby/object:Gem::Requirement
219
- requirements:
220
- - - "~>"
221
- - !ruby/object:Gem::Version
222
- version: '2.8'
223
- description: llm-shell is an extensible, developer-oriented command-line console that
224
- can interact with multiple Large Language Models (LLMs).
81
+ version: '3.2'
82
+ description: |
83
+ The llm.rb console distributed as a single RubyGem that includes the optional
84
+ llm.rb dependencies. It is a convenience gem that reduces installing the
85
+ llm.rb console to a single line: `gem install llm-shell`.
225
86
  email:
226
- - azantar@proton.me
227
- - 0x1eef@proton.me
87
+ - robert@r.uby.dev
228
88
  executables:
229
89
  - llm-shell
230
90
  extensions: []
231
91
  extra_rdoc_files: []
232
92
  files:
93
+ - LICENSE
233
94
  - README.md
234
- - bin/llm-shell
235
- - lib/io/line.rb
236
- - lib/llm-shell.rb
237
- - lib/llm/function.rb
238
- - lib/llm/shell.rb
239
- - lib/llm/shell/command.rb
240
- - lib/llm/shell/command/extension.rb
241
- - lib/llm/shell/commands/clear_screen.rb
242
- - lib/llm/shell/commands/dir_import.rb
243
- - lib/llm/shell/commands/file_import.rb
244
- - lib/llm/shell/commands/help.rb
245
- - lib/llm/shell/commands/show_chat.rb
246
- - lib/llm/shell/commands/show_version.rb
247
- - lib/llm/shell/commands/system_prompt.rb
248
- - lib/llm/shell/commands/utils.rb
249
- - lib/llm/shell/completion.rb
250
- - lib/llm/shell/config.rb
251
- - lib/llm/shell/default.rb
252
- - lib/llm/shell/formatter.rb
253
- - lib/llm/shell/functions/read_file.rb
254
- - lib/llm/shell/functions/write_file.rb
255
- - lib/llm/shell/markdown.rb
256
- - lib/llm/shell/options.rb
257
- - lib/llm/shell/renderer.rb
258
- - lib/llm/shell/repl.rb
259
- - lib/llm/shell/version.rb
260
- - libexec/llm-shell/shell
95
+ - exe/llm-shell
261
96
  - llm-shell.gemspec
262
- - share/llm-shell/prompts/default.txt
263
- homepage: https://github.com/llmrb/llm-shell
97
+ homepage: https://r.uby.dev
264
98
  licenses:
265
- - 0BSD
99
+ - MIT
266
100
  metadata:
267
- homepage_uri: https://github.com/llmrb/llm-shell
268
- source_code_uri: https://github.com/llmrb/llm-shell
101
+ homepage_uri: https://r.uby.dev
102
+ source_code_uri: https://github.com/r-uby-dev/llm-shell
103
+ documentation_uri: https://r.uby.dev
269
104
  rdoc_options: []
270
105
  require_paths:
271
106
  - lib
@@ -273,15 +108,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
273
108
  requirements:
274
109
  - - ">="
275
110
  - !ruby/object:Gem::Version
276
- version: '3.2'
111
+ version: 3.3.0
277
112
  required_rubygems_version: !ruby/object:Gem::Requirement
278
113
  requirements:
279
114
  - - ">="
280
115
  - !ruby/object:Gem::Version
281
116
  version: '0'
282
117
  requirements: []
283
- rubygems_version: 3.6.9
118
+ rubygems_version: 4.0.16
284
119
  specification_version: 4
285
- summary: llm-shell is an extensible, developer-oriented command-line console that
286
- can interact with multiple Large Language Models (LLMs).
120
+ summary: The llm.rb console in a single RubyGem
287
121
  test_files: []
data/bin/llm-shell DELETED
@@ -1,21 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # frozen_string_literal: true
3
-
4
- def wait
5
- Process.wait
6
- rescue Interrupt
7
- retry
8
- end
9
-
10
- def libexec
11
- File.realpath File.join(__dir__, "..", "libexec", "llm-shell")
12
- end
13
-
14
- def main(argv)
15
- Process.spawn File.join(libexec, "shell"), *ARGV[0..]
16
- Process.wait
17
- rescue Interrupt
18
- wait
19
- end
20
- main(ARGV)
21
- exit $?&.exitstatus || 1
data/lib/io/line.rb DELETED
@@ -1,26 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class IO::Line
4
- require "io/console"
5
-
6
- attr_reader :io
7
-
8
- def initialize(io)
9
- @io = io
10
- end
11
-
12
- def print(*strs)
13
- tap { @io.print(strs.join.gsub($/, "")) }
14
- end
15
-
16
- def end
17
- tap { @io.print($/) }
18
- end
19
-
20
- def rewind
21
- tap do
22
- @io.erase_line(2)
23
- @io.goto_column(0)
24
- end
25
- end
26
- end