Module: RailsAiBridge
- Defined in:
- lib/rails_ai_bridge.rb,
lib/rails_ai_bridge/doctor.rb,
lib/rails_ai_bridge/engine.rb,
lib/rails_ai_bridge/server.rb,
lib/rails_ai_bridge/service.rb,
lib/rails_ai_bridge/version.rb,
lib/rails_ai_bridge/watcher.rb,
lib/rails_ai_bridge/resources.rb,
lib/rails_ai_bridge/config/mcp.rb,
lib/rails_ai_bridge/middleware.rb,
lib/rails_ai_bridge/config/auth.rb,
lib/rails_ai_bridge/doctor/check.rb,
lib/rails_ai_bridge/introspector.rb,
lib/rails_ai_bridge/config/output.rb,
lib/rails_ai_bridge/config/server.rb,
lib/rails_ai_bridge/configuration.rb,
lib/rails_ai_bridge/fingerprinter.rb,
lib/rails_ai_bridge/service/result.rb,
lib/rails_ai_bridge/service_errors.rb,
lib/rails_ai_bridge/tools/get_gems.rb,
lib/rails_ai_bridge/tools/get_view.rb,
lib/rails_ai_bridge/mcp/auth_result.rb,
lib/rails_ai_bridge/tools/base_tool.rb,
lib/rails_ai_bridge/context_provider.rb,
lib/rails_ai_bridge/exclusion_helper.rb,
lib/rails_ai_bridge/tools/get_config.rb,
lib/rails_ai_bridge/tools/get_routes.rb,
lib/rails_ai_bridge/tools/get_schema.rb,
lib/rails_ai_bridge/mcp/authenticator.rb,
lib/rails_ai_bridge/tools/search_code.rb,
lib/rails_ai_bridge/http_transport_app.rb,
lib/rails_ai_bridge/tools/get_stimulus.rb,
lib/rails_ai_bridge/view_file_analyzer.rb,
lib/rails_ai_bridge/tools/get_test_info.rb,
lib/rails_ai_bridge/config/introspection.rb,
lib/rails_ai_bridge/mcp/http_rate_limiter.rb,
lib/rails_ai_bridge/tools/get_controllers.rb,
lib/rails_ai_bridge/tools/get_conventions.rb,
lib/rails_ai_bridge/mcp/auth/base_strategy.rb,
lib/rails_ai_bridge/mcp/auth/strategies/jwt.rb,
lib/rails_ai_bridge/mcp/http_structured_log.rb,
lib/rails_ai_bridge/tools/get_model_details.rb,
lib/rails_ai_bridge/model_semantic_classifier.rb,
lib/rails_ai_bridge/watcher/watch_directories.rb,
lib/rails_ai_bridge/introspectors/gem_registry.rb,
lib/rails_ai_bridge/serializers/providers/base.rb,
lib/rails_ai_bridge/watcher/bridge_regenerator.rb,
lib/rails_ai_bridge/serializers/context_summary.rb,
lib/rails_ai_bridge/serializers/formatters/base.rb,
lib/rails_ai_bridge/serializers/json_serializer.rb,
lib/rails_ai_bridge/tools/schema/full_formatter.rb,
lib/rails_ai_bridge/tools/search_code/formatter.rb,
lib/rails_ai_bridge/assistant_formats_preference.rb,
lib/rails_ai_bridge/doctor/checkers/base_checker.rb,
lib/rails_ai_bridge/doctor/checkers/gems_checker.rb,
lib/rails_ai_bridge/doctor/checkers/i18n_checker.rb,
lib/rails_ai_bridge/tools/schema/table_formatter.rb,
lib/rails_ai_bridge/doctor/checkers/tests_checker.rb,
lib/rails_ai_bridge/doctor/checkers/views_checker.rb,
lib/rails_ai_bridge/serializers/providers/factory.rb,
lib/rails_ai_bridge/tools/get_view/base_formatter.rb,
lib/rails_ai_bridge/tools/get_view/full_formatter.rb,
lib/rails_ai_bridge/doctor/checkers/models_checker.rb,
lib/rails_ai_bridge/doctor/checkers/routes_checker.rb,
lib/rails_ai_bridge/doctor/checkers/schema_checker.rb,
lib/rails_ai_bridge/introspectors/api_introspector.rb,
lib/rails_ai_bridge/introspectors/gem_introspector.rb,
lib/rails_ai_bridge/introspectors/job_introspector.rb,
lib/rails_ai_bridge/services/configuration_service.rb,
lib/rails_ai_bridge/tools/schema/summary_formatter.rb,
lib/rails_ai_bridge/doctor/checkers/ripgrep_checker.rb,
lib/rails_ai_bridge/introspectors/auth_introspector.rb,
lib/rails_ai_bridge/introspectors/i18n_introspector.rb,
lib/rails_ai_bridge/introspectors/test_introspector.rb,
lib/rails_ai_bridge/introspectors/view_introspector.rb,
lib/rails_ai_bridge/serializers/markdown_serializer.rb,
lib/rails_ai_bridge/serializers/regeneration_footer.rb,
lib/rails_ai_bridge/tools/schema/standard_formatter.rb,
lib/rails_ai_bridge/introspectors/model_introspector.rb,
lib/rails_ai_bridge/introspectors/route_introspector.rb,
lib/rails_ai_bridge/introspectors/seeds_introspector.rb,
lib/rails_ai_bridge/introspectors/turbo_introspector.rb,
lib/rails_ai_bridge/mcp/auth/strategies/bearer_token.rb,
lib/rails_ai_bridge/services/file_management_service.rb,
lib/rails_ai_bridge/tools/get_view/summary_formatter.rb,
lib/rails_ai_bridge/introspectors/config_introspector.rb,
lib/rails_ai_bridge/introspectors/convention_detector.rb,
lib/rails_ai_bridge/introspectors/devops_introspector.rb,
lib/rails_ai_bridge/introspectors/engine_introspector.rb,
lib/rails_ai_bridge/introspectors/schema_introspector.rb,
lib/rails_ai_bridge/tools/get_view/standard_formatter.rb,
lib/rails_ai_bridge/doctor/checkers/migrations_checker.rb,
lib/rails_ai_bridge/services/app_introspection_service.rb,
lib/rails_ai_bridge/tools/model_details/full_formatter.rb,
lib/generators/rails_ai_bridge/install/profile_resolver.rb,
lib/rails_ai_bridge/doctor/checkers/controllers_checker.rb,
lib/rails_ai_bridge/introspectors/stimulus_introspector.rb,
lib/rails_ai_bridge/serializers/context_file_serializer.rb,
lib/rails_ai_bridge/services/context_generation_service.rb,
lib/generators/rails_ai_bridge/install/install_generator.rb,
lib/rails_ai_bridge/introspectors/migration_introspector.rb,
lib/rails_ai_bridge/introspectors/rake_task_introspector.rb,
lib/rails_ai_bridge/serializers/formatters/sections/base.rb,
lib/rails_ai_bridge/serializers/provider_document_header.rb,
lib/rails_ai_bridge/doctor/checkers/context_files_checker.rb,
lib/rails_ai_bridge/doctor/checkers/mcp_buildable_checker.rb,
lib/rails_ai_bridge/doctor/checkers/view_mcp_tool_checker.rb,
lib/rails_ai_bridge/introspectors/controller_introspector.rb,
lib/rails_ai_bridge/introspectors/middleware_introspector.rb,
lib/rails_ai_bridge/serializers/formatters/providers/base.rb,
lib/rails_ai_bridge/serializers/shared_assistant_guidance.rb,
lib/rails_ai_bridge/tools/model_details/summary_formatter.rb,
lib/rails_ai_bridge/introspectors/action_text_introspector.rb,
lib/rails_ai_bridge/serializers/providers/codex_serializer.rb,
lib/rails_ai_bridge/serializers/providers/rules_serializer.rb,
lib/rails_ai_bridge/tools/get_view/specific_view_formatter.rb,
lib/rails_ai_bridge/tools/model_details/standard_formatter.rb,
lib/rails_ai_bridge/doctor/checkers/bridge_metadata_checker.rb,
lib/rails_ai_bridge/serializers/providers/claude_serializer.rb,
lib/rails_ai_bridge/serializers/providers/gemini_serializer.rb,
lib/rails_ai_bridge/introspectors/non_ar_models_introspector.rb,
lib/rails_ai_bridge/serializers/providers/copilot_serializer.rb,
lib/rails_ai_bridge/serializers/providers/rules_orchestrator.rb,
lib/rails_ai_bridge/doctor/checkers/stimulus_mcp_tool_checker.rb,
lib/rails_ai_bridge/introspectors/action_mailbox_introspector.rb,
lib/rails_ai_bridge/introspectors/active_storage_introspector.rb,
lib/rails_ai_bridge/introspectors/asset_pipeline_introspector.rb,
lib/rails_ai_bridge/introspectors/database_stats_introspector.rb,
lib/rails_ai_bridge/introspectors/multi_database_introspector.rb,
lib/rails_ai_bridge/introspectors/schema/static_schema_parser.rb,
lib/rails_ai_bridge/serializers/providers/windsurf_serializer.rb,
lib/rails_ai_bridge/tools/model_details/non_ar_models_appendix.rb,
lib/rails_ai_bridge/tools/model_details/single_model_formatter.rb,
lib/rails_ai_bridge/serializers/formatters/sections/api_formatter.rb,
lib/rails_ai_bridge/serializers/providers/claude_rules_serializer.rb,
lib/rails_ai_bridge/serializers/providers/cursor_rules_serializer.rb,
lib/rails_ai_bridge/serializers/formatters/sections/auth_formatter.rb,
lib/rails_ai_bridge/serializers/formatters/sections/gems_formatter.rb,
lib/rails_ai_bridge/serializers/formatters/sections/i18n_formatter.rb,
lib/rails_ai_bridge/serializers/formatters/sections/jobs_formatter.rb,
lib/rails_ai_bridge/serializers/providers/base_provider_serializer.rb,
lib/rails_ai_bridge/serializers/providers/codex_support_serializer.rb,
lib/rails_ai_bridge/serializers/formatters/sections/seeds_formatter.rb,
lib/rails_ai_bridge/serializers/formatters/sections/tests_formatter.rb,
lib/rails_ai_bridge/serializers/formatters/sections/turbo_formatter.rb,
lib/rails_ai_bridge/serializers/formatters/sections/views_formatter.rb,
lib/rails_ai_bridge/serializers/providers/windsurf_rules_serializer.rb,
lib/rails_ai_bridge/serializers/formatters/sections/assets_formatter.rb,
lib/rails_ai_bridge/serializers/formatters/sections/config_formatter.rb,
lib/rails_ai_bridge/serializers/formatters/sections/devops_formatter.rb,
lib/rails_ai_bridge/serializers/formatters/sections/models_formatter.rb,
lib/rails_ai_bridge/serializers/formatters/sections/routes_formatter.rb,
lib/rails_ai_bridge/serializers/formatters/sections/schema_formatter.rb,
lib/rails_ai_bridge/serializers/formatters/providers/footer_formatter.rb,
lib/rails_ai_bridge/serializers/formatters/providers/header_formatter.rb,
lib/rails_ai_bridge/serializers/formatters/sections/engines_formatter.rb,
lib/rails_ai_bridge/serializers/formatters/sections/section_formatter.rb,
lib/rails_ai_bridge/serializers/providers/collaborators/line_enforcer.rb,
lib/rails_ai_bridge/serializers/providers/mcp_tool_reference_formatter.rb,
lib/rails_ai_bridge/serializers/formatters/providers/mcp_guide_formatter.rb,
lib/rails_ai_bridge/serializers/formatters/sections/middleware_formatter.rb,
lib/rails_ai_bridge/serializers/formatters/sections/migrations_formatter.rb,
lib/rails_ai_bridge/serializers/formatters/sections/rake_tasks_formatter.rb,
lib/rails_ai_bridge/serializers/formatters/sections/action_text_formatter.rb,
lib/rails_ai_bridge/serializers/formatters/sections/controllers_formatter.rb,
lib/rails_ai_bridge/serializers/formatters/sections/conventions_formatter.rb,
lib/rails_ai_bridge/serializers/providers/copilot_instructions_serializer.rb,
lib/rails_ai_bridge/serializers/formatters/sections/app_overview_formatter.rb,
lib/rails_ai_bridge/serializers/formatters/providers/codex_footer_formatter.rb,
lib/rails_ai_bridge/serializers/formatters/providers/codex_header_formatter.rb,
lib/rails_ai_bridge/serializers/formatters/providers/rules_footer_formatter.rb,
lib/rails_ai_bridge/serializers/formatters/providers/rules_header_formatter.rb,
lib/rails_ai_bridge/serializers/formatters/providers/claude_footer_formatter.rb,
lib/rails_ai_bridge/serializers/formatters/providers/claude_header_formatter.rb,
lib/rails_ai_bridge/serializers/formatters/providers/gemini_footer_formatter.rb,
lib/rails_ai_bridge/serializers/formatters/providers/gemini_header_formatter.rb,
lib/rails_ai_bridge/serializers/formatters/sections/action_mailbox_formatter.rb,
lib/rails_ai_bridge/serializers/formatters/sections/active_storage_formatter.rb,
lib/rails_ai_bridge/serializers/formatters/sections/multi_database_formatter.rb,
lib/rails_ai_bridge/serializers/providers/collaborators/model_line_formatter.rb,
lib/rails_ai_bridge/serializers/formatters/providers/copilot_footer_formatter.rb,
lib/rails_ai_bridge/serializers/formatters/providers/copilot_header_formatter.rb,
lib/rails_ai_bridge/serializers/providers/collaborators/rules_document_builder.rb,
lib/rails_ai_bridge/serializers/providers/collaborators/stack_overview_builder.rb,
lib/rails_ai_bridge/serializers/providers/collaborators/rules_architecture_builder.rb,
lib/rails_ai_bridge/serializers/providers/collaborators/rules_notable_gems_builder.rb,
lib/rails_ai_bridge/serializers/providers/collaborators/rules_model_section_builder.rb,
lib/rails_ai_bridge/serializers/providers/collaborators/rules_stack_overview_builder.rb,
lib/rails_ai_bridge/serializers/providers/collaborators/rules_key_considerations_builder.rb
Defined Under Namespace
Modules: Config, ExclusionHelper, Generators, Introspectors, Mcp, Resources, Serializers, ServiceErrors, Services, Tools Classes: AssistantFormatsPreference, Configuration, ConfigurationError, ContextProvider, Doctor, Engine, Error, Fingerprinter, HttpTransportApp, IntrospectionError, Introspector, Middleware, ModelSemanticClassifier, Server, Service, ViewFileAnalyzer, Watcher
Constant Summary collapse
- VERSION =
'3.0.0'
Class Attribute Summary collapse
-
.configuration ⇒ RailsAiBridge::Configuration
Returns the mutable gem configuration object.
Class Method Summary collapse
-
.configure {|configuration| ... } ⇒ void
Yields the global configuration for mutation.
-
.generate_context(app = nil, **options) ⇒ Hash{Symbol => Array<String>}
Generate context files (CLAUDE.md, .cursorrules, etc.).
-
.introspect(app = nil, only: nil) ⇒ Hash
Quick access to introspect the current Rails app Returns a hash of all discovered context.
-
.start_mcp_server(app = nil, transport: :stdio) ⇒ void
Start the MCP server programmatically.
-
.validate_auto_mount_configuration! ⇒ void
Raises ConfigurationError if +auto_mount+ is enabled in production without explicit opt-in and token.
-
.validate_http_mcp_server_in_production! ⇒ void
Raises ConfigurationError when starting the standalone HTTP MCP server in production without a token.
Class Attribute Details
.configuration ⇒ RailsAiBridge::Configuration
Returns the mutable gem configuration object.
23 24 25 |
# File 'lib/rails_ai_bridge.rb', line 23 def configuration @configuration ||= Configuration.new end |
Class Method Details
.configure {|configuration| ... } ⇒ void
This method returns an undefined value.
Yields the global configuration for mutation.
31 32 33 |
# File 'lib/rails_ai_bridge.rb', line 31 def configure yield(configuration) end |
.generate_context(app = nil, **options) ⇒ Hash{Symbol => Array<String>}
Generate context files (CLAUDE.md, .cursorrules, etc.)
57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/rails_ai_bridge.rb', line 57 def generate_context(app = nil, **) allowed = %i[format split_rules on_conflict].to_set unknown = .keys.to_set - allowed raise ArgumentError, "Unknown option(s): #{unknown.to_a.join(', ')}" if unknown.any? app ||= Rails.application context = introspect(app) Serializers::ContextFileSerializer.new(context, format: .fetch(:format, :all), split_rules: .fetch(:split_rules, true), on_conflict: .fetch(:on_conflict, :overwrite)).call end |
.introspect(app = nil, only: nil) ⇒ Hash
Quick access to introspect the current Rails app Returns a hash of all discovered context.
41 42 43 44 |
# File 'lib/rails_ai_bridge.rb', line 41 def introspect(app = nil, only: nil) app ||= Rails.application Introspector.new(app).call(only: only) end |
.start_mcp_server(app = nil, transport: :stdio) ⇒ void
This method returns an undefined value.
Start the MCP server programmatically
76 77 78 79 |
# File 'lib/rails_ai_bridge.rb', line 76 def start_mcp_server(app = nil, transport: :stdio) app ||= Rails.application Server.new(app, transport: transport).start end |
.validate_auto_mount_configuration! ⇒ void
This method returns an undefined value.
Raises ConfigurationError if +auto_mount+ is enabled in production without explicit opt-in and token.
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/rails_ai_bridge.rb', line 85 def validate_auto_mount_configuration! cfg = configuration return unless cfg.auto_mount return unless Rails.env.production? || cfg.mcp.require_auth_in_production unless cfg.allow_auto_mount_in_production raise ConfigurationError, 'rails_ai_bridge: auto_mount is disabled in production unless you set allow_auto_mount_in_production = true' end return if Mcp::Authenticator.any_configured? raise ConfigurationError, 'rails_ai_bridge: auto_mount in production requires an auth mechanism ' \ "(http_mcp_token, mcp_token_resolver, mcp_jwt_decoder, or ENV['#{Mcp::Authenticator::TOKEN_ENV_KEY}'])" end |
.validate_http_mcp_server_in_production! ⇒ void
This method returns an undefined value.
Raises ConfigurationError when starting the standalone HTTP MCP server in production without a token.
Also enforces RailsAiBridge::Config::Mcp#require_auth_in_production when +true+, regardless of Rails env.
108 109 110 111 112 113 114 115 |
# File 'lib/rails_ai_bridge.rb', line 108 def validate_http_mcp_server_in_production! return unless Rails.env.production? || configuration.mcp.require_auth_in_production return if Mcp::Authenticator.any_configured? raise ConfigurationError, 'rails_ai_bridge: HTTP MCP in production requires an auth mechanism ' \ "(http_mcp_token, mcp_token_resolver, mcp_jwt_decoder, or ENV['#{Mcp::Authenticator::TOKEN_ENV_KEY}'])" end |