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.
Files changed (182) hide show
  1. checksums.yaml +4 -4
  2. data/lib/swarm_memory/version.rb +1 -1
  3. metadata +5 -184
  4. data/lib/claude_swarm/base_executor.rb +0 -133
  5. data/lib/claude_swarm/claude_code_executor.rb +0 -349
  6. data/lib/claude_swarm/claude_mcp_server.rb +0 -78
  7. data/lib/claude_swarm/cli.rb +0 -697
  8. data/lib/claude_swarm/commands/ps.rb +0 -215
  9. data/lib/claude_swarm/commands/show.rb +0 -139
  10. data/lib/claude_swarm/configuration.rb +0 -373
  11. data/lib/claude_swarm/hooks/session_start_hook.rb +0 -42
  12. data/lib/claude_swarm/json_handler.rb +0 -91
  13. data/lib/claude_swarm/mcp_generator.rb +0 -230
  14. data/lib/claude_swarm/openai/chat_completion.rb +0 -256
  15. data/lib/claude_swarm/openai/executor.rb +0 -256
  16. data/lib/claude_swarm/openai/responses.rb +0 -319
  17. data/lib/claude_swarm/orchestrator.rb +0 -878
  18. data/lib/claude_swarm/process_tracker.rb +0 -78
  19. data/lib/claude_swarm/session_cost_calculator.rb +0 -209
  20. data/lib/claude_swarm/session_path.rb +0 -42
  21. data/lib/claude_swarm/settings_generator.rb +0 -77
  22. data/lib/claude_swarm/system_utils.rb +0 -46
  23. data/lib/claude_swarm/templates/generation_prompt.md.erb +0 -230
  24. data/lib/claude_swarm/tools/reset_session_tool.rb +0 -24
  25. data/lib/claude_swarm/tools/session_info_tool.rb +0 -24
  26. data/lib/claude_swarm/tools/task_tool.rb +0 -63
  27. data/lib/claude_swarm/version.rb +0 -5
  28. data/lib/claude_swarm/worktree_manager.rb +0 -475
  29. data/lib/claude_swarm/yaml_loader.rb +0 -22
  30. data/lib/claude_swarm.rb +0 -67
  31. data/lib/swarm_cli/cli.rb +0 -201
  32. data/lib/swarm_cli/command_registry.rb +0 -61
  33. data/lib/swarm_cli/commands/mcp_serve.rb +0 -130
  34. data/lib/swarm_cli/commands/mcp_tools.rb +0 -148
  35. data/lib/swarm_cli/commands/migrate.rb +0 -55
  36. data/lib/swarm_cli/commands/run.rb +0 -173
  37. data/lib/swarm_cli/config_loader.rb +0 -98
  38. data/lib/swarm_cli/formatters/human_formatter.rb +0 -781
  39. data/lib/swarm_cli/formatters/json_formatter.rb +0 -51
  40. data/lib/swarm_cli/interactive_repl.rb +0 -924
  41. data/lib/swarm_cli/mcp_serve_options.rb +0 -44
  42. data/lib/swarm_cli/mcp_tools_options.rb +0 -59
  43. data/lib/swarm_cli/migrate_options.rb +0 -54
  44. data/lib/swarm_cli/migrator.rb +0 -132
  45. data/lib/swarm_cli/options.rb +0 -151
  46. data/lib/swarm_cli/ui/components/agent_badge.rb +0 -33
  47. data/lib/swarm_cli/ui/components/content_block.rb +0 -120
  48. data/lib/swarm_cli/ui/components/divider.rb +0 -57
  49. data/lib/swarm_cli/ui/components/panel.rb +0 -62
  50. data/lib/swarm_cli/ui/components/usage_stats.rb +0 -70
  51. data/lib/swarm_cli/ui/formatters/cost.rb +0 -49
  52. data/lib/swarm_cli/ui/formatters/number.rb +0 -58
  53. data/lib/swarm_cli/ui/formatters/text.rb +0 -77
  54. data/lib/swarm_cli/ui/formatters/time.rb +0 -73
  55. data/lib/swarm_cli/ui/icons.rb +0 -36
  56. data/lib/swarm_cli/ui/renderers/event_renderer.rb +0 -188
  57. data/lib/swarm_cli/ui/state/agent_color_cache.rb +0 -45
  58. data/lib/swarm_cli/ui/state/depth_tracker.rb +0 -40
  59. data/lib/swarm_cli/ui/state/spinner_manager.rb +0 -170
  60. data/lib/swarm_cli/ui/state/usage_tracker.rb +0 -62
  61. data/lib/swarm_cli/version.rb +0 -5
  62. data/lib/swarm_cli.rb +0 -46
  63. data/lib/swarm_sdk/agent/RETRY_LOGIC.md +0 -127
  64. data/lib/swarm_sdk/agent/builder.rb +0 -552
  65. data/lib/swarm_sdk/agent/chat.rb +0 -774
  66. data/lib/swarm_sdk/agent/chat_helpers/context_tracker.rb +0 -268
  67. data/lib/swarm_sdk/agent/chat_helpers/event_emitter.rb +0 -204
  68. data/lib/swarm_sdk/agent/chat_helpers/hook_integration.rb +0 -480
  69. data/lib/swarm_sdk/agent/chat_helpers/instrumentation.rb +0 -78
  70. data/lib/swarm_sdk/agent/chat_helpers/llm_configuration.rb +0 -233
  71. data/lib/swarm_sdk/agent/chat_helpers/logging_helpers.rb +0 -116
  72. data/lib/swarm_sdk/agent/chat_helpers/serialization.rb +0 -83
  73. data/lib/swarm_sdk/agent/chat_helpers/system_reminder_injector.rb +0 -136
  74. data/lib/swarm_sdk/agent/chat_helpers/system_reminders.rb +0 -79
  75. data/lib/swarm_sdk/agent/chat_helpers/token_tracking.rb +0 -98
  76. data/lib/swarm_sdk/agent/context.rb +0 -116
  77. data/lib/swarm_sdk/agent/context_manager.rb +0 -315
  78. data/lib/swarm_sdk/agent/definition.rb +0 -477
  79. data/lib/swarm_sdk/agent/llm_instrumentation_middleware.rb +0 -182
  80. data/lib/swarm_sdk/agent/system_prompt_builder.rb +0 -161
  81. data/lib/swarm_sdk/builders/base_builder.rb +0 -409
  82. data/lib/swarm_sdk/claude_code_agent_adapter.rb +0 -205
  83. data/lib/swarm_sdk/concerns/cleanupable.rb +0 -39
  84. data/lib/swarm_sdk/concerns/snapshotable.rb +0 -67
  85. data/lib/swarm_sdk/concerns/validatable.rb +0 -55
  86. data/lib/swarm_sdk/configuration/parser.rb +0 -353
  87. data/lib/swarm_sdk/configuration/translator.rb +0 -255
  88. data/lib/swarm_sdk/configuration.rb +0 -135
  89. data/lib/swarm_sdk/context_compactor/metrics.rb +0 -147
  90. data/lib/swarm_sdk/context_compactor/token_counter.rb +0 -106
  91. data/lib/swarm_sdk/context_compactor.rb +0 -335
  92. data/lib/swarm_sdk/context_management/builder.rb +0 -128
  93. data/lib/swarm_sdk/context_management/context.rb +0 -328
  94. data/lib/swarm_sdk/defaults.rb +0 -196
  95. data/lib/swarm_sdk/events_to_messages.rb +0 -199
  96. data/lib/swarm_sdk/hooks/adapter.rb +0 -359
  97. data/lib/swarm_sdk/hooks/context.rb +0 -197
  98. data/lib/swarm_sdk/hooks/definition.rb +0 -80
  99. data/lib/swarm_sdk/hooks/error.rb +0 -29
  100. data/lib/swarm_sdk/hooks/executor.rb +0 -146
  101. data/lib/swarm_sdk/hooks/registry.rb +0 -147
  102. data/lib/swarm_sdk/hooks/result.rb +0 -150
  103. data/lib/swarm_sdk/hooks/shell_executor.rb +0 -255
  104. data/lib/swarm_sdk/hooks/tool_call.rb +0 -35
  105. data/lib/swarm_sdk/hooks/tool_result.rb +0 -62
  106. data/lib/swarm_sdk/log_collector.rb +0 -227
  107. data/lib/swarm_sdk/log_stream.rb +0 -127
  108. data/lib/swarm_sdk/markdown_parser.rb +0 -75
  109. data/lib/swarm_sdk/model_aliases.json +0 -8
  110. data/lib/swarm_sdk/models.json +0 -1
  111. data/lib/swarm_sdk/models.rb +0 -120
  112. data/lib/swarm_sdk/node_context.rb +0 -245
  113. data/lib/swarm_sdk/observer/builder.rb +0 -81
  114. data/lib/swarm_sdk/observer/config.rb +0 -45
  115. data/lib/swarm_sdk/observer/manager.rb +0 -236
  116. data/lib/swarm_sdk/patterns/agent_observer.rb +0 -160
  117. data/lib/swarm_sdk/permissions/config.rb +0 -239
  118. data/lib/swarm_sdk/permissions/error_formatter.rb +0 -121
  119. data/lib/swarm_sdk/permissions/path_matcher.rb +0 -35
  120. data/lib/swarm_sdk/permissions/validator.rb +0 -173
  121. data/lib/swarm_sdk/permissions_builder.rb +0 -122
  122. data/lib/swarm_sdk/plugin.rb +0 -309
  123. data/lib/swarm_sdk/plugin_registry.rb +0 -101
  124. data/lib/swarm_sdk/proc_helpers.rb +0 -53
  125. data/lib/swarm_sdk/prompts/base_system_prompt.md.erb +0 -117
  126. data/lib/swarm_sdk/restore_result.rb +0 -65
  127. data/lib/swarm_sdk/result.rb +0 -123
  128. data/lib/swarm_sdk/snapshot.rb +0 -156
  129. data/lib/swarm_sdk/snapshot_from_events.rb +0 -397
  130. data/lib/swarm_sdk/state_restorer.rb +0 -476
  131. data/lib/swarm_sdk/state_snapshot.rb +0 -334
  132. data/lib/swarm_sdk/swarm/agent_initializer.rb +0 -683
  133. data/lib/swarm_sdk/swarm/all_agents_builder.rb +0 -167
  134. data/lib/swarm_sdk/swarm/builder.rb +0 -249
  135. data/lib/swarm_sdk/swarm/executor.rb +0 -213
  136. data/lib/swarm_sdk/swarm/hook_triggers.rb +0 -150
  137. data/lib/swarm_sdk/swarm/logging_callbacks.rb +0 -340
  138. data/lib/swarm_sdk/swarm/mcp_configurator.rb +0 -154
  139. data/lib/swarm_sdk/swarm/swarm_registry_builder.rb +0 -67
  140. data/lib/swarm_sdk/swarm/tool_configurator.rb +0 -358
  141. data/lib/swarm_sdk/swarm.rb +0 -717
  142. data/lib/swarm_sdk/swarm_loader.rb +0 -145
  143. data/lib/swarm_sdk/swarm_registry.rb +0 -136
  144. data/lib/swarm_sdk/tools/bash.rb +0 -282
  145. data/lib/swarm_sdk/tools/clock.rb +0 -44
  146. data/lib/swarm_sdk/tools/delegate.rb +0 -267
  147. data/lib/swarm_sdk/tools/document_converters/base_converter.rb +0 -83
  148. data/lib/swarm_sdk/tools/document_converters/docx_converter.rb +0 -99
  149. data/lib/swarm_sdk/tools/document_converters/html_converter.rb +0 -101
  150. data/lib/swarm_sdk/tools/document_converters/pdf_converter.rb +0 -78
  151. data/lib/swarm_sdk/tools/document_converters/xlsx_converter.rb +0 -194
  152. data/lib/swarm_sdk/tools/edit.rb +0 -145
  153. data/lib/swarm_sdk/tools/glob.rb +0 -166
  154. data/lib/swarm_sdk/tools/grep.rb +0 -235
  155. data/lib/swarm_sdk/tools/image_extractors/docx_image_extractor.rb +0 -43
  156. data/lib/swarm_sdk/tools/image_extractors/pdf_image_extractor.rb +0 -163
  157. data/lib/swarm_sdk/tools/image_formats/tiff_builder.rb +0 -65
  158. data/lib/swarm_sdk/tools/multi_edit.rb +0 -236
  159. data/lib/swarm_sdk/tools/path_resolver.rb +0 -92
  160. data/lib/swarm_sdk/tools/read.rb +0 -261
  161. data/lib/swarm_sdk/tools/registry.rb +0 -205
  162. data/lib/swarm_sdk/tools/scratchpad/scratchpad_list.rb +0 -117
  163. data/lib/swarm_sdk/tools/scratchpad/scratchpad_read.rb +0 -97
  164. data/lib/swarm_sdk/tools/scratchpad/scratchpad_write.rb +0 -108
  165. data/lib/swarm_sdk/tools/stores/read_tracker.rb +0 -96
  166. data/lib/swarm_sdk/tools/stores/scratchpad_storage.rb +0 -272
  167. data/lib/swarm_sdk/tools/stores/storage.rb +0 -142
  168. data/lib/swarm_sdk/tools/stores/todo_manager.rb +0 -65
  169. data/lib/swarm_sdk/tools/think.rb +0 -98
  170. data/lib/swarm_sdk/tools/todo_write.rb +0 -235
  171. data/lib/swarm_sdk/tools/web_fetch.rb +0 -262
  172. data/lib/swarm_sdk/tools/write.rb +0 -112
  173. data/lib/swarm_sdk/utils.rb +0 -68
  174. data/lib/swarm_sdk/validation_result.rb +0 -33
  175. data/lib/swarm_sdk/version.rb +0 -5
  176. data/lib/swarm_sdk/workflow/agent_config.rb +0 -79
  177. data/lib/swarm_sdk/workflow/builder.rb +0 -143
  178. data/lib/swarm_sdk/workflow/executor.rb +0 -497
  179. data/lib/swarm_sdk/workflow/node_builder.rb +0 -555
  180. data/lib/swarm_sdk/workflow/transformer_executor.rb +0 -249
  181. data/lib/swarm_sdk/workflow.rb +0 -554
  182. data/lib/swarm_sdk.rb +0 -524
@@ -1,249 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "open3"
4
- require "json"
5
- require "timeout"
6
-
7
- module SwarmSDK
8
- class Workflow
9
- # Executes bash command transformers for node input/output transformation
10
- #
11
- # Transformers are shell commands that receive NodeContext data on STDIN as JSON
12
- # and produce transformed content on STDOUT.
13
- #
14
- # ## Exit Code Behavior
15
- #
16
- # - **Exit 0**: Transform success
17
- # - Use STDOUT as the transformed content
18
- # - Node execution proceeds with transformed content
19
- #
20
- # - **Exit 1**: Skip node execution (pass-through)
21
- # - STDOUT is IGNORED
22
- # - Input transformer: Use current_input unchanged (no transformation)
23
- # - Output transformer: Use result.content unchanged (no transformation)
24
- # - For input transformer: Also skips the node's LLM execution
25
- #
26
- # - **Exit 2**: Halt entire workflow
27
- # - STDOUT is IGNORED
28
- # - STDERR is shown as error message
29
- # - Workflow stops immediately with error
30
- #
31
- # ## JSON Input Format (STDIN)
32
- #
33
- # **Input transformer receives:**
34
- # ```json
35
- # {
36
- # "event": "input",
37
- # "node": "implementation",
38
- # "original_prompt": "Build auth API",
39
- # "content": "PLAN: Create endpoints...",
40
- # "all_results": {
41
- # "planning": {
42
- # "content": "Create endpoints...",
43
- # "agent": "planner",
44
- # "duration": 2.5,
45
- # "success": true
46
- # }
47
- # },
48
- # "dependencies": ["planning"]
49
- # }
50
- # ```
51
- #
52
- # **Output transformer receives:**
53
- # ```json
54
- # {
55
- # "event": "output",
56
- # "node": "implementation",
57
- # "original_prompt": "Build auth API",
58
- # "content": "Implementation complete",
59
- # "all_results": {
60
- # "planning": {...},
61
- # "implementation": {...}
62
- # }
63
- # }
64
- # ```
65
- #
66
- # @example Input transformer that validates
67
- # # validate.sh
68
- # #!/bin/bash
69
- # INPUT=$(cat)
70
- # CONTENT=$(echo "$INPUT" | jq -r '.content')
71
- #
72
- # if [ ${#CONTENT} -gt 10000 ]; then
73
- # echo "Content too long" >&2
74
- # exit 2 # Halt workflow
75
- # fi
76
- #
77
- # echo "$CONTENT"
78
- # exit 0
79
- #
80
- # @example Input transformer that caches (skip execution)
81
- # # cache_check.sh
82
- # #!/bin/bash
83
- # INPUT=$(cat)
84
- # CONTENT=$(echo "$INPUT" | jq -r '.content')
85
- #
86
- # if cached "$CONTENT"; then
87
- # exit 1 # Skip node execution, pass through unchanged
88
- # fi
89
- #
90
- # echo "$CONTENT"
91
- # exit 0
92
- class TransformerExecutor
93
- # Backward compatibility alias - use Defaults module for new code
94
- DEFAULT_TIMEOUT = Defaults::Timeouts::TRANSFORMER_COMMAND_SECONDS
95
-
96
- # Result object for transformer execution
97
- TransformerResult = Struct.new(:success, :content, :skip_execution, :halt, :error_message, keyword_init: true) do
98
- def skip_execution?
99
- skip_execution
100
- end
101
-
102
- def halt?
103
- halt
104
- end
105
- end
106
-
107
- class << self
108
- # Execute a transformer shell command
109
- #
110
- # @param command [String] Shell command to execute
111
- # @param context [NodeContext] Node context for building JSON input
112
- # @param event [String] Event type ("input" or "output")
113
- # @param node_name [Symbol] Current node name
114
- # @param fallback_content [String] Content to use if skip (exit 1)
115
- # @param timeout [Integer] Timeout in seconds (default: 60)
116
- # @return [TransformerResult] Result with transformed content or skip/halt flags
117
- def execute(command:, context:, event:, node_name:, fallback_content:, timeout: DEFAULT_TIMEOUT)
118
- # Build JSON input for transformer
119
- input_json = build_transformer_input(context, event, node_name)
120
-
121
- # Build environment variables
122
- env = build_environment(node_name: node_name)
123
-
124
- # Execute command with JSON stdin and timeout
125
- stdout, stderr, status = Timeout.timeout(timeout) do
126
- Open3.capture3(
127
- env,
128
- command,
129
- stdin_data: JSON.generate(input_json),
130
- )
131
- end
132
-
133
- # Handle exit code
134
- # Exit 0: Transform success, use STDOUT
135
- # Exit 1: Skip node execution, use fallback_content (IGNORE STDOUT)
136
- # Exit 2: Halt workflow with error (IGNORE STDOUT)
137
- case status.exitstatus
138
- when 0
139
- # Success: use STDOUT as transformed content (strip trailing newline)
140
- TransformerResult.new(
141
- success: true,
142
- content: stdout.chomp, # Remove trailing newline from echo
143
- skip_execution: false,
144
- halt: false,
145
- error_message: nil,
146
- )
147
- when 1
148
- # Skip node execution: use fallback_content unchanged (IGNORE STDOUT)
149
- # For input transformer: skip_execution = true (skip LLM call)
150
- # For output transformer: skip_execution = false (just pass through)
151
- TransformerResult.new(
152
- success: true,
153
- content: fallback_content,
154
- skip_execution: (event == "input"), # Only skip LLM for input transformers
155
- halt: false,
156
- error_message: nil,
157
- )
158
- when 2
159
- # Halt workflow: return error (IGNORE STDOUT)
160
- error_msg = stderr.strip.empty? ? "Transformer halted workflow (exit 2)" : stderr.strip
161
- TransformerResult.new(
162
- success: false,
163
- content: nil,
164
- skip_execution: false,
165
- halt: true,
166
- error_message: error_msg,
167
- )
168
- else
169
- # Unknown exit code: treat as error (halt)
170
- error_msg = "Transformer exited with code #{status.exitstatus}\nSTDERR: #{stderr}"
171
- TransformerResult.new(
172
- success: false,
173
- content: nil,
174
- skip_execution: false,
175
- halt: true,
176
- error_message: error_msg,
177
- )
178
- end
179
- rescue Timeout::Error
180
- # Timeout: halt workflow
181
- TransformerResult.new(
182
- success: false,
183
- content: nil,
184
- skip_execution: false,
185
- halt: true,
186
- error_message: "Transformer command timed out after #{timeout}s",
187
- )
188
- rescue StandardError => e
189
- # Execution error: halt workflow
190
- TransformerResult.new(
191
- success: false,
192
- content: nil,
193
- skip_execution: false,
194
- halt: true,
195
- error_message: "Transformer command failed: #{e.message}",
196
- )
197
- end
198
-
199
- private
200
-
201
- # Build JSON input for transformer command
202
- #
203
- # @param context [NodeContext] Node context
204
- # @param event [String] Event type ("input" or "output")
205
- # @param node_name [Symbol] Node name
206
- # @return [Hash] JSON data to pass on stdin
207
- def build_transformer_input(context, event, node_name)
208
- base = {
209
- event: event,
210
- node: node_name.to_s,
211
- original_prompt: context.original_prompt,
212
- content: context.content,
213
- }
214
-
215
- # Add all_results (convert Result objects to hashes)
216
- if context.all_results && !context.all_results.empty?
217
- base[:all_results] = context.all_results.transform_values do |result|
218
- {
219
- content: result.content,
220
- agent: result.agent,
221
- duration: result.duration,
222
- success: result.success?,
223
- }
224
- end
225
- end
226
-
227
- # Add dependencies for input transformers
228
- if event == "input" && context.dependencies
229
- base[:dependencies] = context.dependencies.map(&:to_s)
230
- end
231
-
232
- base
233
- end
234
-
235
- # Build environment variables for transformer execution
236
- #
237
- # @param node_name [Symbol] Current node name
238
- # @return [Hash] Environment variables
239
- def build_environment(node_name:)
240
- {
241
- "SWARM_SDK_PROJECT_DIR" => Dir.pwd,
242
- "SWARM_SDK_NODE_NAME" => node_name.to_s,
243
- "PATH" => ENV.fetch("PATH", ""),
244
- }
245
- end
246
- end
247
- end
248
- end
249
- end