swarm_memory 2.1.5 → 2.1.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/lib/swarm_memory/version.rb +1 -1
- metadata +5 -184
- data/lib/claude_swarm/base_executor.rb +0 -133
- data/lib/claude_swarm/claude_code_executor.rb +0 -349
- data/lib/claude_swarm/claude_mcp_server.rb +0 -78
- data/lib/claude_swarm/cli.rb +0 -697
- data/lib/claude_swarm/commands/ps.rb +0 -215
- data/lib/claude_swarm/commands/show.rb +0 -139
- data/lib/claude_swarm/configuration.rb +0 -373
- data/lib/claude_swarm/hooks/session_start_hook.rb +0 -42
- data/lib/claude_swarm/json_handler.rb +0 -91
- data/lib/claude_swarm/mcp_generator.rb +0 -230
- data/lib/claude_swarm/openai/chat_completion.rb +0 -256
- data/lib/claude_swarm/openai/executor.rb +0 -256
- data/lib/claude_swarm/openai/responses.rb +0 -319
- data/lib/claude_swarm/orchestrator.rb +0 -878
- data/lib/claude_swarm/process_tracker.rb +0 -78
- data/lib/claude_swarm/session_cost_calculator.rb +0 -209
- data/lib/claude_swarm/session_path.rb +0 -42
- data/lib/claude_swarm/settings_generator.rb +0 -77
- data/lib/claude_swarm/system_utils.rb +0 -46
- data/lib/claude_swarm/templates/generation_prompt.md.erb +0 -230
- data/lib/claude_swarm/tools/reset_session_tool.rb +0 -24
- data/lib/claude_swarm/tools/session_info_tool.rb +0 -24
- data/lib/claude_swarm/tools/task_tool.rb +0 -63
- data/lib/claude_swarm/version.rb +0 -5
- data/lib/claude_swarm/worktree_manager.rb +0 -475
- data/lib/claude_swarm/yaml_loader.rb +0 -22
- data/lib/claude_swarm.rb +0 -67
- data/lib/swarm_cli/cli.rb +0 -201
- data/lib/swarm_cli/command_registry.rb +0 -61
- data/lib/swarm_cli/commands/mcp_serve.rb +0 -130
- data/lib/swarm_cli/commands/mcp_tools.rb +0 -148
- data/lib/swarm_cli/commands/migrate.rb +0 -55
- data/lib/swarm_cli/commands/run.rb +0 -173
- data/lib/swarm_cli/config_loader.rb +0 -98
- data/lib/swarm_cli/formatters/human_formatter.rb +0 -781
- data/lib/swarm_cli/formatters/json_formatter.rb +0 -51
- data/lib/swarm_cli/interactive_repl.rb +0 -924
- data/lib/swarm_cli/mcp_serve_options.rb +0 -44
- data/lib/swarm_cli/mcp_tools_options.rb +0 -59
- data/lib/swarm_cli/migrate_options.rb +0 -54
- data/lib/swarm_cli/migrator.rb +0 -132
- data/lib/swarm_cli/options.rb +0 -151
- data/lib/swarm_cli/ui/components/agent_badge.rb +0 -33
- data/lib/swarm_cli/ui/components/content_block.rb +0 -120
- data/lib/swarm_cli/ui/components/divider.rb +0 -57
- data/lib/swarm_cli/ui/components/panel.rb +0 -62
- data/lib/swarm_cli/ui/components/usage_stats.rb +0 -70
- data/lib/swarm_cli/ui/formatters/cost.rb +0 -49
- data/lib/swarm_cli/ui/formatters/number.rb +0 -58
- data/lib/swarm_cli/ui/formatters/text.rb +0 -77
- data/lib/swarm_cli/ui/formatters/time.rb +0 -73
- data/lib/swarm_cli/ui/icons.rb +0 -36
- data/lib/swarm_cli/ui/renderers/event_renderer.rb +0 -188
- data/lib/swarm_cli/ui/state/agent_color_cache.rb +0 -45
- data/lib/swarm_cli/ui/state/depth_tracker.rb +0 -40
- data/lib/swarm_cli/ui/state/spinner_manager.rb +0 -170
- data/lib/swarm_cli/ui/state/usage_tracker.rb +0 -62
- data/lib/swarm_cli/version.rb +0 -5
- data/lib/swarm_cli.rb +0 -46
- data/lib/swarm_sdk/agent/RETRY_LOGIC.md +0 -127
- data/lib/swarm_sdk/agent/builder.rb +0 -552
- data/lib/swarm_sdk/agent/chat.rb +0 -774
- data/lib/swarm_sdk/agent/chat_helpers/context_tracker.rb +0 -268
- data/lib/swarm_sdk/agent/chat_helpers/event_emitter.rb +0 -204
- data/lib/swarm_sdk/agent/chat_helpers/hook_integration.rb +0 -480
- data/lib/swarm_sdk/agent/chat_helpers/instrumentation.rb +0 -78
- data/lib/swarm_sdk/agent/chat_helpers/llm_configuration.rb +0 -233
- data/lib/swarm_sdk/agent/chat_helpers/logging_helpers.rb +0 -116
- data/lib/swarm_sdk/agent/chat_helpers/serialization.rb +0 -83
- data/lib/swarm_sdk/agent/chat_helpers/system_reminder_injector.rb +0 -136
- data/lib/swarm_sdk/agent/chat_helpers/system_reminders.rb +0 -79
- data/lib/swarm_sdk/agent/chat_helpers/token_tracking.rb +0 -98
- data/lib/swarm_sdk/agent/context.rb +0 -116
- data/lib/swarm_sdk/agent/context_manager.rb +0 -315
- data/lib/swarm_sdk/agent/definition.rb +0 -477
- data/lib/swarm_sdk/agent/llm_instrumentation_middleware.rb +0 -182
- data/lib/swarm_sdk/agent/system_prompt_builder.rb +0 -161
- data/lib/swarm_sdk/builders/base_builder.rb +0 -409
- data/lib/swarm_sdk/claude_code_agent_adapter.rb +0 -205
- data/lib/swarm_sdk/concerns/cleanupable.rb +0 -39
- data/lib/swarm_sdk/concerns/snapshotable.rb +0 -67
- data/lib/swarm_sdk/concerns/validatable.rb +0 -55
- data/lib/swarm_sdk/configuration/parser.rb +0 -353
- data/lib/swarm_sdk/configuration/translator.rb +0 -255
- data/lib/swarm_sdk/configuration.rb +0 -135
- data/lib/swarm_sdk/context_compactor/metrics.rb +0 -147
- data/lib/swarm_sdk/context_compactor/token_counter.rb +0 -106
- data/lib/swarm_sdk/context_compactor.rb +0 -335
- data/lib/swarm_sdk/context_management/builder.rb +0 -128
- data/lib/swarm_sdk/context_management/context.rb +0 -328
- data/lib/swarm_sdk/defaults.rb +0 -196
- data/lib/swarm_sdk/events_to_messages.rb +0 -199
- data/lib/swarm_sdk/hooks/adapter.rb +0 -359
- data/lib/swarm_sdk/hooks/context.rb +0 -197
- data/lib/swarm_sdk/hooks/definition.rb +0 -80
- data/lib/swarm_sdk/hooks/error.rb +0 -29
- data/lib/swarm_sdk/hooks/executor.rb +0 -146
- data/lib/swarm_sdk/hooks/registry.rb +0 -147
- data/lib/swarm_sdk/hooks/result.rb +0 -150
- data/lib/swarm_sdk/hooks/shell_executor.rb +0 -255
- data/lib/swarm_sdk/hooks/tool_call.rb +0 -35
- data/lib/swarm_sdk/hooks/tool_result.rb +0 -62
- data/lib/swarm_sdk/log_collector.rb +0 -227
- data/lib/swarm_sdk/log_stream.rb +0 -127
- data/lib/swarm_sdk/markdown_parser.rb +0 -75
- data/lib/swarm_sdk/model_aliases.json +0 -8
- data/lib/swarm_sdk/models.json +0 -1
- data/lib/swarm_sdk/models.rb +0 -120
- data/lib/swarm_sdk/node_context.rb +0 -245
- data/lib/swarm_sdk/observer/builder.rb +0 -81
- data/lib/swarm_sdk/observer/config.rb +0 -45
- data/lib/swarm_sdk/observer/manager.rb +0 -236
- data/lib/swarm_sdk/patterns/agent_observer.rb +0 -160
- data/lib/swarm_sdk/permissions/config.rb +0 -239
- data/lib/swarm_sdk/permissions/error_formatter.rb +0 -121
- data/lib/swarm_sdk/permissions/path_matcher.rb +0 -35
- data/lib/swarm_sdk/permissions/validator.rb +0 -173
- data/lib/swarm_sdk/permissions_builder.rb +0 -122
- data/lib/swarm_sdk/plugin.rb +0 -309
- data/lib/swarm_sdk/plugin_registry.rb +0 -101
- data/lib/swarm_sdk/proc_helpers.rb +0 -53
- data/lib/swarm_sdk/prompts/base_system_prompt.md.erb +0 -117
- data/lib/swarm_sdk/restore_result.rb +0 -65
- data/lib/swarm_sdk/result.rb +0 -123
- data/lib/swarm_sdk/snapshot.rb +0 -156
- data/lib/swarm_sdk/snapshot_from_events.rb +0 -397
- data/lib/swarm_sdk/state_restorer.rb +0 -476
- data/lib/swarm_sdk/state_snapshot.rb +0 -334
- data/lib/swarm_sdk/swarm/agent_initializer.rb +0 -683
- data/lib/swarm_sdk/swarm/all_agents_builder.rb +0 -167
- data/lib/swarm_sdk/swarm/builder.rb +0 -249
- data/lib/swarm_sdk/swarm/executor.rb +0 -213
- data/lib/swarm_sdk/swarm/hook_triggers.rb +0 -150
- data/lib/swarm_sdk/swarm/logging_callbacks.rb +0 -340
- data/lib/swarm_sdk/swarm/mcp_configurator.rb +0 -154
- data/lib/swarm_sdk/swarm/swarm_registry_builder.rb +0 -67
- data/lib/swarm_sdk/swarm/tool_configurator.rb +0 -358
- data/lib/swarm_sdk/swarm.rb +0 -717
- data/lib/swarm_sdk/swarm_loader.rb +0 -145
- data/lib/swarm_sdk/swarm_registry.rb +0 -136
- data/lib/swarm_sdk/tools/bash.rb +0 -282
- data/lib/swarm_sdk/tools/clock.rb +0 -44
- data/lib/swarm_sdk/tools/delegate.rb +0 -267
- data/lib/swarm_sdk/tools/document_converters/base_converter.rb +0 -83
- data/lib/swarm_sdk/tools/document_converters/docx_converter.rb +0 -99
- data/lib/swarm_sdk/tools/document_converters/html_converter.rb +0 -101
- data/lib/swarm_sdk/tools/document_converters/pdf_converter.rb +0 -78
- data/lib/swarm_sdk/tools/document_converters/xlsx_converter.rb +0 -194
- data/lib/swarm_sdk/tools/edit.rb +0 -145
- data/lib/swarm_sdk/tools/glob.rb +0 -166
- data/lib/swarm_sdk/tools/grep.rb +0 -235
- data/lib/swarm_sdk/tools/image_extractors/docx_image_extractor.rb +0 -43
- data/lib/swarm_sdk/tools/image_extractors/pdf_image_extractor.rb +0 -163
- data/lib/swarm_sdk/tools/image_formats/tiff_builder.rb +0 -65
- data/lib/swarm_sdk/tools/multi_edit.rb +0 -236
- data/lib/swarm_sdk/tools/path_resolver.rb +0 -92
- data/lib/swarm_sdk/tools/read.rb +0 -261
- data/lib/swarm_sdk/tools/registry.rb +0 -205
- data/lib/swarm_sdk/tools/scratchpad/scratchpad_list.rb +0 -117
- data/lib/swarm_sdk/tools/scratchpad/scratchpad_read.rb +0 -97
- data/lib/swarm_sdk/tools/scratchpad/scratchpad_write.rb +0 -108
- data/lib/swarm_sdk/tools/stores/read_tracker.rb +0 -96
- data/lib/swarm_sdk/tools/stores/scratchpad_storage.rb +0 -272
- data/lib/swarm_sdk/tools/stores/storage.rb +0 -142
- data/lib/swarm_sdk/tools/stores/todo_manager.rb +0 -65
- data/lib/swarm_sdk/tools/think.rb +0 -98
- data/lib/swarm_sdk/tools/todo_write.rb +0 -235
- data/lib/swarm_sdk/tools/web_fetch.rb +0 -262
- data/lib/swarm_sdk/tools/write.rb +0 -112
- data/lib/swarm_sdk/utils.rb +0 -68
- data/lib/swarm_sdk/validation_result.rb +0 -33
- data/lib/swarm_sdk/version.rb +0 -5
- data/lib/swarm_sdk/workflow/agent_config.rb +0 -79
- data/lib/swarm_sdk/workflow/builder.rb +0 -143
- data/lib/swarm_sdk/workflow/executor.rb +0 -497
- data/lib/swarm_sdk/workflow/node_builder.rb +0 -555
- data/lib/swarm_sdk/workflow/transformer_executor.rb +0 -249
- data/lib/swarm_sdk/workflow.rb +0 -554
- data/lib/swarm_sdk.rb +0 -524
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module SwarmSDK
|
|
4
|
-
# Internal result object for validation phase during snapshot restore
|
|
5
|
-
#
|
|
6
|
-
# Used during restore to track which agents can be restored and which
|
|
7
|
-
# need to be skipped due to configuration mismatches.
|
|
8
|
-
#
|
|
9
|
-
# @api private
|
|
10
|
-
class ValidationResult
|
|
11
|
-
attr_reader :warnings,
|
|
12
|
-
:skipped_agents,
|
|
13
|
-
:restorable_agents,
|
|
14
|
-
:skipped_delegations,
|
|
15
|
-
:restorable_delegations
|
|
16
|
-
|
|
17
|
-
# Initialize validation result
|
|
18
|
-
#
|
|
19
|
-
# @param warnings [Array<Hash>] Warning messages with details
|
|
20
|
-
# @param skipped_agents [Array<Symbol>] Names of agents that can't be restored
|
|
21
|
-
# @param restorable_agents [Array<Symbol>] Names of agents that can be restored
|
|
22
|
-
# @param skipped_delegations [Array<String>] Names of delegations that can't be restored
|
|
23
|
-
# @param restorable_delegations [Array<String>] Names of delegations that can be restored
|
|
24
|
-
def initialize(warnings:, skipped_agents:, restorable_agents:,
|
|
25
|
-
skipped_delegations:, restorable_delegations:)
|
|
26
|
-
@warnings = warnings
|
|
27
|
-
@skipped_agents = skipped_agents
|
|
28
|
-
@restorable_agents = restorable_agents
|
|
29
|
-
@skipped_delegations = skipped_delegations
|
|
30
|
-
@restorable_delegations = restorable_delegations
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
data/lib/swarm_sdk/version.rb
DELETED
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module SwarmSDK
|
|
4
|
-
class Workflow
|
|
5
|
-
# AgentConfig provides fluent API for configuring agents within a node
|
|
6
|
-
#
|
|
7
|
-
# This class enables the chainable syntax:
|
|
8
|
-
# agent(:backend).delegates_to(:tester, :database)
|
|
9
|
-
# agent(:backend, reset_context: false) # Preserve context across nodes
|
|
10
|
-
# agent(:backend).tools(:Read, :Edit) # Override tools for this node
|
|
11
|
-
#
|
|
12
|
-
# @example Basic delegation
|
|
13
|
-
# agent(:backend).delegates_to(:tester)
|
|
14
|
-
#
|
|
15
|
-
# @example No delegation (solo agent)
|
|
16
|
-
# agent(:planner)
|
|
17
|
-
#
|
|
18
|
-
# @example Preserve agent context
|
|
19
|
-
# agent(:architect, reset_context: false)
|
|
20
|
-
#
|
|
21
|
-
# @example Override tools for this node
|
|
22
|
-
# agent(:backend).tools(:Read, :Think)
|
|
23
|
-
#
|
|
24
|
-
# @example Combine delegation and tool override
|
|
25
|
-
# agent(:backend).delegates_to(:tester).tools(:Read, :Edit, :Write)
|
|
26
|
-
class AgentConfig
|
|
27
|
-
attr_reader :agent_name
|
|
28
|
-
|
|
29
|
-
def initialize(agent_name, node_builder, reset_context: true)
|
|
30
|
-
@agent_name = agent_name
|
|
31
|
-
@node_builder = node_builder
|
|
32
|
-
@delegates_to = []
|
|
33
|
-
@reset_context = reset_context
|
|
34
|
-
@tools = nil # nil means use global agent definition tools
|
|
35
|
-
@finalized = false
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
# Set delegation targets for this agent
|
|
39
|
-
#
|
|
40
|
-
# @param agent_names [Array<Symbol>] Names of agents to delegate to
|
|
41
|
-
# @return [self] For method chaining
|
|
42
|
-
def delegates_to(*agent_names)
|
|
43
|
-
@delegates_to = agent_names.map(&:to_sym)
|
|
44
|
-
update_registration
|
|
45
|
-
self
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
# Override tools for this agent in this node
|
|
49
|
-
#
|
|
50
|
-
# @param tool_names [Array<Symbol>] Tool names to use (overrides global agent definition)
|
|
51
|
-
# @return [self] For method chaining
|
|
52
|
-
#
|
|
53
|
-
# @example
|
|
54
|
-
# agent(:backend).tools(:Read, :Edit)
|
|
55
|
-
def tools(*tool_names)
|
|
56
|
-
@tools = tool_names.map(&:to_sym)
|
|
57
|
-
update_registration
|
|
58
|
-
self
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
# Update agent registration (called after each fluent method)
|
|
62
|
-
#
|
|
63
|
-
# Always updates the registration with current state.
|
|
64
|
-
# This allows chaining: .delegates_to(...).tools(...)
|
|
65
|
-
#
|
|
66
|
-
# @return [void]
|
|
67
|
-
def update_registration
|
|
68
|
-
@node_builder.register_agent(@agent_name, @delegates_to, @reset_context, @tools)
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
# Finalize agent configuration (backward compatibility)
|
|
72
|
-
#
|
|
73
|
-
# @return [void]
|
|
74
|
-
def finalize
|
|
75
|
-
update_registration
|
|
76
|
-
end
|
|
77
|
-
end
|
|
78
|
-
end
|
|
79
|
-
end
|
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module SwarmSDK
|
|
4
|
-
class Workflow
|
|
5
|
-
# Builder provides DSL for building multi-node workflows
|
|
6
|
-
# This is the top-level builder accessed via SwarmSDK.workflow
|
|
7
|
-
#
|
|
8
|
-
# The DSL enables:
|
|
9
|
-
# - Node-based workflow configuration
|
|
10
|
-
# - Agent delegation per node
|
|
11
|
-
# - Input/output transformers for data flow
|
|
12
|
-
# - Context preservation across nodes
|
|
13
|
-
#
|
|
14
|
-
# @example Multi-stage workflow
|
|
15
|
-
# workflow = SwarmSDK.workflow do
|
|
16
|
-
# name "Build Pipeline"
|
|
17
|
-
# start_node :planning
|
|
18
|
-
#
|
|
19
|
-
# agent :architect do
|
|
20
|
-
# model "gpt-5"
|
|
21
|
-
# prompt "You design systems"
|
|
22
|
-
# end
|
|
23
|
-
#
|
|
24
|
-
# agent :coder do
|
|
25
|
-
# model "gpt-4"
|
|
26
|
-
# prompt "You implement code"
|
|
27
|
-
# end
|
|
28
|
-
#
|
|
29
|
-
# node :planning do
|
|
30
|
-
# agent(:architect)
|
|
31
|
-
# end
|
|
32
|
-
#
|
|
33
|
-
# node :implementation do
|
|
34
|
-
# agent(:coder)
|
|
35
|
-
# depends_on :planning
|
|
36
|
-
# end
|
|
37
|
-
# end
|
|
38
|
-
#
|
|
39
|
-
# workflow.execute("Build auth system")
|
|
40
|
-
class Builder < Builders::BaseBuilder
|
|
41
|
-
# Main entry point for DSL
|
|
42
|
-
#
|
|
43
|
-
# @example
|
|
44
|
-
# workflow = SwarmSDK.workflow do
|
|
45
|
-
# name "Pipeline"
|
|
46
|
-
# start_node :planning
|
|
47
|
-
# node(:planning) { agent(:architect) }
|
|
48
|
-
# end
|
|
49
|
-
class << self
|
|
50
|
-
def build(allow_filesystem_tools: nil, &block)
|
|
51
|
-
builder = new(allow_filesystem_tools: allow_filesystem_tools)
|
|
52
|
-
builder.instance_eval(&block)
|
|
53
|
-
builder.build_swarm
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
def initialize(allow_filesystem_tools: nil)
|
|
58
|
-
super
|
|
59
|
-
@nodes = {}
|
|
60
|
-
@start_node = nil
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
# Define a node (mini-swarm execution stage)
|
|
64
|
-
#
|
|
65
|
-
# Nodes enable multi-stage workflows where different agent teams
|
|
66
|
-
# collaborate in sequence. Each node is an independent swarm execution.
|
|
67
|
-
#
|
|
68
|
-
# @param name [Symbol] Node name
|
|
69
|
-
# @yield Block for node configuration
|
|
70
|
-
# @return [void]
|
|
71
|
-
#
|
|
72
|
-
# @example Solo agent node
|
|
73
|
-
# node :planning do
|
|
74
|
-
# agent(:architect)
|
|
75
|
-
# end
|
|
76
|
-
#
|
|
77
|
-
# @example Multi-agent node with delegation
|
|
78
|
-
# node :implementation do
|
|
79
|
-
# agent(:backend).delegates_to(:tester, :database)
|
|
80
|
-
# agent(:tester).delegates_to(:database)
|
|
81
|
-
# agent(:database)
|
|
82
|
-
# depends_on :planning
|
|
83
|
-
# end
|
|
84
|
-
def node(name, &block)
|
|
85
|
-
builder = Workflow::NodeBuilder.new(name)
|
|
86
|
-
builder.instance_eval(&block)
|
|
87
|
-
@nodes[name] = builder
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
# Set the starting node for workflow execution
|
|
91
|
-
#
|
|
92
|
-
# Required when nodes are defined. Specifies which node to execute first.
|
|
93
|
-
#
|
|
94
|
-
# @param name [Symbol] Name of starting node
|
|
95
|
-
# @return [void]
|
|
96
|
-
#
|
|
97
|
-
# @example
|
|
98
|
-
# start_node :planning
|
|
99
|
-
def start_node(name)
|
|
100
|
-
@start_node = name.to_sym
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
# Build the actual Workflow instance
|
|
104
|
-
def build_swarm # Returns Workflow despite method name
|
|
105
|
-
raise ConfigurationError, "Workflow name not set. Use: name 'My Workflow'" unless @swarm_name
|
|
106
|
-
raise ConfigurationError, "No nodes defined. Use: node :name { ... }" if @nodes.empty?
|
|
107
|
-
raise ConfigurationError, "start_node not set. Use: start_node :name" unless @start_node
|
|
108
|
-
|
|
109
|
-
# Validate filesystem tools BEFORE building
|
|
110
|
-
validate_all_agents_filesystem_tools if @all_agents_config
|
|
111
|
-
validate_agent_filesystem_tools
|
|
112
|
-
|
|
113
|
-
build_workflow
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
private
|
|
117
|
-
|
|
118
|
-
# Build a node-based workflow
|
|
119
|
-
#
|
|
120
|
-
# @return [Workflow] Configured workflow instance
|
|
121
|
-
def build_workflow
|
|
122
|
-
# Build agent definitions
|
|
123
|
-
agent_definitions = build_agent_definitions
|
|
124
|
-
|
|
125
|
-
# Create workflow
|
|
126
|
-
workflow = Workflow.new(
|
|
127
|
-
swarm_name: @swarm_name,
|
|
128
|
-
swarm_id: @swarm_id,
|
|
129
|
-
agent_definitions: agent_definitions,
|
|
130
|
-
nodes: @nodes,
|
|
131
|
-
start_node: @start_node,
|
|
132
|
-
scratchpad: @scratchpad,
|
|
133
|
-
allow_filesystem_tools: @allow_filesystem_tools,
|
|
134
|
-
)
|
|
135
|
-
|
|
136
|
-
# Pass swarm registry config to workflow if external swarms registered
|
|
137
|
-
workflow.swarm_registry_config = @swarm_registry_config if @swarm_registry_config.any?
|
|
138
|
-
|
|
139
|
-
workflow
|
|
140
|
-
end
|
|
141
|
-
end
|
|
142
|
-
end
|
|
143
|
-
end
|