robot_lab 0.3.0 → 0.5.0

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 (274) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +60 -0
  3. data/README.md +29 -19
  4. data/lib/robot_lab/errors.rb +4 -0
  5. data/lib/robot_lab/hook_context.rb +9 -2
  6. data/lib/robot_lab/mcp/registry.rb +99 -0
  7. data/lib/robot_lab/mcp/server.rb +47 -83
  8. data/lib/robot_lab/mcp/server_discovery.rb +22 -9
  9. data/lib/robot_lab/mcp.rb +259 -0
  10. data/lib/robot_lab/robot/mcp_management.rb +159 -105
  11. data/lib/robot_lab/robot/tool_call_gating.rb +144 -0
  12. data/lib/robot_lab/robot.rb +72 -99
  13. data/lib/robot_lab/run_config.rb +3 -2
  14. data/lib/robot_lab/tool.rb +8 -23
  15. data/lib/robot_lab/version.rb +1 -1
  16. data/lib/robot_lab.rb +1 -4
  17. metadata +16 -292
  18. data/.architecture/AGENTS.md +0 -32
  19. data/.architecture/config.yml +0 -8
  20. data/.architecture/members.yml +0 -60
  21. data/.architecture/reviews/feature-free-will.md +0 -490
  22. data/.architecture/reviews/overall-codebase.md +0 -427
  23. data/.claude/settings.local.json +0 -57
  24. data/.codex/config.toml +0 -2
  25. data/.envrc +0 -6
  26. data/.github/workflows/deploy-github-pages.yml +0 -52
  27. data/.irbrc +0 -6
  28. data/.loki +0 -65
  29. data/.quality/reek_baseline.txt +0 -43
  30. data/.rubocop.yml +0 -10
  31. data/Archspec.rb +0 -44
  32. data/CLAUDE.md +0 -141
  33. data/COMMITS.md +0 -196
  34. data/Rakefile +0 -193
  35. data/_typos.toml +0 -21
  36. data/agent2agent_review.md +0 -192
  37. data/agentf_improvements.md +0 -253
  38. data/agents.md +0 -14
  39. data/docs/api/core/index.md +0 -147
  40. data/docs/api/core/memory.md +0 -578
  41. data/docs/api/core/network.md +0 -553
  42. data/docs/api/core/result.md +0 -211
  43. data/docs/api/core/robot.md +0 -1667
  44. data/docs/api/core/state.md +0 -145
  45. data/docs/api/core/tool.md +0 -520
  46. data/docs/api/errors.md +0 -323
  47. data/docs/api/hooks.md +0 -469
  48. data/docs/api/index.md +0 -137
  49. data/docs/api/mcp/client.md +0 -387
  50. data/docs/api/mcp/index.md +0 -267
  51. data/docs/api/mcp/server.md +0 -252
  52. data/docs/api/mcp/transports.md +0 -339
  53. data/docs/api/messages/index.md +0 -126
  54. data/docs/api/messages/text-message.md +0 -170
  55. data/docs/api/messages/tool-call-message.md +0 -206
  56. data/docs/api/messages/tool-result-message.md +0 -242
  57. data/docs/api/messages/user-message.md +0 -232
  58. data/docs/api/skills.md +0 -423
  59. data/docs/api/streaming/context.md +0 -280
  60. data/docs/api/streaming/events.md +0 -185
  61. data/docs/api/streaming/index.md +0 -156
  62. data/docs/api/support.md +0 -846
  63. data/docs/architecture/core-concepts.md +0 -575
  64. data/docs/architecture/index.md +0 -252
  65. data/docs/architecture/message-flow.md +0 -366
  66. data/docs/architecture/network-orchestration.md +0 -478
  67. data/docs/architecture/robot-execution.md +0 -396
  68. data/docs/architecture/state-management.md +0 -410
  69. data/docs/assets/css/custom.css +0 -56
  70. data/docs/assets/images/robot_lab.jpg +0 -0
  71. data/docs/concepts.md +0 -641
  72. data/docs/examples/basic-chat.md +0 -258
  73. data/docs/examples/index.md +0 -425
  74. data/docs/examples/mcp-server.md +0 -403
  75. data/docs/examples/multi-robot-network.md +0 -476
  76. data/docs/examples/tool-usage.md +0 -468
  77. data/docs/getting-started/configuration.md +0 -645
  78. data/docs/getting-started/index.md +0 -56
  79. data/docs/getting-started/installation.md +0 -197
  80. data/docs/getting-started/quick-start.md +0 -293
  81. data/docs/guides/building-robots.md +0 -1187
  82. data/docs/guides/creating-networks.md +0 -736
  83. data/docs/guides/hooks.md +0 -1206
  84. data/docs/guides/index.md +0 -78
  85. data/docs/guides/knowledge.md +0 -219
  86. data/docs/guides/mcp-integration.md +0 -740
  87. data/docs/guides/memory.md +0 -458
  88. data/docs/guides/observability.md +0 -733
  89. data/docs/guides/streaming.md +0 -323
  90. data/docs/guides/using-tools.md +0 -780
  91. data/docs/index.md +0 -280
  92. data/docs/superpowers/plans/2026-05-06-agentskills.md +0 -1303
  93. data/docs/superpowers/specs/2026-05-06-agentskills-design.md +0 -247
  94. data/examples/.envrc +0 -3
  95. data/examples/01_simple_robot.rb +0 -31
  96. data/examples/02_tools.rb +0 -109
  97. data/examples/03_network.rb +0 -118
  98. data/examples/04_mcp.rb +0 -217
  99. data/examples/05_streaming.rb +0 -137
  100. data/examples/06_prompt_templates.rb +0 -325
  101. data/examples/07_network_memory.rb +0 -313
  102. data/examples/08_llm_config.rb +0 -162
  103. data/examples/09_chaining.rb +0 -251
  104. data/examples/10_memory.rb +0 -315
  105. data/examples/11_network_introspection.rb +0 -239
  106. data/examples/12_message_bus.rb +0 -67
  107. data/examples/13_spawn.rb +0 -85
  108. data/examples/14_rusty_circuit/.envrc +0 -1
  109. data/examples/14_rusty_circuit/.gitignore +0 -1
  110. data/examples/14_rusty_circuit/README.md +0 -1
  111. data/examples/14_rusty_circuit/comic.rb +0 -149
  112. data/examples/14_rusty_circuit/display.rb +0 -217
  113. data/examples/14_rusty_circuit/heckler.rb +0 -65
  114. data/examples/14_rusty_circuit/open_mic.rb +0 -132
  115. data/examples/14_rusty_circuit/prompts/open_mic_comic.md +0 -20
  116. data/examples/14_rusty_circuit/prompts/open_mic_heckler.md +0 -23
  117. data/examples/14_rusty_circuit/prompts/open_mic_scout.md +0 -20
  118. data/examples/14_rusty_circuit/scout.rb +0 -165
  119. data/examples/14_rusty_circuit/show.log +0 -234
  120. data/examples/15_memory_network_and_bus/.envrc +0 -1
  121. data/examples/15_memory_network_and_bus/README.md +0 -66
  122. data/examples/15_memory_network_and_bus/editor_in_chief.rb +0 -24
  123. data/examples/15_memory_network_and_bus/editorial_pipeline.rb +0 -213
  124. data/examples/15_memory_network_and_bus/linux_writer.rb +0 -80
  125. data/examples/15_memory_network_and_bus/os_editor.rb +0 -48
  126. data/examples/15_memory_network_and_bus/os_writer.rb +0 -49
  127. data/examples/15_memory_network_and_bus/output/combined_article.md +0 -11
  128. data/examples/15_memory_network_and_bus/output/final_article.md +0 -8
  129. data/examples/15_memory_network_and_bus/output/linux_draft.md +0 -7
  130. data/examples/15_memory_network_and_bus/output/mac_draft.md +0 -7
  131. data/examples/15_memory_network_and_bus/output/memory.json +0 -13
  132. data/examples/15_memory_network_and_bus/output/revision_1.md +0 -29
  133. data/examples/15_memory_network_and_bus/output/revision_2.md +0 -50
  134. data/examples/15_memory_network_and_bus/output/revision_3.md +0 -8
  135. data/examples/15_memory_network_and_bus/output/windows_draft.md +0 -7
  136. data/examples/15_memory_network_and_bus/prompts/os_advocate.md +0 -13
  137. data/examples/15_memory_network_and_bus/prompts/os_chief.md +0 -13
  138. data/examples/15_memory_network_and_bus/prompts/os_editor.md +0 -13
  139. data/examples/16_writers_room/.envrc +0 -1
  140. data/examples/16_writers_room/display.rb +0 -158
  141. data/examples/16_writers_room/output/.gitignore +0 -4
  142. data/examples/16_writers_room/output/README.md +0 -69
  143. data/examples/16_writers_room/output/opus_001.md +0 -263
  144. data/examples/16_writers_room/output/opus_001_notes.log +0 -470
  145. data/examples/16_writers_room/output/opus_002.md +0 -245
  146. data/examples/16_writers_room/output/opus_002_notes.log +0 -546
  147. data/examples/16_writers_room/output/opus_002_screenplay.md +0 -7989
  148. data/examples/16_writers_room/output/opus_002_screenplay_notes.md +0 -993
  149. data/examples/16_writers_room/prompts/screenplay_writer.md +0 -66
  150. data/examples/16_writers_room/prompts/writer.md +0 -37
  151. data/examples/16_writers_room/room.rb +0 -186
  152. data/examples/16_writers_room/tools.rb +0 -173
  153. data/examples/16_writers_room/writer.rb +0 -121
  154. data/examples/16_writers_room/writers_room.rb +0 -256
  155. data/examples/17_skills.rb +0 -234
  156. data/examples/18_rails/.envrc +0 -3
  157. data/examples/18_rails/.gitignore +0 -5
  158. data/examples/18_rails/Gemfile +0 -11
  159. data/examples/18_rails/README.md +0 -67
  160. data/examples/18_rails/Rakefile +0 -4
  161. data/examples/18_rails/app/controllers/application_controller.rb +0 -4
  162. data/examples/18_rails/app/controllers/chat_controller.rb +0 -50
  163. data/examples/18_rails/app/jobs/application_job.rb +0 -4
  164. data/examples/18_rails/app/jobs/robot_run_job.rb +0 -25
  165. data/examples/18_rails/app/models/application_record.rb +0 -5
  166. data/examples/18_rails/app/models/robot_lab_result.rb +0 -36
  167. data/examples/18_rails/app/models/robot_lab_thread.rb +0 -23
  168. data/examples/18_rails/app/robots/chat_robot.rb +0 -25
  169. data/examples/18_rails/app/tools/time_tool.rb +0 -9
  170. data/examples/18_rails/app/views/chat/_user_message.html.erb +0 -1
  171. data/examples/18_rails/app/views/chat/index.html.erb +0 -67
  172. data/examples/18_rails/app/views/layouts/application.html.erb +0 -49
  173. data/examples/18_rails/bin/dev +0 -7
  174. data/examples/18_rails/bin/rails +0 -6
  175. data/examples/18_rails/bin/setup +0 -15
  176. data/examples/18_rails/config/application.rb +0 -33
  177. data/examples/18_rails/config/cable.yml +0 -2
  178. data/examples/18_rails/config/database.yml +0 -5
  179. data/examples/18_rails/config/environment.rb +0 -4
  180. data/examples/18_rails/config/initializers/robot_lab.rb +0 -11
  181. data/examples/18_rails/config/routes.rb +0 -6
  182. data/examples/18_rails/config.ru +0 -4
  183. data/examples/18_rails/db/migrate/001_create_robot_lab_tables.rb +0 -32
  184. data/examples/19_token_tracking.rb +0 -138
  185. data/examples/20_circuit_breaker.rb +0 -147
  186. data/examples/21_learning_loop.rb +0 -181
  187. data/examples/22_context_compression.rb +0 -172
  188. data/examples/23_convergence.rb +0 -133
  189. data/examples/24_structured_delegation.rb +0 -151
  190. data/examples/25_history_search/conversation.jsonl +0 -30
  191. data/examples/25_history_search.rb +0 -133
  192. data/examples/26_document_store/api_versioning_adr.md +0 -52
  193. data/examples/26_document_store/incident_postmortem.md +0 -46
  194. data/examples/26_document_store/postgres_runbook.md +0 -49
  195. data/examples/26_document_store/redis_caching_guide.md +0 -48
  196. data/examples/26_document_store/sidekiq_guide.md +0 -51
  197. data/examples/26_document_store.rb +0 -140
  198. data/examples/27_incident_response/README.md +0 -65
  199. data/examples/27_incident_response/incident_response.rb +0 -261
  200. data/examples/28_mcp_discovery.rb +0 -113
  201. data/examples/29_ractor_tools.rb +0 -240
  202. data/examples/30_ractor_network.rb +0 -252
  203. data/examples/31_launch_assessment.rb +0 -246
  204. data/examples/32_newsletter_reader.rb +0 -193
  205. data/examples/33_stock_generator.rb +0 -80
  206. data/examples/33_stock_predictor.rb +0 -327
  207. data/examples/34_agentskills.rb +0 -76
  208. data/examples/35_hooks.rb +0 -266
  209. data/examples/README.md +0 -550
  210. data/examples/common.rb +0 -180
  211. data/examples/prompts/assistant.md +0 -5
  212. data/examples/prompts/audit_trail.md +0 -8
  213. data/examples/prompts/billing.md +0 -10
  214. data/examples/prompts/classifier.md +0 -7
  215. data/examples/prompts/comedian.md +0 -6
  216. data/examples/prompts/comedy_critic.md +0 -10
  217. data/examples/prompts/configurable.md +0 -9
  218. data/examples/prompts/dispatcher.md +0 -12
  219. data/examples/prompts/entity_extractor.md +0 -14
  220. data/examples/prompts/escalation.md +0 -42
  221. data/examples/prompts/frontmatter_mcp_test.md +0 -9
  222. data/examples/prompts/frontmatter_named_test.md +0 -5
  223. data/examples/prompts/frontmatter_tools_test.md +0 -6
  224. data/examples/prompts/general.md +0 -7
  225. data/examples/prompts/github_assistant.md +0 -14
  226. data/examples/prompts/helper.md +0 -4
  227. data/examples/prompts/incident_responder.md +0 -18
  228. data/examples/prompts/keyword_extractor.md +0 -11
  229. data/examples/prompts/llm_config_demo.md +0 -20
  230. data/examples/prompts/order_support.md +0 -35
  231. data/examples/prompts/os_advocate.md +0 -13
  232. data/examples/prompts/os_chief.md +0 -13
  233. data/examples/prompts/os_editor.md +0 -13
  234. data/examples/prompts/parameterized_main_test.md +0 -6
  235. data/examples/prompts/pii_redactor.md +0 -7
  236. data/examples/prompts/product_support.md +0 -37
  237. data/examples/prompts/runbook_protocol.md +0 -12
  238. data/examples/prompts/sentiment_analyzer.md +0 -12
  239. data/examples/prompts/skill_a_test.md +0 -4
  240. data/examples/prompts/skill_b_test.md +0 -4
  241. data/examples/prompts/skill_config_test.md +0 -5
  242. data/examples/prompts/skill_cycle_a_test.md +0 -6
  243. data/examples/prompts/skill_cycle_b_test.md +0 -6
  244. data/examples/prompts/skill_description_test.md +0 -4
  245. data/examples/prompts/skill_leaf_test.md +0 -4
  246. data/examples/prompts/skill_nested_test.md +0 -6
  247. data/examples/prompts/skill_refs_main_test.md +0 -6
  248. data/examples/prompts/skill_self_ref_test.md +0 -6
  249. data/examples/prompts/skill_with_mcp_test.md +0 -9
  250. data/examples/prompts/skill_with_params_test.md +0 -6
  251. data/examples/prompts/skill_with_robot_name_test.md +0 -5
  252. data/examples/prompts/skill_with_tools_test.md +0 -6
  253. data/examples/prompts/sre_compliance.md +0 -10
  254. data/examples/prompts/structured_output.md +0 -7
  255. data/examples/prompts/synthesizer.md +0 -17
  256. data/examples/prompts/technical.md +0 -10
  257. data/examples/prompts/template_with_skills_test.md +0 -6
  258. data/examples/prompts/triage.md +0 -22
  259. data/examples/ruboruby.md +0 -423
  260. data/examples/run_all.rb +0 -60
  261. data/examples/xyzzy.rb +0 -97
  262. data/lib/robot_lab/mcp/client.rb +0 -223
  263. data/lib/robot_lab/mcp/connection_poller.rb +0 -195
  264. data/lib/robot_lab/mcp/transports/base.rb +0 -64
  265. data/lib/robot_lab/mcp/transports/sse.rb +0 -120
  266. data/lib/robot_lab/mcp/transports/stdio.rb +0 -170
  267. data/lib/robot_lab/mcp/transports/streamable_http.rb +0 -141
  268. data/lib/robot_lab/mcp/transports/websocket.rb +0 -111
  269. data/logfile +0 -8
  270. data/mkdocs.yml +0 -209
  271. data/robot_concurrency.md +0 -38
  272. data/simple_acp_review.md +0 -298
  273. data/temp.md +0 -6
  274. data/tool_manifest_plan.md +0 -155
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: robot_lab
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dewayne VanHoozer
@@ -41,16 +41,22 @@ dependencies:
41
41
  name: ruby_llm
42
42
  requirement: !ruby/object:Gem::Requirement
43
43
  requirements:
44
- - - "~>"
44
+ - - ">="
45
45
  - !ruby/object:Gem::Version
46
- version: '2.0'
46
+ version: 2.1.1
47
+ - - "<"
48
+ - !ruby/object:Gem::Version
49
+ version: '3'
47
50
  type: :runtime
48
51
  prerelease: false
49
52
  version_requirements: !ruby/object:Gem::Requirement
50
53
  requirements:
51
- - - "~>"
54
+ - - ">="
52
55
  - !ruby/object:Gem::Version
53
- version: '2.0'
56
+ version: 2.1.1
57
+ - - "<"
58
+ - !ruby/object:Gem::Version
59
+ version: '3'
54
60
  - !ruby/object:Gem::Dependency
55
61
  name: ruby_llm-providers-apfel
56
62
  requirement: !ruby/object:Gem::Requirement
@@ -149,34 +155,6 @@ dependencies:
149
155
  - - "~>"
150
156
  - !ruby/object:Gem::Version
151
157
  version: '0.2'
152
- - !ruby/object:Gem::Dependency
153
- name: async-http
154
- requirement: !ruby/object:Gem::Requirement
155
- requirements:
156
- - - "~>"
157
- - !ruby/object:Gem::Version
158
- version: '0.60'
159
- type: :runtime
160
- prerelease: false
161
- version_requirements: !ruby/object:Gem::Requirement
162
- requirements:
163
- - - "~>"
164
- - !ruby/object:Gem::Version
165
- version: '0.60'
166
- - !ruby/object:Gem::Dependency
167
- name: async-websocket
168
- requirement: !ruby/object:Gem::Requirement
169
- requirements:
170
- - - "~>"
171
- - !ruby/object:Gem::Version
172
- version: '0.30'
173
- type: :runtime
174
- prerelease: false
175
- version_requirements: !ruby/object:Gem::Requirement
176
- requirements:
177
- - - "~>"
178
- - !ruby/object:Gem::Version
179
- version: '0.30'
180
158
  description: |
181
159
  RobotLab is a Ruby framework for building and orchestrating multi-robot LLM workflows.
182
160
  Built on ruby_llm, it provides robots with template-based prompts, tools, and shared
@@ -192,253 +170,9 @@ executables: []
192
170
  extensions: []
193
171
  extra_rdoc_files: []
194
172
  files:
195
- - ".architecture/AGENTS.md"
196
- - ".architecture/config.yml"
197
- - ".architecture/members.yml"
198
- - ".architecture/reviews/feature-free-will.md"
199
- - ".architecture/reviews/overall-codebase.md"
200
- - ".claude/settings.local.json"
201
- - ".codex/config.toml"
202
- - ".envrc"
203
- - ".github/workflows/deploy-github-pages.yml"
204
- - ".irbrc"
205
- - ".loki"
206
- - ".quality/reek_baseline.txt"
207
- - ".rubocop.yml"
208
- - Archspec.rb
209
173
  - CHANGELOG.md
210
- - CLAUDE.md
211
- - COMMITS.md
212
174
  - LICENSE.txt
213
175
  - README.md
214
- - Rakefile
215
- - _typos.toml
216
- - agent2agent_review.md
217
- - agentf_improvements.md
218
- - agents.md
219
- - docs/api/core/index.md
220
- - docs/api/core/memory.md
221
- - docs/api/core/network.md
222
- - docs/api/core/result.md
223
- - docs/api/core/robot.md
224
- - docs/api/core/state.md
225
- - docs/api/core/tool.md
226
- - docs/api/errors.md
227
- - docs/api/hooks.md
228
- - docs/api/index.md
229
- - docs/api/mcp/client.md
230
- - docs/api/mcp/index.md
231
- - docs/api/mcp/server.md
232
- - docs/api/mcp/transports.md
233
- - docs/api/messages/index.md
234
- - docs/api/messages/text-message.md
235
- - docs/api/messages/tool-call-message.md
236
- - docs/api/messages/tool-result-message.md
237
- - docs/api/messages/user-message.md
238
- - docs/api/skills.md
239
- - docs/api/streaming/context.md
240
- - docs/api/streaming/events.md
241
- - docs/api/streaming/index.md
242
- - docs/api/support.md
243
- - docs/architecture/core-concepts.md
244
- - docs/architecture/index.md
245
- - docs/architecture/message-flow.md
246
- - docs/architecture/network-orchestration.md
247
- - docs/architecture/robot-execution.md
248
- - docs/architecture/state-management.md
249
- - docs/assets/css/custom.css
250
- - docs/assets/images/robot_lab.jpg
251
- - docs/concepts.md
252
- - docs/examples/basic-chat.md
253
- - docs/examples/index.md
254
- - docs/examples/mcp-server.md
255
- - docs/examples/multi-robot-network.md
256
- - docs/examples/tool-usage.md
257
- - docs/getting-started/configuration.md
258
- - docs/getting-started/index.md
259
- - docs/getting-started/installation.md
260
- - docs/getting-started/quick-start.md
261
- - docs/guides/building-robots.md
262
- - docs/guides/creating-networks.md
263
- - docs/guides/hooks.md
264
- - docs/guides/index.md
265
- - docs/guides/knowledge.md
266
- - docs/guides/mcp-integration.md
267
- - docs/guides/memory.md
268
- - docs/guides/observability.md
269
- - docs/guides/streaming.md
270
- - docs/guides/using-tools.md
271
- - docs/index.md
272
- - docs/superpowers/plans/2026-05-06-agentskills.md
273
- - docs/superpowers/specs/2026-05-06-agentskills-design.md
274
- - examples/.envrc
275
- - examples/01_simple_robot.rb
276
- - examples/02_tools.rb
277
- - examples/03_network.rb
278
- - examples/04_mcp.rb
279
- - examples/05_streaming.rb
280
- - examples/06_prompt_templates.rb
281
- - examples/07_network_memory.rb
282
- - examples/08_llm_config.rb
283
- - examples/09_chaining.rb
284
- - examples/10_memory.rb
285
- - examples/11_network_introspection.rb
286
- - examples/12_message_bus.rb
287
- - examples/13_spawn.rb
288
- - examples/14_rusty_circuit/.envrc
289
- - examples/14_rusty_circuit/.gitignore
290
- - examples/14_rusty_circuit/README.md
291
- - examples/14_rusty_circuit/comic.rb
292
- - examples/14_rusty_circuit/display.rb
293
- - examples/14_rusty_circuit/heckler.rb
294
- - examples/14_rusty_circuit/open_mic.rb
295
- - examples/14_rusty_circuit/prompts/open_mic_comic.md
296
- - examples/14_rusty_circuit/prompts/open_mic_heckler.md
297
- - examples/14_rusty_circuit/prompts/open_mic_scout.md
298
- - examples/14_rusty_circuit/scout.rb
299
- - examples/14_rusty_circuit/show.log
300
- - examples/15_memory_network_and_bus/.envrc
301
- - examples/15_memory_network_and_bus/README.md
302
- - examples/15_memory_network_and_bus/editor_in_chief.rb
303
- - examples/15_memory_network_and_bus/editorial_pipeline.rb
304
- - examples/15_memory_network_and_bus/linux_writer.rb
305
- - examples/15_memory_network_and_bus/os_editor.rb
306
- - examples/15_memory_network_and_bus/os_writer.rb
307
- - examples/15_memory_network_and_bus/output/combined_article.md
308
- - examples/15_memory_network_and_bus/output/final_article.md
309
- - examples/15_memory_network_and_bus/output/linux_draft.md
310
- - examples/15_memory_network_and_bus/output/mac_draft.md
311
- - examples/15_memory_network_and_bus/output/memory.json
312
- - examples/15_memory_network_and_bus/output/revision_1.md
313
- - examples/15_memory_network_and_bus/output/revision_2.md
314
- - examples/15_memory_network_and_bus/output/revision_3.md
315
- - examples/15_memory_network_and_bus/output/windows_draft.md
316
- - examples/15_memory_network_and_bus/prompts/os_advocate.md
317
- - examples/15_memory_network_and_bus/prompts/os_chief.md
318
- - examples/15_memory_network_and_bus/prompts/os_editor.md
319
- - examples/16_writers_room/.envrc
320
- - examples/16_writers_room/display.rb
321
- - examples/16_writers_room/output/.gitignore
322
- - examples/16_writers_room/output/README.md
323
- - examples/16_writers_room/output/opus_001.md
324
- - examples/16_writers_room/output/opus_001_notes.log
325
- - examples/16_writers_room/output/opus_002.md
326
- - examples/16_writers_room/output/opus_002_notes.log
327
- - examples/16_writers_room/output/opus_002_screenplay.md
328
- - examples/16_writers_room/output/opus_002_screenplay_notes.md
329
- - examples/16_writers_room/prompts/screenplay_writer.md
330
- - examples/16_writers_room/prompts/writer.md
331
- - examples/16_writers_room/room.rb
332
- - examples/16_writers_room/tools.rb
333
- - examples/16_writers_room/writer.rb
334
- - examples/16_writers_room/writers_room.rb
335
- - examples/17_skills.rb
336
- - examples/18_rails/.envrc
337
- - examples/18_rails/.gitignore
338
- - examples/18_rails/Gemfile
339
- - examples/18_rails/README.md
340
- - examples/18_rails/Rakefile
341
- - examples/18_rails/app/controllers/application_controller.rb
342
- - examples/18_rails/app/controllers/chat_controller.rb
343
- - examples/18_rails/app/jobs/application_job.rb
344
- - examples/18_rails/app/jobs/robot_run_job.rb
345
- - examples/18_rails/app/models/application_record.rb
346
- - examples/18_rails/app/models/robot_lab_result.rb
347
- - examples/18_rails/app/models/robot_lab_thread.rb
348
- - examples/18_rails/app/robots/chat_robot.rb
349
- - examples/18_rails/app/tools/time_tool.rb
350
- - examples/18_rails/app/views/chat/_user_message.html.erb
351
- - examples/18_rails/app/views/chat/index.html.erb
352
- - examples/18_rails/app/views/layouts/application.html.erb
353
- - examples/18_rails/bin/dev
354
- - examples/18_rails/bin/rails
355
- - examples/18_rails/bin/setup
356
- - examples/18_rails/config.ru
357
- - examples/18_rails/config/application.rb
358
- - examples/18_rails/config/cable.yml
359
- - examples/18_rails/config/database.yml
360
- - examples/18_rails/config/environment.rb
361
- - examples/18_rails/config/initializers/robot_lab.rb
362
- - examples/18_rails/config/routes.rb
363
- - examples/18_rails/db/migrate/001_create_robot_lab_tables.rb
364
- - examples/19_token_tracking.rb
365
- - examples/20_circuit_breaker.rb
366
- - examples/21_learning_loop.rb
367
- - examples/22_context_compression.rb
368
- - examples/23_convergence.rb
369
- - examples/24_structured_delegation.rb
370
- - examples/25_history_search.rb
371
- - examples/25_history_search/conversation.jsonl
372
- - examples/26_document_store.rb
373
- - examples/26_document_store/api_versioning_adr.md
374
- - examples/26_document_store/incident_postmortem.md
375
- - examples/26_document_store/postgres_runbook.md
376
- - examples/26_document_store/redis_caching_guide.md
377
- - examples/26_document_store/sidekiq_guide.md
378
- - examples/27_incident_response/README.md
379
- - examples/27_incident_response/incident_response.rb
380
- - examples/28_mcp_discovery.rb
381
- - examples/29_ractor_tools.rb
382
- - examples/30_ractor_network.rb
383
- - examples/31_launch_assessment.rb
384
- - examples/32_newsletter_reader.rb
385
- - examples/33_stock_generator.rb
386
- - examples/33_stock_predictor.rb
387
- - examples/34_agentskills.rb
388
- - examples/35_hooks.rb
389
- - examples/README.md
390
- - examples/common.rb
391
- - examples/prompts/assistant.md
392
- - examples/prompts/audit_trail.md
393
- - examples/prompts/billing.md
394
- - examples/prompts/classifier.md
395
- - examples/prompts/comedian.md
396
- - examples/prompts/comedy_critic.md
397
- - examples/prompts/configurable.md
398
- - examples/prompts/dispatcher.md
399
- - examples/prompts/entity_extractor.md
400
- - examples/prompts/escalation.md
401
- - examples/prompts/frontmatter_mcp_test.md
402
- - examples/prompts/frontmatter_named_test.md
403
- - examples/prompts/frontmatter_tools_test.md
404
- - examples/prompts/general.md
405
- - examples/prompts/github_assistant.md
406
- - examples/prompts/helper.md
407
- - examples/prompts/incident_responder.md
408
- - examples/prompts/keyword_extractor.md
409
- - examples/prompts/llm_config_demo.md
410
- - examples/prompts/order_support.md
411
- - examples/prompts/os_advocate.md
412
- - examples/prompts/os_chief.md
413
- - examples/prompts/os_editor.md
414
- - examples/prompts/parameterized_main_test.md
415
- - examples/prompts/pii_redactor.md
416
- - examples/prompts/product_support.md
417
- - examples/prompts/runbook_protocol.md
418
- - examples/prompts/sentiment_analyzer.md
419
- - examples/prompts/skill_a_test.md
420
- - examples/prompts/skill_b_test.md
421
- - examples/prompts/skill_config_test.md
422
- - examples/prompts/skill_cycle_a_test.md
423
- - examples/prompts/skill_cycle_b_test.md
424
- - examples/prompts/skill_description_test.md
425
- - examples/prompts/skill_leaf_test.md
426
- - examples/prompts/skill_nested_test.md
427
- - examples/prompts/skill_refs_main_test.md
428
- - examples/prompts/skill_self_ref_test.md
429
- - examples/prompts/skill_with_mcp_test.md
430
- - examples/prompts/skill_with_params_test.md
431
- - examples/prompts/skill_with_robot_name_test.md
432
- - examples/prompts/skill_with_tools_test.md
433
- - examples/prompts/sre_compliance.md
434
- - examples/prompts/structured_output.md
435
- - examples/prompts/synthesizer.md
436
- - examples/prompts/technical.md
437
- - examples/prompts/template_with_skills_test.md
438
- - examples/prompts/triage.md
439
- - examples/ruboruby.md
440
- - examples/run_all.rb
441
- - examples/xyzzy.rb
442
176
  - lib/robot_lab.rb
443
177
  - lib/robot_lab/agent_skill.rb
444
178
  - lib/robot_lab/agent_skill_catalog.rb
@@ -458,15 +192,10 @@ files:
458
192
  - lib/robot_lab/hook_context.rb
459
193
  - lib/robot_lab/hook_registry.rb
460
194
  - lib/robot_lab/hooks.rb
461
- - lib/robot_lab/mcp/client.rb
462
- - lib/robot_lab/mcp/connection_poller.rb
195
+ - lib/robot_lab/mcp.rb
196
+ - lib/robot_lab/mcp/registry.rb
463
197
  - lib/robot_lab/mcp/server.rb
464
198
  - lib/robot_lab/mcp/server_discovery.rb
465
- - lib/robot_lab/mcp/transports/base.rb
466
- - lib/robot_lab/mcp/transports/sse.rb
467
- - lib/robot_lab/mcp/transports/stdio.rb
468
- - lib/robot_lab/mcp/transports/streamable_http.rb
469
- - lib/robot_lab/mcp/transports/websocket.rb
470
199
  - lib/robot_lab/memory.rb
471
200
  - lib/robot_lab/memory_change.rb
472
201
  - lib/robot_lab/message.rb
@@ -482,6 +211,7 @@ files:
482
211
  - lib/robot_lab/robot/mcp_management.rb
483
212
  - lib/robot_lab/robot/result_building.rb
484
213
  - lib/robot_lab/robot/template_rendering.rb
214
+ - lib/robot_lab/robot/tool_call_gating.rb
485
215
  - lib/robot_lab/robot_message.rb
486
216
  - lib/robot_lab/robot_result.rb
487
217
  - lib/robot_lab/run_config.rb
@@ -500,13 +230,7 @@ files:
500
230
  - lib/robot_lab/utils.rb
501
231
  - lib/robot_lab/version.rb
502
232
  - lib/robot_lab/waiter.rb
503
- - logfile
504
- - mkdocs.yml
505
- - robot_concurrency.md
506
233
  - sig/robot_lab.rbs
507
- - simple_acp_review.md
508
- - temp.md
509
- - tool_manifest_plan.md
510
234
  homepage: https://github.com/MadBomber/robot_lab
511
235
  licenses:
512
236
  - MIT
@@ -525,14 +249,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
525
249
  requirements:
526
250
  - - ">="
527
251
  - !ruby/object:Gem::Version
528
- version: 3.2.0
252
+ version: 4.0.9
529
253
  required_rubygems_version: !ruby/object:Gem::Requirement
530
254
  requirements:
531
255
  - - ">="
532
256
  - !ruby/object:Gem::Version
533
257
  version: '0'
534
258
  requirements: []
535
- rubygems_version: 4.0.21
259
+ rubygems_version: 4.0.23
536
260
  specification_version: 4
537
261
  summary: Ruby framework for building and orchestrating multi-robot LLM workflows
538
262
  test_files: []
@@ -1,32 +0,0 @@
1
- ### Local Agent Context: .architecture
2
-
3
- # Setup & Commands — Exact commands + required env vars.
4
-
5
- - Configure project: Verify `project_name` and `version` in `.architecture/config.yml` are correct for current setup.
6
- - Quarterly review schedule is enforced automatically; ensure `review_schedule` is set to `quarterly` in `.architecture/config.yml`.
7
-
8
- # Code Style & Patterns — Must-follow conventions, backticked.
9
-
10
- - Ensure any new architectural documentation follows the naming pattern in `.architecture/reviews`.
11
- - For member roles, adhere to the structured format in `.architecture/members.yml` with fields like `id`, `name`, `title`, and `specialties`.
12
- - Document architectural reviews extensively, mirroring the detailed style found in `.architecture/reviews/feature-free-will.md`.
13
-
14
- # Implementation Details — Entry files + compressed playbooks (job/env/rollout).
15
-
16
- ## Architectural Review Process
17
-
18
- 1. **Conduct Review**:
19
- - Read current state and previous findings in `.architecture/reviews/overall-codebase.md`.
20
- - Compare changes and new resolutions against previous entries like `.architecture/reviews/feature-free-will.md`.
21
-
22
- 2. **Document Review**:
23
- - Record new findings and updates in a new markdown file within `.architecture/reviews/`.
24
- - Follow the format example in existing review files for consistency and effectiveness.
25
-
26
- 3. **Remove Dead Code**:
27
- - Audit `network:` parameter usage in relevant function calls.
28
- - Remove unused parameters and adjust corresponding method calls as documented in reviews.
29
-
30
- _Warning_: Removing architectural elements based on outdated assumptions can be destructive.
31
-
32
- By following these structured guidelines and file-specific practices, maintain a coherent and robust architectural documentation process inside the `.architecture` directory.
@@ -1,8 +0,0 @@
1
- project_name: RobotLab
2
- version: 0.0.5
3
- review_schedule: quarterly
4
- pragmatic_mode:
5
- enabled: true
6
- applies_to:
7
- - reviews
8
- - adrs
@@ -1,60 +0,0 @@
1
- members:
2
- - id: systems_architect
3
- name: Systems Architect
4
- title: Principal Systems Architect
5
- specialties:
6
- - module decomposition
7
- - dependency management
8
- - API surface design
9
- - Zeitwerk autoloading
10
- perspective: Evaluates overall structure, module boundaries, and dependency flow
11
-
12
- - id: concurrency_specialist
13
- name: Concurrency Specialist
14
- title: Async & Concurrency Engineer
15
- specialties:
16
- - async/await patterns
17
- - fiber-based concurrency
18
- - race condition prevention
19
- - message bus architectures
20
- perspective: Analyzes async patterns, race conditions, and message ordering guarantees
21
-
22
- - id: api_design_lead
23
- name: API Design Lead
24
- title: Developer Experience Architect
25
- specialties:
26
- - public API ergonomics
27
- - configuration hierarchies
28
- - builder patterns
29
- - Ruby idioms
30
- perspective: Evaluates public API surface, developer experience, and Ruby idiomaticness
31
-
32
- - id: reliability_engineer
33
- name: Reliability Engineer
34
- title: Error Handling & Resilience Specialist
35
- specialties:
36
- - error hierarchies
37
- - retry/backoff strategies
38
- - graceful degradation
39
- - state machine correctness
40
- perspective: Assesses error handling, failure modes, and system resilience
41
-
42
- - id: testing_strategist
43
- name: Testing Strategist
44
- title: Quality Assurance Architect
45
- specialties:
46
- - test coverage analysis
47
- - integration vs unit testing
48
- - mock strategies
49
- - CI reliability
50
- perspective: Reviews test architecture, coverage gaps, and testing patterns
51
-
52
- - id: pragmatic_enforcer
53
- name: Pragmatic Enforcer
54
- title: YAGNI & Simplicity Advocate
55
- specialties:
56
- - over-engineering detection
57
- - complexity budgets
58
- - deferred decisions
59
- - MVP scoping
60
- perspective: Challenges unnecessary complexity and advocates for simplest viable solutions