claude_swarm 0.3.5 → 0.3.6
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/CHANGELOG.md +12 -0
- data/README.md +3 -0
- data/lib/claude_swarm/claude_code_executor.rb +2 -1
- data/lib/claude_swarm/mcp_generator.rb +3 -1
- data/lib/claude_swarm/openai/executor.rb +23 -1
- data/lib/claude_swarm/orchestrator.rb +7 -5
- data/lib/claude_swarm/version.rb +1 -1
- data/lib/claude_swarm.rb +1 -0
- metadata +15 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b13f053c52c3e4ff662746f5027fcc6005be35ab6621c827b5fac205bb69b917
|
4
|
+
data.tar.gz: 70d1fbedfa25a81060259f37b4de2d47c740d8719171ce956a5462ce022359d2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 60b9dbc2a41ae296a4a4d844c5dbf1195e26a38a4ce90aeb72a23f86467e94bc803e5b7488f8189829ad5a898a0887d1a639dc888adf24af87c4d391346709ac
|
7
|
+
data.tar.gz: 4935a7b7001b78d0a8ae1f4f732f61aed8d4fc35859478615f035edd2411ea5f9b5df3be1e26f910ad8ce8943c750d3b51f22adf3c105bbd97c5a36b17b072e9
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
## [0.3.6]
|
2
|
+
|
3
|
+
### Added
|
4
|
+
- **SSE MCP server headers support**: SSE-type MCP servers can now include custom headers for authentication
|
5
|
+
- Supports headers like `Authorization: "Bearer ${TOKEN}"` in MCP configurations
|
6
|
+
- Environment variables in header values are automatically interpolated
|
7
|
+
- **Comprehensive retry middleware for OpenAI API calls**: Added robust retry logic for OpenAI provider to handle API errors gracefully
|
8
|
+
- Automatically retries on rate limit errors (429) with exponential backoff
|
9
|
+
- Retries on server errors (500, 502, 503, 504) and timeout errors
|
10
|
+
- Configurable retry attempts, delay, and backoff settings
|
11
|
+
- Detailed logging of retry attempts and errors
|
12
|
+
|
1
13
|
## [0.3.5]
|
2
14
|
|
3
15
|
### Changed
|
data/README.md
CHANGED
@@ -265,7 +265,8 @@ module ClaudeSwarm
|
|
265
265
|
sdk_options = ClaudeSDK::ClaudeCodeOptions.new
|
266
266
|
|
267
267
|
# Basic options
|
268
|
-
|
268
|
+
# Only set model if ANTHROPIC_MODEL env var is not set
|
269
|
+
sdk_options.model = @model if @model && !ENV["ANTHROPIC_MODEL"]
|
269
270
|
sdk_options.cwd = @working_directory
|
270
271
|
sdk_options.resume = @session_id if @session_id && !options[:new_session]
|
271
272
|
|
@@ -146,7 +146,29 @@ module ClaudeSwarm
|
|
146
146
|
}
|
147
147
|
config[:uri_base] = @base_url if @base_url
|
148
148
|
|
149
|
-
@openai_client = ::OpenAI::Client.new(config)
|
149
|
+
@openai_client = ::OpenAI::Client.new(config) do |faraday|
|
150
|
+
# Add retry middleware with custom configuration
|
151
|
+
faraday.request(
|
152
|
+
:retry,
|
153
|
+
max: 3, # Maximum number of retries
|
154
|
+
interval: 0.5, # Initial delay between retries (in seconds)
|
155
|
+
interval_randomness: 0.5, # Randomness factor for retry intervals
|
156
|
+
backoff_factor: 2, # Exponential backoff factor
|
157
|
+
exceptions: [
|
158
|
+
Faraday::TimeoutError,
|
159
|
+
Faraday::ConnectionFailed,
|
160
|
+
Faraday::ServerError, # Retry on 5xx errors
|
161
|
+
],
|
162
|
+
retry_statuses: [429, 500, 502, 503, 504], # HTTP status codes to retry
|
163
|
+
retry_block: lambda do |env:, options:, retry_count:, exception:, will_retry:|
|
164
|
+
if will_retry
|
165
|
+
@logger.warn("Request failed (attempt #{retry_count}/#{options.max}): #{exception&.message || "HTTP #{env.status}"}. Retrying in #{options.interval * (options.backoff_factor**(retry_count - 1))} seconds...")
|
166
|
+
else
|
167
|
+
@logger.warn("Request failed after #{retry_count} attempts: #{exception&.message || "HTTP #{env.status}"}. Giving up.")
|
168
|
+
end
|
169
|
+
end,
|
170
|
+
)
|
171
|
+
end
|
150
172
|
rescue KeyError
|
151
173
|
raise ExecutionError, "OpenAI API key not found in environment variable: #{token_env}"
|
152
174
|
end
|
@@ -516,11 +516,13 @@ module ClaudeSwarm
|
|
516
516
|
end
|
517
517
|
|
518
518
|
def build_main_command(instance)
|
519
|
-
parts = [
|
520
|
-
|
521
|
-
|
522
|
-
|
523
|
-
|
519
|
+
parts = ["claude"]
|
520
|
+
|
521
|
+
# Only add --model if ANTHROPIC_MODEL env var is not set
|
522
|
+
unless ENV["ANTHROPIC_MODEL"]
|
523
|
+
parts << "--model"
|
524
|
+
parts << instance[:model]
|
525
|
+
end
|
524
526
|
|
525
527
|
# Add resume flag if restoring session
|
526
528
|
if @restore_session_path
|
data/lib/claude_swarm/version.rb
CHANGED
data/lib/claude_swarm.rb
CHANGED
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.
|
4
|
+
version: 0.3.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Paulo Arruda
|
@@ -51,6 +51,20 @@ dependencies:
|
|
51
51
|
- - "~>"
|
52
52
|
- !ruby/object:Gem::Version
|
53
53
|
version: '0.1'
|
54
|
+
- !ruby/object:Gem::Dependency
|
55
|
+
name: faraday-retry
|
56
|
+
requirement: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - "~>"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '2.0'
|
61
|
+
type: :runtime
|
62
|
+
prerelease: false
|
63
|
+
version_requirements: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - "~>"
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '2.0'
|
54
68
|
- !ruby/object:Gem::Dependency
|
55
69
|
name: fast-mcp-annotations
|
56
70
|
requirement: !ruby/object:Gem::Requirement
|