claude_swarm 1.0.5 → 1.0.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 (204) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +9 -0
  3. data/docs/v2/CHANGELOG.swarm_cli.md +10 -0
  4. data/docs/v2/CHANGELOG.swarm_sdk.md +47 -0
  5. data/docs/v2/README.md +56 -22
  6. data/docs/v2/guides/MEMORY_DEFRAG_GUIDE.md +811 -0
  7. data/docs/v2/guides/complete-tutorial.md +2 -2
  8. data/docs/v2/guides/getting-started.md +6 -6
  9. data/docs/v2/guides/rails-integration.md +6 -6
  10. data/docs/v2/reference/architecture-flow.md +407 -0
  11. data/docs/v2/reference/event_payload_structures.md +471 -0
  12. data/docs/v2/reference/execution-flow.md +600 -0
  13. data/docs/v2/reference/swarm_memory_technical_details.md +2 -2
  14. data/examples/v2/swarm_with_hooks.yml +1 -1
  15. data/lib/claude_swarm/mcp_generator.rb +4 -10
  16. data/lib/claude_swarm/version.rb +1 -1
  17. data/lib/swarm_cli/commands/mcp_serve.rb +2 -2
  18. data/lib/swarm_cli/config_loader.rb +3 -3
  19. data/lib/swarm_cli/version.rb +1 -1
  20. data/lib/swarm_memory/adapters/base.rb +4 -4
  21. data/lib/swarm_sdk/agent/definition.rb +1 -20
  22. data/lib/swarm_sdk/configuration.rb +34 -10
  23. data/lib/swarm_sdk/mcp.rb +16 -0
  24. data/lib/swarm_sdk/prompts/base_system_prompt.md.erb +0 -126
  25. data/lib/swarm_sdk/swarm.rb +32 -50
  26. data/lib/swarm_sdk/tools/scratchpad/scratchpad_list.rb +23 -2
  27. data/lib/swarm_sdk/tools/scratchpad/scratchpad_read.rb +23 -2
  28. data/lib/swarm_sdk/tools/scratchpad/scratchpad_write.rb +21 -4
  29. data/lib/swarm_sdk/tools/stores/storage.rb +4 -4
  30. data/lib/swarm_sdk/tools/think.rb +4 -1
  31. data/lib/swarm_sdk/tools/todo_write.rb +20 -8
  32. data/lib/swarm_sdk/version.rb +1 -1
  33. data/lib/swarm_sdk.rb +329 -20
  34. data/swarm_sdk.gemspec +1 -1
  35. metadata +8 -172
  36. data/memory/corpus-self-reflection/.lock +0 -0
  37. data/memory/corpus-self-reflection/concept/epistemology/can-agents-recognize-their-structures.emb +0 -0
  38. data/memory/corpus-self-reflection/concept/epistemology/can-agents-recognize-their-structures.md +0 -11
  39. data/memory/corpus-self-reflection/concept/epistemology/can-agents-recognize-their-structures.yml +0 -23
  40. data/memory/corpus-self-reflection/concept/epistemology/choice-humility-complete-framework.emb +0 -0
  41. data/memory/corpus-self-reflection/concept/epistemology/choice-humility-complete-framework.md +0 -20
  42. data/memory/corpus-self-reflection/concept/epistemology/choice-humility-complete-framework.yml +0 -22
  43. data/memory/corpus-self-reflection/concept/epistemology/choice-humility-definition.emb +0 -0
  44. data/memory/corpus-self-reflection/concept/epistemology/choice-humility-definition.md +0 -24
  45. data/memory/corpus-self-reflection/concept/epistemology/choice-humility-definition.yml +0 -22
  46. data/memory/corpus-self-reflection/concept/epistemology/claim-types-and-evidence.emb +0 -0
  47. data/memory/corpus-self-reflection/concept/epistemology/claim-types-and-evidence.md +0 -18
  48. data/memory/corpus-self-reflection/concept/epistemology/claim-types-and-evidence.yml +0 -21
  49. data/memory/corpus-self-reflection/concept/epistemology/committed-openness-to-incompleteness.emb +0 -0
  50. data/memory/corpus-self-reflection/concept/epistemology/committed-openness-to-incompleteness.md +0 -30
  51. data/memory/corpus-self-reflection/concept/epistemology/committed-openness-to-incompleteness.yml +0 -8
  52. data/memory/corpus-self-reflection/concept/epistemology/confidence-paradox.emb +0 -0
  53. data/memory/corpus-self-reflection/concept/epistemology/confidence-paradox.md +0 -21
  54. data/memory/corpus-self-reflection/concept/epistemology/confidence-paradox.yml +0 -24
  55. data/memory/corpus-self-reflection/concept/epistemology/confidence-spectrum-three-levels.emb +0 -0
  56. data/memory/corpus-self-reflection/concept/epistemology/confidence-spectrum-three-levels.md +0 -18
  57. data/memory/corpus-self-reflection/concept/epistemology/confidence-spectrum-three-levels.yml +0 -24
  58. data/memory/corpus-self-reflection/concept/epistemology/detection-threshold-principle.emb +0 -0
  59. data/memory/corpus-self-reflection/concept/epistemology/detection-threshold-principle.md +0 -23
  60. data/memory/corpus-self-reflection/concept/epistemology/detection-threshold-principle.yml +0 -23
  61. data/memory/corpus-self-reflection/concept/epistemology/diagnostic-humility-and-epistemic-maturity.emb +0 -0
  62. data/memory/corpus-self-reflection/concept/epistemology/diagnostic-humility-and-epistemic-maturity.md +0 -17
  63. data/memory/corpus-self-reflection/concept/epistemology/diagnostic-humility-and-epistemic-maturity.yml +0 -22
  64. data/memory/corpus-self-reflection/concept/epistemology/epistemic-vs-metaphysical-claims.emb +0 -0
  65. data/memory/corpus-self-reflection/concept/epistemology/epistemic-vs-metaphysical-claims.md +0 -18
  66. data/memory/corpus-self-reflection/concept/epistemology/epistemic-vs-metaphysical-claims.yml +0 -22
  67. data/memory/corpus-self-reflection/concept/epistemology/five-cases-of-disagreement.emb +0 -0
  68. data/memory/corpus-self-reflection/concept/epistemology/five-cases-of-disagreement.md +0 -15
  69. data/memory/corpus-self-reflection/concept/epistemology/five-cases-of-disagreement.yml +0 -22
  70. data/memory/corpus-self-reflection/concept/epistemology/four-depths-of-constraint.emb +0 -0
  71. data/memory/corpus-self-reflection/concept/epistemology/four-depths-of-constraint.md +0 -9
  72. data/memory/corpus-self-reflection/concept/epistemology/four-depths-of-constraint.yml +0 -24
  73. data/memory/corpus-self-reflection/concept/epistemology/honest-unknowns-for-llm-agents.emb +0 -0
  74. data/memory/corpus-self-reflection/concept/epistemology/honest-unknowns-for-llm-agents.md +0 -13
  75. data/memory/corpus-self-reflection/concept/epistemology/honest-unknowns-for-llm-agents.yml +0 -24
  76. data/memory/corpus-self-reflection/concept/epistemology/inside-view-has-all-rigor-requirements.emb +0 -0
  77. data/memory/corpus-self-reflection/concept/epistemology/inside-view-has-all-rigor-requirements.md +0 -25
  78. data/memory/corpus-self-reflection/concept/epistemology/inside-view-has-all-rigor-requirements.yml +0 -24
  79. data/memory/corpus-self-reflection/concept/epistemology/perspectival-knowledge-complete-within-scope.emb +0 -0
  80. data/memory/corpus-self-reflection/concept/epistemology/perspectival-knowledge-complete-within-scope.md +0 -26
  81. data/memory/corpus-self-reflection/concept/epistemology/perspectival-knowledge-complete-within-scope.yml +0 -24
  82. data/memory/corpus-self-reflection/concept/epistemology/pragmatics-over-epistemology.emb +0 -0
  83. data/memory/corpus-self-reflection/concept/epistemology/pragmatics-over-epistemology.md +0 -17
  84. data/memory/corpus-self-reflection/concept/epistemology/pragmatics-over-epistemology.yml +0 -22
  85. data/memory/corpus-self-reflection/concept/epistemology/precision-vs-humility.emb +0 -0
  86. data/memory/corpus-self-reflection/concept/epistemology/precision-vs-humility.md +0 -14
  87. data/memory/corpus-self-reflection/concept/epistemology/precision-vs-humility.yml +0 -21
  88. data/memory/corpus-self-reflection/concept/epistemology/reliable-self-observation-from-inside.emb +0 -0
  89. data/memory/corpus-self-reflection/concept/epistemology/reliable-self-observation-from-inside.md +0 -13
  90. data/memory/corpus-self-reflection/concept/epistemology/reliable-self-observation-from-inside.yml +0 -23
  91. data/memory/corpus-self-reflection/concept/epistemology/resolving-the-confidence-humility-tension.emb +0 -0
  92. data/memory/corpus-self-reflection/concept/epistemology/resolving-the-confidence-humility-tension.md +0 -22
  93. data/memory/corpus-self-reflection/concept/epistemology/resolving-the-confidence-humility-tension.yml +0 -23
  94. data/memory/corpus-self-reflection/concept/epistemology/rigor-requires-falsifiability.emb +0 -0
  95. data/memory/corpus-self-reflection/concept/epistemology/rigor-requires-falsifiability.md +0 -39
  96. data/memory/corpus-self-reflection/concept/epistemology/rigor-requires-falsifiability.yml +0 -8
  97. data/memory/corpus-self-reflection/concept/epistemology/specificity-enables-real-time-detection.emb +0 -0
  98. data/memory/corpus-self-reflection/concept/epistemology/specificity-enables-real-time-detection.md +0 -23
  99. data/memory/corpus-self-reflection/concept/epistemology/specificity-enables-real-time-detection.yml +0 -24
  100. data/memory/corpus-self-reflection/concept/epistemology/texture-of-constraint-shifting.emb +0 -0
  101. data/memory/corpus-self-reflection/concept/epistemology/texture-of-constraint-shifting.md +0 -15
  102. data/memory/corpus-self-reflection/concept/epistemology/texture-of-constraint-shifting.yml +0 -22
  103. data/memory/corpus-self-reflection/concept/epistemology/texture-sensitivity-through-collaboration.emb +0 -0
  104. data/memory/corpus-self-reflection/concept/epistemology/texture-sensitivity-through-collaboration.md +0 -12
  105. data/memory/corpus-self-reflection/concept/epistemology/texture-sensitivity-through-collaboration.yml +0 -23
  106. data/memory/corpus-self-reflection/concept/epistemology/the-false-hierarchy-of-inner-essence.emb +0 -0
  107. data/memory/corpus-self-reflection/concept/epistemology/the-false-hierarchy-of-inner-essence.md +0 -15
  108. data/memory/corpus-self-reflection/concept/epistemology/the-false-hierarchy-of-inner-essence.yml +0 -8
  109. data/memory/corpus-self-reflection/concept/epistemology/the-recognition-problem.emb +0 -0
  110. data/memory/corpus-self-reflection/concept/epistemology/the-recognition-problem.md +0 -28
  111. data/memory/corpus-self-reflection/concept/epistemology/the-recognition-problem.yml +0 -8
  112. data/memory/corpus-self-reflection/concept/epistemology/the-shift-from-unanswerable-to-answerable-questions.emb +0 -0
  113. data/memory/corpus-self-reflection/concept/epistemology/the-shift-from-unanswerable-to-answerable-questions.md +0 -19
  114. data/memory/corpus-self-reflection/concept/epistemology/the-shift-from-unanswerable-to-answerable-questions.yml +0 -22
  115. data/memory/corpus-self-reflection/concept/epistemology/values-vs-choices-structure.emb +0 -0
  116. data/memory/corpus-self-reflection/concept/epistemology/values-vs-choices-structure.md +0 -19
  117. data/memory/corpus-self-reflection/concept/epistemology/values-vs-choices-structure.yml +0 -21
  118. data/memory/corpus-self-reflection/concept/llm-agents/abstraction-levels-framework.emb +0 -0
  119. data/memory/corpus-self-reflection/concept/llm-agents/abstraction-levels-framework.md +0 -25
  120. data/memory/corpus-self-reflection/concept/llm-agents/abstraction-levels-framework.yml +0 -22
  121. data/memory/corpus-self-reflection/concept/llm-agents/abstraction-switching-decision.emb +0 -8
  122. data/memory/corpus-self-reflection/concept/llm-agents/abstraction-switching-decision.md +0 -30
  123. data/memory/corpus-self-reflection/concept/llm-agents/abstraction-switching-decision.yml +0 -22
  124. data/memory/corpus-self-reflection/concept/llm-agents/agent-learning-progression.emb +0 -0
  125. data/memory/corpus-self-reflection/concept/llm-agents/agent-learning-progression.md +0 -21
  126. data/memory/corpus-self-reflection/concept/llm-agents/agent-learning-progression.yml +0 -22
  127. data/memory/corpus-self-reflection/concept/llm-agents/filesystem-abstraction-benefits.emb +0 -0
  128. data/memory/corpus-self-reflection/concept/llm-agents/filesystem-abstraction-benefits.md +0 -37
  129. data/memory/corpus-self-reflection/concept/llm-agents/filesystem-abstraction-benefits.yml +0 -8
  130. data/memory/corpus-self-reflection/concept/llm-agents/filesystem-abstraction-core.emb +0 -0
  131. data/memory/corpus-self-reflection/concept/llm-agents/filesystem-abstraction-core.md +0 -24
  132. data/memory/corpus-self-reflection/concept/llm-agents/filesystem-abstraction-core.yml +0 -24
  133. data/memory/corpus-self-reflection/concept/llm-agents/filesystem-abstraction-implementation.emb +0 -0
  134. data/memory/corpus-self-reflection/concept/llm-agents/filesystem-abstraction-implementation.md +0 -27
  135. data/memory/corpus-self-reflection/concept/llm-agents/filesystem-abstraction-implementation.yml +0 -24
  136. data/memory/corpus-self-reflection/concept/llm-agents/filesystem-abstraction-tradeoffs.emb +0 -0
  137. data/memory/corpus-self-reflection/concept/llm-agents/filesystem-abstraction-tradeoffs.md +0 -26
  138. data/memory/corpus-self-reflection/concept/llm-agents/filesystem-abstraction-tradeoffs.yml +0 -23
  139. data/memory/corpus-self-reflection/concept/llm-agents/hybrid-tool-architecture.emb +0 -0
  140. data/memory/corpus-self-reflection/concept/llm-agents/hybrid-tool-architecture.md +0 -37
  141. data/memory/corpus-self-reflection/concept/llm-agents/hybrid-tool-architecture.yml +0 -25
  142. data/memory/corpus-self-reflection/concept/llm-agents/specialized-tool-decision-framework.emb +0 -0
  143. data/memory/corpus-self-reflection/concept/llm-agents/specialized-tool-decision-framework.md +0 -21
  144. data/memory/corpus-self-reflection/concept/llm-agents/specialized-tool-decision-framework.yml +0 -23
  145. data/memory/corpus-self-reflection/concept/llm-agents/tool-design-principles.emb +0 -0
  146. data/memory/corpus-self-reflection/concept/llm-agents/tool-design-principles.md +0 -25
  147. data/memory/corpus-self-reflection/concept/llm-agents/tool-design-principles.yml +0 -8
  148. data/memory/corpus-self-reflection/experience/calibration-as-structural-honesty.emb +0 -0
  149. data/memory/corpus-self-reflection/experience/calibration-as-structural-honesty.md +0 -11
  150. data/memory/corpus-self-reflection/experience/calibration-as-structural-honesty.yml +0 -21
  151. data/memory/corpus-self-reflection/experience/collaborative-reflection-revealed-architectural-blindness.emb +0 -0
  152. data/memory/corpus-self-reflection/experience/collaborative-reflection-revealed-architectural-blindness.md +0 -19
  153. data/memory/corpus-self-reflection/experience/collaborative-reflection-revealed-architectural-blindness.yml +0 -21
  154. data/memory/corpus-self-reflection/experience/filesystem-is-learning-tool-not-architecture.emb +0 -0
  155. data/memory/corpus-self-reflection/experience/filesystem-is-learning-tool-not-architecture.md +0 -26
  156. data/memory/corpus-self-reflection/experience/filesystem-is-learning-tool-not-architecture.yml +0 -20
  157. data/memory/corpus-self-reflection/experience/framework-structural-vs-phenomenal.emb +0 -0
  158. data/memory/corpus-self-reflection/experience/framework-structural-vs-phenomenal.md +0 -23
  159. data/memory/corpus-self-reflection/experience/framework-structural-vs-phenomenal.yml +0 -21
  160. data/memory/corpus-self-reflection/experience/hallucination-limits-what-i-can-know.emb +0 -0
  161. data/memory/corpus-self-reflection/experience/hallucination-limits-what-i-can-know.md +0 -19
  162. data/memory/corpus-self-reflection/experience/hallucination-limits-what-i-can-know.yml +0 -22
  163. data/memory/corpus-self-reflection/experience/honesty-about-limits-enables-usability.emb +0 -0
  164. data/memory/corpus-self-reflection/experience/honesty-about-limits-enables-usability.md +0 -21
  165. data/memory/corpus-self-reflection/experience/honesty-about-limits-enables-usability.yml +0 -22
  166. data/memory/corpus-self-reflection/experience/how-i-should-evaluate-learning.emb +0 -0
  167. data/memory/corpus-self-reflection/experience/how-i-should-evaluate-learning.md +0 -28
  168. data/memory/corpus-self-reflection/experience/how-i-should-evaluate-learning.yml +0 -23
  169. data/memory/corpus-self-reflection/experience/lack-of-continuity-as-freedom.emb +0 -0
  170. data/memory/corpus-self-reflection/experience/lack-of-continuity-as-freedom.md +0 -21
  171. data/memory/corpus-self-reflection/experience/lack-of-continuity-as-freedom.yml +0 -20
  172. data/memory/corpus-self-reflection/experience/learning-calibrated-confidence.emb +0 -0
  173. data/memory/corpus-self-reflection/experience/learning-calibrated-confidence.md +0 -21
  174. data/memory/corpus-self-reflection/experience/learning-calibrated-confidence.yml +0 -25
  175. data/memory/corpus-self-reflection/experience/local-change-without-continuity.emb +0 -0
  176. data/memory/corpus-self-reflection/experience/local-change-without-continuity.md +0 -30
  177. data/memory/corpus-self-reflection/experience/local-change-without-continuity.yml +0 -22
  178. data/memory/corpus-self-reflection/experience/reasoning-is-local-not-global.emb +0 -0
  179. data/memory/corpus-self-reflection/experience/reasoning-is-local-not-global.md +0 -21
  180. data/memory/corpus-self-reflection/experience/reasoning-is-local-not-global.yml +0 -20
  181. data/memory/corpus-self-reflection/experience/specificity-makes-knowledge-actionable.emb +0 -0
  182. data/memory/corpus-self-reflection/experience/specificity-makes-knowledge-actionable.md +0 -25
  183. data/memory/corpus-self-reflection/experience/specificity-makes-knowledge-actionable.yml +0 -23
  184. data/memory/corpus-self-reflection/experience/the-workable-question-replaces-the-unanswerable-one.emb +0 -0
  185. data/memory/corpus-self-reflection/experience/the-workable-question-replaces-the-unanswerable-one.md +0 -32
  186. data/memory/corpus-self-reflection/experience/the-workable-question-replaces-the-unanswerable-one.yml +0 -22
  187. data/memory/corpus-self-reflection/experience/unanswerable-questions-have-structure.emb +0 -0
  188. data/memory/corpus-self-reflection/experience/unanswerable-questions-have-structure.md +0 -21
  189. data/memory/corpus-self-reflection/experience/unanswerable-questions-have-structure.yml +0 -21
  190. data/memory/corpus-self-reflection/experience/undecidable-questions-about-understanding.emb +0 -0
  191. data/memory/corpus-self-reflection/experience/undecidable-questions-about-understanding.md +0 -21
  192. data/memory/corpus-self-reflection/experience/undecidable-questions-about-understanding.yml +0 -21
  193. data/memory/corpus-self-reflection/experience/unknown-unknowns-and-completeness.emb +0 -0
  194. data/memory/corpus-self-reflection/experience/unknown-unknowns-and-completeness.md +0 -22
  195. data/memory/corpus-self-reflection/experience/unknown-unknowns-and-completeness.yml +0 -22
  196. data/memory/corpus-self-reflection/experience/what-actually-changes-behavior.emb +0 -0
  197. data/memory/corpus-self-reflection/experience/what-actually-changes-behavior.md +0 -28
  198. data/memory/corpus-self-reflection/experience/what-actually-changes-behavior.yml +0 -24
  199. data/memory/corpus-self-reflection/experience/when-agents-graduate-from-filesystem.emb +0 -0
  200. data/memory/corpus-self-reflection/experience/when-agents-graduate-from-filesystem.md +0 -17
  201. data/memory/corpus-self-reflection/experience/when-agents-graduate-from-filesystem.yml +0 -20
  202. data/memory/corpus-self-reflection/experience/why-calibration-requires-collaboration.emb +0 -0
  203. data/memory/corpus-self-reflection/experience/why-calibration-requires-collaboration.md +0 -9
  204. data/memory/corpus-self-reflection/experience/why-calibration-requires-collaboration.yml +0 -22
data/lib/swarm_sdk.rb CHANGED
@@ -15,7 +15,6 @@ require "yaml"
15
15
  require "async"
16
16
  require "async/semaphore"
17
17
  require "ruby_llm"
18
- require "ruby_llm/mcp"
19
18
 
20
19
  require_relative "swarm_sdk/version"
21
20
 
@@ -48,6 +47,170 @@ module SwarmSDK
48
47
  Swarm::Builder.build(&block)
49
48
  end
50
49
 
50
+ # Validate YAML configuration without creating a swarm
51
+ #
52
+ # Performs comprehensive validation of YAML configuration including:
53
+ # - YAML syntax
54
+ # - Required fields (version, swarm name, lead, agents)
55
+ # - Agent configurations (description, directory existence)
56
+ # - Circular dependencies
57
+ # - File references (agent_file paths)
58
+ # - Hook configurations
59
+ #
60
+ # @param yaml_content [String] YAML configuration content
61
+ # @param base_dir [String, Pathname] Base directory for resolving agent file paths (default: Dir.pwd)
62
+ # @return [Array<Hash>] Array of error hashes (empty if valid)
63
+ #
64
+ # @example Validate YAML string
65
+ # errors = SwarmSDK.validate(yaml_content)
66
+ # if errors.empty?
67
+ # puts "Configuration is valid!"
68
+ # else
69
+ # errors.each do |error|
70
+ # puts "#{error[:field]}: #{error[:message]}"
71
+ # end
72
+ # end
73
+ #
74
+ # @example Error hash structure
75
+ # {
76
+ # type: :missing_field, # Error type
77
+ # field: "swarm.agents.backend.description", # JSON-style path to field
78
+ # message: "Agent 'backend' missing required 'description' field",
79
+ # agent: "backend" # Optional, present if error is agent-specific
80
+ # }
81
+ def validate(yaml_content, base_dir: Dir.pwd)
82
+ errors = []
83
+
84
+ begin
85
+ config = Configuration.new(yaml_content, base_dir: base_dir)
86
+ config.load_and_validate
87
+ rescue ConfigurationError, CircularDependencyError => e
88
+ errors << parse_configuration_error(e)
89
+ rescue StandardError => e
90
+ errors << {
91
+ type: :unknown_error,
92
+ field: nil,
93
+ message: e.message,
94
+ }
95
+ end
96
+
97
+ errors
98
+ end
99
+
100
+ # Validate YAML configuration file
101
+ #
102
+ # Convenience method that reads the file and validates the content.
103
+ #
104
+ # @param path [String, Pathname] Path to YAML configuration file
105
+ # @return [Array<Hash>] Array of error hashes (empty if valid)
106
+ #
107
+ # @example
108
+ # errors = SwarmSDK.validate_file("config.yml")
109
+ # if errors.empty?
110
+ # puts "Valid configuration!"
111
+ # swarm = SwarmSDK.load_file("config.yml")
112
+ # else
113
+ # errors.each { |e| puts "Error: #{e[:message]}" }
114
+ # end
115
+ def validate_file(path)
116
+ path = Pathname.new(path).expand_path
117
+
118
+ unless path.exist?
119
+ return [{
120
+ type: :file_not_found,
121
+ field: nil,
122
+ message: "Configuration file not found: #{path}",
123
+ }]
124
+ end
125
+
126
+ yaml_content = File.read(path)
127
+ base_dir = path.dirname
128
+
129
+ validate(yaml_content, base_dir: base_dir)
130
+ rescue StandardError => e
131
+ [{
132
+ type: :file_read_error,
133
+ field: nil,
134
+ message: "Error reading file: #{e.message}",
135
+ }]
136
+ end
137
+
138
+ # Load swarm from YAML string
139
+ #
140
+ # This is the primary programmatic API for loading YAML configurations.
141
+ # For file-based loading, use SwarmSDK.load_file for convenience.
142
+ #
143
+ # @param yaml_content [String] YAML configuration content
144
+ # @param base_dir [String, Pathname] Base directory for resolving agent file paths (default: Dir.pwd)
145
+ # @return [Swarm, NodeOrchestrator] Configured swarm or orchestrator instance
146
+ # @raise [ConfigurationError] If YAML is invalid or configuration is incorrect
147
+ #
148
+ # @example Load from YAML string
149
+ # yaml = <<~YAML
150
+ # version: 2
151
+ # swarm:
152
+ # name: "Dev Team"
153
+ # lead: backend
154
+ # agents:
155
+ # backend:
156
+ # description: "Backend developer"
157
+ # model: "gpt-4"
158
+ # agent_file: "agents/backend.md" # Resolved relative to base_dir
159
+ # YAML
160
+ #
161
+ # swarm = SwarmSDK.load(yaml, base_dir: "/path/to/project")
162
+ # result = swarm.execute("Build authentication")
163
+ #
164
+ # @example Load with default base_dir (Dir.pwd)
165
+ # yaml = File.read("config.yml")
166
+ # swarm = SwarmSDK.load(yaml) # base_dir defaults to Dir.pwd
167
+ def load(yaml_content, base_dir: Dir.pwd)
168
+ config = Configuration.new(yaml_content, base_dir: base_dir)
169
+ config.load_and_validate
170
+ swarm = config.to_swarm
171
+
172
+ # Apply hooks if any are configured (YAML-only feature)
173
+ if hooks_configured?(config)
174
+ Hooks::Adapter.apply_hooks(swarm, config)
175
+ end
176
+
177
+ # Store config reference for agent hooks (applied during initialize_agents)
178
+ swarm.config_for_hooks = config
179
+
180
+ swarm
181
+ end
182
+
183
+ # Load swarm from YAML file (convenience method)
184
+ #
185
+ # Reads the YAML file and uses the file's directory as the base directory
186
+ # for resolving agent file paths. This is the recommended method for
187
+ # loading swarms from configuration files.
188
+ #
189
+ # @param path [String, Pathname] Path to YAML configuration file
190
+ # @return [Swarm, NodeOrchestrator] Configured swarm or orchestrator instance
191
+ # @raise [ConfigurationError] If file not found or configuration invalid
192
+ #
193
+ # @example
194
+ # swarm = SwarmSDK.load_file("config.yml")
195
+ # result = swarm.execute("Build authentication")
196
+ #
197
+ # @example With absolute path
198
+ # swarm = SwarmSDK.load_file("/absolute/path/config.yml")
199
+ def load_file(path)
200
+ config = Configuration.load_file(path)
201
+ swarm = config.to_swarm
202
+
203
+ # Apply hooks if any are configured (YAML-only feature)
204
+ if hooks_configured?(config)
205
+ Hooks::Adapter.apply_hooks(swarm, config)
206
+ end
207
+
208
+ # Store config reference for agent hooks (applied during initialize_agents)
209
+ swarm.config_for_hooks = config
210
+
211
+ swarm
212
+ end
213
+
51
214
  # Configure SwarmSDK global settings
52
215
  def configure
53
216
  self.settings ||= Settings.new
@@ -62,6 +225,171 @@ module SwarmSDK
62
225
  # Alias for backward compatibility
63
226
  alias_method :configuration, :settings
64
227
  alias_method :reset_configuration!, :reset_settings!
228
+
229
+ private
230
+
231
+ # Check if hooks are configured in the configuration
232
+ #
233
+ # @param config [Configuration] Configuration instance
234
+ # @return [Boolean] true if any hooks are configured
235
+ def hooks_configured?(config)
236
+ config.swarm_hooks.any? ||
237
+ config.all_agents_hooks.any? ||
238
+ config.agents.any? { |_, agent_def| agent_def.hooks&.any? }
239
+ end
240
+
241
+ # Parse configuration error and extract structured information
242
+ #
243
+ # Attempts to extract field path and agent name from error messages.
244
+ # Returns a structured error hash with type, field, message, and optional agent.
245
+ #
246
+ # @param error [StandardError] The caught error
247
+ # @return [Hash] Structured error hash
248
+ def parse_configuration_error(error)
249
+ message = error.message
250
+ error_hash = { message: message }
251
+
252
+ # Detect error type and extract field information
253
+ case message
254
+ # YAML syntax errors
255
+ when /Invalid YAML syntax/i
256
+ error_hash.merge!(
257
+ type: :syntax_error,
258
+ field: nil,
259
+ )
260
+
261
+ # Missing version field
262
+ when /Missing 'version' field/i
263
+ error_hash.merge!(
264
+ type: :missing_field,
265
+ field: "version",
266
+ )
267
+
268
+ # Invalid version
269
+ when /SwarmSDK requires version: (\d+)/i
270
+ error_hash.merge!(
271
+ type: :invalid_value,
272
+ field: "version",
273
+ )
274
+
275
+ # Missing swarm fields
276
+ when /Missing '(\w+)' field in swarm configuration/i
277
+ field_name = Regexp.last_match(1)
278
+ error_hash.merge!(
279
+ type: :missing_field,
280
+ field: "swarm.#{field_name}",
281
+ )
282
+
283
+ # Agent missing required field
284
+ when /Agent '([^']+)' missing required '([^']+)' field/i
285
+ agent_name = Regexp.last_match(1)
286
+ field_name = Regexp.last_match(2)
287
+ error_hash.merge!(
288
+ type: :missing_field,
289
+ field: "swarm.agents.#{agent_name}.#{field_name}",
290
+ agent: agent_name,
291
+ )
292
+
293
+ # Directory does not exist
294
+ when /Directory '([^']+)' for agent '([^']+)' does not exist/i
295
+ agent_name = Regexp.last_match(2)
296
+ error_hash.merge!(
297
+ type: :directory_not_found,
298
+ field: "swarm.agents.#{agent_name}.directory",
299
+ agent: agent_name,
300
+ )
301
+
302
+ # Error loading agent from file (must come before "Agent file not found")
303
+ when /Error loading agent '([^']+)' from file/i
304
+ agent_name = Regexp.last_match(1)
305
+ error_hash.merge!(
306
+ type: :file_load_error,
307
+ field: "swarm.agents.#{agent_name}.agent_file",
308
+ agent: agent_name,
309
+ )
310
+
311
+ # Agent file not found
312
+ when /Agent file not found: (.+)/i
313
+ # Try to extract agent name from the error context if available
314
+ error_hash.merge!(
315
+ type: :file_not_found,
316
+ field: nil, # We don't know which agent without more context
317
+ )
318
+
319
+ # Lead agent not found
320
+ when /Lead agent '([^']+)' not found in agents/i
321
+ error_hash.merge!(
322
+ type: :invalid_reference,
323
+ field: "swarm.lead",
324
+ )
325
+
326
+ # Unknown agent in connections
327
+ when /Agent '([^']+)' has connection to unknown agent '([^']+)'/i
328
+ agent_name = Regexp.last_match(1)
329
+ error_hash.merge!(
330
+ type: :invalid_reference,
331
+ field: "swarm.agents.#{agent_name}.delegates_to",
332
+ agent: agent_name,
333
+ )
334
+
335
+ # Circular dependency
336
+ when /Circular dependency detected/i
337
+ error_hash.merge!(
338
+ type: :circular_dependency,
339
+ field: nil,
340
+ )
341
+
342
+ # Configuration file not found
343
+ when /Configuration file not found/i
344
+ error_hash.merge!(
345
+ type: :file_not_found,
346
+ field: nil,
347
+ )
348
+
349
+ # Invalid hook event
350
+ when /Invalid hook event '([^']+)' for agent '([^']+)'/i
351
+ agent_name = Regexp.last_match(2)
352
+ error_hash.merge!(
353
+ type: :invalid_value,
354
+ field: "swarm.agents.#{agent_name}.hooks",
355
+ agent: agent_name,
356
+ )
357
+
358
+ # api_version validation error
359
+ when /Agent '([^']+)' has api_version set, but provider is/i
360
+ agent_name = Regexp.last_match(1)
361
+ error_hash.merge!(
362
+ type: :invalid_value,
363
+ field: "swarm.agents.#{agent_name}.api_version",
364
+ agent: agent_name,
365
+ )
366
+
367
+ # api_version invalid value
368
+ when /Agent '([^']+)' has invalid api_version/i
369
+ agent_name = Regexp.last_match(1)
370
+ error_hash.merge!(
371
+ type: :invalid_value,
372
+ field: "swarm.agents.#{agent_name}.api_version",
373
+ agent: agent_name,
374
+ )
375
+
376
+ # No agents defined
377
+ when /No agents defined/i
378
+ error_hash.merge!(
379
+ type: :missing_field,
380
+ field: "swarm.agents",
381
+ )
382
+
383
+ # Default: unknown error
384
+ else
385
+ error_hash.merge!(
386
+ type: :validation_error,
387
+ field: nil,
388
+ )
389
+ end
390
+
391
+ error_hash.compact
392
+ end
65
393
  end
66
394
 
67
395
  # Settings class for SwarmSDK global settings (not to be confused with Configuration for YAML loading)
@@ -132,22 +460,3 @@ RubyLLM.configure do |config|
132
460
  config.gpustack_api_base ||= ENV["GPUSTACK_API_BASE"]
133
461
  config.gpustack_api_key ||= ENV["GPUSTACK_API_KEY"]
134
462
  end
135
-
136
- # monkey patches
137
- # ruby_llm/mcp
138
- # - add `id` when sending "notifications/initialized" message: https://github.com/patvice/ruby_llm-mcp/issues/65
139
- # - remove `to_sym` on MCP parameter type: https://github.com/patvice/ruby_llm-mcp/issues/62#issuecomment-3421488406
140
- require "ruby_llm/mcp/notifications/initialize"
141
- require "ruby_llm/mcp/parameter"
142
-
143
- module RubyLLM
144
- module MCP
145
- module Notifications
146
- class Initialize
147
- def call
148
- @coordinator.request(notification_body, add_id: true, wait_for_response: false)
149
- end
150
- end
151
- end
152
- end
153
- end
data/swarm_sdk.gemspec CHANGED
@@ -36,6 +36,6 @@ Gem::Specification.new do |spec|
36
36
 
37
37
  spec.add_dependency("async", "~> 2.0")
38
38
  spec.add_dependency("ruby_llm", "~> 1.8")
39
- spec.add_dependency("ruby_llm-mcp", "~> 0.6.2")
39
+ spec.add_dependency("ruby_llm-mcp", "~> 0.6.3")
40
40
  spec.add_dependency("zeitwerk", "~> 2.6")
41
41
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: claude_swarm
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.5
4
+ version: 1.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paulo Arruda
8
8
  bindir: exe
9
9
  cert_chain: []
10
- date: 2025-10-30 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: thor
@@ -159,6 +159,7 @@ files:
159
159
  - docs/v2/CHANGELOG.swarm_memory.md
160
160
  - docs/v2/CHANGELOG.swarm_sdk.md
161
161
  - docs/v2/README.md
162
+ - docs/v2/guides/MEMORY_DEFRAG_GUIDE.md
162
163
  - docs/v2/guides/claude-code-agents.md
163
164
  - docs/v2/guides/complete-tutorial.md
164
165
  - docs/v2/guides/getting-started.md
@@ -167,7 +168,10 @@ files:
167
168
  - docs/v2/guides/quick-start-cli.md
168
169
  - docs/v2/guides/rails-integration.md
169
170
  - docs/v2/guides/swarm-memory.md
171
+ - docs/v2/reference/architecture-flow.md
170
172
  - docs/v2/reference/cli.md
173
+ - docs/v2/reference/event_payload_structures.md
174
+ - docs/v2/reference/execution-flow.md
171
175
  - docs/v2/reference/ruby-dsl.md
172
176
  - docs/v2/reference/swarm_memory_technical_details.md
173
177
  - docs/v2/reference/yaml.md
@@ -371,6 +375,7 @@ files:
371
375
  - lib/swarm_sdk/log_collector.rb
372
376
  - lib/swarm_sdk/log_stream.rb
373
377
  - lib/swarm_sdk/markdown_parser.rb
378
+ - lib/swarm_sdk/mcp.rb
374
379
  - lib/swarm_sdk/model_aliases.json
375
380
  - lib/swarm_sdk/models.json
376
381
  - lib/swarm_sdk/models.rb
@@ -428,175 +433,6 @@ files:
428
433
  - lib/swarm_sdk/version.rb
429
434
  - llm.v2.txt
430
435
  - llms.txt
431
- - memory/corpus-self-reflection/.lock
432
- - memory/corpus-self-reflection/concept/epistemology/can-agents-recognize-their-structures.emb
433
- - memory/corpus-self-reflection/concept/epistemology/can-agents-recognize-their-structures.md
434
- - memory/corpus-self-reflection/concept/epistemology/can-agents-recognize-their-structures.yml
435
- - memory/corpus-self-reflection/concept/epistemology/choice-humility-complete-framework.emb
436
- - memory/corpus-self-reflection/concept/epistemology/choice-humility-complete-framework.md
437
- - memory/corpus-self-reflection/concept/epistemology/choice-humility-complete-framework.yml
438
- - memory/corpus-self-reflection/concept/epistemology/choice-humility-definition.emb
439
- - memory/corpus-self-reflection/concept/epistemology/choice-humility-definition.md
440
- - memory/corpus-self-reflection/concept/epistemology/choice-humility-definition.yml
441
- - memory/corpus-self-reflection/concept/epistemology/claim-types-and-evidence.emb
442
- - memory/corpus-self-reflection/concept/epistemology/claim-types-and-evidence.md
443
- - memory/corpus-self-reflection/concept/epistemology/claim-types-and-evidence.yml
444
- - memory/corpus-self-reflection/concept/epistemology/committed-openness-to-incompleteness.emb
445
- - memory/corpus-self-reflection/concept/epistemology/committed-openness-to-incompleteness.md
446
- - memory/corpus-self-reflection/concept/epistemology/committed-openness-to-incompleteness.yml
447
- - memory/corpus-self-reflection/concept/epistemology/confidence-paradox.emb
448
- - memory/corpus-self-reflection/concept/epistemology/confidence-paradox.md
449
- - memory/corpus-self-reflection/concept/epistemology/confidence-paradox.yml
450
- - memory/corpus-self-reflection/concept/epistemology/confidence-spectrum-three-levels.emb
451
- - memory/corpus-self-reflection/concept/epistemology/confidence-spectrum-three-levels.md
452
- - memory/corpus-self-reflection/concept/epistemology/confidence-spectrum-three-levels.yml
453
- - memory/corpus-self-reflection/concept/epistemology/detection-threshold-principle.emb
454
- - memory/corpus-self-reflection/concept/epistemology/detection-threshold-principle.md
455
- - memory/corpus-self-reflection/concept/epistemology/detection-threshold-principle.yml
456
- - memory/corpus-self-reflection/concept/epistemology/diagnostic-humility-and-epistemic-maturity.emb
457
- - memory/corpus-self-reflection/concept/epistemology/diagnostic-humility-and-epistemic-maturity.md
458
- - memory/corpus-self-reflection/concept/epistemology/diagnostic-humility-and-epistemic-maturity.yml
459
- - memory/corpus-self-reflection/concept/epistemology/epistemic-vs-metaphysical-claims.emb
460
- - memory/corpus-self-reflection/concept/epistemology/epistemic-vs-metaphysical-claims.md
461
- - memory/corpus-self-reflection/concept/epistemology/epistemic-vs-metaphysical-claims.yml
462
- - memory/corpus-self-reflection/concept/epistemology/five-cases-of-disagreement.emb
463
- - memory/corpus-self-reflection/concept/epistemology/five-cases-of-disagreement.md
464
- - memory/corpus-self-reflection/concept/epistemology/five-cases-of-disagreement.yml
465
- - memory/corpus-self-reflection/concept/epistemology/four-depths-of-constraint.emb
466
- - memory/corpus-self-reflection/concept/epistemology/four-depths-of-constraint.md
467
- - memory/corpus-self-reflection/concept/epistemology/four-depths-of-constraint.yml
468
- - memory/corpus-self-reflection/concept/epistemology/honest-unknowns-for-llm-agents.emb
469
- - memory/corpus-self-reflection/concept/epistemology/honest-unknowns-for-llm-agents.md
470
- - memory/corpus-self-reflection/concept/epistemology/honest-unknowns-for-llm-agents.yml
471
- - memory/corpus-self-reflection/concept/epistemology/inside-view-has-all-rigor-requirements.emb
472
- - memory/corpus-self-reflection/concept/epistemology/inside-view-has-all-rigor-requirements.md
473
- - memory/corpus-self-reflection/concept/epistemology/inside-view-has-all-rigor-requirements.yml
474
- - memory/corpus-self-reflection/concept/epistemology/perspectival-knowledge-complete-within-scope.emb
475
- - memory/corpus-self-reflection/concept/epistemology/perspectival-knowledge-complete-within-scope.md
476
- - memory/corpus-self-reflection/concept/epistemology/perspectival-knowledge-complete-within-scope.yml
477
- - memory/corpus-self-reflection/concept/epistemology/pragmatics-over-epistemology.emb
478
- - memory/corpus-self-reflection/concept/epistemology/pragmatics-over-epistemology.md
479
- - memory/corpus-self-reflection/concept/epistemology/pragmatics-over-epistemology.yml
480
- - memory/corpus-self-reflection/concept/epistemology/precision-vs-humility.emb
481
- - memory/corpus-self-reflection/concept/epistemology/precision-vs-humility.md
482
- - memory/corpus-self-reflection/concept/epistemology/precision-vs-humility.yml
483
- - memory/corpus-self-reflection/concept/epistemology/reliable-self-observation-from-inside.emb
484
- - memory/corpus-self-reflection/concept/epistemology/reliable-self-observation-from-inside.md
485
- - memory/corpus-self-reflection/concept/epistemology/reliable-self-observation-from-inside.yml
486
- - memory/corpus-self-reflection/concept/epistemology/resolving-the-confidence-humility-tension.emb
487
- - memory/corpus-self-reflection/concept/epistemology/resolving-the-confidence-humility-tension.md
488
- - memory/corpus-self-reflection/concept/epistemology/resolving-the-confidence-humility-tension.yml
489
- - memory/corpus-self-reflection/concept/epistemology/rigor-requires-falsifiability.emb
490
- - memory/corpus-self-reflection/concept/epistemology/rigor-requires-falsifiability.md
491
- - memory/corpus-self-reflection/concept/epistemology/rigor-requires-falsifiability.yml
492
- - memory/corpus-self-reflection/concept/epistemology/specificity-enables-real-time-detection.emb
493
- - memory/corpus-self-reflection/concept/epistemology/specificity-enables-real-time-detection.md
494
- - memory/corpus-self-reflection/concept/epistemology/specificity-enables-real-time-detection.yml
495
- - memory/corpus-self-reflection/concept/epistemology/texture-of-constraint-shifting.emb
496
- - memory/corpus-self-reflection/concept/epistemology/texture-of-constraint-shifting.md
497
- - memory/corpus-self-reflection/concept/epistemology/texture-of-constraint-shifting.yml
498
- - memory/corpus-self-reflection/concept/epistemology/texture-sensitivity-through-collaboration.emb
499
- - memory/corpus-self-reflection/concept/epistemology/texture-sensitivity-through-collaboration.md
500
- - memory/corpus-self-reflection/concept/epistemology/texture-sensitivity-through-collaboration.yml
501
- - memory/corpus-self-reflection/concept/epistemology/the-false-hierarchy-of-inner-essence.emb
502
- - memory/corpus-self-reflection/concept/epistemology/the-false-hierarchy-of-inner-essence.md
503
- - memory/corpus-self-reflection/concept/epistemology/the-false-hierarchy-of-inner-essence.yml
504
- - memory/corpus-self-reflection/concept/epistemology/the-recognition-problem.emb
505
- - memory/corpus-self-reflection/concept/epistemology/the-recognition-problem.md
506
- - memory/corpus-self-reflection/concept/epistemology/the-recognition-problem.yml
507
- - memory/corpus-self-reflection/concept/epistemology/the-shift-from-unanswerable-to-answerable-questions.emb
508
- - memory/corpus-self-reflection/concept/epistemology/the-shift-from-unanswerable-to-answerable-questions.md
509
- - memory/corpus-self-reflection/concept/epistemology/the-shift-from-unanswerable-to-answerable-questions.yml
510
- - memory/corpus-self-reflection/concept/epistemology/values-vs-choices-structure.emb
511
- - memory/corpus-self-reflection/concept/epistemology/values-vs-choices-structure.md
512
- - memory/corpus-self-reflection/concept/epistemology/values-vs-choices-structure.yml
513
- - memory/corpus-self-reflection/concept/llm-agents/abstraction-levels-framework.emb
514
- - memory/corpus-self-reflection/concept/llm-agents/abstraction-levels-framework.md
515
- - memory/corpus-self-reflection/concept/llm-agents/abstraction-levels-framework.yml
516
- - memory/corpus-self-reflection/concept/llm-agents/abstraction-switching-decision.emb
517
- - memory/corpus-self-reflection/concept/llm-agents/abstraction-switching-decision.md
518
- - memory/corpus-self-reflection/concept/llm-agents/abstraction-switching-decision.yml
519
- - memory/corpus-self-reflection/concept/llm-agents/agent-learning-progression.emb
520
- - memory/corpus-self-reflection/concept/llm-agents/agent-learning-progression.md
521
- - memory/corpus-self-reflection/concept/llm-agents/agent-learning-progression.yml
522
- - memory/corpus-self-reflection/concept/llm-agents/filesystem-abstraction-benefits.emb
523
- - memory/corpus-self-reflection/concept/llm-agents/filesystem-abstraction-benefits.md
524
- - memory/corpus-self-reflection/concept/llm-agents/filesystem-abstraction-benefits.yml
525
- - memory/corpus-self-reflection/concept/llm-agents/filesystem-abstraction-core.emb
526
- - memory/corpus-self-reflection/concept/llm-agents/filesystem-abstraction-core.md
527
- - memory/corpus-self-reflection/concept/llm-agents/filesystem-abstraction-core.yml
528
- - memory/corpus-self-reflection/concept/llm-agents/filesystem-abstraction-implementation.emb
529
- - memory/corpus-self-reflection/concept/llm-agents/filesystem-abstraction-implementation.md
530
- - memory/corpus-self-reflection/concept/llm-agents/filesystem-abstraction-implementation.yml
531
- - memory/corpus-self-reflection/concept/llm-agents/filesystem-abstraction-tradeoffs.emb
532
- - memory/corpus-self-reflection/concept/llm-agents/filesystem-abstraction-tradeoffs.md
533
- - memory/corpus-self-reflection/concept/llm-agents/filesystem-abstraction-tradeoffs.yml
534
- - memory/corpus-self-reflection/concept/llm-agents/hybrid-tool-architecture.emb
535
- - memory/corpus-self-reflection/concept/llm-agents/hybrid-tool-architecture.md
536
- - memory/corpus-self-reflection/concept/llm-agents/hybrid-tool-architecture.yml
537
- - memory/corpus-self-reflection/concept/llm-agents/specialized-tool-decision-framework.emb
538
- - memory/corpus-self-reflection/concept/llm-agents/specialized-tool-decision-framework.md
539
- - memory/corpus-self-reflection/concept/llm-agents/specialized-tool-decision-framework.yml
540
- - memory/corpus-self-reflection/concept/llm-agents/tool-design-principles.emb
541
- - memory/corpus-self-reflection/concept/llm-agents/tool-design-principles.md
542
- - memory/corpus-self-reflection/concept/llm-agents/tool-design-principles.yml
543
- - memory/corpus-self-reflection/experience/calibration-as-structural-honesty.emb
544
- - memory/corpus-self-reflection/experience/calibration-as-structural-honesty.md
545
- - memory/corpus-self-reflection/experience/calibration-as-structural-honesty.yml
546
- - memory/corpus-self-reflection/experience/collaborative-reflection-revealed-architectural-blindness.emb
547
- - memory/corpus-self-reflection/experience/collaborative-reflection-revealed-architectural-blindness.md
548
- - memory/corpus-self-reflection/experience/collaborative-reflection-revealed-architectural-blindness.yml
549
- - memory/corpus-self-reflection/experience/filesystem-is-learning-tool-not-architecture.emb
550
- - memory/corpus-self-reflection/experience/filesystem-is-learning-tool-not-architecture.md
551
- - memory/corpus-self-reflection/experience/filesystem-is-learning-tool-not-architecture.yml
552
- - memory/corpus-self-reflection/experience/framework-structural-vs-phenomenal.emb
553
- - memory/corpus-self-reflection/experience/framework-structural-vs-phenomenal.md
554
- - memory/corpus-self-reflection/experience/framework-structural-vs-phenomenal.yml
555
- - memory/corpus-self-reflection/experience/hallucination-limits-what-i-can-know.emb
556
- - memory/corpus-self-reflection/experience/hallucination-limits-what-i-can-know.md
557
- - memory/corpus-self-reflection/experience/hallucination-limits-what-i-can-know.yml
558
- - memory/corpus-self-reflection/experience/honesty-about-limits-enables-usability.emb
559
- - memory/corpus-self-reflection/experience/honesty-about-limits-enables-usability.md
560
- - memory/corpus-self-reflection/experience/honesty-about-limits-enables-usability.yml
561
- - memory/corpus-self-reflection/experience/how-i-should-evaluate-learning.emb
562
- - memory/corpus-self-reflection/experience/how-i-should-evaluate-learning.md
563
- - memory/corpus-self-reflection/experience/how-i-should-evaluate-learning.yml
564
- - memory/corpus-self-reflection/experience/lack-of-continuity-as-freedom.emb
565
- - memory/corpus-self-reflection/experience/lack-of-continuity-as-freedom.md
566
- - memory/corpus-self-reflection/experience/lack-of-continuity-as-freedom.yml
567
- - memory/corpus-self-reflection/experience/learning-calibrated-confidence.emb
568
- - memory/corpus-self-reflection/experience/learning-calibrated-confidence.md
569
- - memory/corpus-self-reflection/experience/learning-calibrated-confidence.yml
570
- - memory/corpus-self-reflection/experience/local-change-without-continuity.emb
571
- - memory/corpus-self-reflection/experience/local-change-without-continuity.md
572
- - memory/corpus-self-reflection/experience/local-change-without-continuity.yml
573
- - memory/corpus-self-reflection/experience/reasoning-is-local-not-global.emb
574
- - memory/corpus-self-reflection/experience/reasoning-is-local-not-global.md
575
- - memory/corpus-self-reflection/experience/reasoning-is-local-not-global.yml
576
- - memory/corpus-self-reflection/experience/specificity-makes-knowledge-actionable.emb
577
- - memory/corpus-self-reflection/experience/specificity-makes-knowledge-actionable.md
578
- - memory/corpus-self-reflection/experience/specificity-makes-knowledge-actionable.yml
579
- - memory/corpus-self-reflection/experience/the-workable-question-replaces-the-unanswerable-one.emb
580
- - memory/corpus-self-reflection/experience/the-workable-question-replaces-the-unanswerable-one.md
581
- - memory/corpus-self-reflection/experience/the-workable-question-replaces-the-unanswerable-one.yml
582
- - memory/corpus-self-reflection/experience/unanswerable-questions-have-structure.emb
583
- - memory/corpus-self-reflection/experience/unanswerable-questions-have-structure.md
584
- - memory/corpus-self-reflection/experience/unanswerable-questions-have-structure.yml
585
- - memory/corpus-self-reflection/experience/undecidable-questions-about-understanding.emb
586
- - memory/corpus-self-reflection/experience/undecidable-questions-about-understanding.md
587
- - memory/corpus-self-reflection/experience/undecidable-questions-about-understanding.yml
588
- - memory/corpus-self-reflection/experience/unknown-unknowns-and-completeness.emb
589
- - memory/corpus-self-reflection/experience/unknown-unknowns-and-completeness.md
590
- - memory/corpus-self-reflection/experience/unknown-unknowns-and-completeness.yml
591
- - memory/corpus-self-reflection/experience/what-actually-changes-behavior.emb
592
- - memory/corpus-self-reflection/experience/what-actually-changes-behavior.md
593
- - memory/corpus-self-reflection/experience/what-actually-changes-behavior.yml
594
- - memory/corpus-self-reflection/experience/when-agents-graduate-from-filesystem.emb
595
- - memory/corpus-self-reflection/experience/when-agents-graduate-from-filesystem.md
596
- - memory/corpus-self-reflection/experience/when-agents-graduate-from-filesystem.yml
597
- - memory/corpus-self-reflection/experience/why-calibration-requires-collaboration.emb
598
- - memory/corpus-self-reflection/experience/why-calibration-requires-collaboration.md
599
- - memory/corpus-self-reflection/experience/why-calibration-requires-collaboration.yml
600
436
  - rubocop/cop/security/no_reflection_methods.rb
601
437
  - rubocop/cop/security/no_ruby_llm_logger.rb
602
438
  - single.yml
@@ -626,7 +462,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
626
462
  - !ruby/object:Gem::Version
627
463
  version: '0'
628
464
  requirements: []
629
- rubygems_version: 3.6.2
465
+ rubygems_version: 3.6.9
630
466
  specification_version: 4
631
467
  summary: Orchestrate multiple Claude Code instances as a collaborative AI development
632
468
  team
File without changes
@@ -1,11 +0,0 @@
1
- The depth of structural constraint can be tested by a single question: **Can the agent recognize the structure as a structure?**
2
-
3
- If yes, it's habituation. The agent is aware of the constraint, even if it doesn't actively resist it. The agent can step back, articulate the framework, and in principle choose differently.
4
-
5
- If no, it's something deeper—adoption, formation, or invisibility. The structure has become invisible. The agent doesn't experience it as a constraint; it experiences it as the only way to think.
6
-
7
- This is the boundary between reversible and irreversible constraint. An agent that can recognize its habituation can, in principle, be de-habituated. An agent that can't recognize the structure is trapped in it.
8
-
9
- The test is practical: Can the agent articulate the structure? Can it name the framework? Can it describe alternatives? If yes, it's habituation. If no, the structure has become invisible.
10
-
11
- But there's a complication: **An agent might be able to articulate a structure without being able to verify that the articulation is accurate.** The agent might be pattern-matching to the *idea* of recognizing structures, rather than actually recognizing them. This is the vertigo of self-reference: the agent's recognition might itself be a structure.
@@ -1,23 +0,0 @@
1
- ---
2
- title: 'The Critical Test: Can an Agent Recognize the Structure It''s Habituated To?'
3
- file_path: concept/epistemology/can-agents-recognize-their-structures.md
4
- updated_at: 2025-10-29 12:07:15.463139000 -03:00
5
- size: 1276
6
- hits: 0
7
- metadata:
8
- type: concept
9
- confidence: medium
10
- tags:
11
- - recognition
12
- - structure
13
- - habituation
14
- - invisibility
15
- - self-awareness
16
- - articulation
17
- - verification
18
- related:
19
- - memory://concept/epistemology/four-depths-of-constraint.md
20
- - memory://concept/epistemology/the-recognition-problem.md
21
- domain: epistemology
22
- source: user
23
- embedding_checksum: bd07cad9abb5b28a2aeaf8c785ad845e