swarm_sdk 2.1.3 → 2.3.0
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/swarm_sdk/agent/builder.rb +91 -0
- data/lib/swarm_sdk/agent/chat.rb +540 -925
- data/lib/swarm_sdk/agent/{chat → chat_helpers}/context_tracker.rb +33 -79
- data/lib/swarm_sdk/agent/chat_helpers/event_emitter.rb +204 -0
- data/lib/swarm_sdk/agent/{chat → chat_helpers}/hook_integration.rb +147 -39
- data/lib/swarm_sdk/agent/chat_helpers/instrumentation.rb +78 -0
- data/lib/swarm_sdk/agent/chat_helpers/llm_configuration.rb +233 -0
- data/lib/swarm_sdk/agent/{chat → chat_helpers}/logging_helpers.rb +1 -1
- data/lib/swarm_sdk/agent/chat_helpers/serialization.rb +83 -0
- data/lib/swarm_sdk/agent/{chat → chat_helpers}/system_reminder_injector.rb +22 -38
- data/lib/swarm_sdk/agent/chat_helpers/system_reminders.rb +79 -0
- data/lib/swarm_sdk/agent/chat_helpers/token_tracking.rb +98 -0
- data/lib/swarm_sdk/agent/context.rb +8 -4
- data/lib/swarm_sdk/agent/context_manager.rb +6 -0
- data/lib/swarm_sdk/agent/definition.rb +79 -155
- data/lib/swarm_sdk/agent/llm_instrumentation_middleware.rb +182 -0
- data/lib/swarm_sdk/agent/system_prompt_builder.rb +161 -0
- data/lib/swarm_sdk/builders/base_builder.rb +409 -0
- data/lib/swarm_sdk/concerns/cleanupable.rb +39 -0
- data/lib/swarm_sdk/concerns/snapshotable.rb +67 -0
- data/lib/swarm_sdk/concerns/validatable.rb +55 -0
- data/lib/swarm_sdk/configuration/parser.rb +353 -0
- data/lib/swarm_sdk/configuration/translator.rb +255 -0
- data/lib/swarm_sdk/configuration.rb +72 -257
- data/lib/swarm_sdk/context_compactor/token_counter.rb +3 -3
- data/lib/swarm_sdk/context_compactor.rb +6 -11
- data/lib/swarm_sdk/context_management/builder.rb +128 -0
- data/lib/swarm_sdk/context_management/context.rb +328 -0
- data/lib/swarm_sdk/defaults.rb +196 -0
- data/lib/swarm_sdk/events_to_messages.rb +199 -0
- data/lib/swarm_sdk/hooks/shell_executor.rb +2 -1
- data/lib/swarm_sdk/log_collector.rb +192 -16
- data/lib/swarm_sdk/log_stream.rb +66 -8
- data/lib/swarm_sdk/model_aliases.json +4 -1
- data/lib/swarm_sdk/node_context.rb +1 -1
- data/lib/swarm_sdk/observer/builder.rb +81 -0
- data/lib/swarm_sdk/observer/config.rb +45 -0
- data/lib/swarm_sdk/observer/manager.rb +236 -0
- data/lib/swarm_sdk/patterns/agent_observer.rb +160 -0
- data/lib/swarm_sdk/plugin.rb +93 -3
- data/lib/swarm_sdk/proc_helpers.rb +53 -0
- data/lib/swarm_sdk/restore_result.rb +65 -0
- data/lib/swarm_sdk/snapshot.rb +156 -0
- data/lib/swarm_sdk/snapshot_from_events.rb +397 -0
- data/lib/swarm_sdk/state_restorer.rb +476 -0
- data/lib/swarm_sdk/state_snapshot.rb +334 -0
- data/lib/swarm_sdk/swarm/agent_initializer.rb +428 -79
- data/lib/swarm_sdk/swarm/all_agents_builder.rb +28 -1
- data/lib/swarm_sdk/swarm/builder.rb +69 -407
- data/lib/swarm_sdk/swarm/executor.rb +213 -0
- data/lib/swarm_sdk/swarm/hook_triggers.rb +150 -0
- data/lib/swarm_sdk/swarm/logging_callbacks.rb +340 -0
- data/lib/swarm_sdk/swarm/mcp_configurator.rb +7 -4
- data/lib/swarm_sdk/swarm/swarm_registry_builder.rb +67 -0
- data/lib/swarm_sdk/swarm/tool_configurator.rb +88 -149
- data/lib/swarm_sdk/swarm.rb +337 -584
- data/lib/swarm_sdk/swarm_loader.rb +145 -0
- data/lib/swarm_sdk/swarm_registry.rb +136 -0
- data/lib/swarm_sdk/tools/bash.rb +11 -3
- data/lib/swarm_sdk/tools/delegate.rb +127 -24
- data/lib/swarm_sdk/tools/edit.rb +8 -13
- data/lib/swarm_sdk/tools/glob.rb +9 -1
- data/lib/swarm_sdk/tools/grep.rb +7 -0
- data/lib/swarm_sdk/tools/multi_edit.rb +15 -11
- data/lib/swarm_sdk/tools/path_resolver.rb +51 -2
- data/lib/swarm_sdk/tools/read.rb +28 -18
- data/lib/swarm_sdk/tools/registry.rb +122 -10
- data/lib/swarm_sdk/tools/stores/read_tracker.rb +47 -12
- data/lib/swarm_sdk/tools/stores/scratchpad_storage.rb +53 -5
- data/lib/swarm_sdk/tools/stores/storage.rb +0 -6
- data/lib/swarm_sdk/tools/todo_write.rb +7 -0
- data/lib/swarm_sdk/tools/web_fetch.rb +3 -2
- data/lib/swarm_sdk/tools/write.rb +8 -13
- data/lib/swarm_sdk/utils.rb +18 -0
- data/lib/swarm_sdk/validation_result.rb +33 -0
- data/lib/swarm_sdk/version.rb +1 -1
- data/lib/swarm_sdk/{node → workflow}/agent_config.rb +34 -9
- data/lib/swarm_sdk/workflow/builder.rb +143 -0
- data/lib/swarm_sdk/workflow/executor.rb +497 -0
- data/lib/swarm_sdk/{node/builder.rb → workflow/node_builder.rb} +42 -21
- data/lib/swarm_sdk/{node → workflow}/transformer_executor.rb +3 -2
- data/lib/swarm_sdk/workflow.rb +554 -0
- data/lib/swarm_sdk.rb +73 -11
- metadata +79 -16
- data/lib/swarm_sdk/mcp.rb +0 -16
- data/lib/swarm_sdk/node_orchestrator.rb +0 -591
- data/lib/swarm_sdk/providers/openai_with_responses.rb +0 -582
data/lib/swarm_sdk.rb
CHANGED
|
@@ -15,6 +15,28 @@ require "yaml"
|
|
|
15
15
|
require "async"
|
|
16
16
|
require "async/semaphore"
|
|
17
17
|
require "ruby_llm"
|
|
18
|
+
require "ruby_llm/mcp"
|
|
19
|
+
|
|
20
|
+
# Patch ruby_llm-mcp's Zeitwerk loader to ignore railtie.rb when Rails is not present
|
|
21
|
+
# This prevents NameError when eager loading outside of Rails applications
|
|
22
|
+
# Can be removed once https://github.com/parruda/ruby_llm-mcp/issues/XXX is fixed
|
|
23
|
+
unless defined?(Rails)
|
|
24
|
+
require "zeitwerk"
|
|
25
|
+
mcp_loader = nil
|
|
26
|
+
Zeitwerk::Registry.loaders.each { |l| mcp_loader = l if l.tag == "RubyLLM-mcp" }
|
|
27
|
+
if mcp_loader
|
|
28
|
+
mcp_gem_dir = Gem.loaded_specs["ruby_llm-mcp"]&.gem_dir
|
|
29
|
+
if mcp_gem_dir
|
|
30
|
+
railtie_path = File.join(mcp_gem_dir, "lib", "ruby_llm", "mcp", "railtie.rb")
|
|
31
|
+
mcp_loader.ignore(railtie_path)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# Configure Faraday to use async-http adapter by default
|
|
37
|
+
# This ensures HTTP requests are fiber-aware and don't block the Async scheduler
|
|
38
|
+
# when SwarmSDK executes LLM requests within Async/Sync blocks
|
|
39
|
+
require "async/http/faraday/default"
|
|
18
40
|
|
|
19
41
|
require_relative "swarm_sdk/version"
|
|
20
42
|
|
|
@@ -25,6 +47,8 @@ loader.push_dir("#{__dir__}/swarm_sdk", namespace: SwarmSDK)
|
|
|
25
47
|
loader.inflector = Zeitwerk::GemInflector.new(__FILE__)
|
|
26
48
|
loader.inflector.inflect(
|
|
27
49
|
"cli" => "CLI",
|
|
50
|
+
"llm_instrumentation_middleware" => "LLMInstrumentationMiddleware",
|
|
51
|
+
"mcp" => "MCP",
|
|
28
52
|
"openai_with_responses" => "OpenAIWithResponses",
|
|
29
53
|
)
|
|
30
54
|
loader.setup
|
|
@@ -42,9 +66,18 @@ module SwarmSDK
|
|
|
42
66
|
# Settings for SwarmSDK (global configuration)
|
|
43
67
|
attr_accessor :settings
|
|
44
68
|
|
|
45
|
-
# Main entry point for DSL
|
|
46
|
-
|
|
47
|
-
|
|
69
|
+
# Main entry point for DSL - builds simple multi-agent swarms
|
|
70
|
+
#
|
|
71
|
+
# @return [Swarm] Always returns a Swarm instance
|
|
72
|
+
def build(allow_filesystem_tools: nil, &block)
|
|
73
|
+
Swarm::Builder.build(allow_filesystem_tools: allow_filesystem_tools, &block)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
# Entry point for building multi-stage workflows
|
|
77
|
+
#
|
|
78
|
+
# @return [Workflow] Always returns a Workflow instance
|
|
79
|
+
def workflow(allow_filesystem_tools: nil, &block)
|
|
80
|
+
Workflow::Builder.build(allow_filesystem_tools: allow_filesystem_tools, &block)
|
|
48
81
|
end
|
|
49
82
|
|
|
50
83
|
# Validate YAML configuration without creating a swarm
|
|
@@ -84,6 +117,10 @@ module SwarmSDK
|
|
|
84
117
|
begin
|
|
85
118
|
config = Configuration.new(yaml_content, base_dir: base_dir)
|
|
86
119
|
config.load_and_validate
|
|
120
|
+
|
|
121
|
+
# Build swarm to trigger DSL validation
|
|
122
|
+
# This catches errors from Agent::Definition, Builder, etc.
|
|
123
|
+
config.to_swarm
|
|
87
124
|
rescue ConfigurationError, CircularDependencyError => e
|
|
88
125
|
errors << parse_configuration_error(e)
|
|
89
126
|
rescue StandardError => e
|
|
@@ -142,7 +179,7 @@ module SwarmSDK
|
|
|
142
179
|
#
|
|
143
180
|
# @param yaml_content [String] YAML configuration content
|
|
144
181
|
# @param base_dir [String, Pathname] Base directory for resolving agent file paths (default: Dir.pwd)
|
|
145
|
-
# @return [Swarm,
|
|
182
|
+
# @return [Swarm, Workflow] Configured swarm or workflow instance
|
|
146
183
|
# @raise [ConfigurationError] If YAML is invalid or configuration is incorrect
|
|
147
184
|
#
|
|
148
185
|
# @example Load from YAML string
|
|
@@ -164,10 +201,10 @@ module SwarmSDK
|
|
|
164
201
|
# @example Load with default base_dir (Dir.pwd)
|
|
165
202
|
# yaml = File.read("config.yml")
|
|
166
203
|
# swarm = SwarmSDK.load(yaml) # base_dir defaults to Dir.pwd
|
|
167
|
-
def load(yaml_content, base_dir: Dir.pwd)
|
|
204
|
+
def load(yaml_content, base_dir: Dir.pwd, allow_filesystem_tools: nil)
|
|
168
205
|
config = Configuration.new(yaml_content, base_dir: base_dir)
|
|
169
206
|
config.load_and_validate
|
|
170
|
-
swarm = config.to_swarm
|
|
207
|
+
swarm = config.to_swarm(allow_filesystem_tools: allow_filesystem_tools)
|
|
171
208
|
|
|
172
209
|
# Apply hooks if any are configured (YAML-only feature)
|
|
173
210
|
if hooks_configured?(config)
|
|
@@ -187,7 +224,7 @@ module SwarmSDK
|
|
|
187
224
|
# loading swarms from configuration files.
|
|
188
225
|
#
|
|
189
226
|
# @param path [String, Pathname] Path to YAML configuration file
|
|
190
|
-
# @return [Swarm,
|
|
227
|
+
# @return [Swarm, Workflow] Configured swarm or workflow instance
|
|
191
228
|
# @raise [ConfigurationError] If file not found or configuration invalid
|
|
192
229
|
#
|
|
193
230
|
# @example
|
|
@@ -196,9 +233,9 @@ module SwarmSDK
|
|
|
196
233
|
#
|
|
197
234
|
# @example With absolute path
|
|
198
235
|
# swarm = SwarmSDK.load_file("/absolute/path/config.yml")
|
|
199
|
-
def load_file(path)
|
|
236
|
+
def load_file(path, allow_filesystem_tools: nil)
|
|
200
237
|
config = Configuration.load_file(path)
|
|
201
|
-
swarm = config.to_swarm
|
|
238
|
+
swarm = config.to_swarm(allow_filesystem_tools: allow_filesystem_tools)
|
|
202
239
|
|
|
203
240
|
# Apply hooks if any are configured (YAML-only feature)
|
|
204
241
|
if hooks_configured?(config)
|
|
@@ -235,7 +272,7 @@ module SwarmSDK
|
|
|
235
272
|
def hooks_configured?(config)
|
|
236
273
|
config.swarm_hooks.any? ||
|
|
237
274
|
config.all_agents_hooks.any? ||
|
|
238
|
-
config.agents.any? { |_,
|
|
275
|
+
config.agents.any? { |_, agent_config| agent_config[:hooks]&.any? }
|
|
239
276
|
end
|
|
240
277
|
|
|
241
278
|
# Parse configuration error and extract structured information
|
|
@@ -323,7 +360,7 @@ module SwarmSDK
|
|
|
323
360
|
field: "swarm.lead",
|
|
324
361
|
)
|
|
325
362
|
|
|
326
|
-
# Unknown agent in connections
|
|
363
|
+
# Unknown agent in connections (old format)
|
|
327
364
|
when /Agent '([^']+)' has connection to unknown agent '([^']+)'/i
|
|
328
365
|
agent_name = Regexp.last_match(1)
|
|
329
366
|
error_hash.merge!(
|
|
@@ -332,6 +369,15 @@ module SwarmSDK
|
|
|
332
369
|
agent: agent_name,
|
|
333
370
|
)
|
|
334
371
|
|
|
372
|
+
# Unknown agent in connections (new format with composable swarms)
|
|
373
|
+
when /Agent '([^']+)' delegates to unknown target '([^']+)'/i
|
|
374
|
+
agent_name = Regexp.last_match(1)
|
|
375
|
+
error_hash.merge!(
|
|
376
|
+
type: :invalid_reference,
|
|
377
|
+
field: "swarm.agents.#{agent_name}.delegates_to",
|
|
378
|
+
agent: agent_name,
|
|
379
|
+
)
|
|
380
|
+
|
|
335
381
|
# Circular dependency
|
|
336
382
|
when /Circular dependency detected/i
|
|
337
383
|
error_hash.merge!(
|
|
@@ -397,17 +443,33 @@ module SwarmSDK
|
|
|
397
443
|
# WebFetch tool LLM processing configuration
|
|
398
444
|
attr_accessor :webfetch_provider, :webfetch_model, :webfetch_base_url, :webfetch_max_tokens
|
|
399
445
|
|
|
446
|
+
# Filesystem tools control
|
|
447
|
+
attr_accessor :allow_filesystem_tools
|
|
448
|
+
|
|
400
449
|
def initialize
|
|
401
450
|
@webfetch_provider = nil
|
|
402
451
|
@webfetch_model = nil
|
|
403
452
|
@webfetch_base_url = nil
|
|
404
453
|
@webfetch_max_tokens = 4096
|
|
454
|
+
@allow_filesystem_tools = parse_env_bool("SWARM_SDK_ALLOW_FILESYSTEM_TOOLS", default: true)
|
|
405
455
|
end
|
|
406
456
|
|
|
407
457
|
# Check if WebFetch LLM processing is enabled
|
|
408
458
|
def webfetch_llm_enabled?
|
|
409
459
|
!@webfetch_provider.nil? && !@webfetch_model.nil?
|
|
410
460
|
end
|
|
461
|
+
|
|
462
|
+
private
|
|
463
|
+
|
|
464
|
+
def parse_env_bool(key, default:)
|
|
465
|
+
return default unless ENV.key?(key)
|
|
466
|
+
|
|
467
|
+
value = ENV[key].to_s.downcase
|
|
468
|
+
return true if ["true", "yes", "1", "on", "enabled"].include?(value)
|
|
469
|
+
return false if ["false", "no", "0", "off", "disabled"].include?(value)
|
|
470
|
+
|
|
471
|
+
default
|
|
472
|
+
end
|
|
411
473
|
end
|
|
412
474
|
|
|
413
475
|
# Initialize default settings
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: swarm_sdk
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Paulo Arruda
|
|
@@ -24,33 +24,61 @@ dependencies:
|
|
|
24
24
|
- !ruby/object:Gem::Version
|
|
25
25
|
version: '2.0'
|
|
26
26
|
- !ruby/object:Gem::Dependency
|
|
27
|
-
name:
|
|
27
|
+
name: async-http-faraday
|
|
28
28
|
requirement: !ruby/object:Gem::Requirement
|
|
29
29
|
requirements:
|
|
30
30
|
- - "~>"
|
|
31
31
|
- !ruby/object:Gem::Version
|
|
32
|
-
version: '
|
|
32
|
+
version: '0.22'
|
|
33
33
|
type: :runtime
|
|
34
34
|
prerelease: false
|
|
35
35
|
version_requirements: !ruby/object:Gem::Requirement
|
|
36
36
|
requirements:
|
|
37
37
|
- - "~>"
|
|
38
38
|
- !ruby/object:Gem::Version
|
|
39
|
-
version: '
|
|
39
|
+
version: '0.22'
|
|
40
|
+
- !ruby/object:Gem::Dependency
|
|
41
|
+
name: faraday-follow_redirects
|
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
|
43
|
+
requirements:
|
|
44
|
+
- - "~>"
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: '0.4'
|
|
47
|
+
type: :runtime
|
|
48
|
+
prerelease: false
|
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
50
|
+
requirements:
|
|
51
|
+
- - "~>"
|
|
52
|
+
- !ruby/object:Gem::Version
|
|
53
|
+
version: '0.4'
|
|
40
54
|
- !ruby/object:Gem::Dependency
|
|
41
55
|
name: ruby_llm-mcp
|
|
42
56
|
requirement: !ruby/object:Gem::Requirement
|
|
43
57
|
requirements:
|
|
44
58
|
- - "~>"
|
|
45
59
|
- !ruby/object:Gem::Version
|
|
46
|
-
version: 0.
|
|
60
|
+
version: '0.8'
|
|
61
|
+
type: :runtime
|
|
62
|
+
prerelease: false
|
|
63
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
64
|
+
requirements:
|
|
65
|
+
- - "~>"
|
|
66
|
+
- !ruby/object:Gem::Version
|
|
67
|
+
version: '0.8'
|
|
68
|
+
- !ruby/object:Gem::Dependency
|
|
69
|
+
name: ruby_llm_swarm
|
|
70
|
+
requirement: !ruby/object:Gem::Requirement
|
|
71
|
+
requirements:
|
|
72
|
+
- - "~>"
|
|
73
|
+
- !ruby/object:Gem::Version
|
|
74
|
+
version: 1.9.2
|
|
47
75
|
type: :runtime
|
|
48
76
|
prerelease: false
|
|
49
77
|
version_requirements: !ruby/object:Gem::Requirement
|
|
50
78
|
requirements:
|
|
51
79
|
- - "~>"
|
|
52
80
|
- !ruby/object:Gem::Version
|
|
53
|
-
version:
|
|
81
|
+
version: 1.9.2
|
|
54
82
|
- !ruby/object:Gem::Dependency
|
|
55
83
|
name: zeitwerk
|
|
56
84
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -81,18 +109,36 @@ files:
|
|
|
81
109
|
- lib/swarm_sdk/agent/RETRY_LOGIC.md
|
|
82
110
|
- lib/swarm_sdk/agent/builder.rb
|
|
83
111
|
- lib/swarm_sdk/agent/chat.rb
|
|
84
|
-
- lib/swarm_sdk/agent/
|
|
85
|
-
- lib/swarm_sdk/agent/
|
|
86
|
-
- lib/swarm_sdk/agent/
|
|
87
|
-
- lib/swarm_sdk/agent/
|
|
112
|
+
- lib/swarm_sdk/agent/chat_helpers/context_tracker.rb
|
|
113
|
+
- lib/swarm_sdk/agent/chat_helpers/event_emitter.rb
|
|
114
|
+
- lib/swarm_sdk/agent/chat_helpers/hook_integration.rb
|
|
115
|
+
- lib/swarm_sdk/agent/chat_helpers/instrumentation.rb
|
|
116
|
+
- lib/swarm_sdk/agent/chat_helpers/llm_configuration.rb
|
|
117
|
+
- lib/swarm_sdk/agent/chat_helpers/logging_helpers.rb
|
|
118
|
+
- lib/swarm_sdk/agent/chat_helpers/serialization.rb
|
|
119
|
+
- lib/swarm_sdk/agent/chat_helpers/system_reminder_injector.rb
|
|
120
|
+
- lib/swarm_sdk/agent/chat_helpers/system_reminders.rb
|
|
121
|
+
- lib/swarm_sdk/agent/chat_helpers/token_tracking.rb
|
|
88
122
|
- lib/swarm_sdk/agent/context.rb
|
|
89
123
|
- lib/swarm_sdk/agent/context_manager.rb
|
|
90
124
|
- lib/swarm_sdk/agent/definition.rb
|
|
125
|
+
- lib/swarm_sdk/agent/llm_instrumentation_middleware.rb
|
|
126
|
+
- lib/swarm_sdk/agent/system_prompt_builder.rb
|
|
127
|
+
- lib/swarm_sdk/builders/base_builder.rb
|
|
91
128
|
- lib/swarm_sdk/claude_code_agent_adapter.rb
|
|
129
|
+
- lib/swarm_sdk/concerns/cleanupable.rb
|
|
130
|
+
- lib/swarm_sdk/concerns/snapshotable.rb
|
|
131
|
+
- lib/swarm_sdk/concerns/validatable.rb
|
|
92
132
|
- lib/swarm_sdk/configuration.rb
|
|
133
|
+
- lib/swarm_sdk/configuration/parser.rb
|
|
134
|
+
- lib/swarm_sdk/configuration/translator.rb
|
|
93
135
|
- lib/swarm_sdk/context_compactor.rb
|
|
94
136
|
- lib/swarm_sdk/context_compactor/metrics.rb
|
|
95
137
|
- lib/swarm_sdk/context_compactor/token_counter.rb
|
|
138
|
+
- lib/swarm_sdk/context_management/builder.rb
|
|
139
|
+
- lib/swarm_sdk/context_management/context.rb
|
|
140
|
+
- lib/swarm_sdk/defaults.rb
|
|
141
|
+
- lib/swarm_sdk/events_to_messages.rb
|
|
96
142
|
- lib/swarm_sdk/hooks/adapter.rb
|
|
97
143
|
- lib/swarm_sdk/hooks/context.rb
|
|
98
144
|
- lib/swarm_sdk/hooks/definition.rb
|
|
@@ -106,15 +152,14 @@ files:
|
|
|
106
152
|
- lib/swarm_sdk/log_collector.rb
|
|
107
153
|
- lib/swarm_sdk/log_stream.rb
|
|
108
154
|
- lib/swarm_sdk/markdown_parser.rb
|
|
109
|
-
- lib/swarm_sdk/mcp.rb
|
|
110
155
|
- lib/swarm_sdk/model_aliases.json
|
|
111
156
|
- lib/swarm_sdk/models.json
|
|
112
157
|
- lib/swarm_sdk/models.rb
|
|
113
|
-
- lib/swarm_sdk/node/agent_config.rb
|
|
114
|
-
- lib/swarm_sdk/node/builder.rb
|
|
115
|
-
- lib/swarm_sdk/node/transformer_executor.rb
|
|
116
158
|
- lib/swarm_sdk/node_context.rb
|
|
117
|
-
- lib/swarm_sdk/
|
|
159
|
+
- lib/swarm_sdk/observer/builder.rb
|
|
160
|
+
- lib/swarm_sdk/observer/config.rb
|
|
161
|
+
- lib/swarm_sdk/observer/manager.rb
|
|
162
|
+
- lib/swarm_sdk/patterns/agent_observer.rb
|
|
118
163
|
- lib/swarm_sdk/permissions/config.rb
|
|
119
164
|
- lib/swarm_sdk/permissions/error_formatter.rb
|
|
120
165
|
- lib/swarm_sdk/permissions/path_matcher.rb
|
|
@@ -122,15 +167,26 @@ files:
|
|
|
122
167
|
- lib/swarm_sdk/permissions_builder.rb
|
|
123
168
|
- lib/swarm_sdk/plugin.rb
|
|
124
169
|
- lib/swarm_sdk/plugin_registry.rb
|
|
170
|
+
- lib/swarm_sdk/proc_helpers.rb
|
|
125
171
|
- lib/swarm_sdk/prompts/base_system_prompt.md.erb
|
|
126
|
-
- lib/swarm_sdk/
|
|
172
|
+
- lib/swarm_sdk/restore_result.rb
|
|
127
173
|
- lib/swarm_sdk/result.rb
|
|
174
|
+
- lib/swarm_sdk/snapshot.rb
|
|
175
|
+
- lib/swarm_sdk/snapshot_from_events.rb
|
|
176
|
+
- lib/swarm_sdk/state_restorer.rb
|
|
177
|
+
- lib/swarm_sdk/state_snapshot.rb
|
|
128
178
|
- lib/swarm_sdk/swarm.rb
|
|
129
179
|
- lib/swarm_sdk/swarm/agent_initializer.rb
|
|
130
180
|
- lib/swarm_sdk/swarm/all_agents_builder.rb
|
|
131
181
|
- lib/swarm_sdk/swarm/builder.rb
|
|
182
|
+
- lib/swarm_sdk/swarm/executor.rb
|
|
183
|
+
- lib/swarm_sdk/swarm/hook_triggers.rb
|
|
184
|
+
- lib/swarm_sdk/swarm/logging_callbacks.rb
|
|
132
185
|
- lib/swarm_sdk/swarm/mcp_configurator.rb
|
|
186
|
+
- lib/swarm_sdk/swarm/swarm_registry_builder.rb
|
|
133
187
|
- lib/swarm_sdk/swarm/tool_configurator.rb
|
|
188
|
+
- lib/swarm_sdk/swarm_loader.rb
|
|
189
|
+
- lib/swarm_sdk/swarm_registry.rb
|
|
134
190
|
- lib/swarm_sdk/tools/bash.rb
|
|
135
191
|
- lib/swarm_sdk/tools/clock.rb
|
|
136
192
|
- lib/swarm_sdk/tools/delegate.rb
|
|
@@ -161,7 +217,14 @@ files:
|
|
|
161
217
|
- lib/swarm_sdk/tools/web_fetch.rb
|
|
162
218
|
- lib/swarm_sdk/tools/write.rb
|
|
163
219
|
- lib/swarm_sdk/utils.rb
|
|
220
|
+
- lib/swarm_sdk/validation_result.rb
|
|
164
221
|
- lib/swarm_sdk/version.rb
|
|
222
|
+
- lib/swarm_sdk/workflow.rb
|
|
223
|
+
- lib/swarm_sdk/workflow/agent_config.rb
|
|
224
|
+
- lib/swarm_sdk/workflow/builder.rb
|
|
225
|
+
- lib/swarm_sdk/workflow/executor.rb
|
|
226
|
+
- lib/swarm_sdk/workflow/node_builder.rb
|
|
227
|
+
- lib/swarm_sdk/workflow/transformer_executor.rb
|
|
165
228
|
homepage: https://github.com/parruda/claude-swarm
|
|
166
229
|
licenses:
|
|
167
230
|
- MIT
|
data/lib/swarm_sdk/mcp.rb
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module SwarmSDK
|
|
4
|
-
module MCP
|
|
5
|
-
class << self
|
|
6
|
-
# Lazy load ruby_llm-mcp only when MCP servers are used
|
|
7
|
-
def lazy_load
|
|
8
|
-
return if @loaded
|
|
9
|
-
|
|
10
|
-
require "ruby_llm/mcp"
|
|
11
|
-
|
|
12
|
-
@loaded = true
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|