Class: RosettAi::Authorship::TrailerGenerator
- Inherits:
-
Object
- Object
- RosettAi::Authorship::TrailerGenerator
- Defined in:
- lib/rosett_ai/authorship/trailer_generator.rb
Overview
Generates commit trailer templates for AI authorship.
Trailer format follows the convention:
Role: Tool Version (Provider)
Engine capability manifests declare whether trailer support is available; engines without trailer support get a warning.
Constant Summary collapse
- TRAILER_ROLES =
RosettAi::Provenance::Entry::ALLOWED_ROLES
Instance Method Summary collapse
-
#generate(engine_name:, provider:, role:) ⇒ String
Generates a trailer string for a given engine.
-
#generate_all(engine_name:, provider:) ⇒ Array<String>
Generates all four trailer templates for an engine.
-
#trailer_block(engine_name:, provider:) ⇒ String
Formats trailers as a block suitable for documentation.
-
#validate_tool(tool_name:, strict: false) ⇒ Array<String>
Validates a tool name against known engine manifests.
Instance Method Details
#generate(engine_name:, provider:, role:) ⇒ String
Generates a trailer string for a given engine.
27 28 29 30 |
# File 'lib/rosett_ai/authorship/trailer_generator.rb', line 27 def generate(engine_name:, provider:, role:) validate_role!(role) "#{role}: #{engine_name} (#{provider})" end |
#generate_all(engine_name:, provider:) ⇒ Array<String>
Generates all four trailer templates for an engine.
37 38 39 40 41 |
# File 'lib/rosett_ai/authorship/trailer_generator.rb', line 37 def generate_all(engine_name:, provider:) TRAILER_ROLES.map do |role| generate(engine_name: engine_name, provider: provider, role: role) end end |
#trailer_block(engine_name:, provider:) ⇒ String
Formats trailers as a block suitable for documentation.
48 49 50 |
# File 'lib/rosett_ai/authorship/trailer_generator.rb', line 48 def trailer_block(engine_name:, provider:) generate_all(engine_name: engine_name, provider: provider).join("\n") end |
#validate_tool(tool_name:, strict: false) ⇒ Array<String>
Validates a tool name against known engine manifests.
57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/rosett_ai/authorship/trailer_generator.rb', line 57 def validate_tool(tool_name:, strict: false) known = known_engine_names return [] if known.empty? # no engines installed — skip validation return [] if known.any? { |name| tool_name.include?(name) } = "Unknown AI tool '#{tool_name}' — not found in any engine manifest. " \ "Known engines: #{known.join(', ')}" raise RosettAi::AuthorshipError, if strict [] end |