Class: RailsAiContext::Tools::GetEnv

Inherits:
BaseTool
  • Object
show all
Defined in:
lib/rails_ai_context/tools/get_env.rb

Constant Summary

Constants inherited from BaseTool

BaseTool::DEFAULT_SESSION, BaseTool::MAX_SESSIONS, BaseTool::MAX_SESSION_ID_LENGTH, BaseTool::SESSION_CONTEXT, BaseTool::SHARED_CACHE

Class Method Summary collapse

Methods inherited from BaseTool

abstract!, abstract?, api_only_app?, api_only_note, cache_key, cached_context, config, current_session, #dedupe_put_patch_routes, detail_param?, error_response, evict_oldest_sessions, extract_method_source_from_file, extract_method_source_from_string, find_closest_match, fuzzy_find_key, guide_row, inherited, introspection_warnings_note, invalid_detail_note, normalize_detail, not_found_response, paginate, rails_app, rails_env_name, registered_tools, reset_all_caches!, reset_cache!, session_from, session_params, session_queries, session_record, session_reset!, static_tier_banner, static_tier_refusal, text_response, touch_session, unavailable_note, with_session, with_session_for

Methods included from SectionFetch

#fetch_section, usable?

Class Method Details

.call(detail: "standard", server_context: nil) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/rails_ai_context/tools/get_env.rb', line 29

def self.call(detail: "standard", server_context: nil)
  root = rails_app.root.to_s

  env_vars = scan_env_vars(root)
  env_example = scan_env_example(root)
  dockerfile_vars = scan_dockerfile(root)
  external_services = detect_external_services(root)
  credentials_keys = detect_credentials_keys
  encrypted_columns = detect_encrypted_columns

  # Merge all discovered env var names
  all_var_names = Set.new
  env_vars.each { |_file, vars| vars.each { |v| all_var_names << v[:name] } }
  env_example.each { |v| all_var_names << v[:name] }
  dockerfile_vars.each { |v| all_var_names << v[:name] if v[:type] == "ENV" }

  if all_var_names.empty? && external_services.empty? && credentials_keys.empty?
    return text_response("No environment variables, external services, or credentials keys detected.")
  end

  case detail
  when "summary"
    format_summary(all_var_names, external_services, credentials_keys)
  when "standard"
    format_standard(env_vars, env_example, external_services, credentials_keys, encrypted_columns)
  when "full"
    format_full(env_vars, env_example, dockerfile_vars, external_services, credentials_keys, encrypted_columns, root)
  end
end