nano-bots 1.2.0 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 32f9bfa761f2b8f34c638d86f207b804a1861873b6ff09dc09202e815fb60943
4
- data.tar.gz: 274c62930860eef8ba3bedff9d169513627160539fd7c30077e883b882fb5330
3
+ metadata.gz: 1cfd38c6461b14483fc0478d31b73ed3e4890f1c534b3c7a4ead6f9412466674
4
+ data.tar.gz: 11f3e82a196f8b27ac1313ee2e653c93521ed7c081ef68bacf15015c8392db34
5
5
  SHA512:
6
- metadata.gz: 7eb6dd2df0d4cbc9a7d7ad880b7ffa633a8ed3ebb52367f1e379efbc78f142a9675603bbcb26c05aa8a2533f3ca9aa5b120faea83843bcc4120a4f01895fa38f
7
- data.tar.gz: a7451773e12f9c25362ffcb04f1c8ce78f7aff0988fec4178d0456d4f91bf70feffa631232a7e182b0cefd6d015ee5fd52ab19448eeeefb77ff821bf2f34d4ea
6
+ metadata.gz: b6a7dbb69afead0f718e2b3c688edb35dfce6f68f138ddd5168c9d72b5eaaedbdcf973b99be873709c4f6b63f71a3f35c9a5d06a0ca4efd32800c52b6de3ccc0
7
+ data.tar.gz: 24bf5641942d008e7afbad2ae37fec1a4f37d28c68b3ab0ab3f560849f8b427a246f5c9c29ddc9221852bbb3cd5e86bb958c9fbff392a0cca0fab81d9c3b0171
data/Gemfile.lock CHANGED
@@ -1,11 +1,11 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- nano-bots (1.2.0)
4
+ nano-bots (2.1.0)
5
5
  babosa (~> 2.0)
6
6
  concurrent-ruby (~> 1.2, >= 1.2.2)
7
7
  dotenv (~> 2.8, >= 2.8.1)
8
- gemini-ai (~> 1.0)
8
+ gemini-ai (~> 2.1)
9
9
  pry (~> 0.14.2)
10
10
  rainbow (~> 3.1, >= 3.1.1)
11
11
  rbnacl (~> 7.1, >= 7.1.1)
@@ -34,7 +34,7 @@ GEM
34
34
  multipart-post (~> 2)
35
35
  faraday-net_http (3.0.2)
36
36
  ffi (1.16.3)
37
- gemini-ai (1.0.0)
37
+ gemini-ai (2.1.0)
38
38
  event_stream_parser (~> 1.0)
39
39
  faraday (~> 2.7, >= 2.7.12)
40
40
  googleauth (~> 1.9, >= 1.9.1)
@@ -54,7 +54,7 @@ GEM
54
54
  multi_json (1.15.0)
55
55
  multipart-post (2.3.0)
56
56
  os (1.1.4)
57
- parallel (1.23.0)
57
+ parallel (1.24.0)
58
58
  parser (3.2.2.4)
59
59
  ast (~> 2.4.1)
60
60
  racc
@@ -131,4 +131,4 @@ DEPENDENCIES
131
131
  rubocop-rspec (~> 2.25)
132
132
 
133
133
  BUNDLED WITH
134
- 2.4.13
134
+ 2.4.22
data/README.md CHANGED
@@ -36,13 +36,13 @@ https://user-images.githubusercontent.com/113217272/238141567-c58a240c-7b67-4b3b
36
36
  For a system usage:
37
37
 
38
38
  ```sh
39
- gem install nano-bots -v 1.2.0
39
+ gem install nano-bots -v 2.1.0
40
40
  ```
41
41
 
42
42
  To use it in a project, add it to your `Gemfile`:
43
43
 
44
44
  ```ruby
45
- gem 'nano-bots', '~> 1.2.0'
45
+ gem 'nano-bots', '~> 2.1.0'
46
46
  ```
47
47
 
48
48
  ```sh
@@ -81,9 +81,34 @@ NANO_BOTS_END_USER=your-user
81
81
 
82
82
  Click [here](https://github.com/gbaptista/gemini-ai#credentials) to learn how to obtain your credentials.
83
83
 
84
+ #### Option 1: API Key (Generative Language API)
85
+
86
+ ```sh
87
+ export GOOGLE_API_KEY=your-api-key
88
+
89
+ export NANO_BOTS_ENCRYPTION_PASSWORD=UNSAFE
90
+ export NANO_BOTS_END_USER=your-user
91
+
92
+ # export NANO_BOTS_STATE_DIRECTORY=/home/user/.local/state/nano-bots
93
+ # export NANO_BOTS_CARTRIDGES_DIRECTORY=/home/user/.local/share/nano-bots/cartridges
94
+ ```
95
+
96
+ Alternatively, if your current directory has a `.env` file with the environment variables, they will be automatically loaded:
97
+
98
+ ```sh
99
+ GOOGLE_API_KEY=your-api-key
100
+
101
+ NANO_BOTS_ENCRYPTION_PASSWORD=UNSAFE
102
+ NANO_BOTS_END_USER=your-user
103
+
104
+ # NANO_BOTS_STATE_DIRECTORY=/home/user/.local/state/nano-bots
105
+ # NANO_BOTS_CARTRIDGES_DIRECTORY=/home/user/.local/share/nano-bots/cartridges
106
+ ```
107
+
108
+ #### Option 2: Service Account Credentials File (Vertex AI API)
109
+
84
110
  ```sh
85
111
  export GOOGLE_CREDENTIALS_FILE_PATH=google-credentials.json
86
- export GOOGLE_PROJECT_ID=your-project-id
87
112
  export GOOGLE_REGION=us-east4
88
113
 
89
114
  export NANO_BOTS_ENCRYPTION_PASSWORD=UNSAFE
@@ -97,7 +122,6 @@ Alternatively, if your current directory has a `.env` file with the environment
97
122
 
98
123
  ```sh
99
124
  GOOGLE_CREDENTIALS_FILE_PATH=google-credentials.json
100
- GOOGLE_PROJECT_ID=your-project-id
101
125
  GOOGLE_REGION=us-east4
102
126
 
103
127
  NANO_BOTS_ENCRYPTION_PASSWORD=UNSAFE
@@ -107,6 +131,44 @@ NANO_BOTS_END_USER=your-user
107
131
  # NANO_BOTS_CARTRIDGES_DIRECTORY=/home/user/.local/share/nano-bots/cartridges
108
132
  ```
109
133
 
134
+ #### Option 3: Application Default Credentials (Vertex AI API)
135
+
136
+ ```sh
137
+ export GOOGLE_REGION=us-east4
138
+
139
+ export NANO_BOTS_ENCRYPTION_PASSWORD=UNSAFE
140
+ export NANO_BOTS_END_USER=your-user
141
+
142
+ # export NANO_BOTS_STATE_DIRECTORY=/home/user/.local/state/nano-bots
143
+ # export NANO_BOTS_CARTRIDGES_DIRECTORY=/home/user/.local/share/nano-bots/cartridges
144
+ ```
145
+
146
+ Alternatively, if your current directory has a `.env` file with the environment variables, they will be automatically loaded:
147
+
148
+ ```sh
149
+ GOOGLE_REGION=us-east4
150
+
151
+ NANO_BOTS_ENCRYPTION_PASSWORD=UNSAFE
152
+ NANO_BOTS_END_USER=your-user
153
+
154
+ # NANO_BOTS_STATE_DIRECTORY=/home/user/.local/state/nano-bots
155
+ # NANO_BOTS_CARTRIDGES_DIRECTORY=/home/user/.local/share/nano-bots/cartridges
156
+ ```
157
+
158
+ #### Custom Project ID
159
+
160
+ If you need to manually set a Google Project ID:
161
+
162
+ ```sh
163
+ export GOOGLE_PROJECT_ID=your-project-id
164
+ ```
165
+
166
+ Alternatively, if your current directory has a `.env` file with the environment variables, they will be automatically loaded:
167
+
168
+ ```sh
169
+ GOOGLE_PROJECT_ID=your-project-id
170
+ ```
171
+
110
172
  ## Docker
111
173
 
112
174
  Clone the repository and copy the Docker Compose template:
@@ -126,7 +188,7 @@ Set your provider credentials and choose your desired directory for the cartridg
126
188
  services:
127
189
  nano-bots:
128
190
  image: ruby:3.2.2-slim-bookworm
129
- command: sh -c "apt-get update && apt-get install -y --no-install-recommends build-essential libffi-dev libsodium-dev lua5.4-dev curl && curl -s https://raw.githubusercontent.com/babashka/babashka/master/install | bash && gem install nano-bots -v 1.2.0 && bash"
191
+ command: sh -c "apt-get update && apt-get install -y --no-install-recommends build-essential libffi-dev libsodium-dev lua5.4-dev curl && curl -s https://raw.githubusercontent.com/babashka/babashka/master/install | bash && gem install nano-bots -v 2.1.0 && bash"
130
192
  environment:
131
193
  OPENAI_API_ADDRESS: https://api.openai.com
132
194
  OPENAI_API_KEY: your-access-token
@@ -139,15 +201,33 @@ services:
139
201
 
140
202
  ### Google Gemini
141
203
 
204
+ #### Option 1: API Key (Generative Language API)
205
+
206
+ ```yaml
207
+ ---
208
+ services:
209
+ nano-bots:
210
+ image: ruby:3.2.2-slim-bookworm
211
+ command: sh -c "apt-get update && apt-get install -y --no-install-recommends build-essential libffi-dev libsodium-dev lua5.4-dev curl && curl -s https://raw.githubusercontent.com/babashka/babashka/master/install | bash && gem install nano-bots -v 2.1.0 && bash"
212
+ environment:
213
+ GOOGLE_API_KEY: your-api-key
214
+ NANO_BOTS_ENCRYPTION_PASSWORD: UNSAFE
215
+ NANO_BOTS_END_USER: your-user
216
+ volumes:
217
+ - ./your-cartridges:/root/.local/share/nano-bots/cartridges
218
+ - ./your-state-path:/root/.local/state/nano-bots
219
+ ```
220
+
221
+ #### Option 2: Service Account Credentials File (Vertex AI API)
222
+
142
223
  ```yaml
143
224
  ---
144
225
  services:
145
226
  nano-bots:
146
227
  image: ruby:3.2.2-slim-bookworm
147
- command: sh -c "apt-get update && apt-get install -y --no-install-recommends build-essential libffi-dev libsodium-dev lua5.4-dev curl && curl -s https://raw.githubusercontent.com/babashka/babashka/master/install | bash && gem install nano-bots -v 1.2.0 && bash"
228
+ command: sh -c "apt-get update && apt-get install -y --no-install-recommends build-essential libffi-dev libsodium-dev lua5.4-dev curl && curl -s https://raw.githubusercontent.com/babashka/babashka/master/install | bash && gem install nano-bots -v 2.1.0 && bash"
148
229
  environment:
149
230
  GOOGLE_CREDENTIALS_FILE_PATH: /root/.config/google-credentials.json
150
- GOOGLE_PROJECT_ID: your-project-id
151
231
  GOOGLE_REGION: us-east4
152
232
  NANO_BOTS_ENCRYPTION_PASSWORD: UNSAFE
153
233
  NANO_BOTS_END_USER: your-user
@@ -157,6 +237,31 @@ services:
157
237
  - ./your-state-path:/root/.local/state/nano-bots
158
238
  ```
159
239
 
240
+ #### Option 3: Application Default Credentials (Vertex AI API)
241
+
242
+ ```yaml
243
+ ---
244
+ services:
245
+ nano-bots:
246
+ image: ruby:3.2.2-slim-bookworm
247
+ command: sh -c "apt-get update && apt-get install -y --no-install-recommends build-essential libffi-dev libsodium-dev lua5.4-dev curl && curl -s https://raw.githubusercontent.com/babashka/babashka/master/install | bash && gem install nano-bots -v 2.1.0 && bash"
248
+ environment:
249
+ GOOGLE_REGION: us-east4
250
+ NANO_BOTS_ENCRYPTION_PASSWORD: UNSAFE
251
+ NANO_BOTS_END_USER: your-user
252
+ volumes:
253
+ - ./your-cartridges:/root/.local/share/nano-bots/cartridges
254
+ - ./your-state-path:/root/.local/state/nano-bots
255
+ ```
256
+
257
+ #### Custom Project ID
258
+ If you need to manually set a Google Project ID:
259
+
260
+ ```yaml
261
+ environment:
262
+ GOOGLE_PROJECT_ID=your-project-id
263
+ ```
264
+
160
265
  ### Container
161
266
 
162
267
  Enter the container:
@@ -346,6 +451,8 @@ provider:
346
451
 
347
452
  Read the [full specification](https://spec.nbots.io/#/README?id=google-gemini) for Google Gemini.
348
453
 
454
+ #### Option 1: API Key (Generative Language API)
455
+
349
456
  ```yaml
350
457
  ---
351
458
  meta:
@@ -363,13 +470,75 @@ behaviors:
363
470
  provider:
364
471
  id: google
365
472
  credentials:
366
- project-id: ENV/GOOGLE_PROJECT_ID
473
+ service: generative-language-api
474
+ api-key: ENV/GOOGLE_API_KEY
475
+ options:
476
+ model: gemini-pro
477
+ ```
478
+
479
+ #### Option 2: Service Account Credentials File (Vertex AI API)
480
+
481
+ ```yaml
482
+ ---
483
+ meta:
484
+ symbol: 🤖
485
+ name: Nano Bot Name
486
+ author: Your Name
487
+ version: 1.0.0
488
+ license: CC0-1.0
489
+ description: A helpful assistant.
490
+
491
+ behaviors:
492
+ interaction:
493
+ directive: You are a helpful assistant.
494
+
495
+ provider:
496
+ id: google
497
+ credentials:
498
+ service: vertex-ai-api
367
499
  file-path: ENV/GOOGLE_CREDENTIALS_FILE_PATH
368
500
  region: ENV/GOOGLE_REGION
369
501
  options:
370
502
  model: gemini-pro
371
503
  ```
372
504
 
505
+ #### Option 3: Application Default Credentials (Vertex AI API)
506
+
507
+ ```yaml
508
+ ---
509
+ meta:
510
+ symbol: 🤖
511
+ name: Nano Bot Name
512
+ author: Your Name
513
+ version: 1.0.0
514
+ license: CC0-1.0
515
+ description: A helpful assistant.
516
+
517
+ behaviors:
518
+ interaction:
519
+ directive: You are a helpful assistant.
520
+
521
+ provider:
522
+ id: google
523
+ credentials:
524
+ service: vertex-ai-api
525
+ region: ENV/GOOGLE_REGION
526
+ options:
527
+ model: gemini-pro
528
+ ```
529
+
530
+ #### Custom Project ID
531
+
532
+ If you need to manually set a Google Project ID:
533
+
534
+ ```yaml
535
+ ---
536
+ provider:
537
+ id: google
538
+ credentials:
539
+ project-id: ENV/GOOGLE_PROJECT_ID
540
+ ```
541
+
373
542
  ### Tools (Functions)
374
543
 
375
544
  Nano Bots can also be powered by _Tools_ (Functions):
@@ -395,7 +564,7 @@ The randomly generated number is 59.
395
564
 
396
565
  🤖> |
397
566
  ```
398
- To successfully use Tools (Functions), you need to specify a provider and a model that supports them. As of the writing of this README, the provider that supports them is [OpenAI](https://platform.openai.com/docs/models), with models `gpt-3.5-turbo-1106` and `gpt-4-1106-preview`, and [Google](https://cloud.google.com/vertex-ai/docs/generative-ai/multimodal/function-calling#supported_models), with the model `gemini-pro`.
567
+ To successfully use Tools (Functions), you need to specify a provider and a model that supports them. As of the writing of this README, the provider that supports them is [OpenAI](https://platform.openai.com/docs/models), with models `gpt-3.5-turbo-1106` and `gpt-4-1106-preview`, and [Google](https://cloud.google.com/vertex-ai/docs/generative-ai/multimodal/function-calling#supported_models), with the `vertex-ai-api` service and the model `gemini-pro`.
399
568
 
400
569
  Check the [Nano Bots specification](https://spec.nbots.io/#/README?id=tools-functions-2) to learn more about Tools (Functions).
401
570
 
@@ -418,7 +587,7 @@ Unlike Lua and Fennel, Clojure support is not _embedded_ in this implementation.
418
587
  Here's [how to install Babashka](https://github.com/babashka/babashka#quickstart):
419
588
 
420
589
  ```sh
421
- curl -s https://raw.githubusercontent.com/babashka/babashka/master/install | bash
590
+ curl -s https://raw.githubusercontent.com/babashka/babashka/master/install | sudo bash
422
591
  ```
423
592
 
424
593
  This is a quick check to ensure that it is available and working:
@@ -576,5 +745,5 @@ gem build nano-bots.gemspec
576
745
 
577
746
  gem signin
578
747
 
579
- gem push nano-bots-1.2.0.gem
748
+ gem push nano-bots-2.1.0.gem
580
749
  ```
@@ -9,7 +9,7 @@ module NanoBot
9
9
  def self.new(provider, environment: {})
10
10
  case provider[:id]
11
11
  when 'openai'
12
- Providers::OpenAI.new(provider[:settings], provider[:credentials], environment:)
12
+ Providers::OpenAI.new(nil, provider[:settings], provider[:credentials], environment:)
13
13
  when 'google'
14
14
  Providers::Google.new(provider[:options], provider[:settings], provider[:credentials], environment:)
15
15
  else
@@ -6,7 +6,7 @@ module NanoBot
6
6
  module Components
7
7
  module Providers
8
8
  class Base
9
- def initialize(_settings, _credentials, _environment: {})
9
+ def initialize(_options, _settings, _credentials, _environment: {})
10
10
  raise NoMethodError, "The 'initialize' method is not implemented for the current provider."
11
11
  end
12
12
 
@@ -13,26 +13,22 @@ module NanoBot
13
13
  module Components
14
14
  module Providers
15
15
  class Google < Base
16
+ SAFETY_SETTINGS = %i[category threshold].freeze
17
+
16
18
  SETTINGS = {
17
19
  generationConfig: %i[
18
20
  temperature topP topK candidateCount maxOutputTokens stopSequences
19
21
  ].freeze
20
22
  }.freeze
21
23
 
22
- SAFETY_SETTINGS = %i[category threshold].freeze
23
-
24
24
  attr_reader :settings
25
25
 
26
26
  def initialize(options, settings, credentials, _environment)
27
27
  @settings = settings
28
28
 
29
29
  @client = Gemini.new(
30
- credentials: {
31
- file_path: credentials[:'file-path'],
32
- project_id: credentials[:'project-id'],
33
- region: credentials[:region]
34
- },
35
- settings: { model: options[:model], stream: options[:stream] }
30
+ credentials: credentials.transform_keys { |key| key.to_s.gsub('-', '_').to_sym },
31
+ options: options.transform_keys { |key| key.to_s.gsub('-', '_').to_sym }
36
32
  )
37
33
  end
38
34
 
@@ -58,12 +54,18 @@ module NanoBot
58
54
  end
59
55
  end
60
56
 
57
+ # TODO: Does Gemini have system messages?
61
58
  %i[backdrop directive].each do |key|
62
59
  next unless input[:behavior][key]
63
60
 
64
- # TODO: Does Gemini have system messages?
65
61
  messages.prepend(
66
- { role: key == :directive ? 'user' : 'user',
62
+ { role: 'model',
63
+ parts: { text: 'Understood.' },
64
+ _meta: { at: Time.now } }
65
+ )
66
+
67
+ messages.prepend(
68
+ { role: 'user',
67
69
  parts: { text: input[:behavior][key] },
68
70
  _meta: { at: Time.now } }
69
71
  )
@@ -122,24 +124,9 @@ module NanoBot
122
124
  end
123
125
 
124
126
  if event.dig('candidates', 0, 'finishReason')
125
- if tools&.size&.positive?
126
- feedback.call(
127
- { should_be_stored: true,
128
- needs_another_round: true,
129
- interaction: { who: 'AI', message: nil, meta: { tool_calls: tools } } }
130
- )
131
- Tools.apply(
132
- cartridge, input[:tools], tools, feedback, Logic::Google::Tools
133
- ).each do |interaction|
134
- feedback.call({ should_be_stored: true, needs_another_round: true, interaction: })
135
- end
136
- end
137
-
138
- feedback.call(
139
- { should_be_stored: !(content.nil? || content == ''),
140
- interaction: content.nil? || content == '' ? nil : { who: 'AI', message: content },
141
- finished: true }
142
- )
127
+ # TODO: This does not have the same behavior as OpenAI, so you should
128
+ # not use it as a reference for the end of the streaming.
129
+ # Is this a bug from the Google Gemini REST API or expected behavior?
143
130
  end
144
131
  end
145
132
 
@@ -148,6 +135,25 @@ module NanoBot
148
135
  Logic::Google::Tokens.apply_policies!(cartridge, payload),
149
136
  stream: true, &stream_call_back
150
137
  )
138
+
139
+ if tools&.size&.positive?
140
+ feedback.call(
141
+ { should_be_stored: true,
142
+ needs_another_round: true,
143
+ interaction: { who: 'AI', message: nil, meta: { tool_calls: tools } } }
144
+ )
145
+ Tools.apply(
146
+ cartridge, input[:tools], tools, feedback, Logic::Google::Tools
147
+ ).each do |interaction|
148
+ feedback.call({ should_be_stored: true, needs_another_round: true, interaction: })
149
+ end
150
+ end
151
+
152
+ feedback.call(
153
+ { should_be_stored: !(content.nil? || content == ''),
154
+ interaction: content.nil? || content == '' ? nil : { who: 'AI', message: content },
155
+ finished: true }
156
+ )
151
157
  rescue StandardError => e
152
158
  raise e.class, e.response[:body] if e.response && e.response[:body]
153
159
 
@@ -17,13 +17,14 @@ module NanoBot
17
17
  DEFAULT_ADDRESS = 'https://api.openai.com'
18
18
 
19
19
  CHAT_SETTINGS = %i[
20
- model stream temperature top_p n stop max_tokens
21
- presence_penalty frequency_penalty logit_bias seed response_format
20
+ model stream frequency_penalty logit_bias logprobs top_logprobs
21
+ max_tokens n presence_penalty response_format seed stop temperature
22
+ top_p tool_choice
22
23
  ].freeze
23
24
 
24
25
  attr_reader :settings
25
26
 
26
- def initialize(settings, credentials, environment: {})
27
+ def initialize(_options, settings, credentials, environment: {})
27
28
  @settings = settings
28
29
  @credentials = credentials
29
30
  @environment = environment
@@ -2,12 +2,21 @@
2
2
  services:
3
3
  nano-bots:
4
4
  image: ruby:3.2.2-slim-bookworm
5
- command: sh -c "apt-get update && apt-get install -y --no-install-recommends build-essential libffi-dev libsodium-dev lua5.4-dev curl && curl -s https://raw.githubusercontent.com/babashka/babashka/master/install | bash && gem install nano-bots -v 1.2.0 && bash"
5
+ command: sh -c "apt-get update && apt-get install -y --no-install-recommends build-essential libffi-dev libsodium-dev lua5.4-dev curl && curl -s https://raw.githubusercontent.com/babashka/babashka/master/install | bash && gem install nano-bots -v 2.1.0 && bash"
6
6
  environment:
7
7
  OPENAI_API_ADDRESS: https://api.openai.com
8
8
  OPENAI_API_KEY: your-access-token
9
+
10
+ GOOGLE_API_KEY: your-api-key
11
+
12
+ GOOGLE_CREDENTIALS_FILE_PATH: /root/.config/google-credentials.json
13
+ GOOGLE_PROJECT_ID: your-project-id
14
+ GOOGLE_REGION: us-east4
15
+
9
16
  NANO_BOTS_ENCRYPTION_PASSWORD: UNSAFE
10
17
  NANO_BOTS_END_USER: your-user
18
+
11
19
  volumes:
20
+ - ./google-credentials.json:/root/.config/google-credentials.json
12
21
  - ./your-cartridges:/root/.local/share/nano-bots/cartridges
13
22
  - ./your-state-path:/root/.local/state/nano-bots
data/nano-bots.gemspec CHANGED
@@ -34,7 +34,7 @@ Gem::Specification.new do |spec|
34
34
  spec.add_dependency 'babosa', '~> 2.0'
35
35
  spec.add_dependency 'concurrent-ruby', '~> 1.2', '>= 1.2.2'
36
36
  spec.add_dependency 'dotenv', '~> 2.8', '>= 2.8.1'
37
- spec.add_dependency 'gemini-ai', '~> 1.0'
37
+ spec.add_dependency 'gemini-ai', '~> 2.1'
38
38
  spec.add_dependency 'pry', '~> 0.14.2'
39
39
  spec.add_dependency 'rainbow', '~> 3.1', '>= 3.1.1'
40
40
  spec.add_dependency 'rbnacl', '~> 7.1', '>= 7.1.1'
@@ -40,4 +40,8 @@ module NanoBot
40
40
  def self.version
41
41
  NanoBot::GEM[:version]
42
42
  end
43
+
44
+ def self.specification
45
+ NanoBot::GEM[:specification]
46
+ end
43
47
  end
data/static/gem.rb CHANGED
@@ -3,7 +3,8 @@
3
3
  module NanoBot
4
4
  GEM = {
5
5
  name: 'nano-bots',
6
- version: '1.2.0',
6
+ version: '2.1.0',
7
+ specification: '2.0.1',
7
8
  author: 'icebaker',
8
9
  summary: 'Ruby Implementation of Nano Bots: small, AI-powered bots for OpenAI ChatGPT and Google Gemini.',
9
10
  description: 'Ruby Implementation of Nano Bots: small, AI-powered bots that can be easily shared as a single file, designed to support multiple providers such as OpenAI ChatGPT and Google Gemini, with support for calling Tools (Functions).',
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: 1.2.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - icebaker
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-12-15 00:00:00.000000000 Z
11
+ date: 2023-12-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: babosa
@@ -70,14 +70,14 @@ dependencies:
70
70
  requirements:
71
71
  - - "~>"
72
72
  - !ruby/object:Gem::Version
73
- version: '1.0'
73
+ version: '2.1'
74
74
  type: :runtime
75
75
  prerelease: false
76
76
  version_requirements: !ruby/object:Gem::Requirement
77
77
  requirements:
78
78
  - - "~>"
79
79
  - !ruby/object:Gem::Version
80
- version: '1.0'
80
+ version: '2.1'
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: pry
83
83
  requirement: !ruby/object:Gem::Requirement
@@ -248,7 +248,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
248
248
  - !ruby/object:Gem::Version
249
249
  version: '0'
250
250
  requirements: []
251
- rubygems_version: 3.4.22
251
+ rubygems_version: 3.3.3
252
252
  signing_key:
253
253
  specification_version: 4
254
254
  summary: 'Ruby Implementation of Nano Bots: small, AI-powered bots for OpenAI ChatGPT