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,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