Class: Compose::EditVerifier
- Inherits:
-
Object
- Object
- Compose::EditVerifier
- Defined in:
- lib/compose/edit_verifier.rb
Instance Attribute Summary collapse
-
#edits ⇒ Object
readonly
Returns the value of attribute edits.
Instance Method Summary collapse
-
#initialize(edits) ⇒ EditVerifier
constructor
A new instance of EditVerifier.
- #verify_edit(edit) ⇒ Object
- #verify_edits ⇒ Object
Constructor Details
#initialize(edits) ⇒ EditVerifier
Returns a new instance of EditVerifier.
7 8 9 |
# File 'lib/compose/edit_verifier.rb', line 7 def initialize(edits) @edits = edits end |
Instance Attribute Details
#edits ⇒ Object (readonly)
Returns the value of attribute edits.
5 6 7 |
# File 'lib/compose/edit_verifier.rb', line 5 def edits @edits end |
Instance Method Details
#verify_edit(edit) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/compose/edit_verifier.rb', line 25 def verify_edit(edit) return edit unless File.exist?(edit[:filename]) prompt = File.read(File.("../../config/prompts/verify.txt", __dir__)) prompt.gsub!('{{EDIT}}', edit.to_json) prompt.gsub!('{{CHANGE}}', edit[:change].to_json) file_content = FileProcessor.load_file(File.(edit[:filename])) system_prompt = "CODE:\n#{file_content}\n" response = AIClient.new(Compose::Config.verifier_model).chat(system_prompt, prompt) begin verified_change = JSON.parse(response) verified_change = verified_change.transform_keys(&:to_sym) return nil if verified_change[:type] == 'skip' edit[:change] = verified_change edit rescue JSON::ParserError puts "Failed to parse verification response. Using original edit." edit end end |
#verify_edits ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/compose/edit_verifier.rb', line 11 def verify_edits verified_edits = [] edits.each do |edit| case edit[:type] when 'edit' verified_edit = verify_edit(edit[:edit]) verified_edits << { type: 'edit', edit: verified_edit } if verified_edit end end verified_edits end |