Class: Ace::Review::Organisms::ReviewManager
- Inherits:
-
Object
- Object
- Ace::Review::Organisms::ReviewManager
- Defined in:
- lib/ace/review/organisms/review_manager.rb
Overview
Main orchestrator for code review workflow
Instance Attribute Summary collapse
-
#context_extractor ⇒ Object
readonly
Returns the value of attribute context_extractor.
-
#preset_manager ⇒ Object
readonly
Returns the value of attribute preset_manager.
-
#prompt_composer ⇒ Object
readonly
Returns the value of attribute prompt_composer.
-
#prompt_resolver ⇒ Object
readonly
Returns the value of attribute prompt_resolver.
-
#subject_extractor ⇒ Object
readonly
Returns the value of attribute subject_extractor.
Instance Method Summary collapse
-
#execute_review(options) ⇒ Hash
Execute a code review with the given options.
-
#initialize(project_root: nil) ⇒ ReviewManager
constructor
A new instance of ReviewManager.
-
#list_presets ⇒ Object
List available presets.
-
#list_prompts ⇒ Object
List available prompt modules.
Constructor Details
#initialize(project_root: nil) ⇒ ReviewManager
Returns a new instance of ReviewManager.
20 21 22 23 24 25 26 27 |
# File 'lib/ace/review/organisms/review_manager.rb', line 20 def initialize(project_root: nil) @project_root = project_root @preset_manager = Ace::Review::Molecules::PresetManager.new(project_root: project_root) @prompt_resolver = Ace::Review::Molecules::NavPromptResolver.new @prompt_composer = Ace::Review::Molecules::PromptComposer.new(resolver: @prompt_resolver) @subject_extractor = Ace::Review::Molecules::SubjectExtractor.new @context_extractor = Ace::Review::Molecules::ContextExtractor.new end |
Instance Attribute Details
#context_extractor ⇒ Object (readonly)
Returns the value of attribute context_extractor.
17 18 19 |
# File 'lib/ace/review/organisms/review_manager.rb', line 17 def context_extractor @context_extractor end |
#preset_manager ⇒ Object (readonly)
Returns the value of attribute preset_manager.
17 18 19 |
# File 'lib/ace/review/organisms/review_manager.rb', line 17 def preset_manager @preset_manager end |
#prompt_composer ⇒ Object (readonly)
Returns the value of attribute prompt_composer.
17 18 19 |
# File 'lib/ace/review/organisms/review_manager.rb', line 17 def prompt_composer @prompt_composer end |
#prompt_resolver ⇒ Object (readonly)
Returns the value of attribute prompt_resolver.
17 18 19 |
# File 'lib/ace/review/organisms/review_manager.rb', line 17 def prompt_resolver @prompt_resolver end |
#subject_extractor ⇒ Object (readonly)
Returns the value of attribute subject_extractor.
17 18 19 |
# File 'lib/ace/review/organisms/review_manager.rb', line 17 def subject_extractor @subject_extractor end |
Instance Method Details
#execute_review(options) ⇒ Hash
Execute a code review with the given options
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 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/ace/review/organisms/review_manager.rb', line 32 def execute_review() # Convert to ReviewOptions if needed = () # Step 1: Prepare configuration config_result = prepare_review_config() return config_result unless config_result[:success] # Step 2: Create session directory early (needed for ace-bundle) cache_dir = create_cache_directory session_dir = create_session_directory(, cache_dir) # Step 3: Extract content content_result = extract_review_content(config_result[:config], ) return content_result unless content_result[:success] # Step 4: Compose prompts via ace-bundle prompt_result = compose_review_prompt( config_result[:config], content_result[:context], content_result[:subject], session_dir, , # Pass options to check for PR mode content_result[:typed_subject_config] # Pass typed subject config directly ) return prompt_result unless prompt_result[:success] # Step 5: Prepare review data structure review_data = build_review_data( , config_result[:config], content_result, prompt_result, # Pass the entire prompt_result to handle both formats cache_dir ) # Step 6: Save session files save_session_files(session_dir, review_data) # Step 7: Execute or just prepare if .auto_execute execute_with_llm(review_data, session_dir, ) else { success: true, session_dir: session_dir, system_prompt_file: File.join(session_dir, "system.prompt.md"), user_prompt_file: File.join(session_dir, "user.prompt.md"), message: "Review session prepared in #{session_dir}" } end end |
#list_presets ⇒ Object
List available presets
86 87 88 |
# File 'lib/ace/review/organisms/review_manager.rb', line 86 def list_presets @preset_manager.available_presets end |
#list_prompts ⇒ Object
List available prompt modules
91 92 93 94 |
# File 'lib/ace/review/organisms/review_manager.rb', line 91 def list_prompts prompts = @prompt_resolver.list_available prompts.is_a?(Hash) ? prompts.keys : [] end |