brute_rack 0.1.3 → 0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b476d12d55bb4314df8096fc8322e8f0f3d9af7974e990fd31d5567896a3f2e0
4
- data.tar.gz: c0e074841bbca742dc26955800888cf703f95ae60834b7e31fb1e29e870246cc
3
+ metadata.gz: 82b85af4dca2ec9cb2ecf84d62110bf71b2b2ee8f9b62878c7da38261e2214ab
4
+ data.tar.gz: 2030f69744e6662ade003b1318a2796124a0d7b84973009830906ee0e53ec536
5
5
  SHA512:
6
- metadata.gz: cbd651daaf14bd2f274233e2beb43c887f159c625fb3d94c62078de87a51cca2cb22fb3b942d66c322fe217259a3caab3ae158e038abfc7bb8aa880dbc31b64f
7
- data.tar.gz: '0893435bddc960b6b8f2c120580dc8b5e44c3a8ce0d7dc2f774f21e23d6d08e7079af3d35ef1ee41494116c1fb610051666aa2b940504d188357d69067256a8a'
6
+ metadata.gz: c122b23c366c32745469cee6e19a82d48a9c6a1c410f8386eeac0ba7b65749291cc985231344284debfdcac1d9e6bf83a21aeb48844e9f5b7fcaf7c6428b60d6
7
+ data.tar.gz: 37d190fad19e5a7e365268c25634df099f3d98ea92507da97b0b969752e28fd86d5155c079c74419d8bce78ccf692119b29876668f0da36f5954aa3bb4ac4b67
@@ -23,6 +23,13 @@ module BruteRack
23
23
  @logger = Logger.new($stderr, level: Logger::INFO)
24
24
  @event_bus = EventBus.new
25
25
  @registry = SessionRegistry.new(event_bus: @event_bus, cwd: cwd, agent_options: agent_options)
26
+
27
+ # Set process working directory so tools that default to Dir.pwd
28
+ # (shell, fs_search, fs_read, etc.) operate in the right place.
29
+ if File.directory?(@cwd) && @cwd != Dir.pwd
30
+ Dir.chdir(@cwd)
31
+ @logger.info("BruteRack: chdir to #{@cwd}")
32
+ end
26
33
  end
27
34
 
28
35
  def call(env)
@@ -38,9 +38,18 @@ module BruteRack
38
38
 
39
39
  registry.run(id, text, cwd: body["cwd"] || cwd).then do |response|
40
40
  message_id = SecureRandom.uuid
41
+ content = begin
42
+ response&.content
43
+ rescue NoMethodError
44
+ # LLM returned tool-call-only response with no assistant text;
45
+ # LLM::Contract::Completion#content calls
46
+ # messages.find(&:assistant?).content
47
+ # which raises when find returns nil.
48
+ nil
49
+ end
41
50
  {
42
51
  info: { id: message_id, role: "assistant", session_id: id },
43
- parts: [{ type: "text", text: response&.content }],
52
+ parts: [{ type: "text", text: content }],
44
53
  }.then do |result|
45
54
  [200, HEADERS_JSON, [JSON.generate(result)]]
46
55
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module BruteRack
4
- VERSION = "0.1.3"
4
+ VERSION = "0.1.4"
5
5
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: brute_rack
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brute Contributors
8
8
  bindir: exe
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: brute