nuntius-rb 1.0.0.pre → 1.0.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/LICENSE +1 -1
- data/README.md +25 -27
- data/lib/core/client.rb +53 -28
- data/lib/core/errors.rb +3 -3
- data/lib/core/version.rb +3 -3
- data/lib/{gemini.rb → nuntius.rb} +5 -5
- data/lib/utils/loader.rb +2 -2
- data/lib/utils/logger.rb +2 -2
- data/lib/utils/moderation.rb +1 -1
- metadata +26 -18
- data/lib/mac/README.md +0 -39
- data/lib/mac/mac_utils.rb +0 -15
- data/lib/vesper.rb +0 -7
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e0f5a8c8df36dd86149885936e553f180f4501b9f1e3a65c0ca8a5165f0f9bec
|
|
4
|
+
data.tar.gz: bc86749dc66129a851f2a32c4b066e2661c07473be5d099b90bf627360c30ad8
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 200edf2400f1a649fe56b520f8b6168e636be63cbd34ab89f6678be3b4a10f24c40f840559d71b1b568c31667c5e94cd0afb5e51d987b12b597bc57167ea766a
|
|
7
|
+
data.tar.gz: ef8cba98917f75c53039ad9a5f719bfa8e567ed72d7aa26ea911eadc2d52d36971ce742f36e078f9f11d2eff07a2e6e9b90fa06f2a837dfc2b1c8da68f0ef1e7
|
data/LICENSE
CHANGED
data/README.md
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
#
|
|
2
|
-
<img src="website/assets/
|
|
1
|
+
# Nuntius
|
|
2
|
+
<img src="website/assets/nuntius-header.png" alt="Nuntius" width="100%">
|
|
3
3
|
|
|
4
4
|
<br>
|
|
5
5
|
|
|
6
|
-
[](https://rubygems.org/gems/nuntius-rb)
|
|
7
6
|

|
|
8
7
|
[](LICENSE)
|
|
9
8
|

|
|
@@ -29,12 +28,12 @@ With Bundler:
|
|
|
29
28
|
<br>
|
|
30
29
|
|
|
31
30
|
```ruby
|
|
32
|
-
gem 'nuntius-rb', require: '
|
|
31
|
+
gem 'nuntius-rb', require: 'nuntius'
|
|
33
32
|
```
|
|
34
33
|
|
|
35
34
|
<br>
|
|
36
35
|
|
|
37
|
-
The package is published as `nuntius-rb`. The runtime entrypoint is `
|
|
36
|
+
The package is published as `nuntius-rb`. The runtime entrypoint is `nuntius`.
|
|
38
37
|
|
|
39
38
|
<br>
|
|
40
39
|
|
|
@@ -62,10 +61,10 @@ GEMINI_API_KEY=your_api_key
|
|
|
62
61
|
<br>
|
|
63
62
|
|
|
64
63
|
```ruby
|
|
65
|
-
require '
|
|
66
|
-
|
|
64
|
+
require 'nuntius'
|
|
65
|
+
Nuntius.load_env
|
|
67
66
|
|
|
68
|
-
client =
|
|
67
|
+
client = Nuntius::Client.new
|
|
69
68
|
puts client.generate_text('Write a haiku about Ruby')
|
|
70
69
|
```
|
|
71
70
|
|
|
@@ -76,32 +75,31 @@ Use a different model when needed:
|
|
|
76
75
|
<br>
|
|
77
76
|
|
|
78
77
|
```ruby
|
|
79
|
-
fast_client =
|
|
78
|
+
fast_client = Nuntius::Client.new(model: :flash)
|
|
80
79
|
puts fast_client.generate_text('Explain Ruby in one sentence')
|
|
81
80
|
```
|
|
82
81
|
|
|
83
82
|
<br>
|
|
84
83
|
|
|
85
|
-
# generateContent Text Models
|
|
84
|
+
# generateContent Text Models: Flash family (Free-Tier)
|
|
86
85
|
|
|
87
86
|
<br>
|
|
88
87
|
|
|
89
88
|
| Key | ID |
|
|
90
89
|
| --- | --- |
|
|
91
90
|
| `:flash_latest` | `gemini-flash-latest` |
|
|
92
|
-
| `:
|
|
91
|
+
| `:flash_3_7` | `gemini-3.7-flash` |
|
|
92
|
+
| `:flash_3_6` | `gemini-3.6-flash` |
|
|
93
93
|
| `:flash_3_5` | `gemini-3.5-flash` |
|
|
94
|
-
| `:
|
|
94
|
+
| `:flash_3_5_lite` | `gemini-3.5-flash-lite` |
|
|
95
95
|
| `:flash_3_preview` | `gemini-3-flash-preview` |
|
|
96
|
-
| `:pro_3_1_preview` | `gemini-3.1-pro-preview` |
|
|
97
96
|
| `:flash_3_1_lite` | `gemini-3.1-flash-lite` |
|
|
98
|
-
| `:pro_2_5` | `gemini-2.5-pro` |
|
|
99
97
|
| `:flash_2_5` | `gemini-2.5-flash` |
|
|
100
98
|
| `:flash_2_0` | `gemini-2.0-flash` |
|
|
101
99
|
|
|
102
100
|
<br>
|
|
103
101
|
|
|
104
|
-
Short aliases: `:
|
|
102
|
+
Short aliases: `:flash` uses `gemini-3.7-flash` (default), `:flash_fallback` uses `gemini-3.6-flash`, and `:flash_lite` uses `gemini-3.1-flash-lite`. Legacy `:pro_2_0` maps to `gemini-2.0-flash`. Pro models (`gemini-pro-latest`, `gemini-3.1-pro-preview`, `gemini-2.5-pro`) are retired for Free-Tier, as they resolve to the `3.1-pro` backend and hit quota `0`. Use billing to enable.
|
|
105
103
|
|
|
106
104
|
<br>
|
|
107
105
|
|
|
@@ -113,7 +111,7 @@ The gem does not wrap embeddings, Imagen, or Veo APIs.
|
|
|
113
111
|
|
|
114
112
|
<br>
|
|
115
113
|
|
|
116
|
-
|
|
114
|
+
Nuntius supports text generation, chat, image input for `generateContent`, model aliases, safety settings, API key masking, retries, and a local CLI.
|
|
117
115
|
|
|
118
116
|
<br>
|
|
119
117
|
|
|
@@ -121,7 +119,7 @@ Vesper supports text generation, chat, image input for `generateContent`, model
|
|
|
121
119
|
|
|
122
120
|
<br>
|
|
123
121
|
|
|
124
|
-
Client validation and API failures raise `
|
|
122
|
+
Client validation and API failures raise `Nuntius::Error` with a readable message.
|
|
125
123
|
HTTP 429 responses are retried automatically up to three times with exponential backoff.
|
|
126
124
|
|
|
127
125
|
<br>
|
|
@@ -130,7 +128,7 @@ HTTP 429 responses are retried automatically up to three times with exponential
|
|
|
130
128
|
begin
|
|
131
129
|
response = client.generate_text('Hello')
|
|
132
130
|
puts response
|
|
133
|
-
rescue
|
|
131
|
+
rescue Nuntius::Error => err
|
|
134
132
|
warn "Generation failed: #{err.message}"
|
|
135
133
|
end
|
|
136
134
|
```
|
|
@@ -170,10 +168,10 @@ Requests use a 30 second HTTParty timeout.
|
|
|
170
168
|
<br>
|
|
171
169
|
|
|
172
170
|
```ruby
|
|
173
|
-
require '
|
|
171
|
+
require 'nuntius'
|
|
174
172
|
|
|
175
|
-
|
|
176
|
-
client =
|
|
173
|
+
Nuntius::Client.logger.level = Logger::INFO
|
|
174
|
+
client = Nuntius::Client.new
|
|
177
175
|
```
|
|
178
176
|
|
|
179
177
|
<br>
|
|
@@ -224,11 +222,11 @@ gem build nuntius-rb.gemspec
|
|
|
224
222
|
|
|
225
223
|
<br>
|
|
226
224
|
|
|
227
|
-
|
|
225
|
+
Nuntius Review is the PR review app in this repo. It defaults to `gemini-3.7-flash` (fallback `gemini-3.6-flash` for large diffs). Override with `NUNTIUS_GEMINI_MODEL`. Retrieval context is off unless enabled in `nuntius/config.yaml`. Only verified `generateContent` Flash models are listed as supported. See API `GET /v1beta/models` for existence, not quota.
|
|
228
226
|
|
|
229
227
|
<br>
|
|
230
228
|
|
|
231
|
-
For setup details, see [`
|
|
229
|
+
For setup details, see [`nuntius/Nuntius.md`](nuntius/Nuntius.md).
|
|
232
230
|
|
|
233
231
|
<br>
|
|
234
232
|
|
|
@@ -241,7 +239,7 @@ For setup details, see [`vesper/Vesper.md`](vesper/Vesper.md).
|
|
|
241
239
|
<br>
|
|
242
240
|
|
|
243
241
|
```ruby
|
|
244
|
-
client =
|
|
242
|
+
client = Nuntius::Client.new
|
|
245
243
|
puts client.generate_text('Write a haiku about Ruby')
|
|
246
244
|
```
|
|
247
245
|
|
|
@@ -305,11 +303,11 @@ MIT → see [`LICENSE`](LICENSE).
|
|
|
305
303
|
<br>
|
|
306
304
|
|
|
307
305
|
<p align="center">
|
|
308
|
-
<a href="https://github.com/apps/
|
|
309
|
-
<img src="website/favicon.svg" alt="
|
|
306
|
+
<a href="https://github.com/apps/nuntius-review">
|
|
307
|
+
<img src="website/favicon.svg" alt="Nuntius Review app" width="96">
|
|
310
308
|
</a>
|
|
311
309
|
|
|
312
310
|
<br>
|
|
313
311
|
|
|
314
|
-
<a href="https://github.com/apps/
|
|
312
|
+
<a href="https://github.com/apps/nuntius-review"><code>Nuntius Review</code></a>
|
|
315
313
|
</p>
|
data/lib/core/client.rb
CHANGED
|
@@ -1,42 +1,68 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
# SPDX-License-Identifier: MIT
|
|
3
|
-
# Copyright (c) 2026
|
|
3
|
+
# Copyright (c) 2026 Palmshed
|
|
4
4
|
|
|
5
5
|
require 'httparty'
|
|
6
6
|
require 'json'
|
|
7
7
|
require 'base64'
|
|
8
8
|
require 'logger'
|
|
9
|
+
require 'yaml'
|
|
9
10
|
require 'dotenv/load'
|
|
10
11
|
require_relative 'errors'
|
|
11
12
|
require_relative '../utils/moderation'
|
|
12
13
|
|
|
13
|
-
module
|
|
14
|
+
module Nuntius
|
|
14
15
|
# Core client class for Gemini AI API communication
|
|
15
16
|
class Client
|
|
16
17
|
BASE_URL = 'https://generativelanguage.googleapis.com/v1beta/models'
|
|
17
|
-
|
|
18
|
+
|
|
19
|
+
# Canonical model source: config/models.yaml (repository-wide)
|
|
20
|
+
# This file is the single source of truth. Code must not duplicate model names.
|
|
21
|
+
CANONICAL_PATH = File.expand_path('../../config/models.yaml', __dir__)
|
|
22
|
+
CANONICAL = begin
|
|
23
|
+
if File.exist?(CANONICAL_PATH)
|
|
24
|
+
YAML.safe_load(File.read(CANONICAL_PATH)) || {}
|
|
25
|
+
else
|
|
26
|
+
{}
|
|
27
|
+
end
|
|
28
|
+
rescue StandardError
|
|
29
|
+
{}
|
|
30
|
+
end.freeze
|
|
31
|
+
|
|
32
|
+
CANONICAL_DEFAULT = (CANONICAL['default'] || 'gemini-3.7-flash').freeze
|
|
33
|
+
CANONICAL_FALLBACK = (CANONICAL['fallback'] || 'gemini-3.6-flash').freeze
|
|
34
|
+
CANONICAL_STABLE = (CANONICAL['stable_baseline'] || 'gemini-3.5-flash').freeze
|
|
35
|
+
CANONICAL_LIGHTWEIGHT = (CANONICAL['lightweight'] || ['gemini-3.1-flash-lite', 'gemini-3.5-flash-lite']).freeze
|
|
36
|
+
CANONICAL_LIGHT = CANONICAL_LIGHTWEIGHT.first || 'gemini-3.1-flash-lite'
|
|
37
|
+
|
|
38
|
+
# generateContent text model aliases: Flash family only (Free-Tier compatible).
|
|
39
|
+
# Values are derived from config/models.yaml. Do not hard-code elsewhere.
|
|
18
40
|
MODELS = {
|
|
19
41
|
flash_latest: 'gemini-flash-latest',
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
42
|
+
flash_3_7: CANONICAL_DEFAULT,
|
|
43
|
+
flash_3_6: CANONICAL_FALLBACK,
|
|
44
|
+
flash_3_5: CANONICAL_STABLE,
|
|
45
|
+
flash_3_5_lite: CANONICAL_LIGHTWEIGHT[1] || 'gemini-3.5-flash-lite',
|
|
24
46
|
flash_3_preview: 'gemini-3-flash-preview',
|
|
25
|
-
|
|
26
|
-
flash_3_1_lite: 'gemini-3.1-flash-lite',
|
|
27
|
-
pro_2_5: 'gemini-2.5-pro',
|
|
47
|
+
flash_3_1_lite: CANONICAL_LIGHT,
|
|
28
48
|
flash_2_5: 'gemini-2.5-flash',
|
|
29
49
|
flash_2_0: 'gemini-2.0-flash',
|
|
30
50
|
|
|
31
|
-
# Short aliases.
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
flash_lite:
|
|
35
|
-
pro_2_0: 'gemini-2.0-flash'
|
|
51
|
+
# Short aliases: default Flash is 3.7, fallback 3.6.
|
|
52
|
+
flash: CANONICAL_DEFAULT,
|
|
53
|
+
flash_fallback: CANONICAL_FALLBACK,
|
|
54
|
+
flash_lite: CANONICAL_LIGHT,
|
|
55
|
+
pro_2_0: 'gemini-2.0-flash' # legacy alias, resolves to Flash (gemini-2.0-flash), keep for backward compat
|
|
36
56
|
}.freeze
|
|
37
57
|
|
|
38
|
-
# Deprecated models
|
|
58
|
+
# Deprecated/retired models: Pro family requires billing, not usable on Free-Tier.
|
|
59
|
+
# Kept for backward compat but warn and default to :flash (gemini-3.7-flash).
|
|
39
60
|
DEPRECATED_MODELS = {
|
|
61
|
+
pro_latest: 'gemini-pro-latest',
|
|
62
|
+
pro: 'gemini-pro-latest',
|
|
63
|
+
pro_3_preview: 'gemini-3-pro-preview',
|
|
64
|
+
pro_3_1_preview: 'gemini-3.1-pro-preview',
|
|
65
|
+
pro_2_5: 'gemini-2.5-pro',
|
|
40
66
|
pro_1_5: 'gemini-1.5-pro',
|
|
41
67
|
flash_1_5: 'gemini-1.5-flash',
|
|
42
68
|
flash_8b: 'gemini-1.5-flash-8b'
|
|
@@ -54,7 +80,7 @@ module GeminiAI
|
|
|
54
80
|
end
|
|
55
81
|
end
|
|
56
82
|
|
|
57
|
-
def initialize(api_key = nil, model: :
|
|
83
|
+
def initialize(api_key = nil, model: :flash)
|
|
58
84
|
# Prioritize passed API key, then environment variable
|
|
59
85
|
@api_key = api_key || ENV.fetch('GEMINI_API_KEY', nil)
|
|
60
86
|
|
|
@@ -110,8 +136,8 @@ module GeminiAI
|
|
|
110
136
|
generationConfig: build_generation_config(options)
|
|
111
137
|
}
|
|
112
138
|
|
|
113
|
-
# Use the
|
|
114
|
-
apply_moderation(send_request(request_body, model: :
|
|
139
|
+
# Use the flash model for image-to-text tasks (Free-Tier compatible)
|
|
140
|
+
apply_moderation(send_request(request_body, model: :flash), options)
|
|
115
141
|
end
|
|
116
142
|
|
|
117
143
|
def chat(messages, options = {})
|
|
@@ -146,13 +172,13 @@ module GeminiAI
|
|
|
146
172
|
|
|
147
173
|
def resolve_model(model)
|
|
148
174
|
if DEPRECATED_MODELS.key?(model)
|
|
149
|
-
self.class.logger.warn("Model #{model} (#{DEPRECATED_MODELS[model]}) is deprecated
|
|
150
|
-
|
|
151
|
-
MODELS[:
|
|
175
|
+
self.class.logger.warn("Model #{model} (#{DEPRECATED_MODELS[model]}) is deprecated/retired (Pro requires billing). " \
|
|
176
|
+
"Defaulting to :flash (#{CANONICAL_DEFAULT}). Please update your code to use Flash models.")
|
|
177
|
+
MODELS[:flash]
|
|
152
178
|
else
|
|
153
179
|
MODELS.fetch(model) do
|
|
154
|
-
self.class.logger.warn("Invalid model: #{model}, defaulting to
|
|
155
|
-
MODELS[:
|
|
180
|
+
self.class.logger.warn("Invalid model: #{model}, defaulting to flash")
|
|
181
|
+
MODELS[:flash]
|
|
156
182
|
end
|
|
157
183
|
end
|
|
158
184
|
end
|
|
@@ -176,8 +202,7 @@ module GeminiAI
|
|
|
176
202
|
end
|
|
177
203
|
|
|
178
204
|
def valid_api_key_format?(key)
|
|
179
|
-
|
|
180
|
-
key =~ /^AIza[a-zA-Z0-9_-]{35,}$/
|
|
205
|
+
key.length >= 30
|
|
181
206
|
end
|
|
182
207
|
|
|
183
208
|
def validate_prompt!(prompt)
|
|
@@ -205,7 +230,7 @@ module GeminiAI
|
|
|
205
230
|
# Rate limiting - ensure minimum interval between requests
|
|
206
231
|
rate_limit_delay
|
|
207
232
|
|
|
208
|
-
current_model = model ? MODELS.fetch(model) { MODELS[:
|
|
233
|
+
current_model = model ? MODELS.fetch(model) { MODELS[:flash] } : @model
|
|
209
234
|
url = "#{BASE_URL}/#{current_model}:generateContent?key=#{@api_key}"
|
|
210
235
|
|
|
211
236
|
# Log URL with masked API key for security
|
|
@@ -219,7 +244,7 @@ module GeminiAI
|
|
|
219
244
|
body: body.to_json,
|
|
220
245
|
headers: {
|
|
221
246
|
'Content-Type' => 'application/json',
|
|
222
|
-
'x-goog-api-client' => '
|
|
247
|
+
'x-goog-api-client' => 'nuntius_ruby_gem/0.1.0'
|
|
223
248
|
},
|
|
224
249
|
timeout: 30
|
|
225
250
|
)
|
data/lib/core/errors.rb
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# SPDX-License-Identifier: MIT
|
|
2
|
-
# Copyright (c) 2026
|
|
2
|
+
# Copyright (c) 2026 Palmshed
|
|
3
3
|
|
|
4
4
|
# frozen_string_literal: true
|
|
5
5
|
|
|
6
|
-
module
|
|
7
|
-
# Base error class for all
|
|
6
|
+
module Nuntius
|
|
7
|
+
# Base error class for all Nuntius related errors
|
|
8
8
|
class Error < StandardError; end
|
|
9
9
|
|
|
10
10
|
# API related errors
|
data/lib/core/version.rb
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
# SPDX-License-Identifier: MIT
|
|
2
|
-
# Copyright (c) 2026
|
|
2
|
+
# Copyright (c) 2026 Palmshed
|
|
3
3
|
|
|
4
4
|
# frozen_string_literal: true
|
|
5
5
|
|
|
6
|
-
# Main entry point for the
|
|
6
|
+
# Main entry point for the Nuntius gem
|
|
7
7
|
require_relative 'core/version'
|
|
8
8
|
require_relative 'core/errors'
|
|
9
9
|
require_relative 'core/client'
|
|
10
10
|
require_relative 'utils/loader'
|
|
11
11
|
require_relative 'utils/logger'
|
|
12
12
|
|
|
13
|
-
module
|
|
14
|
-
# Convenience method to create a new client
|
|
15
|
-
def self.new(api_key = nil, model: :
|
|
13
|
+
module Nuntius
|
|
14
|
+
# Convenience method to create a new client: default is Flash (3.7) for Free-Tier
|
|
15
|
+
def self.new(api_key = nil, model: :flash)
|
|
16
16
|
Client.new(api_key, model: model)
|
|
17
17
|
end
|
|
18
18
|
|
data/lib/utils/loader.rb
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# SPDX-License-Identifier: MIT
|
|
2
|
-
# Copyright (c) 2026
|
|
2
|
+
# Copyright (c) 2026 Palmshed
|
|
3
3
|
|
|
4
4
|
# frozen_string_literal: true
|
|
5
5
|
|
|
6
|
-
module
|
|
6
|
+
module Nuntius
|
|
7
7
|
module Utils
|
|
8
8
|
# Utility class for loading environment variables from .env files
|
|
9
9
|
class Loader
|
data/lib/utils/logger.rb
CHANGED
data/lib/utils/moderation.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: nuntius-rb
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0.0
|
|
4
|
+
version: 1.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Niladri Das
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: httparty
|
|
@@ -51,13 +50,27 @@ dependencies:
|
|
|
51
50
|
- - "~>"
|
|
52
51
|
- !ruby/object:Gem::Version
|
|
53
52
|
version: '3.2'
|
|
54
|
-
type: :
|
|
53
|
+
type: :runtime
|
|
55
54
|
prerelease: false
|
|
56
55
|
version_requirements: !ruby/object:Gem::Requirement
|
|
57
56
|
requirements:
|
|
58
57
|
- - "~>"
|
|
59
58
|
- !ruby/object:Gem::Version
|
|
60
59
|
version: '3.2'
|
|
60
|
+
- !ruby/object:Gem::Dependency
|
|
61
|
+
name: base64
|
|
62
|
+
requirement: !ruby/object:Gem::Requirement
|
|
63
|
+
requirements:
|
|
64
|
+
- - ">="
|
|
65
|
+
- !ruby/object:Gem::Version
|
|
66
|
+
version: '0'
|
|
67
|
+
type: :runtime
|
|
68
|
+
prerelease: false
|
|
69
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
70
|
+
requirements:
|
|
71
|
+
- - ">="
|
|
72
|
+
- !ruby/object:Gem::Version
|
|
73
|
+
version: '0'
|
|
61
74
|
- !ruby/object:Gem::Dependency
|
|
62
75
|
name: minitest
|
|
63
76
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -134,28 +147,28 @@ dependencies:
|
|
|
134
147
|
requirements:
|
|
135
148
|
- - "~>"
|
|
136
149
|
- !ruby/object:Gem::Version
|
|
137
|
-
version: 1.
|
|
150
|
+
version: 1.89.0
|
|
138
151
|
type: :development
|
|
139
152
|
prerelease: false
|
|
140
153
|
version_requirements: !ruby/object:Gem::Requirement
|
|
141
154
|
requirements:
|
|
142
155
|
- - "~>"
|
|
143
156
|
- !ruby/object:Gem::Version
|
|
144
|
-
version: 1.
|
|
157
|
+
version: 1.89.0
|
|
145
158
|
- !ruby/object:Gem::Dependency
|
|
146
159
|
name: rubocop-minitest
|
|
147
160
|
requirement: !ruby/object:Gem::Requirement
|
|
148
161
|
requirements:
|
|
149
162
|
- - "~>"
|
|
150
163
|
- !ruby/object:Gem::Version
|
|
151
|
-
version: 0.
|
|
164
|
+
version: 0.40.0
|
|
152
165
|
type: :development
|
|
153
166
|
prerelease: false
|
|
154
167
|
version_requirements: !ruby/object:Gem::Requirement
|
|
155
168
|
requirements:
|
|
156
169
|
- - "~>"
|
|
157
170
|
- !ruby/object:Gem::Version
|
|
158
|
-
version: 0.
|
|
171
|
+
version: 0.40.0
|
|
159
172
|
- !ruby/object:Gem::Dependency
|
|
160
173
|
name: rubocop-rake
|
|
161
174
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -182,19 +195,15 @@ files:
|
|
|
182
195
|
- lib/core/client.rb
|
|
183
196
|
- lib/core/errors.rb
|
|
184
197
|
- lib/core/version.rb
|
|
185
|
-
- lib/
|
|
186
|
-
- lib/mac/README.md
|
|
187
|
-
- lib/mac/mac_utils.rb
|
|
198
|
+
- lib/nuntius.rb
|
|
188
199
|
- lib/utils/loader.rb
|
|
189
200
|
- lib/utils/logger.rb
|
|
190
201
|
- lib/utils/moderation.rb
|
|
191
|
-
|
|
192
|
-
homepage: https://github.com/bniladridas/vesper
|
|
202
|
+
homepage: https://github.com/palmshed/nuntius
|
|
193
203
|
licenses:
|
|
194
204
|
- MIT
|
|
195
205
|
metadata:
|
|
196
206
|
rubygems_mfa_required: 'true'
|
|
197
|
-
post_install_message:
|
|
198
207
|
rdoc_options: []
|
|
199
208
|
require_paths:
|
|
200
209
|
- lib
|
|
@@ -205,12 +214,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
205
214
|
version: 3.3.0
|
|
206
215
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
207
216
|
requirements:
|
|
208
|
-
- - "
|
|
217
|
+
- - ">="
|
|
209
218
|
- !ruby/object:Gem::Version
|
|
210
|
-
version:
|
|
219
|
+
version: '0'
|
|
211
220
|
requirements: []
|
|
212
|
-
rubygems_version:
|
|
213
|
-
signing_key:
|
|
221
|
+
rubygems_version: 4.0.16
|
|
214
222
|
specification_version: 4
|
|
215
223
|
summary: A Ruby gem for interacting with Google's Gemini AI models
|
|
216
224
|
test_files: []
|
data/lib/mac/README.md
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
# Mac Utils
|
|
2
|
-
|
|
3
|
-
<br>
|
|
4
|
-
|
|
5
|
-
This module provides macOS-specific utilities for the vesper gem.
|
|
6
|
-
|
|
7
|
-
<br>
|
|
8
|
-
|
|
9
|
-
# Methods
|
|
10
|
-
|
|
11
|
-
<br>
|
|
12
|
-
|
|
13
|
-
# `GeminiAI::MacUtils.mac?`
|
|
14
|
-
|
|
15
|
-
<br>
|
|
16
|
-
|
|
17
|
-
Returns `true` if the current platform is macOS (Darwin), `false` otherwise.
|
|
18
|
-
|
|
19
|
-
<br>
|
|
20
|
-
|
|
21
|
-
# `GeminiAI::MacUtils.version`
|
|
22
|
-
|
|
23
|
-
<br>
|
|
24
|
-
|
|
25
|
-
Returns the macOS version string (e.g., "14.1") if running on macOS, `nil` otherwise.
|
|
26
|
-
|
|
27
|
-
<br>
|
|
28
|
-
|
|
29
|
-
# Usage
|
|
30
|
-
|
|
31
|
-
<br>
|
|
32
|
-
|
|
33
|
-
```ruby
|
|
34
|
-
require 'mac/mac_utils'
|
|
35
|
-
|
|
36
|
-
if GeminiAI::MacUtils.mac?
|
|
37
|
-
puts "Running on macOS version #{GeminiAI::MacUtils.version}"
|
|
38
|
-
end
|
|
39
|
-
```
|
data/lib/mac/mac_utils.rb
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
# SPDX-License-Identifier: MIT
|
|
2
|
-
# Copyright (c) 2026 vesper
|
|
3
|
-
|
|
4
|
-
module GeminiAI
|
|
5
|
-
module MacUtils
|
|
6
|
-
def self.mac?
|
|
7
|
-
require 'rbconfig'
|
|
8
|
-
RbConfig::CONFIG['host_os'] =~ /darwin/
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
def self.version
|
|
12
|
-
`/usr/bin/sw_vers -productVersion`.strip if mac?
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
end
|