rubyn-code 0.5.0 → 0.7.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 (105) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +182 -11
  3. data/db/migrations/014_multi_agent_upgrade.rb +79 -0
  4. data/lib/rubyn_code/agent/conversation.rb +89 -3
  5. data/lib/rubyn_code/agent/llm_caller.rb +2 -2
  6. data/lib/rubyn_code/agent/loop.rb +49 -9
  7. data/lib/rubyn_code/agent/system_prompt_builder.rb +37 -2
  8. data/lib/rubyn_code/agent/tool_processor.rb +3 -1
  9. data/lib/rubyn_code/auth/oauth.rb +1 -1
  10. data/lib/rubyn_code/auth/token_store.rb +49 -4
  11. data/lib/rubyn_code/checkpoint/hook.rb +26 -0
  12. data/lib/rubyn_code/checkpoint/manager.rb +109 -0
  13. data/lib/rubyn_code/chisel/debt.rb +65 -0
  14. data/lib/rubyn_code/chisel/inspection.rb +93 -0
  15. data/lib/rubyn_code/chisel.rb +127 -0
  16. data/lib/rubyn_code/cli/app.rb +2 -2
  17. data/lib/rubyn_code/cli/commands/agents.rb +31 -0
  18. data/lib/rubyn_code/cli/commands/chisel.rb +52 -0
  19. data/lib/rubyn_code/cli/commands/chisel_audit.rb +19 -0
  20. data/lib/rubyn_code/cli/commands/chisel_debt.rb +28 -0
  21. data/lib/rubyn_code/cli/commands/chisel_gain.rb +30 -0
  22. data/lib/rubyn_code/cli/commands/chisel_review.rb +19 -0
  23. data/lib/rubyn_code/cli/commands/command_template.rb +50 -0
  24. data/lib/rubyn_code/cli/commands/context.rb +3 -1
  25. data/lib/rubyn_code/cli/commands/custom_command.rb +42 -0
  26. data/lib/rubyn_code/cli/commands/custom_loader.rb +69 -0
  27. data/lib/rubyn_code/cli/commands/goal.rb +87 -0
  28. data/lib/rubyn_code/cli/commands/learning.rb +62 -0
  29. data/lib/rubyn_code/cli/commands/loop.rb +58 -0
  30. data/lib/rubyn_code/cli/commands/mcp.rb +18 -5
  31. data/lib/rubyn_code/cli/commands/megaplan.rb +50 -0
  32. data/lib/rubyn_code/cli/commands/registry.rb +14 -9
  33. data/lib/rubyn_code/cli/commands/rewind.rb +65 -0
  34. data/lib/rubyn_code/cli/first_run.rb +1 -1
  35. data/lib/rubyn_code/cli/loop_runner.rb +98 -0
  36. data/lib/rubyn_code/cli/mention_expander.rb +92 -0
  37. data/lib/rubyn_code/cli/renderer.rb +3 -2
  38. data/lib/rubyn_code/cli/repl.rb +37 -14
  39. data/lib/rubyn_code/cli/repl_commands.rb +77 -2
  40. data/lib/rubyn_code/cli/repl_setup.rb +9 -1
  41. data/lib/rubyn_code/cli/setup.rb +13 -0
  42. data/lib/rubyn_code/cli/stream_formatter.rb +3 -2
  43. data/lib/rubyn_code/cli/version_check.rb +10 -3
  44. data/lib/rubyn_code/config/defaults.rb +13 -1
  45. data/lib/rubyn_code/config/schema.json +4 -0
  46. data/lib/rubyn_code/config/settings.rb +17 -2
  47. data/lib/rubyn_code/context/manager.rb +29 -12
  48. data/lib/rubyn_code/debug.rb +11 -5
  49. data/lib/rubyn_code/goal/evaluator.rb +95 -0
  50. data/lib/rubyn_code/hooks/event_map.rb +56 -0
  51. data/lib/rubyn_code/hooks/external_dispatcher.rb +199 -0
  52. data/lib/rubyn_code/hooks/goal_hook.rb +88 -0
  53. data/lib/rubyn_code/hooks/response.rb +83 -0
  54. data/lib/rubyn_code/hooks/runner.rb +61 -3
  55. data/lib/rubyn_code/hooks/settings_json_loader.rb +109 -0
  56. data/lib/rubyn_code/hooks/subprocess_executor.rb +116 -0
  57. data/lib/rubyn_code/ide/handlers/plan_interview_answer_handler.rb +65 -0
  58. data/lib/rubyn_code/ide/handlers/plan_interview_cancel_handler.rb +22 -0
  59. data/lib/rubyn_code/ide/handlers/plan_interview_start_handler.rb +53 -0
  60. data/lib/rubyn_code/ide/handlers/plan_propose_handler.rb +41 -0
  61. data/lib/rubyn_code/ide/handlers/prompt_handler.rb +9 -1
  62. data/lib/rubyn_code/ide/handlers/recover_ci_handler.rb +143 -0
  63. data/lib/rubyn_code/ide/handlers/session_resume_handler.rb +1 -1
  64. data/lib/rubyn_code/ide/handlers.rb +17 -2
  65. data/lib/rubyn_code/ide/protocol.rb +15 -0
  66. data/lib/rubyn_code/ide/server.rb +39 -1
  67. data/lib/rubyn_code/index/codebase_index.rb +39 -1
  68. data/lib/rubyn_code/learning/porter.rb +129 -0
  69. data/lib/rubyn_code/llm/adapters/anthropic.rb +65 -16
  70. data/lib/rubyn_code/llm/adapters/openai.rb +1 -1
  71. data/lib/rubyn_code/llm/adapters/prompt_caching.rb +5 -1
  72. data/lib/rubyn_code/llm/adapters/token_caching.rb +54 -0
  73. data/lib/rubyn_code/llm/model_router.rb +2 -2
  74. data/lib/rubyn_code/mcp/client.rb +59 -0
  75. data/lib/rubyn_code/mcp/server_extras_bridge.rb +110 -0
  76. data/lib/rubyn_code/mcp/sse_transport.rb +2 -1
  77. data/lib/rubyn_code/mcp/tool_bridge.rb +16 -14
  78. data/lib/rubyn_code/megaplan/ci_recovery.rb +104 -0
  79. data/lib/rubyn_code/megaplan/interview_session.rb +250 -0
  80. data/lib/rubyn_code/megaplan/plan_proposer.rb +153 -0
  81. data/lib/rubyn_code/memory/search.rb +9 -5
  82. data/lib/rubyn_code/memory/session_persistence.rb +159 -21
  83. data/lib/rubyn_code/observability/cost_calculator.rb +3 -1
  84. data/lib/rubyn_code/output/diff_renderer.rb +62 -7
  85. data/lib/rubyn_code/skills/auto_suggest.rb +70 -2
  86. data/lib/rubyn_code/skills/registry_client.rb +4 -3
  87. data/lib/rubyn_code/sub_agents/agent_type.rb +17 -0
  88. data/lib/rubyn_code/sub_agents/catalog.rb +124 -0
  89. data/lib/rubyn_code/teams/agent_registry.rb +120 -0
  90. data/lib/rubyn_code/teams/mailbox.rb +99 -10
  91. data/lib/rubyn_code/teams/manager.rb +83 -5
  92. data/lib/rubyn_code/teams/teammate.rb +5 -1
  93. data/lib/rubyn_code/tools/ask_user.rb +15 -1
  94. data/lib/rubyn_code/tools/executor.rb +5 -3
  95. data/lib/rubyn_code/tools/spawn_agent.rb +47 -62
  96. data/lib/rubyn_code/tools/spawn_teammate.rb +7 -2
  97. data/lib/rubyn_code/tools/web_fetch.rb +1 -1
  98. data/lib/rubyn_code/tools/web_search.rb +4 -1
  99. data/lib/rubyn_code/version.rb +1 -1
  100. data/lib/rubyn_code.rb +53 -2
  101. data/skills/megaplan/megaplan.md +156 -0
  102. data/skills/rubyn_self_test.md +322 -14
  103. data/skills/self_test/chisel_smoke.rb +84 -0
  104. data/skills/self_test/fixtures/chisel_sample.rb +64 -0
  105. metadata +49 -4
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubyn-code
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - fadedmaturity
@@ -184,6 +184,7 @@ files:
184
184
  - db/migrations/011_fix_mailbox_messages_columns.rb
185
185
  - db/migrations/012_expand_mailbox_message_types.rb
186
186
  - db/migrations/013_add_failed_status_to_tasks.rb
187
+ - db/migrations/014_multi_agent_upgrade.rb
187
188
  - exe/rubyn-code
188
189
  - lib/rubyn_code.rb
189
190
  - lib/rubyn_code/agent/RUBYN.md
@@ -213,22 +214,40 @@ files:
213
214
  - lib/rubyn_code/background/job.rb
214
215
  - lib/rubyn_code/background/notifier.rb
215
216
  - lib/rubyn_code/background/worker.rb
217
+ - lib/rubyn_code/checkpoint/hook.rb
218
+ - lib/rubyn_code/checkpoint/manager.rb
219
+ - lib/rubyn_code/chisel.rb
220
+ - lib/rubyn_code/chisel/debt.rb
221
+ - lib/rubyn_code/chisel/inspection.rb
216
222
  - lib/rubyn_code/cli/RUBYN.md
217
223
  - lib/rubyn_code/cli/app.rb
218
224
  - lib/rubyn_code/cli/commands/RUBYN.md
225
+ - lib/rubyn_code/cli/commands/agents.rb
219
226
  - lib/rubyn_code/cli/commands/base.rb
220
227
  - lib/rubyn_code/cli/commands/budget.rb
228
+ - lib/rubyn_code/cli/commands/chisel.rb
229
+ - lib/rubyn_code/cli/commands/chisel_audit.rb
230
+ - lib/rubyn_code/cli/commands/chisel_debt.rb
231
+ - lib/rubyn_code/cli/commands/chisel_gain.rb
232
+ - lib/rubyn_code/cli/commands/chisel_review.rb
221
233
  - lib/rubyn_code/cli/commands/clear.rb
234
+ - lib/rubyn_code/cli/commands/command_template.rb
222
235
  - lib/rubyn_code/cli/commands/compact.rb
223
236
  - lib/rubyn_code/cli/commands/context.rb
224
237
  - lib/rubyn_code/cli/commands/context_info.rb
225
238
  - lib/rubyn_code/cli/commands/cost.rb
239
+ - lib/rubyn_code/cli/commands/custom_command.rb
240
+ - lib/rubyn_code/cli/commands/custom_loader.rb
226
241
  - lib/rubyn_code/cli/commands/diff.rb
227
242
  - lib/rubyn_code/cli/commands/doctor.rb
243
+ - lib/rubyn_code/cli/commands/goal.rb
228
244
  - lib/rubyn_code/cli/commands/help.rb
229
245
  - lib/rubyn_code/cli/commands/install_skills.rb
246
+ - lib/rubyn_code/cli/commands/learning.rb
230
247
  - lib/rubyn_code/cli/commands/list_skills.rb
248
+ - lib/rubyn_code/cli/commands/loop.rb
231
249
  - lib/rubyn_code/cli/commands/mcp.rb
250
+ - lib/rubyn_code/cli/commands/megaplan.rb
232
251
  - lib/rubyn_code/cli/commands/model.rb
233
252
  - lib/rubyn_code/cli/commands/new_session.rb
234
253
  - lib/rubyn_code/cli/commands/plan.rb
@@ -238,6 +257,7 @@ files:
238
257
  - lib/rubyn_code/cli/commands/remove_skills.rb
239
258
  - lib/rubyn_code/cli/commands/resume.rb
240
259
  - lib/rubyn_code/cli/commands/review.rb
260
+ - lib/rubyn_code/cli/commands/rewind.rb
241
261
  - lib/rubyn_code/cli/commands/skill.rb
242
262
  - lib/rubyn_code/cli/commands/skills.rb
243
263
  - lib/rubyn_code/cli/commands/spawn.rb
@@ -248,6 +268,8 @@ files:
248
268
  - lib/rubyn_code/cli/daemon_runner.rb
249
269
  - lib/rubyn_code/cli/first_run.rb
250
270
  - lib/rubyn_code/cli/input_handler.rb
271
+ - lib/rubyn_code/cli/loop_runner.rb
272
+ - lib/rubyn_code/cli/mention_expander.rb
251
273
  - lib/rubyn_code/cli/renderer.rb
252
274
  - lib/rubyn_code/cli/repl.rb
253
275
  - lib/rubyn_code/cli/repl_commands.rb
@@ -279,10 +301,17 @@ files:
279
301
  - lib/rubyn_code/db/migrator.rb
280
302
  - lib/rubyn_code/db/schema.rb
281
303
  - lib/rubyn_code/debug.rb
304
+ - lib/rubyn_code/goal/evaluator.rb
282
305
  - lib/rubyn_code/hooks/RUBYN.md
283
306
  - lib/rubyn_code/hooks/built_in.rb
307
+ - lib/rubyn_code/hooks/event_map.rb
308
+ - lib/rubyn_code/hooks/external_dispatcher.rb
309
+ - lib/rubyn_code/hooks/goal_hook.rb
284
310
  - lib/rubyn_code/hooks/registry.rb
311
+ - lib/rubyn_code/hooks/response.rb
285
312
  - lib/rubyn_code/hooks/runner.rb
313
+ - lib/rubyn_code/hooks/settings_json_loader.rb
314
+ - lib/rubyn_code/hooks/subprocess_executor.rb
286
315
  - lib/rubyn_code/hooks/user_hooks.rb
287
316
  - lib/rubyn_code/ide/adapters/tool_output.rb
288
317
  - lib/rubyn_code/ide/client.rb
@@ -294,7 +323,12 @@ files:
294
323
  - lib/rubyn_code/ide/handlers/config_set_handler.rb
295
324
  - lib/rubyn_code/ide/handlers/initialize_handler.rb
296
325
  - lib/rubyn_code/ide/handlers/models_list_handler.rb
326
+ - lib/rubyn_code/ide/handlers/plan_interview_answer_handler.rb
327
+ - lib/rubyn_code/ide/handlers/plan_interview_cancel_handler.rb
328
+ - lib/rubyn_code/ide/handlers/plan_interview_start_handler.rb
329
+ - lib/rubyn_code/ide/handlers/plan_propose_handler.rb
297
330
  - lib/rubyn_code/ide/handlers/prompt_handler.rb
331
+ - lib/rubyn_code/ide/handlers/recover_ci_handler.rb
298
332
  - lib/rubyn_code/ide/handlers/review_handler.rb
299
333
  - lib/rubyn_code/ide/handlers/session_fork_handler.rb
300
334
  - lib/rubyn_code/ide/handlers/session_list_handler.rb
@@ -308,6 +342,7 @@ files:
308
342
  - lib/rubyn_code/learning/extractor.rb
309
343
  - lib/rubyn_code/learning/injector.rb
310
344
  - lib/rubyn_code/learning/instinct.rb
345
+ - lib/rubyn_code/learning/porter.rb
311
346
  - lib/rubyn_code/learning/shortcut.rb
312
347
  - lib/rubyn_code/llm/RUBYN.md
313
348
  - lib/rubyn_code/llm/adapters/anthropic.rb
@@ -320,6 +355,7 @@ files:
320
355
  - lib/rubyn_code/llm/adapters/openai_message_translator.rb
321
356
  - lib/rubyn_code/llm/adapters/openai_streaming.rb
322
357
  - lib/rubyn_code/llm/adapters/prompt_caching.rb
358
+ - lib/rubyn_code/llm/adapters/token_caching.rb
323
359
  - lib/rubyn_code/llm/client.rb
324
360
  - lib/rubyn_code/llm/message_builder.rb
325
361
  - lib/rubyn_code/llm/model_router.rb
@@ -327,9 +363,13 @@ files:
327
363
  - lib/rubyn_code/mcp/RUBYN.md
328
364
  - lib/rubyn_code/mcp/client.rb
329
365
  - lib/rubyn_code/mcp/config.rb
366
+ - lib/rubyn_code/mcp/server_extras_bridge.rb
330
367
  - lib/rubyn_code/mcp/sse_transport.rb
331
368
  - lib/rubyn_code/mcp/stdio_transport.rb
332
369
  - lib/rubyn_code/mcp/tool_bridge.rb
370
+ - lib/rubyn_code/megaplan/ci_recovery.rb
371
+ - lib/rubyn_code/megaplan/interview_session.rb
372
+ - lib/rubyn_code/megaplan/plan_proposer.rb
333
373
  - lib/rubyn_code/memory/RUBYN.md
334
374
  - lib/rubyn_code/memory/models.rb
335
375
  - lib/rubyn_code/memory/search.rb
@@ -370,6 +410,8 @@ files:
370
410
  - lib/rubyn_code/skills/registry_client.rb
371
411
  - lib/rubyn_code/skills/ttl_manager.rb
372
412
  - lib/rubyn_code/sub_agents/RUBYN.md
413
+ - lib/rubyn_code/sub_agents/agent_type.rb
414
+ - lib/rubyn_code/sub_agents/catalog.rb
373
415
  - lib/rubyn_code/sub_agents/runner.rb
374
416
  - lib/rubyn_code/sub_agents/summarizer.rb
375
417
  - lib/rubyn_code/tasks/RUBYN.md
@@ -377,6 +419,7 @@ files:
377
419
  - lib/rubyn_code/tasks/manager.rb
378
420
  - lib/rubyn_code/tasks/models.rb
379
421
  - lib/rubyn_code/teams/RUBYN.md
422
+ - lib/rubyn_code/teams/agent_registry.rb
380
423
  - lib/rubyn_code/teams/mailbox.rb
381
424
  - lib/rubyn_code/teams/manager.rb
382
425
  - lib/rubyn_code/teams/teammate.rb
@@ -452,6 +495,7 @@ files:
452
495
  - skills/gems/rubocop.md
453
496
  - skills/gems/sidekiq.md
454
497
  - skills/gems/stripe.md
498
+ - skills/megaplan/megaplan.md
455
499
  - skills/minitest/assertions.md
456
500
  - skills/minitest/fixtures.md
457
501
  - skills/minitest/integration_tests.md
@@ -525,6 +569,8 @@ files:
525
569
  - skills/ruby_project/rake_tasks.md
526
570
  - skills/ruby_project/structure.md
527
571
  - skills/rubyn_self_test.md
572
+ - skills/self_test/chisel_smoke.rb
573
+ - skills/self_test/fixtures/chisel_sample.rb
528
574
  - skills/sinatra/application_structure.md
529
575
  - skills/sinatra/middleware_and_deployment.md
530
576
  - skills/sinatra/testing.md
@@ -542,8 +588,7 @@ post_install_message: |
542
588
  Rubyn Code installed! Run `rubyn-code --setup` to pin it to this Ruby
543
589
  so it works in any project regardless of .ruby-version.
544
590
 
545
- Tip: Install with your latest Ruby for best performance:
546
- RBENV_VERSION=4.0.2 gem install rubyn-code && rubyn-code --setup
591
+ Tip: install under your latest Ruby for best performance.
547
592
  rdoc_options: []
548
593
  require_paths:
549
594
  - lib
@@ -551,7 +596,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
551
596
  requirements:
552
597
  - - ">="
553
598
  - !ruby/object:Gem::Version
554
- version: '4.0'
599
+ version: 4.0.2
555
600
  required_rubygems_version: !ruby/object:Gem::Requirement
556
601
  requirements:
557
602
  - - ">="