rails-ai-bridge 4.2.0 → 5.0.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 (136) hide show
  1. checksums.yaml +4 -4
  2. data/.aider.conf.yml +23 -0
  3. data/.graphifyignore +19 -0
  4. data/.mutant.yml +3 -0
  5. data/.reek.yml +507 -255
  6. data/.reviewer.toml +13 -0
  7. data/.rs-guardignore +26 -0
  8. data/.rubocop.yml +2 -0
  9. data/AGENTS.md +37 -5
  10. data/Archspec.rb +111 -0
  11. data/CHANGELOG.md +107 -0
  12. data/CLAUDE.md +8 -5
  13. data/CONTRIBUTING.md +1 -1
  14. data/GEMINI.md +7 -5
  15. data/README.md +77 -26
  16. data/SECURITY.md +6 -0
  17. data/UPGRADING.md +274 -11
  18. data/docs/COVERAGE.md +41 -26
  19. data/docs/GUIDE.md +34 -7
  20. data/docs/devin-setup.md +1 -0
  21. data/docs/diagrams/how-it-works.html +155 -0
  22. data/docs/gem-general-improvements.md +12 -1
  23. data/docs/mcp-security.md +56 -0
  24. data/docs/offline-mode.md +5 -0
  25. data/docs/v5/context-providers-design.md +282 -0
  26. data/lib/generators/rails_ai_bridge/install/install_generator.rb +31 -0
  27. data/lib/rails_ai_bridge/app_scope.rb +53 -0
  28. data/lib/rails_ai_bridge/assistant_formats_preference.rb +3 -2
  29. data/lib/rails_ai_bridge/boot_manager.rb +116 -0
  30. data/lib/rails_ai_bridge/cache_warmer.rb +4 -2
  31. data/lib/rails_ai_bridge/config/context_providers.rb +147 -0
  32. data/lib/rails_ai_bridge/config/introspection.rb +16 -1
  33. data/lib/rails_ai_bridge/config/output.rb +5 -0
  34. data/lib/rails_ai_bridge/config/registry.rb +22 -9
  35. data/lib/rails_ai_bridge/configuration.rb +14 -7
  36. data/lib/rails_ai_bridge/context_provider.rb +7 -3
  37. data/lib/rails_ai_bridge/database_size.rb +91 -0
  38. data/lib/rails_ai_bridge/doctor/checkers/registry_checker.rb +174 -1
  39. data/lib/rails_ai_bridge/doctor.rb +61 -4
  40. data/lib/rails_ai_bridge/exclusion_helper.rb +70 -0
  41. data/lib/rails_ai_bridge/http_transport_app.rb +1 -0
  42. data/lib/rails_ai_bridge/introspector/parallel_runner.rb +1 -0
  43. data/lib/rails_ai_bridge/introspector.rb +66 -10
  44. data/lib/rails_ai_bridge/introspectors/api_introspector.rb +1 -2
  45. data/lib/rails_ai_bridge/introspectors/config_introspector.rb +1 -0
  46. data/lib/rails_ai_bridge/introspectors/controller_introspector/filter_extractor.rb +118 -5
  47. data/lib/rails_ai_bridge/introspectors/controller_introspector.rb +13 -5
  48. data/lib/rails_ai_bridge/introspectors/convention_detector.rb +2 -2
  49. data/lib/rails_ai_bridge/introspectors/database_stats_introspector.rb +1 -1
  50. data/lib/rails_ai_bridge/introspectors/model_introspector/association_extractor.rb +2 -1
  51. data/lib/rails_ai_bridge/introspectors/model_introspector.rb +38 -6
  52. data/lib/rails_ai_bridge/introspectors/model_semantic_enrichment.rb +7 -1
  53. data/lib/rails_ai_bridge/introspectors/route_introspector.rb +58 -4
  54. data/lib/rails_ai_bridge/introspectors/schema/static_schema_parser.rb +4 -3
  55. data/lib/rails_ai_bridge/introspectors/schema/static_structure_sql_parser.rb +204 -13
  56. data/lib/rails_ai_bridge/introspectors/schema_introspector.rb +4 -2
  57. data/lib/rails_ai_bridge/introspectors/seeds_introspector.rb +6 -6
  58. data/lib/rails_ai_bridge/introspectors/semantic_introspector.rb +2 -2
  59. data/lib/rails_ai_bridge/introspectors/stimulus_introspector.rb +4 -4
  60. data/lib/rails_ai_bridge/introspectors/view_introspector.rb +1 -1
  61. data/lib/rails_ai_bridge/middleware.rb +7 -2
  62. data/lib/rails_ai_bridge/path_resolver.rb +67 -6
  63. data/lib/rails_ai_bridge/registry/authentication_error.rb +14 -0
  64. data/lib/rails_ai_bridge/registry/connection_error.rb +14 -0
  65. data/lib/rails_ai_bridge/registry/context_aggregator.rb +194 -0
  66. data/lib/rails_ai_bridge/registry/context_provider_client.rb +216 -0
  67. data/lib/rails_ai_bridge/registry/context_provider_error.rb +26 -0
  68. data/lib/rails_ai_bridge/registry/context_tool_spec.rb +7 -0
  69. data/lib/rails_ai_bridge/registry/endpoint_policy.rb +238 -0
  70. data/lib/rails_ai_bridge/registry/message_sanitizer.rb +24 -0
  71. data/lib/rails_ai_bridge/registry/pack_resolver.rb +3 -0
  72. data/lib/rails_ai_bridge/registry/pinning_http_adapter.rb +45 -0
  73. data/lib/rails_ai_bridge/registry/policy_error.rb +14 -0
  74. data/lib/rails_ai_bridge/registry/protocol_error.rb +14 -0
  75. data/lib/rails_ai_bridge/registry/provider_request_scope.rb +37 -0
  76. data/lib/rails_ai_bridge/registry/rake_presenter.rb +1 -0
  77. data/lib/rails_ai_bridge/registry/remote_tool_error.rb +14 -0
  78. data/lib/rails_ai_bridge/registry/resolver_cache.rb +2 -2
  79. data/lib/rails_ai_bridge/registry/response_too_large_error.rb +14 -0
  80. data/lib/rails_ai_bridge/registry/timeout_error.rb +14 -0
  81. data/lib/rails_ai_bridge/registry.rb +21 -3
  82. data/lib/rails_ai_bridge/resources.rb +5 -1
  83. data/lib/rails_ai_bridge/rubydex_adapter.rb +4 -0
  84. data/lib/rails_ai_bridge/serializers/context_file_serializer.rb +7 -2
  85. data/lib/rails_ai_bridge/serializers/context_summary.rb +1 -85
  86. data/lib/rails_ai_bridge/serializers/formatters/providers/mcp_guide_formatter.rb +1 -0
  87. data/lib/rails_ai_bridge/serializers/markdown_serializer.rb +1 -1
  88. data/lib/rails_ai_bridge/serializers/providers/base_provider_serializer.rb +1 -0
  89. data/lib/rails_ai_bridge/serializers/providers/claude_rules_serializer.rb +1 -0
  90. data/lib/rails_ai_bridge/serializers/providers/claude_serializer.rb +1 -0
  91. data/lib/rails_ai_bridge/serializers/providers/codex_serializer.rb +1 -0
  92. data/lib/rails_ai_bridge/serializers/providers/collaborators/rules_document_builder.rb +1 -1
  93. data/lib/rails_ai_bridge/serializers/providers/collaborators/stack_overview_builder.rb +3 -1
  94. data/lib/rails_ai_bridge/serializers/providers/copilot_serializer.rb +8 -0
  95. data/lib/rails_ai_bridge/serializers/providers/cursor_rules_serializer.rb +2 -2
  96. data/lib/rails_ai_bridge/serializers/providers/devin_serializer.rb +1 -0
  97. data/lib/rails_ai_bridge/serializers/providers/gemini_serializer.rb +1 -0
  98. data/lib/rails_ai_bridge/serializers/providers/mcp_tool_reference_formatter.rb +1 -0
  99. data/lib/rails_ai_bridge/serializers/providers/rules_orchestrator.rb +1 -0
  100. data/lib/rails_ai_bridge/serializers/providers/rules_serializer.rb +1 -0
  101. data/lib/rails_ai_bridge/serializers/shared_assistant_guidance.rb +44 -8
  102. data/lib/rails_ai_bridge/server.rb +4 -1
  103. data/lib/rails_ai_bridge/static_app.rb +99 -0
  104. data/lib/rails_ai_bridge/tasks/rails_ai_bridge.rake +6 -4
  105. data/lib/rails_ai_bridge/tool_result_cache.rb +12 -1
  106. data/lib/rails_ai_bridge/tools/README.md +4 -0
  107. data/lib/rails_ai_bridge/tools/base_tool.rb +4 -2
  108. data/lib/rails_ai_bridge/tools/confidence_tag.rb +34 -0
  109. data/lib/rails_ai_bridge/tools/explain_symbol/cli_explorer.rb +70 -0
  110. data/lib/rails_ai_bridge/tools/explain_symbol.rb +124 -0
  111. data/lib/rails_ai_bridge/tools/get_context/composer.rb +213 -0
  112. data/lib/rails_ai_bridge/tools/get_context/related_tests.rb +95 -0
  113. data/lib/rails_ai_bridge/tools/get_context/resolver.rb +320 -0
  114. data/lib/rails_ai_bridge/tools/get_context.rb +124 -0
  115. data/lib/rails_ai_bridge/tools/get_controllers.rb +19 -4
  116. data/lib/rails_ai_bridge/tools/get_model_details.rb +4 -3
  117. data/lib/rails_ai_bridge/tools/get_provider_context.rb +280 -0
  118. data/lib/rails_ai_bridge/tools/get_routes.rb +52 -7
  119. data/lib/rails_ai_bridge/tools/get_schema.rb +18 -2
  120. data/lib/rails_ai_bridge/tools/get_view/base_formatter.rb +2 -2
  121. data/lib/rails_ai_bridge/tools/list_registry.rb +2 -2
  122. data/lib/rails_ai_bridge/tools/model_details/full_formatter.rb +3 -1
  123. data/lib/rails_ai_bridge/tools/model_details/single_model_formatter.rb +47 -3
  124. data/lib/rails_ai_bridge/tools/schema/full_formatter.rb +4 -2
  125. data/lib/rails_ai_bridge/tools/schema/standard_formatter.rb +20 -2
  126. data/lib/rails_ai_bridge/tools/schema/summary_formatter.rb +4 -2
  127. data/lib/rails_ai_bridge/tools/schema/table_formatter.rb +24 -3
  128. data/lib/rails_ai_bridge/version.rb +1 -1
  129. data/lib/rails_ai_bridge/view_file_analyzer.rb +39 -1
  130. data/lib/rails_ai_bridge/watcher.rb +5 -2
  131. data/lib/rails_ai_bridge.rb +14 -6
  132. data/lib/tasks/quality.rake +22 -0
  133. data/lib/tasks/zeitwerk.rake +32 -0
  134. data/rails-ai-bridge.gemspec +9 -9
  135. data/repomix.config.json +44 -0
  136. metadata +83 -9
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 24c9dd6461240b9d6864b35c171c465635f9fdacc3c76195915f43b995a27f18
4
- data.tar.gz: e97756c625478c854f78f661393d26043ba36b07b8941bed7a2a2c09b3a62a4b
3
+ metadata.gz: c3ff80f45d85160ef2e84f6f0a838ef49dc3301c4595bd2a336f5e5ded6a44a3
4
+ data.tar.gz: 39d5e276f4d32fc1c7d4b2072ada05a08fa7fa0a8359d7bb49385856ba547896
5
5
  SHA512:
6
- metadata.gz: f453227c44348be19356eecb728dac22328abcb20a99cf0430f441c68557346d93576527716764cae4f68f404fcab524dd44c4454b27a4f9078955632be8937f
7
- data.tar.gz: 10e975098f252c37f37108e04d0e370b03f469829f9e2520334b180e83a8844a8276b9f4ed60ae650e0f9bd47dd7361b42885dcbdf87880e37d56c04152720fa
6
+ metadata.gz: bd3db69993fc48e125750a8e56a49a8e3aa84b8d2637c336e820738f932fb7ef4fd68f1083c429c85f8d2ffc15bf473dd18e7aa79cb9b612e3db2e368e4b8585
7
+ data.tar.gz: c1902b9560283b27190d526d8f40befab209555c877e991d6a8b1403fb03e94ae15745eccd7d275a33cba5458eac25ffc8d284b091ec5906a662d824c1f54be5
data/.aider.conf.yml ADDED
@@ -0,0 +1,23 @@
1
+ read:
2
+ - AGENTS.md
3
+ - repomix.config.json
4
+
5
+ mcp_servers:
6
+ codegraph:
7
+ command: "/Users/igmarin/.local/bin/codegraph"
8
+ args:
9
+ - serve
10
+ - --mcp
11
+ - --path
12
+ - "/Volumes/minimini/Developer/Projects/rails-ai-bridge"
13
+ graphify:
14
+ command: "/Users/igmarin/.local/bin/graphify-mcp"
15
+ args:
16
+ - --graph
17
+ - "/Volumes/minimini/Developer/Projects/rails-ai-bridge/graphify-out/graph.json"
18
+ repomix:
19
+ command: "/opt/homebrew/bin/repomix"
20
+ args:
21
+ - --mcp
22
+ - --sandbox
23
+ - "/Volumes/minimini/Developer/Projects/rails-ai-bridge"
data/.graphifyignore ADDED
@@ -0,0 +1,19 @@
1
+ .git
2
+ .idea
3
+ .cursor
4
+ .claude
5
+ .grok
6
+ .zed
7
+ .codegraph
8
+ graphify-out
9
+ repomix-output.xml
10
+ repomix-output.md
11
+ coverage
12
+ review-result.txt
13
+ rs-guard-metrics.json
14
+ *.gem
15
+ .DS_Store
16
+ tmp/
17
+ doc/
18
+ vendor/bundle/
19
+ coverage/
data/.mutant.yml CHANGED
@@ -13,6 +13,9 @@
13
13
  # Subject expressions are passed on the CLI to target critical paths:
14
14
  # RailsAiBridge::Registry — registry resolution
15
15
  # RailsAiBridge::Tools — MCP tools
16
+ # RailsAiBridge::Tools::SearchCode::Validator
17
+ # RailsAiBridge::ViewFileAnalyzer
18
+ # RailsAiBridge::ExclusionHelper
16
19
  # RailsAiBridge::Serializers — output serializers
17
20
  usage: opensource
18
21
  integration: rspec