brute 0.1.3 → 0.1.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 633d2e5dc4496a672f9b7024bcb214993d0a504f9e9064c781a8b0cc45256fbe
4
- data.tar.gz: d1e976fffce776de48722a1fab81c418da95190a8a650ae9fced1441236e8e1e
3
+ metadata.gz: f2148d5db68a8400e3f3decc496561a7beca3225cc89171c013ba37f3ca48fa6
4
+ data.tar.gz: bbea8457ac274e5953b55ea54ecc5f29a75cb05cceab3631ab2b29eb47c01346
5
5
  SHA512:
6
- metadata.gz: 8fb7eec94c1f2d25ea9c0da77b13e14f79922a39f3c9dde2441d5cc79a8e867bcf1dddd5a35a2b98612d226a561471ddb37b4672cc5d9ae85b341de932c25bd1
7
- data.tar.gz: 4f01ad34028c009f909dbe5b348f94cffe2ee7fae602be8a75b2c199f548ef4086401d6d4e277a5124a2f26df106a6138014213feae07bd530753de6016e6500
6
+ metadata.gz: b179135722aca285350004e8ce425a79f4b493d8417090bbd367fcff6fa0213a6cb207b2bd0ca3ede30ff11c7ee972bf7fce71406244f3dc5aa3a0190d939406
7
+ data.tar.gz: 48eff670f59f22f5dc1389510835ae8f2ca50ca8ec8c0e615bbac10c2c559a50b708859cd47a01fa24c5c406d73000bb7e2f7b49f160832ac157c106ccaed6a5
@@ -16,13 +16,26 @@ module Brute
16
16
  # (streaming delivers chunks incrementally via AgentStream)
17
17
  unless env[:streaming]
18
18
  if (cb = env.dig(:callbacks, :on_content)) && response
19
- text = response.respond_to?(:content) ? response.content : nil
19
+ text = safe_content(response)
20
20
  cb.call(text) if text
21
21
  end
22
22
  end
23
23
 
24
24
  response
25
25
  end
26
+
27
+ private
28
+
29
+ # Safely extract text content from an LLM response.
30
+ # Returns nil when the response contains only tool calls (no assistant text),
31
+ # which causes LLM::Contract::Completion#content to raise NoMethodError
32
+ # because messages.find(&:assistant?) returns nil.
33
+ def safe_content(response)
34
+ return nil unless response.respond_to?(:content)
35
+ response.content
36
+ rescue NoMethodError
37
+ nil
38
+ end
26
39
  end
27
40
  end
28
41
  end
data/lib/brute/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Brute
4
- VERSION = "0.1.3"
4
+ VERSION = "0.1.5"
5
5
  end
data/lib/brute.rb CHANGED
@@ -11,6 +11,8 @@ require "logger"
11
11
  #
12
12
  # Tracing → Retry → Session → Tokens → Compaction → ToolErrors → DoomLoop → Reasoning → [LLM Call]
13
13
  #
14
+ require_relative "brute/version"
15
+
14
16
  module Brute
15
17
  module Tools; end
16
18
  module Hooks; end
@@ -62,7 +64,6 @@ require_relative "brute/tools/delegate"
62
64
  require_relative "brute/orchestrator"
63
65
 
64
66
  module Brute
65
- VERSION = "0.1.3"
66
67
 
67
68
  # The complete set of tools available to the agent.
68
69
  TOOLS = [
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: brute
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brute Contributors
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 1980-01-02 00:00:00.000000000 Z
10
+ date: 1980-01-01 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: llm.rb