elelem 0.12.0 → 0.13.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 +4 -4
- data/README.md +5 -5
- data/exe/elelem +0 -6
- data/lib/elelem/agent.rb +18 -55
- data/lib/elelem/builtins/terminal.rb +101 -0
- data/lib/elelem/builtins.rb +52 -0
- data/lib/elelem/cli.rb +23 -68
- data/lib/elelem/commands.rb +8 -13
- data/lib/elelem/conversation.rb +9 -5
- data/lib/elelem/input.rb +10 -17
- data/lib/elelem/null_output.rb +3 -1
- data/lib/elelem/plugins/builtins.rb +16 -0
- data/lib/elelem/plugins/context.rb +31 -0
- data/lib/elelem/plugins/execute.rb +24 -0
- data/lib/elelem/plugins/provider.rb +22 -0
- data/lib/elelem/plugins/read.rb +29 -0
- data/lib/elelem/plugins/reload.rb +9 -0
- data/lib/elelem/plugins/terminal.rb +6 -0
- data/lib/elelem/plugins/tools.rb +31 -0
- data/lib/elelem/plugins/write.rb +37 -0
- data/lib/elelem/plugins.rb +7 -2
- data/lib/elelem/registration.rb +7 -2
- data/lib/elelem/registry.rb +12 -7
- data/lib/elelem/repl.rb +9 -9
- data/lib/elelem/result.rb +0 -4
- data/lib/elelem/session.rb +5 -1
- data/lib/elelem/stub_provider.rb +67 -6
- data/lib/elelem/system_prompt.rb +1 -1
- data/lib/elelem/tool.rb +7 -20
- data/lib/elelem/toolbox.rb +19 -32
- data/lib/elelem/version.rb +1 -1
- data/lib/elelem.rb +29 -23
- metadata +47 -12
- data/lib/elelem/null_tool.rb +0 -18
- data/lib/elelem/schema.rb +0 -20
- data/lib/elelem/slash_command.rb +0 -18
- data/lib/elelem/transcript.rb +0 -26
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: elelem
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.13.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- mo khan
|
|
@@ -23,6 +23,20 @@ dependencies:
|
|
|
23
23
|
- - "~>"
|
|
24
24
|
- !ruby/object:Gem::Version
|
|
25
25
|
version: '6.0'
|
|
26
|
+
- !ruby/object:Gem::Dependency
|
|
27
|
+
name: fileutils
|
|
28
|
+
requirement: !ruby/object:Gem::Requirement
|
|
29
|
+
requirements:
|
|
30
|
+
- - "~>"
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: '1.8'
|
|
33
|
+
type: :runtime
|
|
34
|
+
prerelease: false
|
|
35
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
36
|
+
requirements:
|
|
37
|
+
- - "~>"
|
|
38
|
+
- !ruby/object:Gem::Version
|
|
39
|
+
version: '1.8'
|
|
26
40
|
- !ruby/object:Gem::Dependency
|
|
27
41
|
name: forwardable
|
|
28
42
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -164,19 +178,33 @@ dependencies:
|
|
|
164
178
|
- !ruby/object:Gem::Version
|
|
165
179
|
version: '0.2'
|
|
166
180
|
- !ruby/object:Gem::Dependency
|
|
167
|
-
name:
|
|
181
|
+
name: stringio
|
|
182
|
+
requirement: !ruby/object:Gem::Requirement
|
|
183
|
+
requirements:
|
|
184
|
+
- - "~>"
|
|
185
|
+
- !ruby/object:Gem::Version
|
|
186
|
+
version: '3.1'
|
|
187
|
+
type: :runtime
|
|
188
|
+
prerelease: false
|
|
189
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
190
|
+
requirements:
|
|
191
|
+
- - "~>"
|
|
192
|
+
- !ruby/object:Gem::Version
|
|
193
|
+
version: '3.1'
|
|
194
|
+
- !ruby/object:Gem::Dependency
|
|
195
|
+
name: tempfile
|
|
168
196
|
requirement: !ruby/object:Gem::Requirement
|
|
169
197
|
requirements:
|
|
170
198
|
- - "~>"
|
|
171
199
|
- !ruby/object:Gem::Version
|
|
172
|
-
version: '
|
|
200
|
+
version: '0.3'
|
|
173
201
|
type: :runtime
|
|
174
202
|
prerelease: false
|
|
175
203
|
version_requirements: !ruby/object:Gem::Requirement
|
|
176
204
|
requirements:
|
|
177
205
|
- - "~>"
|
|
178
206
|
- !ruby/object:Gem::Version
|
|
179
|
-
version: '
|
|
207
|
+
version: '0.3'
|
|
180
208
|
description: A minimal coding harness.
|
|
181
209
|
email:
|
|
182
210
|
- mo@mokhan.ca
|
|
@@ -191,6 +219,8 @@ files:
|
|
|
191
219
|
- exe/elelem
|
|
192
220
|
- lib/elelem.rb
|
|
193
221
|
- lib/elelem/agent.rb
|
|
222
|
+
- lib/elelem/builtins.rb
|
|
223
|
+
- lib/elelem/builtins/terminal.rb
|
|
194
224
|
- lib/elelem/cli.rb
|
|
195
225
|
- lib/elelem/commands.rb
|
|
196
226
|
- lib/elelem/config.rb
|
|
@@ -198,30 +228,35 @@ files:
|
|
|
198
228
|
- lib/elelem/input.rb
|
|
199
229
|
- lib/elelem/null_input.rb
|
|
200
230
|
- lib/elelem/null_output.rb
|
|
201
|
-
- lib/elelem/null_tool.rb
|
|
202
231
|
- lib/elelem/output.rb
|
|
203
232
|
- lib/elelem/plugins.rb
|
|
233
|
+
- lib/elelem/plugins/builtins.rb
|
|
234
|
+
- lib/elelem/plugins/context.rb
|
|
235
|
+
- lib/elelem/plugins/execute.rb
|
|
236
|
+
- lib/elelem/plugins/provider.rb
|
|
237
|
+
- lib/elelem/plugins/read.rb
|
|
238
|
+
- lib/elelem/plugins/reload.rb
|
|
239
|
+
- lib/elelem/plugins/terminal.rb
|
|
240
|
+
- lib/elelem/plugins/tools.rb
|
|
241
|
+
- lib/elelem/plugins/write.rb
|
|
204
242
|
- lib/elelem/prompts/default.erb
|
|
205
243
|
- lib/elelem/registration.rb
|
|
206
244
|
- lib/elelem/registry.rb
|
|
207
245
|
- lib/elelem/repl.rb
|
|
208
246
|
- lib/elelem/result.rb
|
|
209
|
-
- lib/elelem/schema.rb
|
|
210
247
|
- lib/elelem/session.rb
|
|
211
|
-
- lib/elelem/slash_command.rb
|
|
212
248
|
- lib/elelem/stub_provider.rb
|
|
213
249
|
- lib/elelem/system_prompt.rb
|
|
214
250
|
- lib/elelem/tool.rb
|
|
215
251
|
- lib/elelem/toolbox.rb
|
|
216
|
-
- lib/elelem/transcript.rb
|
|
217
252
|
- lib/elelem/version.rb
|
|
218
|
-
homepage: https://
|
|
253
|
+
homepage: https://elelem.sh
|
|
219
254
|
licenses:
|
|
220
255
|
- MIT
|
|
221
256
|
metadata:
|
|
222
257
|
allowed_push_host: https://rubygems.org
|
|
223
|
-
homepage_uri: https://
|
|
224
|
-
source_code_uri: https://
|
|
258
|
+
homepage_uri: https://elelem.sh
|
|
259
|
+
source_code_uri: https://github.com/elelem-sh/elelem
|
|
225
260
|
rubygems_mfa_required: 'true'
|
|
226
261
|
rdoc_options: []
|
|
227
262
|
require_paths:
|
|
@@ -237,7 +272,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
237
272
|
- !ruby/object:Gem::Version
|
|
238
273
|
version: 4.0.0
|
|
239
274
|
requirements: []
|
|
240
|
-
rubygems_version: 4.0.
|
|
275
|
+
rubygems_version: 4.0.6
|
|
241
276
|
specification_version: 4
|
|
242
277
|
summary: A minimal coding harness for LLMs.
|
|
243
278
|
test_files: []
|
data/lib/elelem/null_tool.rb
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Elelem
|
|
4
|
-
class NullTool
|
|
5
|
-
def initialize(name, available: [])
|
|
6
|
-
@name = name
|
|
7
|
-
@available = available
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
def name
|
|
11
|
-
"#{@name}?"
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def validate(_args)
|
|
15
|
-
["unknown tool: #{@name.inspect}. Available: #{@available.join(", ")}."]
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
data/lib/elelem/schema.rb
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Elelem
|
|
4
|
-
class Schema
|
|
5
|
-
def initialize(params: {}, required: [])
|
|
6
|
-
@params = params.freeze
|
|
7
|
-
@required = required.freeze
|
|
8
|
-
@schema_hash = { type: "object", properties: @params, required: @required }.freeze
|
|
9
|
-
@json_schemer = JSONSchemer.schema(@schema_hash)
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def to_h
|
|
13
|
-
@schema_hash
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def validate(args)
|
|
17
|
-
@json_schemer.validate(args || {}).map { |error| error["error"] }
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
data/lib/elelem/slash_command.rb
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Elelem
|
|
4
|
-
class SlashCommand
|
|
5
|
-
attr_reader :name, :description, :completions
|
|
6
|
-
|
|
7
|
-
def initialize(name, description = "", completions = nil, &handler)
|
|
8
|
-
@name = name
|
|
9
|
-
@description = description
|
|
10
|
-
@completions = completions
|
|
11
|
-
@handler = handler
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def call(args)
|
|
15
|
-
@handler.call(args)
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
data/lib/elelem/transcript.rb
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Elelem
|
|
4
|
-
class Transcript
|
|
5
|
-
def initialize(system_prompt: nil)
|
|
6
|
-
@conversation = Conversation.new
|
|
7
|
-
@system_prompt = SystemPrompt.new(system_prompt)
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
def add(role:, content:, **extra)
|
|
11
|
-
@conversation.add(role: role, content: content, **extra)
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def clear!
|
|
15
|
-
@conversation.clear!
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def last
|
|
19
|
-
@conversation.last
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def to_a(extra = [])
|
|
23
|
-
@conversation.to_a(system_prompt: @system_prompt.render) + extra
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|