brute 6.1.3 → 6.1.4
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/lib/brute/completion/open_router.rb +8 -2
- data/lib/brute/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f639a3b9b3ec1317f80ee945eb7d610af350d4c862206745aefad42a70afbb4d
|
|
4
|
+
data.tar.gz: 994bf0aaf3104bfad636338639db4c175de7bbcd468a9abd8f90114c4a8e233e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 29b29a00aad896433765e8bbff99ec42422af1c133b4b73231837f85ed7d0ffd4ea2101859fc37ca81c16678860f9a6de72d437d674faf3b9e12d3734f6c36e7
|
|
7
|
+
data.tar.gz: b43248273fc878a7c553e968b010552a7a670933b694a5a952bb3ecb5c197e08595e5134262475ee296c41b538e601347d34bfc7694cb6880b766e78d8231ea8
|
|
@@ -47,8 +47,10 @@ module Brute
|
|
|
47
47
|
env.emit(LLM_START_EVENT)
|
|
48
48
|
|
|
49
49
|
messages = Brute::MessageTransport::OpenRouter.dump_all(env[:messages], model: options(env).model)
|
|
50
|
+
raw = nil
|
|
50
51
|
|
|
51
52
|
::OpenRouter::Client.new(**@config).then do |client|
|
|
53
|
+
client.on(:on_error) { |error| raw = error }
|
|
52
54
|
response = nil
|
|
53
55
|
env.emit(LLM_DURATION_EVENT) { response = client.complete(messages, options(env)) }
|
|
54
56
|
|
|
@@ -76,13 +78,13 @@ module Brute
|
|
|
76
78
|
# kind of failure. The classes are looked up defensively — the provider
|
|
77
79
|
# gem is only a dependency of the app that uses this middleware.
|
|
78
80
|
rescue => error
|
|
79
|
-
env.emit(LLM_FAILURE_EVENT)
|
|
81
|
+
env.emit(LLM_FAILURE_EVENT, raw || error)
|
|
80
82
|
|
|
81
83
|
if defined?(::Faraday::Error) && error.is_a?(::Faraday::Error)
|
|
82
84
|
env.emit(FARADAY_ERROR_EVENT, error)
|
|
83
85
|
|
|
84
86
|
elsif defined?(::OpenRouter::ServerError) && error.is_a?(::OpenRouter::ServerError)
|
|
85
|
-
env.emit(OPEN_ROUTER_SERVER_ERROR_EVENT, error)
|
|
87
|
+
env.emit(OPEN_ROUTER_SERVER_ERROR_EVENT, raw || error)
|
|
86
88
|
|
|
87
89
|
else
|
|
88
90
|
env.emit(STANDARD_ERROR_EVENT, error)
|
|
@@ -147,6 +149,7 @@ describe "brute/completion/open_router" do
|
|
|
147
149
|
# Run one turn against a stubbed OpenRouter::Client and hand back the env.
|
|
148
150
|
with_fake_client = lambda do |completion, response|
|
|
149
151
|
fake_client = Object.new
|
|
152
|
+
fake_client.define_singleton_method(:on) { |_event, &_block| self }
|
|
150
153
|
fake_client.define_singleton_method(:complete) { |_messages, _options| response }
|
|
151
154
|
original = OpenRouter::Client.method(:new)
|
|
152
155
|
OpenRouter::Client.define_singleton_method(:new) { |**_config| fake_client }
|
|
@@ -180,6 +183,7 @@ describe "brute/completion/open_router" do
|
|
|
180
183
|
it "advertises env[:tools] to the provider, and lets a tools: option win" do
|
|
181
184
|
captured = []
|
|
182
185
|
fake_client = Object.new
|
|
186
|
+
fake_client.define_singleton_method(:on) { |_event, &_block| self }
|
|
183
187
|
fake_client.define_singleton_method(:complete) { |_messages, options| captured << options; FakeUsageResponse.new(nil) }
|
|
184
188
|
original = OpenRouter::Client.method(:new)
|
|
185
189
|
OpenRouter::Client.define_singleton_method(:new) { |**_config| fake_client }
|
|
@@ -226,6 +230,7 @@ describe "brute/completion/open_router" do
|
|
|
226
230
|
it "takes the model from env[:model], and lets a model: option win" do
|
|
227
231
|
captured = []
|
|
228
232
|
fake_client = Object.new
|
|
233
|
+
fake_client.define_singleton_method(:on) { |_event, &_block| self }
|
|
229
234
|
fake_client.define_singleton_method(:complete) { |_messages, options| captured << options; FakeUsageResponse.new(nil) }
|
|
230
235
|
original = OpenRouter::Client.method(:new)
|
|
231
236
|
OpenRouter::Client.define_singleton_method(:new) { |**_config| fake_client }
|
|
@@ -260,6 +265,7 @@ describe "brute/completion/open_router" do
|
|
|
260
265
|
|
|
261
266
|
boom = RuntimeError.new("no route to host")
|
|
262
267
|
fake_client = Object.new
|
|
268
|
+
fake_client.define_singleton_method(:on) { |_event, &_block| self }
|
|
263
269
|
fake_client.define_singleton_method(:complete) { |_messages, _options| raise boom }
|
|
264
270
|
original = OpenRouter::Client.method(:new)
|
|
265
271
|
OpenRouter::Client.define_singleton_method(:new) { |**_config| fake_client }
|
data/lib/brute/version.rb
CHANGED