Class: RailsAiContext::Serializers::OpencodeRulesSerializer
- Inherits:
-
Object
- Object
- RailsAiContext::Serializers::OpencodeRulesSerializer
- Includes:
- StackOverviewHelper
- Defined in:
- lib/rails_ai_context/serializers/opencode_rules_serializer.rb
Overview
Generates per-directory AGENTS.md files for OpenCode’s lazy-loading system. When OpenCode’s agent reads a file, it walks up the directory tree and auto-loads any AGENTS.md it finds — acting as contextual split rules.
Generated files:
app/models/AGENTS.md — model listing, loaded when editing models
app/controllers/AGENTS.md — controller listing, loaded when editing controllers
Instance Attribute Summary collapse
-
#context ⇒ Object
readonly
Returns the value of attribute context.
Instance Method Summary collapse
-
#call(output_dir) ⇒ Hash
{ written: [paths], skipped: [paths] }.
-
#initialize(context) ⇒ OpencodeRulesSerializer
constructor
A new instance of OpencodeRulesSerializer.
Methods included from StackOverviewHelper
#arch_labels_hash, #detect_before_actions, #detect_job_files, #detect_service_files, #full_preset_stack_lines, #model_extras_line, #notable_gems_list, #pattern_labels_hash, #project_root, #render_compact_controllers_list, #scope_names, #write_rule_files
Constructor Details
#initialize(context) ⇒ OpencodeRulesSerializer
Returns a new instance of OpencodeRulesSerializer.
17 18 19 |
# File 'lib/rails_ai_context/serializers/opencode_rules_serializer.rb', line 17 def initialize(context) @context = context end |
Instance Attribute Details
#context ⇒ Object (readonly)
Returns the value of attribute context.
15 16 17 |
# File 'lib/rails_ai_context/serializers/opencode_rules_serializer.rb', line 15 def context @context end |
Instance Method Details
#call(output_dir) ⇒ Hash
Returns { written: [paths], skipped: [paths] }.
23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/rails_ai_context/serializers/opencode_rules_serializer.rb', line 23 def call(output_dir) files = {} [ [ "app", "models", "AGENTS.md", :render_models_reference ], [ "app", "controllers", "AGENTS.md", :render_controllers_reference ] ].each do |*parts, method| filepath = File.join(output_dir, *parts) next unless Dir.exist?(File.dirname(filepath)) files[filepath] = send(method) end write_rule_files(files) end |