swarm_sdk 2.7.14 → 3.0.0.alpha2

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 (185) hide show
  1. checksums.yaml +4 -4
  2. data/lib/swarm_sdk/ruby_llm_patches/chat_callbacks_patch.rb +16 -0
  3. data/lib/swarm_sdk/ruby_llm_patches/init.rb +4 -1
  4. data/lib/swarm_sdk/v3/agent.rb +1165 -0
  5. data/lib/swarm_sdk/v3/agent_builder.rb +533 -0
  6. data/lib/swarm_sdk/v3/agent_definition.rb +330 -0
  7. data/lib/swarm_sdk/v3/configuration.rb +490 -0
  8. data/lib/swarm_sdk/v3/debug_log.rb +86 -0
  9. data/lib/swarm_sdk/v3/event_stream.rb +130 -0
  10. data/lib/swarm_sdk/v3/hooks/context.rb +112 -0
  11. data/lib/swarm_sdk/v3/hooks/result.rb +115 -0
  12. data/lib/swarm_sdk/v3/hooks/runner.rb +128 -0
  13. data/lib/swarm_sdk/v3/mcp/connector.rb +183 -0
  14. data/lib/swarm_sdk/v3/mcp/mcp_error.rb +15 -0
  15. data/lib/swarm_sdk/v3/mcp/server_definition.rb +125 -0
  16. data/lib/swarm_sdk/v3/mcp/ssl_http_transport.rb +103 -0
  17. data/lib/swarm_sdk/v3/mcp/stdio_transport.rb +135 -0
  18. data/lib/swarm_sdk/v3/mcp/tool_proxy.rb +53 -0
  19. data/lib/swarm_sdk/v3/memory/adapters/base.rb +297 -0
  20. data/lib/swarm_sdk/v3/memory/adapters/faiss_support.rb +194 -0
  21. data/lib/swarm_sdk/v3/memory/adapters/filesystem_adapter.rb +212 -0
  22. data/lib/swarm_sdk/v3/memory/adapters/sqlite_adapter.rb +507 -0
  23. data/lib/swarm_sdk/v3/memory/adapters/vector_utils.rb +88 -0
  24. data/lib/swarm_sdk/v3/memory/card.rb +206 -0
  25. data/lib/swarm_sdk/v3/memory/cluster.rb +146 -0
  26. data/lib/swarm_sdk/v3/memory/compressor.rb +496 -0
  27. data/lib/swarm_sdk/v3/memory/consolidator.rb +427 -0
  28. data/lib/swarm_sdk/v3/memory/context_builder.rb +339 -0
  29. data/lib/swarm_sdk/v3/memory/edge.rb +105 -0
  30. data/lib/swarm_sdk/v3/memory/embedder.rb +185 -0
  31. data/lib/swarm_sdk/v3/memory/exposure_tracker.rb +104 -0
  32. data/lib/swarm_sdk/v3/memory/ingestion_pipeline.rb +394 -0
  33. data/lib/swarm_sdk/v3/memory/retriever.rb +289 -0
  34. data/lib/swarm_sdk/v3/memory/store.rb +489 -0
  35. data/lib/swarm_sdk/v3/skills/loader.rb +147 -0
  36. data/lib/swarm_sdk/v3/skills/manifest.rb +45 -0
  37. data/lib/swarm_sdk/v3/sub_task_agent.rb +248 -0
  38. data/lib/swarm_sdk/v3/tools/base.rb +80 -0
  39. data/lib/swarm_sdk/v3/tools/bash.rb +174 -0
  40. data/lib/swarm_sdk/v3/tools/clock.rb +32 -0
  41. data/lib/swarm_sdk/v3/tools/document_converters/base.rb +84 -0
  42. data/lib/swarm_sdk/v3/tools/document_converters/docx_converter.rb +120 -0
  43. data/lib/swarm_sdk/v3/tools/document_converters/pdf_converter.rb +111 -0
  44. data/lib/swarm_sdk/v3/tools/document_converters/xlsx_converter.rb +128 -0
  45. data/lib/swarm_sdk/v3/tools/edit.rb +111 -0
  46. data/lib/swarm_sdk/v3/tools/glob.rb +96 -0
  47. data/lib/swarm_sdk/v3/tools/grep.rb +200 -0
  48. data/lib/swarm_sdk/v3/tools/message_teammate.rb +15 -0
  49. data/lib/swarm_sdk/v3/tools/message_user.rb +15 -0
  50. data/lib/swarm_sdk/v3/tools/read.rb +213 -0
  51. data/lib/swarm_sdk/v3/tools/read_tracker.rb +40 -0
  52. data/lib/swarm_sdk/v3/tools/registry.rb +208 -0
  53. data/lib/swarm_sdk/v3/tools/sub_task.rb +183 -0
  54. data/lib/swarm_sdk/v3/tools/think.rb +88 -0
  55. data/lib/swarm_sdk/v3/tools/write.rb +87 -0
  56. data/lib/swarm_sdk/v3.rb +145 -0
  57. metadata +88 -149
  58. data/lib/swarm_sdk/agent/RETRY_LOGIC.md +0 -175
  59. data/lib/swarm_sdk/agent/builder.rb +0 -705
  60. data/lib/swarm_sdk/agent/chat.rb +0 -1438
  61. data/lib/swarm_sdk/agent/chat_helpers/context_tracker.rb +0 -375
  62. data/lib/swarm_sdk/agent/chat_helpers/event_emitter.rb +0 -204
  63. data/lib/swarm_sdk/agent/chat_helpers/hook_integration.rb +0 -480
  64. data/lib/swarm_sdk/agent/chat_helpers/instrumentation.rb +0 -85
  65. data/lib/swarm_sdk/agent/chat_helpers/llm_configuration.rb +0 -290
  66. data/lib/swarm_sdk/agent/chat_helpers/logging_helpers.rb +0 -116
  67. data/lib/swarm_sdk/agent/chat_helpers/serialization.rb +0 -83
  68. data/lib/swarm_sdk/agent/chat_helpers/system_reminder_injector.rb +0 -134
  69. data/lib/swarm_sdk/agent/chat_helpers/system_reminders.rb +0 -79
  70. data/lib/swarm_sdk/agent/chat_helpers/token_tracking.rb +0 -146
  71. data/lib/swarm_sdk/agent/context.rb +0 -115
  72. data/lib/swarm_sdk/agent/context_manager.rb +0 -315
  73. data/lib/swarm_sdk/agent/definition.rb +0 -588
  74. data/lib/swarm_sdk/agent/llm_instrumentation_middleware.rb +0 -226
  75. data/lib/swarm_sdk/agent/system_prompt_builder.rb +0 -173
  76. data/lib/swarm_sdk/agent/tool_registry.rb +0 -189
  77. data/lib/swarm_sdk/agent_registry.rb +0 -146
  78. data/lib/swarm_sdk/builders/base_builder.rb +0 -558
  79. data/lib/swarm_sdk/claude_code_agent_adapter.rb +0 -205
  80. data/lib/swarm_sdk/concerns/cleanupable.rb +0 -42
  81. data/lib/swarm_sdk/concerns/snapshotable.rb +0 -67
  82. data/lib/swarm_sdk/concerns/validatable.rb +0 -55
  83. data/lib/swarm_sdk/config.rb +0 -368
  84. data/lib/swarm_sdk/configuration/parser.rb +0 -397
  85. data/lib/swarm_sdk/configuration/translator.rb +0 -285
  86. data/lib/swarm_sdk/configuration.rb +0 -165
  87. data/lib/swarm_sdk/context_compactor/metrics.rb +0 -147
  88. data/lib/swarm_sdk/context_compactor/token_counter.rb +0 -102
  89. data/lib/swarm_sdk/context_compactor.rb +0 -335
  90. data/lib/swarm_sdk/context_management/builder.rb +0 -128
  91. data/lib/swarm_sdk/context_management/context.rb +0 -328
  92. data/lib/swarm_sdk/custom_tool_registry.rb +0 -226
  93. data/lib/swarm_sdk/defaults.rb +0 -251
  94. data/lib/swarm_sdk/events_to_messages.rb +0 -199
  95. data/lib/swarm_sdk/hooks/adapter.rb +0 -359
  96. data/lib/swarm_sdk/hooks/context.rb +0 -197
  97. data/lib/swarm_sdk/hooks/definition.rb +0 -80
  98. data/lib/swarm_sdk/hooks/error.rb +0 -29
  99. data/lib/swarm_sdk/hooks/executor.rb +0 -146
  100. data/lib/swarm_sdk/hooks/registry.rb +0 -147
  101. data/lib/swarm_sdk/hooks/result.rb +0 -150
  102. data/lib/swarm_sdk/hooks/shell_executor.rb +0 -256
  103. data/lib/swarm_sdk/hooks/tool_call.rb +0 -35
  104. data/lib/swarm_sdk/hooks/tool_result.rb +0 -62
  105. data/lib/swarm_sdk/log_collector.rb +0 -227
  106. data/lib/swarm_sdk/log_stream.rb +0 -127
  107. data/lib/swarm_sdk/markdown_parser.rb +0 -75
  108. data/lib/swarm_sdk/model_aliases.json +0 -8
  109. data/lib/swarm_sdk/models.json +0 -44002
  110. data/lib/swarm_sdk/models.rb +0 -161
  111. data/lib/swarm_sdk/node_context.rb +0 -245
  112. data/lib/swarm_sdk/observer/builder.rb +0 -81
  113. data/lib/swarm_sdk/observer/config.rb +0 -45
  114. data/lib/swarm_sdk/observer/manager.rb +0 -248
  115. data/lib/swarm_sdk/patterns/agent_observer.rb +0 -160
  116. data/lib/swarm_sdk/permissions/config.rb +0 -239
  117. data/lib/swarm_sdk/permissions/error_formatter.rb +0 -121
  118. data/lib/swarm_sdk/permissions/path_matcher.rb +0 -35
  119. data/lib/swarm_sdk/permissions/validator.rb +0 -173
  120. data/lib/swarm_sdk/permissions_builder.rb +0 -122
  121. data/lib/swarm_sdk/plugin.rb +0 -309
  122. data/lib/swarm_sdk/plugin_registry.rb +0 -101
  123. data/lib/swarm_sdk/proc_helpers.rb +0 -53
  124. data/lib/swarm_sdk/prompts/base_system_prompt.md.erb +0 -119
  125. data/lib/swarm_sdk/restore_result.rb +0 -65
  126. data/lib/swarm_sdk/result.rb +0 -241
  127. data/lib/swarm_sdk/snapshot.rb +0 -156
  128. data/lib/swarm_sdk/snapshot_from_events.rb +0 -397
  129. data/lib/swarm_sdk/state_restorer.rb +0 -476
  130. data/lib/swarm_sdk/state_snapshot.rb +0 -334
  131. data/lib/swarm_sdk/swarm/agent_initializer.rb +0 -648
  132. data/lib/swarm_sdk/swarm/all_agents_builder.rb +0 -204
  133. data/lib/swarm_sdk/swarm/builder.rb +0 -256
  134. data/lib/swarm_sdk/swarm/executor.rb +0 -446
  135. data/lib/swarm_sdk/swarm/hook_triggers.rb +0 -162
  136. data/lib/swarm_sdk/swarm/lazy_delegate_chat.rb +0 -372
  137. data/lib/swarm_sdk/swarm/logging_callbacks.rb +0 -361
  138. data/lib/swarm_sdk/swarm/mcp_configurator.rb +0 -290
  139. data/lib/swarm_sdk/swarm/swarm_registry_builder.rb +0 -67
  140. data/lib/swarm_sdk/swarm/tool_configurator.rb +0 -392
  141. data/lib/swarm_sdk/swarm.rb +0 -973
  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/base.rb +0 -63
  145. data/lib/swarm_sdk/tools/bash.rb +0 -280
  146. data/lib/swarm_sdk/tools/clock.rb +0 -46
  147. data/lib/swarm_sdk/tools/delegate.rb +0 -389
  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 -167
  158. data/lib/swarm_sdk/tools/image_formats/tiff_builder.rb +0 -65
  159. data/lib/swarm_sdk/tools/mcp_tool_stub.rb +0 -198
  160. data/lib/swarm_sdk/tools/multi_edit.rb +0 -236
  161. data/lib/swarm_sdk/tools/path_resolver.rb +0 -92
  162. data/lib/swarm_sdk/tools/read.rb +0 -261
  163. data/lib/swarm_sdk/tools/registry.rb +0 -205
  164. data/lib/swarm_sdk/tools/scratchpad/scratchpad_list.rb +0 -117
  165. data/lib/swarm_sdk/tools/scratchpad/scratchpad_read.rb +0 -97
  166. data/lib/swarm_sdk/tools/scratchpad/scratchpad_write.rb +0 -108
  167. data/lib/swarm_sdk/tools/stores/read_tracker.rb +0 -96
  168. data/lib/swarm_sdk/tools/stores/scratchpad_storage.rb +0 -273
  169. data/lib/swarm_sdk/tools/stores/storage.rb +0 -142
  170. data/lib/swarm_sdk/tools/stores/todo_manager.rb +0 -65
  171. data/lib/swarm_sdk/tools/think.rb +0 -100
  172. data/lib/swarm_sdk/tools/todo_write.rb +0 -237
  173. data/lib/swarm_sdk/tools/web_fetch.rb +0 -264
  174. data/lib/swarm_sdk/tools/write.rb +0 -112
  175. data/lib/swarm_sdk/transcript_builder.rb +0 -278
  176. data/lib/swarm_sdk/utils.rb +0 -68
  177. data/lib/swarm_sdk/validation_result.rb +0 -33
  178. data/lib/swarm_sdk/version.rb +0 -5
  179. data/lib/swarm_sdk/workflow/agent_config.rb +0 -95
  180. data/lib/swarm_sdk/workflow/builder.rb +0 -227
  181. data/lib/swarm_sdk/workflow/executor.rb +0 -497
  182. data/lib/swarm_sdk/workflow/node_builder.rb +0 -593
  183. data/lib/swarm_sdk/workflow/transformer_executor.rb +0 -250
  184. data/lib/swarm_sdk/workflow.rb +0 -589
  185. data/lib/swarm_sdk.rb +0 -721
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: swarm_sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.7.14
4
+ version: 3.0.0.alpha2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paulo Arruda
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 1980-01-02 00:00:00.000000000 Z
10
+ date: 1980-01-01 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: async
@@ -24,61 +24,75 @@ dependencies:
24
24
  - !ruby/object:Gem::Version
25
25
  version: '2.0'
26
26
  - !ruby/object:Gem::Dependency
27
- name: async-http-faraday
27
+ name: faiss
28
28
  requirement: !ruby/object:Gem::Requirement
29
29
  requirements:
30
30
  - - "~>"
31
31
  - !ruby/object:Gem::Version
32
- version: '0.22'
32
+ version: 0.5.2
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: '0.22'
39
+ version: 0.5.2
40
40
  - !ruby/object:Gem::Dependency
41
- name: faraday-follow_redirects
41
+ name: informers
42
42
  requirement: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: '0.4'
46
+ version: 1.2.1
47
47
  type: :runtime
48
48
  prerelease: false
49
49
  version_requirements: !ruby/object:Gem::Requirement
50
50
  requirements:
51
51
  - - "~>"
52
52
  - !ruby/object:Gem::Version
53
- version: '0.4'
53
+ version: 1.2.1
54
54
  - !ruby/object:Gem::Dependency
55
- name: ruby_llm
55
+ name: mcp
56
56
  requirement: !ruby/object:Gem::Requirement
57
57
  requirements:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
- version: '1.11'
60
+ version: 0.6.0
61
61
  type: :runtime
62
62
  prerelease: false
63
63
  version_requirements: !ruby/object:Gem::Requirement
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: '1.11'
67
+ version: 0.6.0
68
68
  - !ruby/object:Gem::Dependency
69
- name: ruby_llm_swarm-mcp
69
+ name: rice
70
70
  requirement: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: 0.8.2
74
+ version: 4.8.0
75
75
  type: :runtime
76
76
  prerelease: false
77
77
  version_requirements: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
- version: 0.8.2
81
+ version: 4.8.0
82
+ - !ruby/object:Gem::Dependency
83
+ name: ruby_llm
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '1.11'
89
+ type: :runtime
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '1.11'
82
96
  - !ruby/object:Gem::Dependency
83
97
  name: zeitwerk
84
98
  requirement: !ruby/object:Gem::Requirement
@@ -94,11 +108,11 @@ dependencies:
94
108
  - !ruby/object:Gem::Version
95
109
  version: '2.6'
96
110
  description: |
97
- SwarmSDK is a complete reimagining of Claude Swarm that runs all AI agents in a single process
98
- using RubyLLM for LLM interactions. Define collaborative AI agents in simple Markdown files with
99
- YAML frontmatter, and orchestrate them without the overhead of multiple processes or MCP
100
- inter-process communication. Perfect for building lightweight, efficient AI agent teams with
101
- specialized roles and capabilities.
111
+ SwarmSDK V3 is the next-generation agent primitive with built-in memory.
112
+ The core insight: the LLM's context window is a staging area, not the whole brain.
113
+ Older turns get consolidated into memory cards, and retrieval brings relevant
114
+ memory back into working context on demand. Single-process, lightweight, and
115
+ efficient AI agent development with RubyLLM.
102
116
  email:
103
117
  - parrudaj@gmail.com
104
118
  executables: []
@@ -106,76 +120,6 @@ extensions: []
106
120
  extra_rdoc_files: []
107
121
  files:
108
122
  - LICENSE
109
- - lib/swarm_sdk.rb
110
- - lib/swarm_sdk/agent/RETRY_LOGIC.md
111
- - lib/swarm_sdk/agent/builder.rb
112
- - lib/swarm_sdk/agent/chat.rb
113
- - lib/swarm_sdk/agent/chat_helpers/context_tracker.rb
114
- - lib/swarm_sdk/agent/chat_helpers/event_emitter.rb
115
- - lib/swarm_sdk/agent/chat_helpers/hook_integration.rb
116
- - lib/swarm_sdk/agent/chat_helpers/instrumentation.rb
117
- - lib/swarm_sdk/agent/chat_helpers/llm_configuration.rb
118
- - lib/swarm_sdk/agent/chat_helpers/logging_helpers.rb
119
- - lib/swarm_sdk/agent/chat_helpers/serialization.rb
120
- - lib/swarm_sdk/agent/chat_helpers/system_reminder_injector.rb
121
- - lib/swarm_sdk/agent/chat_helpers/system_reminders.rb
122
- - lib/swarm_sdk/agent/chat_helpers/token_tracking.rb
123
- - lib/swarm_sdk/agent/context.rb
124
- - lib/swarm_sdk/agent/context_manager.rb
125
- - lib/swarm_sdk/agent/definition.rb
126
- - lib/swarm_sdk/agent/llm_instrumentation_middleware.rb
127
- - lib/swarm_sdk/agent/system_prompt_builder.rb
128
- - lib/swarm_sdk/agent/tool_registry.rb
129
- - lib/swarm_sdk/agent_registry.rb
130
- - lib/swarm_sdk/builders/base_builder.rb
131
- - lib/swarm_sdk/claude_code_agent_adapter.rb
132
- - lib/swarm_sdk/concerns/cleanupable.rb
133
- - lib/swarm_sdk/concerns/snapshotable.rb
134
- - lib/swarm_sdk/concerns/validatable.rb
135
- - lib/swarm_sdk/config.rb
136
- - lib/swarm_sdk/configuration.rb
137
- - lib/swarm_sdk/configuration/parser.rb
138
- - lib/swarm_sdk/configuration/translator.rb
139
- - lib/swarm_sdk/context_compactor.rb
140
- - lib/swarm_sdk/context_compactor/metrics.rb
141
- - lib/swarm_sdk/context_compactor/token_counter.rb
142
- - lib/swarm_sdk/context_management/builder.rb
143
- - lib/swarm_sdk/context_management/context.rb
144
- - lib/swarm_sdk/custom_tool_registry.rb
145
- - lib/swarm_sdk/defaults.rb
146
- - lib/swarm_sdk/events_to_messages.rb
147
- - lib/swarm_sdk/hooks/adapter.rb
148
- - lib/swarm_sdk/hooks/context.rb
149
- - lib/swarm_sdk/hooks/definition.rb
150
- - lib/swarm_sdk/hooks/error.rb
151
- - lib/swarm_sdk/hooks/executor.rb
152
- - lib/swarm_sdk/hooks/registry.rb
153
- - lib/swarm_sdk/hooks/result.rb
154
- - lib/swarm_sdk/hooks/shell_executor.rb
155
- - lib/swarm_sdk/hooks/tool_call.rb
156
- - lib/swarm_sdk/hooks/tool_result.rb
157
- - lib/swarm_sdk/log_collector.rb
158
- - lib/swarm_sdk/log_stream.rb
159
- - lib/swarm_sdk/markdown_parser.rb
160
- - lib/swarm_sdk/model_aliases.json
161
- - lib/swarm_sdk/models.json
162
- - lib/swarm_sdk/models.rb
163
- - lib/swarm_sdk/node_context.rb
164
- - lib/swarm_sdk/observer/builder.rb
165
- - lib/swarm_sdk/observer/config.rb
166
- - lib/swarm_sdk/observer/manager.rb
167
- - lib/swarm_sdk/patterns/agent_observer.rb
168
- - lib/swarm_sdk/permissions/config.rb
169
- - lib/swarm_sdk/permissions/error_formatter.rb
170
- - lib/swarm_sdk/permissions/path_matcher.rb
171
- - lib/swarm_sdk/permissions/validator.rb
172
- - lib/swarm_sdk/permissions_builder.rb
173
- - lib/swarm_sdk/plugin.rb
174
- - lib/swarm_sdk/plugin_registry.rb
175
- - lib/swarm_sdk/proc_helpers.rb
176
- - lib/swarm_sdk/prompts/base_system_prompt.md.erb
177
- - lib/swarm_sdk/restore_result.rb
178
- - lib/swarm_sdk/result.rb
179
123
  - lib/swarm_sdk/ruby_llm_patches/chat_callbacks_patch.rb
180
124
  - lib/swarm_sdk/ruby_llm_patches/configuration_patch.rb
181
125
  - lib/swarm_sdk/ruby_llm_patches/connection_patch.rb
@@ -185,70 +129,65 @@ files:
185
129
  - lib/swarm_sdk/ruby_llm_patches/message_management_patch.rb
186
130
  - lib/swarm_sdk/ruby_llm_patches/responses_api_patch.rb
187
131
  - lib/swarm_sdk/ruby_llm_patches/tool_concurrency_patch.rb
188
- - lib/swarm_sdk/snapshot.rb
189
- - lib/swarm_sdk/snapshot_from_events.rb
190
- - lib/swarm_sdk/state_restorer.rb
191
- - lib/swarm_sdk/state_snapshot.rb
192
- - lib/swarm_sdk/swarm.rb
193
- - lib/swarm_sdk/swarm/agent_initializer.rb
194
- - lib/swarm_sdk/swarm/all_agents_builder.rb
195
- - lib/swarm_sdk/swarm/builder.rb
196
- - lib/swarm_sdk/swarm/executor.rb
197
- - lib/swarm_sdk/swarm/hook_triggers.rb
198
- - lib/swarm_sdk/swarm/lazy_delegate_chat.rb
199
- - lib/swarm_sdk/swarm/logging_callbacks.rb
200
- - lib/swarm_sdk/swarm/mcp_configurator.rb
201
- - lib/swarm_sdk/swarm/swarm_registry_builder.rb
202
- - lib/swarm_sdk/swarm/tool_configurator.rb
203
- - lib/swarm_sdk/swarm_loader.rb
204
- - lib/swarm_sdk/swarm_registry.rb
205
- - lib/swarm_sdk/tools/base.rb
206
- - lib/swarm_sdk/tools/bash.rb
207
- - lib/swarm_sdk/tools/clock.rb
208
- - lib/swarm_sdk/tools/delegate.rb
209
- - lib/swarm_sdk/tools/document_converters/base_converter.rb
210
- - lib/swarm_sdk/tools/document_converters/docx_converter.rb
211
- - lib/swarm_sdk/tools/document_converters/html_converter.rb
212
- - lib/swarm_sdk/tools/document_converters/pdf_converter.rb
213
- - lib/swarm_sdk/tools/document_converters/xlsx_converter.rb
214
- - lib/swarm_sdk/tools/edit.rb
215
- - lib/swarm_sdk/tools/glob.rb
216
- - lib/swarm_sdk/tools/grep.rb
217
- - lib/swarm_sdk/tools/image_extractors/docx_image_extractor.rb
218
- - lib/swarm_sdk/tools/image_extractors/pdf_image_extractor.rb
219
- - lib/swarm_sdk/tools/image_formats/tiff_builder.rb
220
- - lib/swarm_sdk/tools/mcp_tool_stub.rb
221
- - lib/swarm_sdk/tools/multi_edit.rb
222
- - lib/swarm_sdk/tools/path_resolver.rb
223
- - lib/swarm_sdk/tools/read.rb
224
- - lib/swarm_sdk/tools/registry.rb
225
- - lib/swarm_sdk/tools/scratchpad/scratchpad_list.rb
226
- - lib/swarm_sdk/tools/scratchpad/scratchpad_read.rb
227
- - lib/swarm_sdk/tools/scratchpad/scratchpad_write.rb
228
- - lib/swarm_sdk/tools/stores/read_tracker.rb
229
- - lib/swarm_sdk/tools/stores/scratchpad_storage.rb
230
- - lib/swarm_sdk/tools/stores/storage.rb
231
- - lib/swarm_sdk/tools/stores/todo_manager.rb
232
- - lib/swarm_sdk/tools/think.rb
233
- - lib/swarm_sdk/tools/todo_write.rb
234
- - lib/swarm_sdk/tools/web_fetch.rb
235
- - lib/swarm_sdk/tools/write.rb
236
- - lib/swarm_sdk/transcript_builder.rb
237
- - lib/swarm_sdk/utils.rb
238
- - lib/swarm_sdk/validation_result.rb
239
- - lib/swarm_sdk/version.rb
240
- - lib/swarm_sdk/workflow.rb
241
- - lib/swarm_sdk/workflow/agent_config.rb
242
- - lib/swarm_sdk/workflow/builder.rb
243
- - lib/swarm_sdk/workflow/executor.rb
244
- - lib/swarm_sdk/workflow/node_builder.rb
245
- - lib/swarm_sdk/workflow/transformer_executor.rb
132
+ - lib/swarm_sdk/v3.rb
133
+ - lib/swarm_sdk/v3/agent.rb
134
+ - lib/swarm_sdk/v3/agent_builder.rb
135
+ - lib/swarm_sdk/v3/agent_definition.rb
136
+ - lib/swarm_sdk/v3/configuration.rb
137
+ - lib/swarm_sdk/v3/debug_log.rb
138
+ - lib/swarm_sdk/v3/event_stream.rb
139
+ - lib/swarm_sdk/v3/hooks/context.rb
140
+ - lib/swarm_sdk/v3/hooks/result.rb
141
+ - lib/swarm_sdk/v3/hooks/runner.rb
142
+ - lib/swarm_sdk/v3/mcp/connector.rb
143
+ - lib/swarm_sdk/v3/mcp/mcp_error.rb
144
+ - lib/swarm_sdk/v3/mcp/server_definition.rb
145
+ - lib/swarm_sdk/v3/mcp/ssl_http_transport.rb
146
+ - lib/swarm_sdk/v3/mcp/stdio_transport.rb
147
+ - lib/swarm_sdk/v3/mcp/tool_proxy.rb
148
+ - lib/swarm_sdk/v3/memory/adapters/base.rb
149
+ - lib/swarm_sdk/v3/memory/adapters/faiss_support.rb
150
+ - lib/swarm_sdk/v3/memory/adapters/filesystem_adapter.rb
151
+ - lib/swarm_sdk/v3/memory/adapters/sqlite_adapter.rb
152
+ - lib/swarm_sdk/v3/memory/adapters/vector_utils.rb
153
+ - lib/swarm_sdk/v3/memory/card.rb
154
+ - lib/swarm_sdk/v3/memory/cluster.rb
155
+ - lib/swarm_sdk/v3/memory/compressor.rb
156
+ - lib/swarm_sdk/v3/memory/consolidator.rb
157
+ - lib/swarm_sdk/v3/memory/context_builder.rb
158
+ - lib/swarm_sdk/v3/memory/edge.rb
159
+ - lib/swarm_sdk/v3/memory/embedder.rb
160
+ - lib/swarm_sdk/v3/memory/exposure_tracker.rb
161
+ - lib/swarm_sdk/v3/memory/ingestion_pipeline.rb
162
+ - lib/swarm_sdk/v3/memory/retriever.rb
163
+ - lib/swarm_sdk/v3/memory/store.rb
164
+ - lib/swarm_sdk/v3/skills/loader.rb
165
+ - lib/swarm_sdk/v3/skills/manifest.rb
166
+ - lib/swarm_sdk/v3/sub_task_agent.rb
167
+ - lib/swarm_sdk/v3/tools/base.rb
168
+ - lib/swarm_sdk/v3/tools/bash.rb
169
+ - lib/swarm_sdk/v3/tools/clock.rb
170
+ - lib/swarm_sdk/v3/tools/document_converters/base.rb
171
+ - lib/swarm_sdk/v3/tools/document_converters/docx_converter.rb
172
+ - lib/swarm_sdk/v3/tools/document_converters/pdf_converter.rb
173
+ - lib/swarm_sdk/v3/tools/document_converters/xlsx_converter.rb
174
+ - lib/swarm_sdk/v3/tools/edit.rb
175
+ - lib/swarm_sdk/v3/tools/glob.rb
176
+ - lib/swarm_sdk/v3/tools/grep.rb
177
+ - lib/swarm_sdk/v3/tools/message_teammate.rb
178
+ - lib/swarm_sdk/v3/tools/message_user.rb
179
+ - lib/swarm_sdk/v3/tools/read.rb
180
+ - lib/swarm_sdk/v3/tools/read_tracker.rb
181
+ - lib/swarm_sdk/v3/tools/registry.rb
182
+ - lib/swarm_sdk/v3/tools/sub_task.rb
183
+ - lib/swarm_sdk/v3/tools/think.rb
184
+ - lib/swarm_sdk/v3/tools/write.rb
246
185
  homepage: https://github.com/parruda/swarm
247
186
  licenses:
248
187
  - MIT
249
188
  metadata:
250
189
  source_code_uri: https://github.com/parruda/swarm
251
- changelog_uri: https://github.com/parruda/swarm/blob/main/docs/v2/CHANGELOG.swarm_sdk.md
190
+ changelog_uri: https://github.com/parruda/swarm/blob/main/docs/v3/CHANGELOG.md
252
191
  rdoc_options: []
253
192
  require_paths:
254
193
  - lib
@@ -265,5 +204,5 @@ required_rubygems_version: !ruby/object:Gem::Requirement
265
204
  requirements: []
266
205
  rubygems_version: 3.6.9
267
206
  specification_version: 4
268
- summary: Lightweight multi-agent AI orchestration using RubyLLM
207
+ summary: Next-generation AI agent primitive with built-in memory
269
208
  test_files: []
@@ -1,175 +0,0 @@
1
- # LLM Call Retry Logic
2
-
3
- ## Feature
4
-
5
- SwarmSDK automatically retries failed LLM API calls to handle transient failures.
6
-
7
- ## Configuration
8
-
9
- **Defaults:**
10
- - Max retries: 10
11
- - Delay: 10 seconds (fixed, no exponential backoff)
12
- - Retries ALL StandardError exceptions
13
-
14
- ## Implementation
15
-
16
- **Location:** `lib/swarm_sdk/agent/chat.rb`
17
-
18
- The retry logic handles two categories of errors:
19
-
20
- 1. **Transient failures** - Network issues, timeouts, rate limits
21
- 2. **Orphan tool call errors** - Special recovery for malformed conversation history
22
-
23
- ## Error Types Handled
24
-
25
- - `Faraday::ConnectionFailed` - Network connection issues
26
- - `Faraday::TimeoutError` - Request timeouts
27
- - `RubyLLM::APIError` - API errors (500s, etc.)
28
- - `RubyLLM::RateLimitError` - Rate limit errors
29
- - `RubyLLM::BadRequestError` - With special handling for orphan tool calls
30
- - Any other `StandardError` - Catches proxy issues, DNS failures, etc.
31
-
32
- ## Orphan Tool Call Recovery
33
-
34
- **What are orphan tool calls?**
35
-
36
- Orphan tool calls occur when an assistant message contains `tool_use` blocks but the conversation lacks corresponding `tool_result` messages. This can happen when:
37
- - Tool execution is interrupted mid-stream
38
- - Session state restoration is incomplete
39
- - Network issues cause partial message delivery
40
-
41
- **How recovery works:**
42
-
43
- When a `RubyLLM::BadRequestError` (400) is received with tool-related error messages:
44
-
45
- 1. Clears stale ephemeral content from the failed call
46
- 2. The system scans message history for orphan tool calls
47
- 3. For each assistant message with `tool_calls`:
48
- - Checks if all `tool_call_id`s have matching `tool_result` messages
49
- - Any missing results indicate orphan tool calls
50
- 4. Orphan tool calls are pruned:
51
- - If assistant message has content, keeps content but removes `tool_calls`
52
- - If assistant message is empty, removes the entire message
53
- 5. **System reminder is added** to inform the agent:
54
- - Lists which tool calls were interrupted
55
- - Tells agent they were never executed
56
- - Suggests re-running them if still needed
57
- 6. Retries the LLM call immediately (doesn't count as a retry)
58
- 7. If no orphans found, falls through to normal retry logic
59
-
60
- **Tool-related error patterns detected:**
61
- - `tool_use`, `tool_result`, `tool_use_id`
62
- - `corresponding tool_result`
63
- - `must immediately follow`
64
-
65
- **Logging:**
66
-
67
- When orphan pruning occurs, emits `orphan_tool_calls_pruned` event:
68
- ```json
69
- {
70
- "type": "orphan_tool_calls_pruned",
71
- "agent": "agent_name",
72
- "pruned_count": 1,
73
- "original_error": "tool_use block must have corresponding tool_result"
74
- }
75
- ```
76
-
77
- **System Reminder Format:**
78
-
79
- The agent receives a system reminder about the pruned tool calls:
80
- ```
81
- <system-reminder>
82
- The following tool calls were interrupted and removed from conversation history:
83
-
84
- - Read(file_path: "/important/file.rb")
85
- - Write(file_path: "/output.txt", content: "Hello...")
86
-
87
- These tools were never executed. If you still need their results, please run them again.
88
- </system-reminder>
89
- ```
90
-
91
- ## Usage
92
-
93
- **Automatic - No Configuration Needed:**
94
-
95
- ```ruby
96
- swarm = SwarmSDK.build do
97
- agent :my_agent do
98
- model "gpt-4"
99
- base_url "http://proxy.example.com/v1" # Can fail
100
- end
101
- end
102
-
103
- # Automatically retries on failure and recovers from orphan tool calls
104
- response = swarm.execute("Do something")
105
- ```
106
-
107
- ## Logging
108
-
109
- **On Retry:**
110
- ```
111
- WARN: SwarmSDK: LLM call failed (attempt 1/10): Faraday::ConnectionFailed: Connection failed
112
- WARN: SwarmSDK: Retrying in 10 seconds...
113
- ```
114
-
115
- **On Max Retries:**
116
- ```
117
- ERROR: SwarmSDK: LLM call failed after 10 attempts: Faraday::ConnectionFailed: Connection failed
118
- ```
119
-
120
- ## Behavior
121
-
122
- **Scenario 1: Transient failure**
123
- ```
124
- Attempt 1: ConnectionFailed
125
- → Wait 10s
126
- Attempt 2: ConnectionFailed
127
- → Wait 10s
128
- Attempt 3: Success
129
- → Returns response
130
- ```
131
-
132
- **Scenario 2: Persistent failure**
133
- ```
134
- Attempt 1-10: All fail
135
- → Raises original error after attempt 10
136
- ```
137
-
138
- **Scenario 3: Immediate success**
139
- ```
140
- Attempt 1: Success
141
- → Returns response (no retry needed)
142
- ```
143
-
144
- **Scenario 4: Orphan tool call recovery**
145
- ```
146
- Attempt 1: BadRequestError (tool_use without tool_result)
147
- → Detect orphan tool calls
148
- → Prune orphan tool calls from message history
149
- → Retry immediately (doesn't count as retry)
150
- Attempt 1: Success
151
- → Returns response
152
- ```
153
-
154
- ## Why No Exponential Backoff
155
-
156
- **Design Decision:** Fixed 10-second delay
157
-
158
- **Rationale:**
159
- - Simpler implementation
160
- - Predictable retry duration (max 100 seconds)
161
- - Transient proxy/network issues typically resolve within seconds
162
- - Rate limit errors are caught by provider-specific handling
163
- - User explicitly requested fixed delays
164
-
165
- **Total max time:** 10 retries × 10 seconds = 100 seconds maximum
166
-
167
- ## Future Enhancements (If Needed)
168
-
169
- - [ ] Configurable retry count per agent
170
- - [ ] Configurable delay per agent
171
- - [ ] Selective retry based on error type
172
- - [ ] Exponential backoff option
173
- - [ ] Circuit breaker pattern
174
-
175
- **Current State:** Production-ready with sensible defaults for proxy/network resilience and automatic orphan tool call recovery.