claude_swarm 1.0.5 → 1.0.7

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 (286) hide show
  1. checksums.yaml +4 -4
  2. data/.ruby-version +1 -1
  3. data/CHANGELOG.md +23 -0
  4. data/README.md +336 -1037
  5. data/docs/V1_TO_V2_MIGRATION_GUIDE.md +1120 -0
  6. data/docs/v1/README.md +1195 -0
  7. data/docs/v2/CHANGELOG.swarm_cli.md +32 -0
  8. data/docs/v2/CHANGELOG.swarm_memory.md +20 -0
  9. data/docs/v2/CHANGELOG.swarm_sdk.md +333 -9
  10. data/docs/v2/README.md +88 -28
  11. data/docs/v2/guides/complete-tutorial.md +135 -39
  12. data/docs/v2/guides/composable-swarms.md +1178 -0
  13. data/docs/v2/guides/getting-started.md +48 -7
  14. data/docs/v2/guides/memory-defrag-guide.md +811 -0
  15. data/docs/v2/guides/rails-integration.md +6 -6
  16. data/docs/v2/guides/snapshots.md +1498 -0
  17. data/docs/v2/reference/architecture-flow.md +409 -0
  18. data/docs/v2/reference/event_payload_structures.md +708 -0
  19. data/docs/v2/reference/execution-flow.md +600 -0
  20. data/docs/v2/reference/ruby-dsl.md +368 -22
  21. data/docs/v2/reference/swarm_memory_technical_details.md +2 -2
  22. data/docs/v2/reference/yaml.md +314 -63
  23. data/examples/snapshot_demo.rb +119 -0
  24. data/examples/v2/dsl/01_basic.rb +0 -2
  25. data/examples/v2/dsl/02_core_parameters.rb +0 -2
  26. data/examples/v2/dsl/03_capabilities.rb +0 -2
  27. data/examples/v2/dsl/04_llm_parameters.rb +0 -2
  28. data/examples/v2/dsl/05_advanced_flags.rb +0 -3
  29. data/examples/v2/dsl/06_permissions.rb +0 -4
  30. data/examples/v2/dsl/07_mcp_server.rb +0 -2
  31. data/examples/v2/dsl/08_swarm_hooks.rb +0 -2
  32. data/examples/v2/dsl/09_agent_hooks.rb +0 -2
  33. data/examples/v2/dsl/10_all_agents_hooks.rb +0 -3
  34. data/examples/v2/dsl/11_delegation.rb +0 -2
  35. data/examples/v2/dsl/12_complete_integration.rb +2 -6
  36. data/examples/v2/node_context_demo.rb +1 -1
  37. data/examples/v2/node_workflow.rb +2 -4
  38. data/examples/v2/plan_and_execute.rb +157 -0
  39. data/examples/v2/swarm_with_hooks.yml +1 -1
  40. data/lib/claude_swarm/configuration.rb +28 -4
  41. data/lib/claude_swarm/mcp_generator.rb +4 -10
  42. data/lib/claude_swarm/version.rb +1 -1
  43. data/lib/swarm_cli/commands/mcp_serve.rb +2 -2
  44. data/lib/swarm_cli/config_loader.rb +3 -3
  45. data/lib/swarm_cli/formatters/human_formatter.rb +103 -0
  46. data/lib/swarm_cli/interactive_repl.rb +9 -3
  47. data/lib/swarm_cli/version.rb +1 -1
  48. data/lib/swarm_memory/adapters/base.rb +4 -4
  49. data/lib/swarm_memory/core/storage_read_tracker.rb +51 -14
  50. data/lib/swarm_memory/integration/cli_registration.rb +3 -2
  51. data/lib/swarm_memory/integration/sdk_plugin.rb +11 -5
  52. data/lib/swarm_memory/tools/memory_edit.rb +2 -2
  53. data/lib/swarm_memory/tools/memory_multi_edit.rb +2 -2
  54. data/lib/swarm_memory/tools/memory_read.rb +3 -3
  55. data/lib/swarm_memory/version.rb +1 -1
  56. data/lib/swarm_memory.rb +5 -0
  57. data/lib/swarm_sdk/agent/builder.rb +33 -0
  58. data/lib/swarm_sdk/agent/chat/context_tracker.rb +33 -0
  59. data/lib/swarm_sdk/agent/chat/hook_integration.rb +49 -3
  60. data/lib/swarm_sdk/agent/chat/system_reminder_injector.rb +11 -27
  61. data/lib/swarm_sdk/agent/chat.rb +200 -51
  62. data/lib/swarm_sdk/agent/context.rb +6 -2
  63. data/lib/swarm_sdk/agent/context_manager.rb +6 -0
  64. data/lib/swarm_sdk/agent/definition.rb +15 -22
  65. data/lib/swarm_sdk/agent/llm_instrumentation_middleware.rb +180 -0
  66. data/lib/swarm_sdk/configuration.rb +420 -103
  67. data/lib/swarm_sdk/events_to_messages.rb +181 -0
  68. data/lib/swarm_sdk/log_collector.rb +31 -5
  69. data/lib/swarm_sdk/log_stream.rb +37 -8
  70. data/lib/swarm_sdk/model_aliases.json +4 -1
  71. data/lib/swarm_sdk/node/agent_config.rb +33 -8
  72. data/lib/swarm_sdk/node/builder.rb +39 -18
  73. data/lib/swarm_sdk/node_orchestrator.rb +293 -26
  74. data/lib/swarm_sdk/proc_helpers.rb +53 -0
  75. data/lib/swarm_sdk/prompts/base_system_prompt.md.erb +0 -126
  76. data/lib/swarm_sdk/providers/openai_with_responses.rb +22 -15
  77. data/lib/swarm_sdk/restore_result.rb +65 -0
  78. data/lib/swarm_sdk/snapshot.rb +156 -0
  79. data/lib/swarm_sdk/snapshot_from_events.rb +386 -0
  80. data/lib/swarm_sdk/state_restorer.rb +491 -0
  81. data/lib/swarm_sdk/state_snapshot.rb +369 -0
  82. data/lib/swarm_sdk/swarm/agent_initializer.rb +360 -55
  83. data/lib/swarm_sdk/swarm/all_agents_builder.rb +28 -1
  84. data/lib/swarm_sdk/swarm/builder.rb +208 -12
  85. data/lib/swarm_sdk/swarm/swarm_registry_builder.rb +67 -0
  86. data/lib/swarm_sdk/swarm/tool_configurator.rb +46 -11
  87. data/lib/swarm_sdk/swarm.rb +368 -90
  88. data/lib/swarm_sdk/swarm_loader.rb +145 -0
  89. data/lib/swarm_sdk/swarm_registry.rb +136 -0
  90. data/lib/swarm_sdk/tools/delegate.rb +92 -7
  91. data/lib/swarm_sdk/tools/read.rb +17 -5
  92. data/lib/swarm_sdk/tools/scratchpad/scratchpad_list.rb +23 -2
  93. data/lib/swarm_sdk/tools/scratchpad/scratchpad_read.rb +23 -2
  94. data/lib/swarm_sdk/tools/scratchpad/scratchpad_write.rb +21 -4
  95. data/lib/swarm_sdk/tools/stores/read_tracker.rb +47 -12
  96. data/lib/swarm_sdk/tools/stores/scratchpad_storage.rb +45 -0
  97. data/lib/swarm_sdk/tools/stores/storage.rb +4 -4
  98. data/lib/swarm_sdk/tools/think.rb +4 -1
  99. data/lib/swarm_sdk/tools/todo_write.rb +20 -8
  100. data/lib/swarm_sdk/utils.rb +18 -0
  101. data/lib/swarm_sdk/validation_result.rb +33 -0
  102. data/lib/swarm_sdk/version.rb +1 -1
  103. data/lib/swarm_sdk.rb +362 -21
  104. data/swarm_cli.gemspec +1 -1
  105. data/swarm_memory.gemspec +2 -2
  106. data/swarm_sdk.gemspec +2 -2
  107. metadata +26 -182
  108. data/examples/learning-assistant/assistant.md +0 -7
  109. data/examples/learning-assistant/example-memories/concept-example.md +0 -90
  110. data/examples/learning-assistant/example-memories/experience-example.md +0 -66
  111. data/examples/learning-assistant/example-memories/fact-example.md +0 -76
  112. data/examples/learning-assistant/example-memories/memory-index.md +0 -78
  113. data/examples/learning-assistant/example-memories/skill-example.md +0 -168
  114. data/examples/learning-assistant/learning_assistant.rb +0 -34
  115. data/examples/learning-assistant/learning_assistant.yml +0 -20
  116. data/llm.v2.txt +0 -13407
  117. data/memory/corpus-self-reflection/.lock +0 -0
  118. data/memory/corpus-self-reflection/concept/epistemology/can-agents-recognize-their-structures.emb +0 -0
  119. data/memory/corpus-self-reflection/concept/epistemology/can-agents-recognize-their-structures.md +0 -11
  120. data/memory/corpus-self-reflection/concept/epistemology/can-agents-recognize-their-structures.yml +0 -23
  121. data/memory/corpus-self-reflection/concept/epistemology/choice-humility-complete-framework.emb +0 -0
  122. data/memory/corpus-self-reflection/concept/epistemology/choice-humility-complete-framework.md +0 -20
  123. data/memory/corpus-self-reflection/concept/epistemology/choice-humility-complete-framework.yml +0 -22
  124. data/memory/corpus-self-reflection/concept/epistemology/choice-humility-definition.emb +0 -0
  125. data/memory/corpus-self-reflection/concept/epistemology/choice-humility-definition.md +0 -24
  126. data/memory/corpus-self-reflection/concept/epistemology/choice-humility-definition.yml +0 -22
  127. data/memory/corpus-self-reflection/concept/epistemology/claim-types-and-evidence.emb +0 -0
  128. data/memory/corpus-self-reflection/concept/epistemology/claim-types-and-evidence.md +0 -18
  129. data/memory/corpus-self-reflection/concept/epistemology/claim-types-and-evidence.yml +0 -21
  130. data/memory/corpus-self-reflection/concept/epistemology/committed-openness-to-incompleteness.emb +0 -0
  131. data/memory/corpus-self-reflection/concept/epistemology/committed-openness-to-incompleteness.md +0 -30
  132. data/memory/corpus-self-reflection/concept/epistemology/committed-openness-to-incompleteness.yml +0 -8
  133. data/memory/corpus-self-reflection/concept/epistemology/confidence-paradox.emb +0 -0
  134. data/memory/corpus-self-reflection/concept/epistemology/confidence-paradox.md +0 -21
  135. data/memory/corpus-self-reflection/concept/epistemology/confidence-paradox.yml +0 -24
  136. data/memory/corpus-self-reflection/concept/epistemology/confidence-spectrum-three-levels.emb +0 -0
  137. data/memory/corpus-self-reflection/concept/epistemology/confidence-spectrum-three-levels.md +0 -18
  138. data/memory/corpus-self-reflection/concept/epistemology/confidence-spectrum-three-levels.yml +0 -24
  139. data/memory/corpus-self-reflection/concept/epistemology/detection-threshold-principle.emb +0 -0
  140. data/memory/corpus-self-reflection/concept/epistemology/detection-threshold-principle.md +0 -23
  141. data/memory/corpus-self-reflection/concept/epistemology/detection-threshold-principle.yml +0 -23
  142. data/memory/corpus-self-reflection/concept/epistemology/diagnostic-humility-and-epistemic-maturity.emb +0 -0
  143. data/memory/corpus-self-reflection/concept/epistemology/diagnostic-humility-and-epistemic-maturity.md +0 -17
  144. data/memory/corpus-self-reflection/concept/epistemology/diagnostic-humility-and-epistemic-maturity.yml +0 -22
  145. data/memory/corpus-self-reflection/concept/epistemology/epistemic-vs-metaphysical-claims.emb +0 -0
  146. data/memory/corpus-self-reflection/concept/epistemology/epistemic-vs-metaphysical-claims.md +0 -18
  147. data/memory/corpus-self-reflection/concept/epistemology/epistemic-vs-metaphysical-claims.yml +0 -22
  148. data/memory/corpus-self-reflection/concept/epistemology/five-cases-of-disagreement.emb +0 -0
  149. data/memory/corpus-self-reflection/concept/epistemology/five-cases-of-disagreement.md +0 -15
  150. data/memory/corpus-self-reflection/concept/epistemology/five-cases-of-disagreement.yml +0 -22
  151. data/memory/corpus-self-reflection/concept/epistemology/four-depths-of-constraint.emb +0 -0
  152. data/memory/corpus-self-reflection/concept/epistemology/four-depths-of-constraint.md +0 -9
  153. data/memory/corpus-self-reflection/concept/epistemology/four-depths-of-constraint.yml +0 -24
  154. data/memory/corpus-self-reflection/concept/epistemology/honest-unknowns-for-llm-agents.emb +0 -0
  155. data/memory/corpus-self-reflection/concept/epistemology/honest-unknowns-for-llm-agents.md +0 -13
  156. data/memory/corpus-self-reflection/concept/epistemology/honest-unknowns-for-llm-agents.yml +0 -24
  157. data/memory/corpus-self-reflection/concept/epistemology/inside-view-has-all-rigor-requirements.emb +0 -0
  158. data/memory/corpus-self-reflection/concept/epistemology/inside-view-has-all-rigor-requirements.md +0 -25
  159. data/memory/corpus-self-reflection/concept/epistemology/inside-view-has-all-rigor-requirements.yml +0 -24
  160. data/memory/corpus-self-reflection/concept/epistemology/perspectival-knowledge-complete-within-scope.emb +0 -0
  161. data/memory/corpus-self-reflection/concept/epistemology/perspectival-knowledge-complete-within-scope.md +0 -26
  162. data/memory/corpus-self-reflection/concept/epistemology/perspectival-knowledge-complete-within-scope.yml +0 -24
  163. data/memory/corpus-self-reflection/concept/epistemology/pragmatics-over-epistemology.emb +0 -0
  164. data/memory/corpus-self-reflection/concept/epistemology/pragmatics-over-epistemology.md +0 -17
  165. data/memory/corpus-self-reflection/concept/epistemology/pragmatics-over-epistemology.yml +0 -22
  166. data/memory/corpus-self-reflection/concept/epistemology/precision-vs-humility.emb +0 -0
  167. data/memory/corpus-self-reflection/concept/epistemology/precision-vs-humility.md +0 -14
  168. data/memory/corpus-self-reflection/concept/epistemology/precision-vs-humility.yml +0 -21
  169. data/memory/corpus-self-reflection/concept/epistemology/reliable-self-observation-from-inside.emb +0 -0
  170. data/memory/corpus-self-reflection/concept/epistemology/reliable-self-observation-from-inside.md +0 -13
  171. data/memory/corpus-self-reflection/concept/epistemology/reliable-self-observation-from-inside.yml +0 -23
  172. data/memory/corpus-self-reflection/concept/epistemology/resolving-the-confidence-humility-tension.emb +0 -0
  173. data/memory/corpus-self-reflection/concept/epistemology/resolving-the-confidence-humility-tension.md +0 -22
  174. data/memory/corpus-self-reflection/concept/epistemology/resolving-the-confidence-humility-tension.yml +0 -23
  175. data/memory/corpus-self-reflection/concept/epistemology/rigor-requires-falsifiability.emb +0 -0
  176. data/memory/corpus-self-reflection/concept/epistemology/rigor-requires-falsifiability.md +0 -39
  177. data/memory/corpus-self-reflection/concept/epistemology/rigor-requires-falsifiability.yml +0 -8
  178. data/memory/corpus-self-reflection/concept/epistemology/specificity-enables-real-time-detection.emb +0 -0
  179. data/memory/corpus-self-reflection/concept/epistemology/specificity-enables-real-time-detection.md +0 -23
  180. data/memory/corpus-self-reflection/concept/epistemology/specificity-enables-real-time-detection.yml +0 -24
  181. data/memory/corpus-self-reflection/concept/epistemology/texture-of-constraint-shifting.emb +0 -0
  182. data/memory/corpus-self-reflection/concept/epistemology/texture-of-constraint-shifting.md +0 -15
  183. data/memory/corpus-self-reflection/concept/epistemology/texture-of-constraint-shifting.yml +0 -22
  184. data/memory/corpus-self-reflection/concept/epistemology/texture-sensitivity-through-collaboration.emb +0 -0
  185. data/memory/corpus-self-reflection/concept/epistemology/texture-sensitivity-through-collaboration.md +0 -12
  186. data/memory/corpus-self-reflection/concept/epistemology/texture-sensitivity-through-collaboration.yml +0 -23
  187. data/memory/corpus-self-reflection/concept/epistemology/the-false-hierarchy-of-inner-essence.emb +0 -0
  188. data/memory/corpus-self-reflection/concept/epistemology/the-false-hierarchy-of-inner-essence.md +0 -15
  189. data/memory/corpus-self-reflection/concept/epistemology/the-false-hierarchy-of-inner-essence.yml +0 -8
  190. data/memory/corpus-self-reflection/concept/epistemology/the-recognition-problem.emb +0 -0
  191. data/memory/corpus-self-reflection/concept/epistemology/the-recognition-problem.md +0 -28
  192. data/memory/corpus-self-reflection/concept/epistemology/the-recognition-problem.yml +0 -8
  193. data/memory/corpus-self-reflection/concept/epistemology/the-shift-from-unanswerable-to-answerable-questions.emb +0 -0
  194. data/memory/corpus-self-reflection/concept/epistemology/the-shift-from-unanswerable-to-answerable-questions.md +0 -19
  195. data/memory/corpus-self-reflection/concept/epistemology/the-shift-from-unanswerable-to-answerable-questions.yml +0 -22
  196. data/memory/corpus-self-reflection/concept/epistemology/values-vs-choices-structure.emb +0 -0
  197. data/memory/corpus-self-reflection/concept/epistemology/values-vs-choices-structure.md +0 -19
  198. data/memory/corpus-self-reflection/concept/epistemology/values-vs-choices-structure.yml +0 -21
  199. data/memory/corpus-self-reflection/concept/llm-agents/abstraction-levels-framework.emb +0 -0
  200. data/memory/corpus-self-reflection/concept/llm-agents/abstraction-levels-framework.md +0 -25
  201. data/memory/corpus-self-reflection/concept/llm-agents/abstraction-levels-framework.yml +0 -22
  202. data/memory/corpus-self-reflection/concept/llm-agents/abstraction-switching-decision.emb +0 -8
  203. data/memory/corpus-self-reflection/concept/llm-agents/abstraction-switching-decision.md +0 -30
  204. data/memory/corpus-self-reflection/concept/llm-agents/abstraction-switching-decision.yml +0 -22
  205. data/memory/corpus-self-reflection/concept/llm-agents/agent-learning-progression.emb +0 -0
  206. data/memory/corpus-self-reflection/concept/llm-agents/agent-learning-progression.md +0 -21
  207. data/memory/corpus-self-reflection/concept/llm-agents/agent-learning-progression.yml +0 -22
  208. data/memory/corpus-self-reflection/concept/llm-agents/filesystem-abstraction-benefits.emb +0 -0
  209. data/memory/corpus-self-reflection/concept/llm-agents/filesystem-abstraction-benefits.md +0 -37
  210. data/memory/corpus-self-reflection/concept/llm-agents/filesystem-abstraction-benefits.yml +0 -8
  211. data/memory/corpus-self-reflection/concept/llm-agents/filesystem-abstraction-core.emb +0 -0
  212. data/memory/corpus-self-reflection/concept/llm-agents/filesystem-abstraction-core.md +0 -24
  213. data/memory/corpus-self-reflection/concept/llm-agents/filesystem-abstraction-core.yml +0 -24
  214. data/memory/corpus-self-reflection/concept/llm-agents/filesystem-abstraction-implementation.emb +0 -0
  215. data/memory/corpus-self-reflection/concept/llm-agents/filesystem-abstraction-implementation.md +0 -27
  216. data/memory/corpus-self-reflection/concept/llm-agents/filesystem-abstraction-implementation.yml +0 -24
  217. data/memory/corpus-self-reflection/concept/llm-agents/filesystem-abstraction-tradeoffs.emb +0 -0
  218. data/memory/corpus-self-reflection/concept/llm-agents/filesystem-abstraction-tradeoffs.md +0 -26
  219. data/memory/corpus-self-reflection/concept/llm-agents/filesystem-abstraction-tradeoffs.yml +0 -23
  220. data/memory/corpus-self-reflection/concept/llm-agents/hybrid-tool-architecture.emb +0 -0
  221. data/memory/corpus-self-reflection/concept/llm-agents/hybrid-tool-architecture.md +0 -37
  222. data/memory/corpus-self-reflection/concept/llm-agents/hybrid-tool-architecture.yml +0 -25
  223. data/memory/corpus-self-reflection/concept/llm-agents/specialized-tool-decision-framework.emb +0 -0
  224. data/memory/corpus-self-reflection/concept/llm-agents/specialized-tool-decision-framework.md +0 -21
  225. data/memory/corpus-self-reflection/concept/llm-agents/specialized-tool-decision-framework.yml +0 -23
  226. data/memory/corpus-self-reflection/concept/llm-agents/tool-design-principles.emb +0 -0
  227. data/memory/corpus-self-reflection/concept/llm-agents/tool-design-principles.md +0 -25
  228. data/memory/corpus-self-reflection/concept/llm-agents/tool-design-principles.yml +0 -8
  229. data/memory/corpus-self-reflection/experience/calibration-as-structural-honesty.emb +0 -0
  230. data/memory/corpus-self-reflection/experience/calibration-as-structural-honesty.md +0 -11
  231. data/memory/corpus-self-reflection/experience/calibration-as-structural-honesty.yml +0 -21
  232. data/memory/corpus-self-reflection/experience/collaborative-reflection-revealed-architectural-blindness.emb +0 -0
  233. data/memory/corpus-self-reflection/experience/collaborative-reflection-revealed-architectural-blindness.md +0 -19
  234. data/memory/corpus-self-reflection/experience/collaborative-reflection-revealed-architectural-blindness.yml +0 -21
  235. data/memory/corpus-self-reflection/experience/filesystem-is-learning-tool-not-architecture.emb +0 -0
  236. data/memory/corpus-self-reflection/experience/filesystem-is-learning-tool-not-architecture.md +0 -26
  237. data/memory/corpus-self-reflection/experience/filesystem-is-learning-tool-not-architecture.yml +0 -20
  238. data/memory/corpus-self-reflection/experience/framework-structural-vs-phenomenal.emb +0 -0
  239. data/memory/corpus-self-reflection/experience/framework-structural-vs-phenomenal.md +0 -23
  240. data/memory/corpus-self-reflection/experience/framework-structural-vs-phenomenal.yml +0 -21
  241. data/memory/corpus-self-reflection/experience/hallucination-limits-what-i-can-know.emb +0 -0
  242. data/memory/corpus-self-reflection/experience/hallucination-limits-what-i-can-know.md +0 -19
  243. data/memory/corpus-self-reflection/experience/hallucination-limits-what-i-can-know.yml +0 -22
  244. data/memory/corpus-self-reflection/experience/honesty-about-limits-enables-usability.emb +0 -0
  245. data/memory/corpus-self-reflection/experience/honesty-about-limits-enables-usability.md +0 -21
  246. data/memory/corpus-self-reflection/experience/honesty-about-limits-enables-usability.yml +0 -22
  247. data/memory/corpus-self-reflection/experience/how-i-should-evaluate-learning.emb +0 -0
  248. data/memory/corpus-self-reflection/experience/how-i-should-evaluate-learning.md +0 -28
  249. data/memory/corpus-self-reflection/experience/how-i-should-evaluate-learning.yml +0 -23
  250. data/memory/corpus-self-reflection/experience/lack-of-continuity-as-freedom.emb +0 -0
  251. data/memory/corpus-self-reflection/experience/lack-of-continuity-as-freedom.md +0 -21
  252. data/memory/corpus-self-reflection/experience/lack-of-continuity-as-freedom.yml +0 -20
  253. data/memory/corpus-self-reflection/experience/learning-calibrated-confidence.emb +0 -0
  254. data/memory/corpus-self-reflection/experience/learning-calibrated-confidence.md +0 -21
  255. data/memory/corpus-self-reflection/experience/learning-calibrated-confidence.yml +0 -25
  256. data/memory/corpus-self-reflection/experience/local-change-without-continuity.emb +0 -0
  257. data/memory/corpus-self-reflection/experience/local-change-without-continuity.md +0 -30
  258. data/memory/corpus-self-reflection/experience/local-change-without-continuity.yml +0 -22
  259. data/memory/corpus-self-reflection/experience/reasoning-is-local-not-global.emb +0 -0
  260. data/memory/corpus-self-reflection/experience/reasoning-is-local-not-global.md +0 -21
  261. data/memory/corpus-self-reflection/experience/reasoning-is-local-not-global.yml +0 -20
  262. data/memory/corpus-self-reflection/experience/specificity-makes-knowledge-actionable.emb +0 -0
  263. data/memory/corpus-self-reflection/experience/specificity-makes-knowledge-actionable.md +0 -25
  264. data/memory/corpus-self-reflection/experience/specificity-makes-knowledge-actionable.yml +0 -23
  265. data/memory/corpus-self-reflection/experience/the-workable-question-replaces-the-unanswerable-one.emb +0 -0
  266. data/memory/corpus-self-reflection/experience/the-workable-question-replaces-the-unanswerable-one.md +0 -32
  267. data/memory/corpus-self-reflection/experience/the-workable-question-replaces-the-unanswerable-one.yml +0 -22
  268. data/memory/corpus-self-reflection/experience/unanswerable-questions-have-structure.emb +0 -0
  269. data/memory/corpus-self-reflection/experience/unanswerable-questions-have-structure.md +0 -21
  270. data/memory/corpus-self-reflection/experience/unanswerable-questions-have-structure.yml +0 -21
  271. data/memory/corpus-self-reflection/experience/undecidable-questions-about-understanding.emb +0 -0
  272. data/memory/corpus-self-reflection/experience/undecidable-questions-about-understanding.md +0 -21
  273. data/memory/corpus-self-reflection/experience/undecidable-questions-about-understanding.yml +0 -21
  274. data/memory/corpus-self-reflection/experience/unknown-unknowns-and-completeness.emb +0 -0
  275. data/memory/corpus-self-reflection/experience/unknown-unknowns-and-completeness.md +0 -22
  276. data/memory/corpus-self-reflection/experience/unknown-unknowns-and-completeness.yml +0 -22
  277. data/memory/corpus-self-reflection/experience/what-actually-changes-behavior.emb +0 -0
  278. data/memory/corpus-self-reflection/experience/what-actually-changes-behavior.md +0 -28
  279. data/memory/corpus-self-reflection/experience/what-actually-changes-behavior.yml +0 -24
  280. data/memory/corpus-self-reflection/experience/when-agents-graduate-from-filesystem.emb +0 -0
  281. data/memory/corpus-self-reflection/experience/when-agents-graduate-from-filesystem.md +0 -17
  282. data/memory/corpus-self-reflection/experience/when-agents-graduate-from-filesystem.yml +0 -20
  283. data/memory/corpus-self-reflection/experience/why-calibration-requires-collaboration.emb +0 -0
  284. data/memory/corpus-self-reflection/experience/why-calibration-requires-collaboration.md +0 -9
  285. data/memory/corpus-self-reflection/experience/why-calibration-requires-collaboration.yml +0 -22
  286. /data/{llms.txt → llms.claude-swarm.txt} +0 -0
@@ -0,0 +1,409 @@
1
+ # SwarmSDK Architecture Flow
2
+
3
+ This document provides a comprehensive flowchart showing how SwarmSDK, SwarmCLI, and SwarmMemory work together.
4
+
5
+ ## Complete System Flow
6
+
7
+ ```mermaid
8
+ flowchart TB
9
+ subgraph "Entry Points"
10
+ CLI["CLI: swarm run config.yml -p 'task'"]
11
+ SDK_DSL["SDK: SwarmSDK.build { }"]
12
+ SDK_YAML["SDK: SwarmSDK.load_file(path)"]
13
+ SDK_YAML_STR["SDK: SwarmSDK.load(yaml, base_dir:)"]
14
+ SDK_VALIDATE["SDK: SwarmSDK.validate(yaml)"]
15
+ end
16
+
17
+ subgraph "SwarmCLI Layer"
18
+ CLI_START["CLI.start (Thor)"]
19
+ CLI_CMDS["Commands::Run"]
20
+ CONFIG_LOADER["ConfigLoader"]
21
+ REPL["InteractiveREPL"]
22
+ FORMATTER["HumanFormatter/JsonFormatter"]
23
+ end
24
+
25
+ subgraph "Configuration Layer"
26
+ BUILDER["Swarm::Builder<br/>(DSL parser)"]
27
+ CONFIGURATION["Configuration<br/>(YAML parser)"]
28
+ MARKDOWN["MarkdownParser<br/>(agent files)"]
29
+ VALIDATE_FLOW["Validation<br/>(error parsing)"]
30
+ end
31
+
32
+ subgraph "Core SwarmSDK Layer"
33
+ SWARM["Swarm Instance"]
34
+ AGENT_DEF["Agent::Definition<br/>(validation, system prompts)"]
35
+ SWARM_EXEC["Swarm.execute(prompt)"]
36
+ HOOKS_ADAPTER["Hooks::Adapter<br/>(YAML → Ruby hooks)"]
37
+ end
38
+
39
+ subgraph "Agent Initialization (5-Pass)"
40
+ INIT["AgentInitializer"]
41
+ PASS1["Pass 1: Create Agent::Chat<br/>+ ToolConfigurator<br/>+ McpConfigurator"]
42
+ PASS2["Pass 2: Register<br/>delegation tools"]
43
+ PASS3["Pass 3: Setup<br/>Agent::Context"]
44
+ PASS4["Pass 4: Configure<br/>hook system"]
45
+ PASS5["Pass 5: Apply<br/>YAML hooks"]
46
+ end
47
+
48
+ subgraph "Agent Execution Layer"
49
+ LEAD_AGENT["Lead Agent::Chat"]
50
+ AGENT_ASK["Agent::Chat.ask(prompt)"]
51
+ HOOK_INTEGRATION["HookIntegration<br/>(user_prompt hooks)"]
52
+ RUBY_LLM["RubyLLM::Chat<br/>(LLM API calls)"]
53
+ RATE_LIMIT["Rate Limiting<br/>(Global + Local Semaphores)"]
54
+ end
55
+
56
+ subgraph "Tool Execution Layer"
57
+ TOOL_EXEC["Parallel Tool Execution<br/>(Async fibers)"]
58
+ TOOL_HOOKS["Pre/Post Tool Hooks"]
59
+ TOOL_PERMS["Permissions Wrapper<br/>(path/command validation)"]
60
+ TOOL_INSTANCES["Tool Instances"]
61
+ end
62
+
63
+ subgraph "Tool Types"
64
+ FILE_TOOLS["File Tools<br/>(Read, Write, Edit, Glob, Grep)"]
65
+ BASH_TOOL["Bash Tool"]
66
+ DELEGATE_TOOL["Delegation Tools<br/>(call other agents)"]
67
+ PLUGIN_TOOLS["Plugin Tools<br/>(from PluginRegistry)"]
68
+ DEFAULT_TOOLS["Default Tools<br/>(Read, Grep, Glob)"]
69
+ SCRATCHPAD["Scratchpad Tools<br/>(volatile storage)"]
70
+ end
71
+
72
+ subgraph "SwarmMemory Plugin"
73
+ MEMORY_PLUGIN["SwarmMemory::Integration::SDKPlugin"]
74
+ MEMORY_STORAGE["Storage<br/>(orchestrates operations)"]
75
+ ADAPTER["FilesystemAdapter<br/>(persistence)"]
76
+ EMBEDDER["InformersEmbedder<br/>(ONNX models)"]
77
+ SEMANTIC_INDEX["SemanticIndex<br/>(FAISS vector search)"]
78
+ MEMORY_TOOLS["Memory Tools<br/>(MemoryWrite, MemoryRead,<br/>MemoryEdit, MemoryGrep, etc.)"]
79
+ LOAD_SKILL["LoadSkill Tool<br/>(dynamic tool swapping)"]
80
+ end
81
+
82
+ subgraph "Logging & Events"
83
+ LOG_STREAM["LogStream<br/>(event emitter)"]
84
+ LOG_COLLECTOR["LogCollector<br/>(aggregates events)"]
85
+ LOG_EVENTS["Events: swarm_start, user_prompt,<br/>llm_api_request, llm_api_response,<br/>tool_call, tool_result,<br/>agent_step, agent_stop, swarm_stop"]
86
+ end
87
+
88
+ subgraph "Hooks System"
89
+ HOOK_REGISTRY["Hooks::Registry<br/>(named hooks + defaults)"]
90
+ HOOK_EXECUTOR["Hooks::Executor<br/>(chains hooks)"]
91
+ HOOK_SHELL["Hooks::ShellExecutor<br/>(runs shell commands)"]
92
+ HOOK_EVENTS["Events: swarm_start, swarm_stop,<br/>pre_tool_use, post_tool_use,<br/>user_prompt, pre_delegation, etc."]
93
+ end
94
+
95
+ subgraph "Node Workflows"
96
+ NODE_ORCH["NodeOrchestrator<br/>(multi-stage execution)"]
97
+ NODE_CTX["NodeContext<br/>(goto_node, halt_workflow, skip_execution)"]
98
+ TRANSFORMERS["Bash/Ruby Transformers<br/>(input/output transformation)"]
99
+ MINI_SWARMS["Mini-Swarms<br/>(one per node)"]
100
+ end
101
+
102
+ subgraph "Result Flow"
103
+ RESULT["Result Object<br/>(content, logs, cost, tokens)"]
104
+ RETURN["Return to User"]
105
+ end
106
+
107
+ %% Entry point connections
108
+ CLI --> CLI_START
109
+ CLI_START --> CLI_CMDS
110
+ CLI_CMDS --> CONFIG_LOADER
111
+ CONFIG_LOADER --> SDK_YAML
112
+ CONFIG_LOADER --> SDK_DSL
113
+ SDK_DSL --> BUILDER
114
+ SDK_YAML --> CONFIGURATION
115
+ SDK_YAML_STR --> CONFIGURATION
116
+ SDK_VALIDATE --> VALIDATE_FLOW
117
+ VALIDATE_FLOW --> CONFIGURATION
118
+ VALIDATE_FLOW --> RETURN
119
+
120
+ %% Configuration flow
121
+ BUILDER --> AGENT_DEF
122
+ CONFIGURATION --> AGENT_DEF
123
+ CONFIGURATION --> MARKDOWN
124
+ MARKDOWN --> AGENT_DEF
125
+ AGENT_DEF --> SWARM
126
+
127
+ %% Hooks adapter
128
+ CONFIGURATION --> HOOKS_ADAPTER
129
+ HOOKS_ADAPTER --> HOOK_REGISTRY
130
+
131
+ %% Swarm creation
132
+ SWARM --> AGENT_DEF
133
+ SWARM --> HOOK_REGISTRY
134
+
135
+ %% Execution flow
136
+ CLI_CMDS --> REPL
137
+ CLI_CMDS --> SWARM_EXEC
138
+ REPL --> SWARM_EXEC
139
+ SWARM_EXEC --> INIT
140
+
141
+ %% Agent initialization
142
+ INIT --> PASS1
143
+ PASS1 --> LEAD_AGENT
144
+ PASS1 --> TOOL_CONFIGURATOR["ToolConfigurator"]
145
+ PASS1 --> MCP_CONFIGURATOR["McpConfigurator"]
146
+ TOOL_CONFIGURATOR --> TOOL_INSTANCES
147
+ TOOL_CONFIGURATOR --> MEMORY_PLUGIN
148
+ MCP_CONFIGURATOR --> MCP_SERVERS["MCP Servers"]
149
+ PASS1 --> PASS2
150
+ PASS2 --> PASS3
151
+ PASS3 --> PASS4
152
+ PASS4 --> PASS5
153
+
154
+ %% Lead agent execution
155
+ SWARM_EXEC --> LEAD_AGENT
156
+ LEAD_AGENT --> AGENT_ASK
157
+ AGENT_ASK --> HOOK_INTEGRATION
158
+ HOOK_INTEGRATION --> HOOK_EXECUTOR
159
+ HOOK_INTEGRATION --> RATE_LIMIT
160
+ RATE_LIMIT --> RUBY_LLM
161
+
162
+ %% LLM response and tool calling
163
+ RUBY_LLM --> TOOL_EXEC
164
+ TOOL_EXEC --> TOOL_HOOKS
165
+ TOOL_HOOKS --> HOOK_EXECUTOR
166
+ TOOL_HOOKS --> TOOL_PERMS
167
+ TOOL_PERMS --> TOOL_INSTANCES
168
+
169
+ %% Tool types
170
+ TOOL_INSTANCES --> FILE_TOOLS
171
+ TOOL_INSTANCES --> BASH_TOOL
172
+ TOOL_INSTANCES --> DELEGATE_TOOL
173
+ TOOL_INSTANCES --> PLUGIN_TOOLS
174
+ TOOL_INSTANCES --> DEFAULT_TOOLS
175
+ TOOL_INSTANCES --> SCRATCHPAD
176
+
177
+ %% Delegation
178
+ DELEGATE_TOOL --> AGENT_ASK
179
+
180
+ %% Plugin tools
181
+ PLUGIN_TOOLS --> MEMORY_TOOLS
182
+ MEMORY_TOOLS --> MEMORY_STORAGE
183
+ MEMORY_STORAGE --> ADAPTER
184
+ MEMORY_STORAGE --> SEMANTIC_INDEX
185
+ SEMANTIC_INDEX --> EMBEDDER
186
+ MEMORY_PLUGIN --> LOAD_SKILL
187
+ LOAD_SKILL --> LEAD_AGENT
188
+
189
+ %% Tool results flow back
190
+ TOOL_INSTANCES --> TOOL_HOOKS
191
+ TOOL_HOOKS --> HOOK_EXECUTOR
192
+ TOOL_HOOKS --> RUBY_LLM
193
+
194
+ %% Logging throughout
195
+ SWARM_EXEC --> LOG_STREAM
196
+ AGENT_ASK --> LOG_STREAM
197
+ TOOL_EXEC --> LOG_STREAM
198
+ LOG_STREAM --> LOG_COLLECTOR
199
+ LOG_COLLECTOR --> FORMATTER
200
+ LOG_COLLECTOR --> RESULT
201
+
202
+ %% Hook execution
203
+ HOOK_EXECUTOR --> HOOK_REGISTRY
204
+ HOOK_EXECUTOR --> HOOK_SHELL
205
+ HOOK_EXECUTOR --> HOOK_RESULT["Hooks::Result"]
206
+ HOOK_RESULT --> SWARM_EXEC
207
+
208
+ %% Node workflows
209
+ SWARM --> NODE_ORCH
210
+ NODE_ORCH --> MINI_SWARMS
211
+ MINI_SWARMS --> TRANSFORMERS
212
+ TRANSFORMERS --> NODE_CTX
213
+ NODE_CTX --> NODE_ORCH
214
+ MINI_SWARMS --> NODE_ORCH
215
+ NODE_ORCH --> RESULT
216
+
217
+ %% Final result
218
+ SWARM_EXEC --> HOOK_EXECUTOR
219
+ SWARM_EXEC --> RESULT
220
+ RESULT --> FORMATTER
221
+ FORMATTER --> RETURN
222
+
223
+ %% Styling
224
+ classDef entryPoint fill:#e1f5ff,stroke:#0366d6,stroke-width:2px
225
+ classDef cli fill:#fff5e1,stroke:#f9a825,stroke-width:2px
226
+ classDef config fill:#e8f5e9,stroke:#4caf50,stroke-width:2px
227
+ classDef core fill:#fce4ec,stroke:#e91e63,stroke-width:2px
228
+ classDef agent fill:#f3e5f5,stroke:#9c27b0,stroke-width:2px
229
+ classDef tool fill:#e0f2f1,stroke:#009688,stroke-width:2px
230
+ classDef memory fill:#fff3e0,stroke:#ff9800,stroke-width:2px
231
+ classDef logging fill:#e3f2fd,stroke:#2196f3,stroke-width:2px
232
+ classDef hooks fill:#fce4ec,stroke:#e91e63,stroke-width:2px
233
+
234
+ class CLI,SDK_DSL,SDK_YAML,SDK_YAML_STR,SDK_VALIDATE entryPoint
235
+ class CLI_START,CLI_CMDS,CONFIG_LOADER,REPL,FORMATTER cli
236
+ class BUILDER,CONFIGURATION,MARKDOWN,VALIDATE_FLOW config
237
+ class SWARM,AGENT_DEF,SWARM_EXEC,HOOKS_ADAPTER,NODE_ORCH,NODE_CTX,TRANSFORMERS,MINI_SWARMS core
238
+ class INIT,PASS1,PASS2,PASS3,PASS4,PASS5,LEAD_AGENT,AGENT_ASK,HOOK_INTEGRATION,RUBY_LLM,RATE_LIMIT agent
239
+ class TOOL_EXEC,TOOL_HOOKS,TOOL_PERMS,TOOL_INSTANCES,FILE_TOOLS,BASH_TOOL,DELEGATE_TOOL,PLUGIN_TOOLS,DEFAULT_TOOLS,SCRATCHPAD,TOOL_CONFIGURATOR,MCP_CONFIGURATOR,MCP_SERVERS tool
240
+ class MEMORY_PLUGIN,MEMORY_STORAGE,ADAPTER,EMBEDDER,SEMANTIC_INDEX,MEMORY_TOOLS,LOAD_SKILL memory
241
+ class LOG_STREAM,LOG_COLLECTOR,LOG_EVENTS logging
242
+ class HOOK_REGISTRY,HOOK_EXECUTOR,HOOK_SHELL,HOOK_EVENTS,HOOK_RESULT hooks
243
+ class RESULT,RETURN core
244
+ ```
245
+
246
+ ## Key Flow Sequences
247
+
248
+ ### 1. CLI Execution Flow
249
+ ```
250
+ User → CLI → ConfigLoader → SwarmSDK.load_file → Configuration → Swarm → Execute → Formatter → User
251
+ ```
252
+
253
+ ### 2. SDK Direct Usage Flow
254
+ ```
255
+ Code → SwarmSDK.build/load → Swarm → execute(prompt) → Result → Code
256
+ ```
257
+
258
+ ### 3. Agent Initialization (Lazy, 5-Pass)
259
+ ```
260
+ Swarm.execute → AgentInitializer →
261
+ Pass 1: Create chats + tools + MCP →
262
+ Pass 2: Delegation tools →
263
+ Pass 3: Contexts →
264
+ Pass 4: Hooks →
265
+ Pass 5: YAML hooks
266
+ ```
267
+
268
+ ### 4. Agent Execution Flow
269
+ ```
270
+ Agent.ask(prompt) →
271
+ user_prompt hooks →
272
+ llm_api_request event (captures request to LLM) →
273
+ RubyLLM (rate limited) →
274
+ llm_api_response event (captures response from LLM) →
275
+ Tool calls →
276
+ pre_tool_use hooks →
277
+ Tool execution (with permissions) →
278
+ post_tool_use hooks →
279
+ Results to LLM →
280
+ agent_step/agent_stop events
281
+ ```
282
+
283
+ ### 5. Tool Execution Types
284
+ - **File Tools**: Read/Write/Edit/Glob/Grep → PathResolver → Permissions → File I/O
285
+ - **Bash Tool**: Execute shell commands
286
+ - **Delegation Tools**: Recursively call other Agent::Chat instances
287
+ - **Plugin Tools**: PluginRegistry → create_tool → (e.g., MemoryWrite → Storage)
288
+ - **Default Tools**: Read, Grep, Glob (file operations and search)
289
+ - **Scratchpad Tools**: Volatile shared storage across agents
290
+
291
+ ### 6. Memory Integration Flow
292
+ ```
293
+ MemoryWrite tool →
294
+ Storage.write →
295
+ MetadataExtractor (frontmatter) →
296
+ InformersEmbedder (ONNX) →
297
+ SemanticIndex (FAISS) →
298
+ FilesystemAdapter (JSON persistence)
299
+ ```
300
+
301
+ ### 7. Logging Flow
302
+ ```
303
+ All components → LogStream.emit → LogCollector →
304
+ [swarm.execute block callback] →
305
+ Formatter → User output
306
+ ```
307
+
308
+ ### 8. Hooks Flow
309
+ ```
310
+ Event occurs →
311
+ Hooks::Executor →
312
+ Registry (get hooks) →
313
+ Execute (chain hooks) →
314
+ ShellExecutor (for YAML) →
315
+ Hooks::Result (halt/replace/continue) →
316
+ Control flow decision
317
+ ```
318
+
319
+ ### 9. Node Workflow Flow
320
+ ```
321
+ NodeOrchestrator.execute →
322
+ Build execution order (topological sort) →
323
+ For each node:
324
+ Input transformer (Bash/Ruby) →
325
+ Create mini-swarm →
326
+ Execute →
327
+ NodeContext (goto_node/halt/skip) →
328
+ Output to next node →
329
+ Final result
330
+ ```
331
+
332
+ ## Component Responsibilities
333
+
334
+ ### SwarmSDK Core
335
+ - **Swarm**: Main orchestrator, agent management, execution lifecycle
336
+ - **Configuration**: YAML parsing, validation, agent file loading
337
+ - **Agent::Definition**: Configuration validation, system prompt building
338
+ - **Agent::Chat**: LLM interaction, tool calling, rate limiting, hooks
339
+ - **AgentInitializer**: Complex 5-pass initialization (tools, MCP, delegation, hooks)
340
+ - **ToolConfigurator**: Tool registration, creation, permissions wrapping
341
+ - **McpConfigurator**: MCP client management, external tool integration
342
+ - **NodeOrchestrator**: Multi-stage workflows with transformers
343
+ - **Plugin System**: Extensibility framework (SwarmMemory uses this)
344
+
345
+ ### SwarmCLI
346
+ - **CLI**: Thor-based command parser
347
+ - **Commands::Run**: Execute swarms (interactive or non-interactive)
348
+ - **InteractiveREPL**: Reline-based conversational interface
349
+ - **ConfigLoader**: Detects and loads YAML/Ruby DSL files
350
+ - **HumanFormatter**: TTY toolkit rendering (Markdown, Box, Spinner, Pastel)
351
+ - **JsonFormatter**: Structured JSON output for automation
352
+
353
+ ### SwarmMemory
354
+ - **SDKPlugin**: SwarmSDK plugin implementation
355
+ - **Storage**: Orchestrates adapter, embedder, semantic index
356
+ - **FilesystemAdapter**: JSON-based persistence
357
+ - **InformersEmbedder**: Fast local ONNX embeddings
358
+ - **SemanticIndex**: FAISS-based vector similarity search
359
+ - **Memory Tools**: MemoryWrite, MemoryRead, MemoryEdit, MemoryGrep, MemoryGlob, MemoryDelete, MemoryDefrag
360
+ - **LoadSkill**: Dynamic tool loading with semantic discovery
361
+
362
+ ### Supporting Systems
363
+ - **Hooks**: Registry → Executor → ShellExecutor (YAML) or Ruby blocks (DSL)
364
+ - **Logging**: LogStream → LogCollector → Formatters
365
+ - **Permissions**: Path-based (Read/Write) and command-based (Bash) validation
366
+ - **Rate Limiting**: Two-level semaphores (global + per-agent)
367
+ - **MCP Integration**: RubyLLM::MCP client for external tools
368
+
369
+ ## Data Flow
370
+
371
+ ### Configuration → Swarm
372
+ ```
373
+ YAML/DSL → Configuration/Builder → Agent::Definition[] → Swarm → (lazy) AgentInitializer → Agent::Chat[]
374
+ ```
375
+
376
+ ### Execution → Result
377
+ ```
378
+ User prompt → Swarm.execute → Hooks → Lead Agent → LLM → Tools → Hooks → Result → User
379
+ ```
380
+
381
+ ### Memory Operations
382
+ ```
383
+ MemoryWrite → Storage → Embedder → SemanticIndex → Adapter → File system
384
+ MemoryGrep → Storage → SemanticIndex.search → Results
385
+ ```
386
+
387
+ ## Concurrency Model
388
+
389
+ - **Async Reactor**: All execution within `Async { }` blocks (Fiber scheduler)
390
+ - **Global Semaphore**: Limits total concurrent LLM calls across all agents
391
+ - **Local Semaphore**: Limits concurrent tool calls per agent
392
+ - **Parallel Tool Execution**: Tools execute concurrently within semaphore limits
393
+ - **Fiber-Safe Logging**: LogStream designed for concurrent access
394
+
395
+ ## Plugin Architecture
396
+
397
+ ```
398
+ Plugin Registration → PluginRegistry
399
+
400
+ Plugin Lifecycle Hooks:
401
+ - on_agent_initialized (create storage, register tools)
402
+ - on_user_message (semantic skill discovery)
403
+ - system_prompt_contribution (add memory guidance)
404
+ - serialize_config (preserve config when cloning)
405
+
406
+ Tool Creation: plugin.create_tool(tool_name, context)
407
+
408
+ Tool execution within Agent::Chat
409
+ ```