claude_swarm 0.3.1 → 0.3.3

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: 84d6a42818a51bc2b0d47519fb874d77875c23646559a0d8820087866cc1a6d4
4
- data.tar.gz: 4f4b1a8cb570cab6c38a385e00d3155715f04a4b55f41fe87f0fb397caf0be6c
3
+ metadata.gz: df4f13365305ca607131b9976630fd7caebaa4c2f69f2fefc59e9d036aee2033
4
+ data.tar.gz: b1bf9cc4b672843216ec3107654a6e17d84a69fde87fe54d9846bfb4dca0f7ec
5
5
  SHA512:
6
- metadata.gz: 55fce00688afa714aa79897b008e885f600fb198b37e2bb2ba90563e57345ff922f448a86f2bde93409fdb4d5486fb763cfc1a27ba826b79106c55a92116a1e4
7
- data.tar.gz: 8f9c58fbee771dec48c0c41fd13f078633120b686ecaa95517f95269e8796f8aaaf6d9ff54556edaa8389bda10a6a53bb45d1e0318ffc79027a7b6a7e848ef11
6
+ metadata.gz: bf0623fdf1d7ff7f551c32d87ba434d0073d0ffcb5f3254ea42d6b9e6048d350823d7bad2294929d014892728866f59117c9b58ebd5a7b0b1c2f358d8942387e
7
+ data.tar.gz: 7e575dd61d59a8c2c1e04790ba3024136797373ad585612aee3b365a0d47f22bd3732119ea73ae01ddd67b75900ebe090117993f58af1520deecf4bc57907ca1
data/CHANGELOG.md CHANGED
@@ -1,3 +1,20 @@
1
+ ## [0.3.3]
2
+
3
+ ### Fixed
4
+ - **Bundler constant error**: Fixed `uninitialized constant ClaudeSwarm::Orchestrator::Bundler` error by adding missing `require "bundler"` statement
5
+ - Issue occurred when using `Bundler.with_unbundled_env` without properly requiring the bundler gem
6
+ - Resolves issue #83 reported by users upgrading to version 0.3.2
7
+
8
+ ## [0.3.2]
9
+
10
+ ### Added
11
+ - **Thinking budget support**: When delegating tasks between instances, orchestrators can now leverage Claude's extended thinking feature
12
+ - Connected instances automatically support thinking budgets: "think", "think hard", "think harder", "ultrathink"
13
+ - Orchestrator instances can assign thinking levels programmatically based on task complexity
14
+ - Example: Complex architectural decisions can be delegated with "think harder" while simple queries use no thinking
15
+ - Results in better quality outputs for complex tasks and faster responses for simple ones
16
+ - Works seamlessly with existing swarm configurations - no changes needed to benefit from this feature
17
+
1
18
  ## [0.3.1]
2
19
 
3
20
  ### Added
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Claude Swarm
2
2
 
3
- [![Gem Version](https://badge.fury.io/rb/claude_swarm.svg?cache_bust=0.3.0)](https://badge.fury.io/rb/claude_swarm)
3
+ [![Gem Version](https://badge.fury.io/rb/claude_swarm.svg?cache_bust1=0.3.2)](https://badge.fury.io/rb/claude_swarm)
4
4
  [![CI](https://github.com/parruda/claude-swarm/actions/workflows/ci.yml/badge.svg)](https://github.com/parruda/claude-swarm/actions/workflows/ci.yml)
5
5
 
6
6
  Claude Swarm orchestrates multiple Claude Code instances as a collaborative AI development team. It enables running AI agents with specialized roles, tools, and directory contexts, communicating via MCP (Model Context Protocol) in a tree-like hierarchy. Define your swarm topology in simple YAML and let Claude instances delegate tasks through connected instances. Perfect for complex projects requiring specialized AI agents for frontend, backend, testing, DevOps, or research tasks.
@@ -42,7 +42,7 @@ gem install claude_swarm
42
42
  Or add it to your Gemfile:
43
43
 
44
44
  ```ruby
45
- gem 'claude_swarm'
45
+ gem 'claude_swarm', "~> 0.3.2"
46
46
  ```
47
47
 
48
48
  Then run:
@@ -63,10 +63,11 @@ module ClaudeSwarm
63
63
  )
64
64
 
65
65
  # Set dynamic description for TaskTool based on instance config
66
+ thinking_info = " Thinking budget levels: \"think\" < \"think hard\" < \"think harder\" < \"ultrathink\"."
66
67
  if @instance_config[:description]
67
- Tools::TaskTool.description("Execute a task using Agent #{@instance_config[:name]}. #{@instance_config[:description]}")
68
+ Tools::TaskTool.description("Execute a task using Agent #{@instance_config[:name]}. #{@instance_config[:description]} #{thinking_info}")
68
69
  else
69
- Tools::TaskTool.description("Execute a task using Agent #{@instance_config[:name]}")
70
+ Tools::TaskTool.description("Execute a task using Agent #{@instance_config[:name]}. #{thinking_info}")
70
71
  end
71
72
 
72
73
  # Register tool classes (not instances)
@@ -12,12 +12,20 @@ module ClaudeSwarm
12
12
  optional(:new_session).filled(:bool).description("Start a new session (default: false)")
13
13
  optional(:system_prompt).filled(:string).description("Override the system prompt for this request")
14
14
  optional(:description).filled(:string).description("A description for the request")
15
+ optional(:thinking_budget).filled(:string).description("Thinking budget: \"think\" < \"think hard\" < \"think harder\" < \"ultrathink\". Each level increases Claude's thinking allocation. Auto-select based on task complexity.")
15
16
  end
16
17
 
17
- def call(prompt:, new_session: false, system_prompt: nil, description: nil)
18
+ def call(prompt:, new_session: false, system_prompt: nil, description: nil, thinking_budget: nil)
18
19
  executor = ClaudeMcpServer.executor
19
20
  instance_config = ClaudeMcpServer.instance_config
20
21
 
22
+ # Prepend thinking budget to prompt if provided
23
+ final_prompt = if thinking_budget
24
+ "#{thinking_budget}: #{prompt}"
25
+ else
26
+ prompt
27
+ end
28
+
21
29
  options = {
22
30
  new_session: new_session,
23
31
  system_prompt: system_prompt || instance_config[:prompt],
@@ -33,7 +41,7 @@ module ClaudeSwarm
33
41
  # Add connections from instance config
34
42
  options[:connections] = instance_config[:connections] if instance_config[:connections]&.any?
35
43
 
36
- response = executor.execute(prompt, options)
44
+ response = executor.execute(final_prompt, options)
37
45
 
38
46
  # Return just the result text as expected by MCP
39
47
  response["result"]
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ClaudeSwarm
4
- VERSION = "0.3.1"
4
+ VERSION = "0.3.3"
5
5
  end
data/lib/claude_swarm.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Standard library dependencies
4
+ require "bundler"
4
5
  require "digest"
5
6
  require "English"
6
7
  require "erb"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: claude_swarm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paulo Arruda