nano-bots 0.0.5 → 0.0.6
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/Gemfile.lock +3 -3
- data/README.md +4 -4
- data/components/storage.rb +7 -0
- data/components/stream.rb +37 -0
- data/controllers/cartridges.rb +52 -0
- data/controllers/instance.rb +6 -7
- data/docker-compose.example.yml +1 -1
- data/ports/dsl/nano-bots.rb +7 -1
- data/static/gem.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 58071f1bd32ba3fb2bfe58b64b392139724f3cd97ab72e8822b3db7ebd4779bc
|
4
|
+
data.tar.gz: 60f24c528ced7f151996431288fee4c08b49e099d4fba46181d530ca2fa34581
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 02ed6e915d64df284189cfb599e868364ffacffb3b4e5323c77ec284173d0c74f58a925eb292b834184dac523d150bac8670b1414041872c545f51867ea1690d
|
7
|
+
data.tar.gz: da8c4426fb19e1f1516eb76647bd179669cfae3640b9d83df4d3f1ed1157127efccee58704fa88870129666f19b211c43558a64ce68cd4b86ca6249b2cc63ae8
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
nano-bots (0.0.
|
4
|
+
nano-bots (0.0.6)
|
5
5
|
babosa (~> 2.0)
|
6
6
|
dotenv (~> 2.8, >= 2.8.1)
|
7
7
|
faraday (~> 2.7, >= 2.7.4)
|
@@ -64,13 +64,13 @@ GEM
|
|
64
64
|
parser (>= 3.2.1.0)
|
65
65
|
rubocop-capybara (2.18.0)
|
66
66
|
rubocop (~> 1.41)
|
67
|
-
rubocop-factory_bot (2.
|
67
|
+
rubocop-factory_bot (2.23.1)
|
68
68
|
rubocop (~> 1.33)
|
69
69
|
rubocop-rspec (2.22.0)
|
70
70
|
rubocop (~> 1.33)
|
71
71
|
rubocop-capybara (~> 2.17)
|
72
72
|
rubocop-factory_bot (~> 2.22)
|
73
|
-
ruby-openai (4.
|
73
|
+
ruby-openai (4.1.0)
|
74
74
|
faraday (>= 1)
|
75
75
|
faraday-multipart (>= 1)
|
76
76
|
ruby-progressbar (1.13.0)
|
data/README.md
CHANGED
@@ -23,13 +23,13 @@ https://user-images.githubusercontent.com/113217272/238141567-c58a240c-7b67-4b3b
|
|
23
23
|
For a system usage:
|
24
24
|
|
25
25
|
```sh
|
26
|
-
gem install nano-bots -v 0.0.
|
26
|
+
gem install nano-bots -v 0.0.6
|
27
27
|
```
|
28
28
|
|
29
29
|
To use it in a project, add it to your `Gemfile`:
|
30
30
|
|
31
31
|
```ruby
|
32
|
-
gem 'nano-bots', '~> 0.0.
|
32
|
+
gem 'nano-bots', '~> 0.0.6'
|
33
33
|
```
|
34
34
|
|
35
35
|
```sh
|
@@ -76,7 +76,7 @@ version: '3.7'
|
|
76
76
|
services:
|
77
77
|
nano-bots:
|
78
78
|
image: ruby:3.2.2-slim-bullseye
|
79
|
-
command: sh -c "gem install nano-bots -v 0.0.
|
79
|
+
command: sh -c "gem install nano-bots -v 0.0.6 && bash"
|
80
80
|
environment:
|
81
81
|
OPENAI_API_ADDRESS: https://api.openai.com
|
82
82
|
OPENAI_API_ACCESS_TOKEN: your-token
|
@@ -254,5 +254,5 @@ gem build nano-bots.gemspec
|
|
254
254
|
|
255
255
|
gem signin
|
256
256
|
|
257
|
-
gem push nano-bots-0.0.
|
257
|
+
gem push nano-bots-0.0.6.gem
|
258
258
|
```
|
data/components/storage.rb
CHANGED
@@ -29,6 +29,13 @@ module NanoBot
|
|
29
29
|
path
|
30
30
|
end
|
31
31
|
|
32
|
+
def self.cartridges_path
|
33
|
+
[
|
34
|
+
ENV.fetch('NANO_BOTS_CARTRIDGES_DIRECTORY', nil),
|
35
|
+
"#{user_home!.sub(%r{/$}, '')}/.local/share/nano-bots/cartridges"
|
36
|
+
].uniq.filter { |path| File.directory?(path) }.compact.first
|
37
|
+
end
|
38
|
+
|
32
39
|
def self.cartridge_path(path)
|
33
40
|
partial = File.join(File.dirname(path), File.basename(path, File.extname(path)))
|
34
41
|
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'stringio'
|
4
|
+
|
5
|
+
module NanoBot
|
6
|
+
module Components
|
7
|
+
class Stream < StringIO
|
8
|
+
def write(*args)
|
9
|
+
if @callback
|
10
|
+
@accumulated += args.first
|
11
|
+
@callback.call(@accumulated, args.first, false)
|
12
|
+
end
|
13
|
+
super
|
14
|
+
end
|
15
|
+
|
16
|
+
def callback=(block)
|
17
|
+
@accumulated = ''
|
18
|
+
@callback = block
|
19
|
+
end
|
20
|
+
|
21
|
+
def finish
|
22
|
+
flush
|
23
|
+
result = string.clone
|
24
|
+
truncate(0)
|
25
|
+
rewind
|
26
|
+
|
27
|
+
if @callback
|
28
|
+
@callback.call(@accumulated, nil, true)
|
29
|
+
@callback = nil
|
30
|
+
@accumulated = nil
|
31
|
+
end
|
32
|
+
|
33
|
+
result
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../components/storage'
|
4
|
+
require_relative '../logic/helpers/hash'
|
5
|
+
require_relative '../logic/cartridge/default'
|
6
|
+
|
7
|
+
module NanoBot
|
8
|
+
module Controllers
|
9
|
+
class Cartridges
|
10
|
+
def self.all
|
11
|
+
files = {}
|
12
|
+
|
13
|
+
path = Components::Storage.cartridges_path
|
14
|
+
|
15
|
+
Dir.glob("#{path}/**/*.{yml,yaml}").each do |file|
|
16
|
+
files[Pathname.new(file).realpath] = {
|
17
|
+
base: path,
|
18
|
+
path: Pathname.new(file).realpath
|
19
|
+
}
|
20
|
+
end
|
21
|
+
|
22
|
+
cartridges = []
|
23
|
+
|
24
|
+
files.values.uniq.map do |file|
|
25
|
+
cartridge = Logic::Helpers::Hash.symbolize_keys(
|
26
|
+
YAML.safe_load(File.read(file[:path]), permitted_classes: [Symbol])
|
27
|
+
).merge({
|
28
|
+
system: {
|
29
|
+
id: file[:path].to_s.sub(/^#{Regexp.escape(file[:base])}/, '').sub(%r{^/}, '').sub(/\.[^.]+\z/,
|
30
|
+
''),
|
31
|
+
path: file[:path],
|
32
|
+
base: file[:base]
|
33
|
+
}
|
34
|
+
})
|
35
|
+
|
36
|
+
next if cartridge[:meta][:name].nil?
|
37
|
+
|
38
|
+
cartridges << cartridge
|
39
|
+
rescue StandardError => _e
|
40
|
+
end
|
41
|
+
|
42
|
+
cartridges.sort_by { |cartridge| cartridge[:meta][:name] }
|
43
|
+
|
44
|
+
cartridges.prepend(
|
45
|
+
{ system: { id: '-' }, meta: { name: 'Default', symbol: '🤖' } }
|
46
|
+
)
|
47
|
+
|
48
|
+
cartridges
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
data/controllers/instance.rb
CHANGED
@@ -5,6 +5,7 @@ require 'yaml'
|
|
5
5
|
require_relative '../logic/helpers/hash'
|
6
6
|
require_relative '../components/provider'
|
7
7
|
require_relative '../components/storage'
|
8
|
+
require_relative '../components/stream'
|
8
9
|
require_relative './interfaces/repl'
|
9
10
|
require_relative './interfaces/eval'
|
10
11
|
require_relative './session'
|
@@ -30,16 +31,14 @@ module NanoBot
|
|
30
31
|
@session.state
|
31
32
|
end
|
32
33
|
|
33
|
-
def eval(input)
|
34
|
+
def eval(input, &block)
|
35
|
+
@stream.callback = block if block && @stream.is_a?(Components::Stream)
|
36
|
+
|
34
37
|
Interfaces::Eval.evaluate(input, @cartridge, @session)
|
35
38
|
|
36
|
-
return unless @stream.is_a?(
|
39
|
+
return unless @stream.is_a?(Components::Stream)
|
37
40
|
|
38
|
-
@stream.
|
39
|
-
result = @stream.string.clone
|
40
|
-
@stream.truncate(0)
|
41
|
-
@stream.rewind
|
42
|
-
result
|
41
|
+
@stream.finish
|
43
42
|
end
|
44
43
|
|
45
44
|
def repl
|
data/docker-compose.example.yml
CHANGED
@@ -3,7 +3,7 @@ version: '3.7'
|
|
3
3
|
services:
|
4
4
|
nano-bots:
|
5
5
|
image: ruby:3.2.2-slim-bullseye
|
6
|
-
command: sh -c "apt-get update && apt-get install -y --no-install-recommends build-essential libffi-dev lua5.4-dev && gem install nano-bots -v 0.0.
|
6
|
+
command: sh -c "apt-get update && apt-get install -y --no-install-recommends build-essential libffi-dev lua5.4-dev && gem install nano-bots -v 0.0.6 && bash"
|
7
7
|
environment:
|
8
8
|
OPENAI_API_ADDRESS: https://api.openai.com
|
9
9
|
OPENAI_API_ACCESS_TOKEN: your-token
|
data/ports/dsl/nano-bots.rb
CHANGED
@@ -3,12 +3,18 @@
|
|
3
3
|
require 'dotenv/load'
|
4
4
|
|
5
5
|
require_relative '../../static/gem'
|
6
|
+
require_relative '../../controllers/cartridges'
|
6
7
|
require_relative '../../controllers/instance'
|
7
8
|
require_relative '../../controllers/interfaces/cli'
|
9
|
+
require_relative '../../components/stream'
|
8
10
|
|
9
11
|
module NanoBot
|
10
12
|
def self.new(cartridge: '-', state: '-')
|
11
|
-
Controllers::Instance.new(cartridge_path: cartridge, state:, stream:
|
13
|
+
Controllers::Instance.new(cartridge_path: cartridge, state:, stream: Components::Stream.new)
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.cartridges
|
17
|
+
Controllers::Cartridges.all
|
12
18
|
end
|
13
19
|
|
14
20
|
def self.cli
|
data/static/gem.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
module NanoBot
|
4
4
|
GEM = {
|
5
5
|
name: 'nano-bots',
|
6
|
-
version: '0.0.
|
6
|
+
version: '0.0.6',
|
7
7
|
author: 'icebaker',
|
8
8
|
summary: 'Ruby Implementation of Nano Bots: small, AI-powered bots',
|
9
9
|
description: 'Ruby Implementation of Nano Bots: small, AI-powered bots easily shared as a single file, designed to support multiple providers such as Vicuna, OpenAI ChatGPT, Google PaLM, Alpaca, and LLaMA.',
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nano-bots
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- icebaker
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-05-
|
11
|
+
date: 2023-05-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: babosa
|
@@ -148,6 +148,8 @@ files:
|
|
148
148
|
- components/providers/base.rb
|
149
149
|
- components/providers/openai.rb
|
150
150
|
- components/storage.rb
|
151
|
+
- components/stream.rb
|
152
|
+
- controllers/cartridges.rb
|
151
153
|
- controllers/instance.rb
|
152
154
|
- controllers/interfaces/cli.rb
|
153
155
|
- controllers/interfaces/eval.rb
|