swarm_memory 2.1.4 → 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.
Files changed (184) hide show
  1. checksums.yaml +4 -4
  2. data/lib/swarm_memory/version.rb +1 -1
  3. data/lib/swarm_memory.rb +7 -2
  4. metadata +6 -185
  5. data/lib/claude_swarm/base_executor.rb +0 -133
  6. data/lib/claude_swarm/claude_code_executor.rb +0 -349
  7. data/lib/claude_swarm/claude_mcp_server.rb +0 -78
  8. data/lib/claude_swarm/cli.rb +0 -697
  9. data/lib/claude_swarm/commands/ps.rb +0 -215
  10. data/lib/claude_swarm/commands/show.rb +0 -139
  11. data/lib/claude_swarm/configuration.rb +0 -373
  12. data/lib/claude_swarm/hooks/session_start_hook.rb +0 -42
  13. data/lib/claude_swarm/json_handler.rb +0 -91
  14. data/lib/claude_swarm/mcp_generator.rb +0 -243
  15. data/lib/claude_swarm/openai/chat_completion.rb +0 -256
  16. data/lib/claude_swarm/openai/executor.rb +0 -256
  17. data/lib/claude_swarm/openai/responses.rb +0 -319
  18. data/lib/claude_swarm/orchestrator.rb +0 -878
  19. data/lib/claude_swarm/process_tracker.rb +0 -78
  20. data/lib/claude_swarm/session_cost_calculator.rb +0 -209
  21. data/lib/claude_swarm/session_path.rb +0 -42
  22. data/lib/claude_swarm/settings_generator.rb +0 -77
  23. data/lib/claude_swarm/system_utils.rb +0 -46
  24. data/lib/claude_swarm/templates/generation_prompt.md.erb +0 -230
  25. data/lib/claude_swarm/tools/reset_session_tool.rb +0 -24
  26. data/lib/claude_swarm/tools/session_info_tool.rb +0 -24
  27. data/lib/claude_swarm/tools/task_tool.rb +0 -63
  28. data/lib/claude_swarm/version.rb +0 -5
  29. data/lib/claude_swarm/worktree_manager.rb +0 -475
  30. data/lib/claude_swarm/yaml_loader.rb +0 -22
  31. data/lib/claude_swarm.rb +0 -67
  32. data/lib/swarm_cli/cli.rb +0 -201
  33. data/lib/swarm_cli/command_registry.rb +0 -61
  34. data/lib/swarm_cli/commands/mcp_serve.rb +0 -130
  35. data/lib/swarm_cli/commands/mcp_tools.rb +0 -148
  36. data/lib/swarm_cli/commands/migrate.rb +0 -55
  37. data/lib/swarm_cli/commands/run.rb +0 -173
  38. data/lib/swarm_cli/config_loader.rb +0 -98
  39. data/lib/swarm_cli/formatters/human_formatter.rb +0 -781
  40. data/lib/swarm_cli/formatters/json_formatter.rb +0 -51
  41. data/lib/swarm_cli/interactive_repl.rb +0 -924
  42. data/lib/swarm_cli/mcp_serve_options.rb +0 -44
  43. data/lib/swarm_cli/mcp_tools_options.rb +0 -59
  44. data/lib/swarm_cli/migrate_options.rb +0 -54
  45. data/lib/swarm_cli/migrator.rb +0 -132
  46. data/lib/swarm_cli/options.rb +0 -151
  47. data/lib/swarm_cli/ui/components/agent_badge.rb +0 -33
  48. data/lib/swarm_cli/ui/components/content_block.rb +0 -120
  49. data/lib/swarm_cli/ui/components/divider.rb +0 -57
  50. data/lib/swarm_cli/ui/components/panel.rb +0 -62
  51. data/lib/swarm_cli/ui/components/usage_stats.rb +0 -70
  52. data/lib/swarm_cli/ui/formatters/cost.rb +0 -49
  53. data/lib/swarm_cli/ui/formatters/number.rb +0 -58
  54. data/lib/swarm_cli/ui/formatters/text.rb +0 -77
  55. data/lib/swarm_cli/ui/formatters/time.rb +0 -73
  56. data/lib/swarm_cli/ui/icons.rb +0 -36
  57. data/lib/swarm_cli/ui/renderers/event_renderer.rb +0 -188
  58. data/lib/swarm_cli/ui/state/agent_color_cache.rb +0 -45
  59. data/lib/swarm_cli/ui/state/depth_tracker.rb +0 -40
  60. data/lib/swarm_cli/ui/state/spinner_manager.rb +0 -170
  61. data/lib/swarm_cli/ui/state/usage_tracker.rb +0 -62
  62. data/lib/swarm_cli/version.rb +0 -5
  63. data/lib/swarm_cli.rb +0 -46
  64. data/lib/swarm_sdk/agent/RETRY_LOGIC.md +0 -127
  65. data/lib/swarm_sdk/agent/builder.rb +0 -552
  66. data/lib/swarm_sdk/agent/chat.rb +0 -774
  67. data/lib/swarm_sdk/agent/chat_helpers/context_tracker.rb +0 -268
  68. data/lib/swarm_sdk/agent/chat_helpers/event_emitter.rb +0 -204
  69. data/lib/swarm_sdk/agent/chat_helpers/hook_integration.rb +0 -480
  70. data/lib/swarm_sdk/agent/chat_helpers/instrumentation.rb +0 -78
  71. data/lib/swarm_sdk/agent/chat_helpers/llm_configuration.rb +0 -233
  72. data/lib/swarm_sdk/agent/chat_helpers/logging_helpers.rb +0 -116
  73. data/lib/swarm_sdk/agent/chat_helpers/serialization.rb +0 -83
  74. data/lib/swarm_sdk/agent/chat_helpers/system_reminder_injector.rb +0 -136
  75. data/lib/swarm_sdk/agent/chat_helpers/system_reminders.rb +0 -79
  76. data/lib/swarm_sdk/agent/chat_helpers/token_tracking.rb +0 -98
  77. data/lib/swarm_sdk/agent/context.rb +0 -116
  78. data/lib/swarm_sdk/agent/context_manager.rb +0 -315
  79. data/lib/swarm_sdk/agent/definition.rb +0 -477
  80. data/lib/swarm_sdk/agent/llm_instrumentation_middleware.rb +0 -182
  81. data/lib/swarm_sdk/agent/system_prompt_builder.rb +0 -161
  82. data/lib/swarm_sdk/builders/base_builder.rb +0 -409
  83. data/lib/swarm_sdk/claude_code_agent_adapter.rb +0 -205
  84. data/lib/swarm_sdk/concerns/cleanupable.rb +0 -39
  85. data/lib/swarm_sdk/concerns/snapshotable.rb +0 -67
  86. data/lib/swarm_sdk/concerns/validatable.rb +0 -55
  87. data/lib/swarm_sdk/configuration/parser.rb +0 -353
  88. data/lib/swarm_sdk/configuration/translator.rb +0 -255
  89. data/lib/swarm_sdk/configuration.rb +0 -135
  90. data/lib/swarm_sdk/context_compactor/metrics.rb +0 -147
  91. data/lib/swarm_sdk/context_compactor/token_counter.rb +0 -106
  92. data/lib/swarm_sdk/context_compactor.rb +0 -335
  93. data/lib/swarm_sdk/context_management/builder.rb +0 -128
  94. data/lib/swarm_sdk/context_management/context.rb +0 -328
  95. data/lib/swarm_sdk/defaults.rb +0 -196
  96. data/lib/swarm_sdk/events_to_messages.rb +0 -199
  97. data/lib/swarm_sdk/hooks/adapter.rb +0 -359
  98. data/lib/swarm_sdk/hooks/context.rb +0 -197
  99. data/lib/swarm_sdk/hooks/definition.rb +0 -80
  100. data/lib/swarm_sdk/hooks/error.rb +0 -29
  101. data/lib/swarm_sdk/hooks/executor.rb +0 -146
  102. data/lib/swarm_sdk/hooks/registry.rb +0 -147
  103. data/lib/swarm_sdk/hooks/result.rb +0 -150
  104. data/lib/swarm_sdk/hooks/shell_executor.rb +0 -255
  105. data/lib/swarm_sdk/hooks/tool_call.rb +0 -35
  106. data/lib/swarm_sdk/hooks/tool_result.rb +0 -62
  107. data/lib/swarm_sdk/log_collector.rb +0 -227
  108. data/lib/swarm_sdk/log_stream.rb +0 -127
  109. data/lib/swarm_sdk/markdown_parser.rb +0 -75
  110. data/lib/swarm_sdk/model_aliases.json +0 -8
  111. data/lib/swarm_sdk/models.json +0 -1
  112. data/lib/swarm_sdk/models.rb +0 -120
  113. data/lib/swarm_sdk/node_context.rb +0 -245
  114. data/lib/swarm_sdk/observer/builder.rb +0 -81
  115. data/lib/swarm_sdk/observer/config.rb +0 -45
  116. data/lib/swarm_sdk/observer/manager.rb +0 -236
  117. data/lib/swarm_sdk/patterns/agent_observer.rb +0 -160
  118. data/lib/swarm_sdk/permissions/config.rb +0 -239
  119. data/lib/swarm_sdk/permissions/error_formatter.rb +0 -121
  120. data/lib/swarm_sdk/permissions/path_matcher.rb +0 -35
  121. data/lib/swarm_sdk/permissions/validator.rb +0 -173
  122. data/lib/swarm_sdk/permissions_builder.rb +0 -122
  123. data/lib/swarm_sdk/plugin.rb +0 -309
  124. data/lib/swarm_sdk/plugin_registry.rb +0 -101
  125. data/lib/swarm_sdk/proc_helpers.rb +0 -53
  126. data/lib/swarm_sdk/prompts/base_system_prompt.md.erb +0 -117
  127. data/lib/swarm_sdk/restore_result.rb +0 -65
  128. data/lib/swarm_sdk/result.rb +0 -123
  129. data/lib/swarm_sdk/snapshot.rb +0 -156
  130. data/lib/swarm_sdk/snapshot_from_events.rb +0 -397
  131. data/lib/swarm_sdk/state_restorer.rb +0 -476
  132. data/lib/swarm_sdk/state_snapshot.rb +0 -334
  133. data/lib/swarm_sdk/swarm/agent_initializer.rb +0 -683
  134. data/lib/swarm_sdk/swarm/all_agents_builder.rb +0 -167
  135. data/lib/swarm_sdk/swarm/builder.rb +0 -249
  136. data/lib/swarm_sdk/swarm/executor.rb +0 -213
  137. data/lib/swarm_sdk/swarm/hook_triggers.rb +0 -150
  138. data/lib/swarm_sdk/swarm/logging_callbacks.rb +0 -340
  139. data/lib/swarm_sdk/swarm/mcp_configurator.rb +0 -154
  140. data/lib/swarm_sdk/swarm/swarm_registry_builder.rb +0 -67
  141. data/lib/swarm_sdk/swarm/tool_configurator.rb +0 -358
  142. data/lib/swarm_sdk/swarm.rb +0 -717
  143. data/lib/swarm_sdk/swarm_loader.rb +0 -145
  144. data/lib/swarm_sdk/swarm_registry.rb +0 -136
  145. data/lib/swarm_sdk/tools/bash.rb +0 -282
  146. data/lib/swarm_sdk/tools/clock.rb +0 -44
  147. data/lib/swarm_sdk/tools/delegate.rb +0 -267
  148. data/lib/swarm_sdk/tools/document_converters/base_converter.rb +0 -83
  149. data/lib/swarm_sdk/tools/document_converters/docx_converter.rb +0 -99
  150. data/lib/swarm_sdk/tools/document_converters/html_converter.rb +0 -101
  151. data/lib/swarm_sdk/tools/document_converters/pdf_converter.rb +0 -78
  152. data/lib/swarm_sdk/tools/document_converters/xlsx_converter.rb +0 -194
  153. data/lib/swarm_sdk/tools/edit.rb +0 -145
  154. data/lib/swarm_sdk/tools/glob.rb +0 -166
  155. data/lib/swarm_sdk/tools/grep.rb +0 -235
  156. data/lib/swarm_sdk/tools/image_extractors/docx_image_extractor.rb +0 -43
  157. data/lib/swarm_sdk/tools/image_extractors/pdf_image_extractor.rb +0 -163
  158. data/lib/swarm_sdk/tools/image_formats/tiff_builder.rb +0 -65
  159. data/lib/swarm_sdk/tools/multi_edit.rb +0 -236
  160. data/lib/swarm_sdk/tools/path_resolver.rb +0 -92
  161. data/lib/swarm_sdk/tools/read.rb +0 -261
  162. data/lib/swarm_sdk/tools/registry.rb +0 -205
  163. data/lib/swarm_sdk/tools/scratchpad/scratchpad_list.rb +0 -117
  164. data/lib/swarm_sdk/tools/scratchpad/scratchpad_read.rb +0 -97
  165. data/lib/swarm_sdk/tools/scratchpad/scratchpad_write.rb +0 -108
  166. data/lib/swarm_sdk/tools/stores/read_tracker.rb +0 -96
  167. data/lib/swarm_sdk/tools/stores/scratchpad_storage.rb +0 -272
  168. data/lib/swarm_sdk/tools/stores/storage.rb +0 -142
  169. data/lib/swarm_sdk/tools/stores/todo_manager.rb +0 -65
  170. data/lib/swarm_sdk/tools/think.rb +0 -98
  171. data/lib/swarm_sdk/tools/todo_write.rb +0 -235
  172. data/lib/swarm_sdk/tools/web_fetch.rb +0 -262
  173. data/lib/swarm_sdk/tools/write.rb +0 -112
  174. data/lib/swarm_sdk/utils.rb +0 -68
  175. data/lib/swarm_sdk/validation_result.rb +0 -33
  176. data/lib/swarm_sdk/version.rb +0 -5
  177. data/lib/swarm_sdk/workflow/agent_config.rb +0 -79
  178. data/lib/swarm_sdk/workflow/builder.rb +0 -143
  179. data/lib/swarm_sdk/workflow/executor.rb +0 -497
  180. data/lib/swarm_sdk/workflow/node_builder.rb +0 -555
  181. data/lib/swarm_sdk/workflow/transformer_executor.rb +0 -249
  182. data/lib/swarm_sdk/workflow.rb +0 -554
  183. data/lib/swarm_sdk.rb +0 -524
  184. /data/lib/swarm_memory/{errors.rb → error.rb} +0 -0
@@ -1,173 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module SwarmCLI
4
- module Commands
5
- # Run command executes a swarm with the given configuration and prompt.
6
- #
7
- # Supports both YAML (.yml, .yaml) and Ruby DSL (.rb) configuration files.
8
- #
9
- # Usage:
10
- # swarm run config.yml -p "Build a REST API"
11
- # swarm run config.rb -p "Build a REST API"
12
- # echo "Build a REST API" | swarm run config.yml
13
- # swarm run config.yml -p "Task" --output-format json
14
- #
15
- class Run
16
- attr_reader :options
17
-
18
- def initialize(options)
19
- @options = options
20
- end
21
-
22
- def execute
23
- # Validate options
24
- options.validate!
25
-
26
- # Load swarm configuration
27
- swarm = load_swarm
28
-
29
- # Check if interactive mode (no prompt provided and stdin is a tty)
30
- if options.interactive_mode?
31
- run_interactive_mode(swarm)
32
- else
33
- run_non_interactive_mode(swarm)
34
- end
35
- rescue SwarmSDK::ConfigurationError, SwarmSDK::AgentNotFoundError => e
36
- # Configuration errors - show user-friendly message
37
- handle_error(e, formatter: create_formatter)
38
- exit(1)
39
- rescue SwarmCLI::ExecutionError => e
40
- # CLI-specific errors (e.g., missing prompt)
41
- handle_error(e, formatter: create_formatter)
42
- exit(1)
43
- rescue Interrupt
44
- # User cancelled (Ctrl+C)
45
- $stderr.puts "\n\nExecution cancelled by user"
46
- exit(130)
47
- rescue StandardError => e
48
- # Unexpected errors
49
- handle_error(e, formatter: create_formatter)
50
- exit(1)
51
- end
52
-
53
- private
54
-
55
- def run_interactive_mode(swarm)
56
- # Launch the interactive REPL with optional initial message
57
- initial_message = options.initial_message
58
- repl = SwarmCLI::InteractiveREPL.new(
59
- swarm: swarm,
60
- options: options,
61
- initial_message: initial_message,
62
- )
63
- repl.run
64
- exit(0)
65
- end
66
-
67
- def run_non_interactive_mode(swarm)
68
- # Create formatter based on output format
69
- formatter = create_formatter
70
-
71
- # Get prompt text
72
- prompt = options.prompt_text
73
-
74
- # Notify formatter of start
75
- formatter.on_start(
76
- config_path: options.config_file,
77
- swarm_name: swarm.name,
78
- lead_agent: swarm.lead_agent,
79
- prompt: prompt,
80
- )
81
-
82
- # Emit validation warnings before execution
83
- emit_validation_warnings(swarm, formatter)
84
-
85
- # Execute swarm with logging
86
- start_time = Time.now
87
- result = swarm.execute(prompt) do |log_entry|
88
- # Skip model warnings - already emitted above
89
- next if log_entry[:type] == "model_lookup_warning"
90
-
91
- formatter.on_log(log_entry)
92
- end
93
-
94
- # Check for errors
95
- if result.failure?
96
- duration = Time.now - start_time
97
- formatter.on_error(error: result.error, duration: duration)
98
- exit(1)
99
- end
100
-
101
- # Notify formatter of success
102
- formatter.on_success(result: result)
103
-
104
- # Exit successfully
105
- exit(0)
106
- end
107
-
108
- def load_swarm
109
- config_path = options.config_file
110
-
111
- ConfigLoader.load(config_path)
112
- rescue SwarmCLI::ConfigurationError => e
113
- # ConfigLoader already provides good context
114
- raise SwarmCLI::ExecutionError, e.message
115
- rescue SwarmSDK::ConfigurationError => e
116
- # SDK errors - add context
117
- raise SwarmCLI::ExecutionError, "Configuration error: #{e.message}"
118
- end
119
-
120
- def create_formatter
121
- case options.output_format
122
- when "json"
123
- Formatters::JsonFormatter.new
124
- when "human"
125
- Formatters::HumanFormatter.new(
126
- quiet: options.quiet?,
127
- truncate: options.truncate?,
128
- verbose: options.verbose?,
129
- )
130
- else
131
- raise SwarmCLI::ExecutionError, "Unknown output format: #{options.output_format}"
132
- end
133
- end
134
-
135
- def emit_validation_warnings(swarm, formatter)
136
- # Setup temporary logging to capture and emit warnings
137
- SwarmSDK::LogCollector.subscribe(filter: { type: "model_lookup_warning" }) do |log_entry|
138
- formatter.on_log(log_entry)
139
- end
140
-
141
- SwarmSDK::LogStream.emitter = SwarmSDK::LogCollector
142
-
143
- # Emit validation warnings as log events
144
- swarm.emit_validation_warnings
145
-
146
- # Clean up
147
- SwarmSDK::LogCollector.reset!
148
- SwarmSDK::LogStream.reset!
149
- rescue StandardError
150
- # Ignore errors during validation emission
151
- begin
152
- SwarmSDK::LogCollector.reset!
153
- rescue
154
- nil
155
- end
156
- begin
157
- SwarmSDK::LogStream.reset!
158
- rescue
159
- nil
160
- end
161
- end
162
-
163
- def handle_error(error, formatter: nil)
164
- if formatter
165
- formatter.on_error(error: error)
166
- else
167
- # Fallback if formatter not available
168
- $stderr.puts "Error: #{error.message}"
169
- end
170
- end
171
- end
172
- end
173
- end
@@ -1,98 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module SwarmCLI
4
- # ConfigLoader handles loading swarm configurations from both YAML and Ruby DSL files.
5
- #
6
- # Supports:
7
- # - YAML files (.yml, .yaml) - loaded via SwarmSDK.load_file
8
- # - Ruby DSL files (.rb) - executed and expected to return a SwarmSDK::Swarm or SwarmSDK::Workflow instance
9
- #
10
- # @example Load YAML config
11
- # swarm = ConfigLoader.load("config.yml")
12
- #
13
- # @example Load Ruby DSL config
14
- # swarm = ConfigLoader.load("config.rb")
15
- #
16
- class ConfigLoader
17
- class << self
18
- # Load a swarm configuration from file (YAML or Ruby DSL)
19
- #
20
- # Detects file type by extension:
21
- # - .yml, .yaml -> Load as YAML using SwarmSDK.load_file
22
- # - .rb -> Execute as Ruby DSL and expect SwarmSDK::Swarm or SwarmSDK::Workflow instance
23
- #
24
- # @param path [String, Pathname] Path to configuration file
25
- # @return [SwarmSDK::Swarm, SwarmSDK::Workflow] Configured swarm or workflow instance
26
- # @raise [SwarmCLI::ConfigurationError] If file not found or invalid format
27
- def load(path)
28
- path = Pathname.new(path).expand_path
29
-
30
- unless path.exist?
31
- raise ConfigurationError, "Configuration file not found: #{path}"
32
- end
33
-
34
- case path.extname.downcase
35
- when ".yml", ".yaml"
36
- load_yaml(path)
37
- when ".rb"
38
- load_ruby_dsl(path)
39
- else
40
- raise ConfigurationError,
41
- "Unsupported configuration file format: #{path.extname}. " \
42
- "Supported formats: .yml, .yaml (YAML), .rb (Ruby DSL)"
43
- end
44
- end
45
-
46
- private
47
-
48
- # Load YAML configuration file
49
- #
50
- # @param path [Pathname] Path to YAML file
51
- # @return [SwarmSDK::Swarm] Configured swarm instance
52
- def load_yaml(path)
53
- SwarmSDK.load_file(path.to_s)
54
- rescue SwarmSDK::ConfigurationError => e
55
- # Re-raise with CLI context
56
- raise ConfigurationError, "Configuration error in #{path}: #{e.message}"
57
- end
58
-
59
- # Load Ruby DSL configuration file
60
- #
61
- # Executes the Ruby file in a clean binding and expects it to return
62
- # a SwarmSDK::Swarm or SwarmSDK::Workflow instance. The file should
63
- # use SwarmSDK.build or SwarmSDK.workflow or create a Swarm/Workflow instance directly.
64
- #
65
- # @param path [Pathname] Path to Ruby DSL file
66
- # @return [SwarmSDK::Swarm, SwarmSDK::Workflow] Configured swarm or workflow instance
67
- # @raise [ConfigurationError] If file doesn't return a valid instance
68
- def load_ruby_dsl(path)
69
- # Read the file content
70
- content = path.read
71
-
72
- # Execute in a clean binding with SwarmSDK available
73
- # This allows the DSL file to use SwarmSDK.build or SwarmSDK.workflow directly
74
- result = eval(content, binding, path.to_s, 1) # rubocop:disable Security/Eval
75
-
76
- # Validate result is a Swarm or Workflow instance
77
- # Both have the same execute(prompt) interface
78
- unless result.is_a?(SwarmSDK::Swarm) || result.is_a?(SwarmSDK::Workflow)
79
- raise ConfigurationError,
80
- "Ruby DSL file must return a SwarmSDK::Swarm or SwarmSDK::Workflow instance. " \
81
- "Got: #{result.class}. " \
82
- "Use: SwarmSDK.build { ... } or SwarmSDK.workflow { ... }"
83
- end
84
-
85
- result
86
- rescue SwarmSDK::ConfigurationError => e
87
- # Re-raise SDK configuration errors with CLI context
88
- raise ConfigurationError, "Configuration error in #{path}: #{e.message}"
89
- rescue SyntaxError => e
90
- # Ruby syntax errors
91
- raise ConfigurationError, "Syntax error in #{path}: #{e.message}"
92
- rescue StandardError => e
93
- # Other Ruby errors during execution
94
- raise ConfigurationError, "Error loading #{path}: #{e.message}"
95
- end
96
- end
97
- end
98
- end