Class: RubyTodo::AIAssistantCommand
- Inherits:
-
Thor
- Object
- Thor
- RubyTodo::AIAssistantCommand
- Includes:
- RubyTodo::AIAssistant::CommandProcessor, RubyTodo::AIAssistant::ParamExtractor, RubyTodo::AIAssistant::TaskCreatorCombined, AIAssistantHelpers, ExportHelpers, OpenAIIntegration, StatusFilteringHelpers, TaskMovementHelpers
- Defined in:
- lib/ruby_todo/commands/ai_assistant.rb
Overview
Main AI Assistant command class
Constant Summary
Constants included from OpenAIIntegration
OpenAIIntegration::SYSTEM_PROMPT
Constants included from OpenAIDocumentation
OpenAIDocumentation::CLI_DOCUMENTATION
Class Method Summary collapse
Instance Method Summary collapse
Methods included from TaskMovementHelpers
Methods included from ExportFileHelpers
#default_export_filename, #export_data_to_file, #export_to_csv, #export_to_json, #extract_custom_filename, #extract_export_parameters, #format_tags_for_csv
Methods included from ExportCoreHelpers
#collect_tasks_by_status, #handle_export_recent_done_tasks, #handle_export_tasks_by_status, #task_to_hash
Methods included from ExportPatternHelpers
#determine_export_status, #export_all_done_tasks_regex, #export_archived_tasks_regex, #export_done_tasks_regex, #export_in_progress_tasks_regex, #export_tasks_regex, #export_tasks_to_csv_regex, #export_tasks_to_file_regex, #export_tasks_to_json_regex, #export_tasks_with_status_regex, #export_todo_tasks_regex, #handle_export_task_patterns, #normalize_status, #save_tasks_to_file_regex
Methods included from StatusFilteringHelpers
#handle_filtered_tasks, #handle_status_filtered_tasks, #handle_status_filtering, #normalize_status, #status_prefix_tasks_regex, #tasks_by_status_regex, #tasks_with_status_regex
Methods included from AIAssistantHelpers
#format_table_with_wrapping, #load_api_key_from_config, #save_config, #truncate_text, #wrap_text
Methods included from RubyTodo::AIAssistant::ParamExtractor
#extract_description_param, #extract_due_date_param, #extract_tags_param
Methods included from RubyTodo::AIAssistant::TaskResponseProcessor
#create_task_from_details, #extract_task_details_with_regex, #normalize_priority, #parse_task_details_response
Methods included from RubyTodo::AIAssistant::TaskOpenAIQuery
#query_openai_for_task_details
Methods included from RubyTodo::AIAssistant::TaskCreator
#build_task_query, #default_notebook_name, #extract_task_description, #generate_task_details
Methods included from OpenAIApiInteraction
Methods included from OpenAIResponseHandling
#extract_command_explanation, #handle_openai_error, #handle_openai_response, #parse_openai_response_content
Methods included from OpenAIAdvancedPromptBuilder
#build_enriched_context, #build_task_creation_prompt, #extract_task_info_from_prompt
Methods included from OpenAIPromptBuilderCore
Class Method Details
.banner(command, _namespace = nil, _subcommand: false) ⇒ Object
895 896 897 |
# File 'lib/ruby_todo/commands/ai_assistant.rb', line 895 def self.(command, _namespace = nil, _subcommand: false) "#{basename} #{command.name}" end |
.exit_on_failure? ⇒ Boolean
899 900 901 |
# File 'lib/ruby_todo/commands/ai_assistant.rb', line 899 def self.exit_on_failure? true end |
Instance Method Details
#ask(*prompt_args, **options) ⇒ Object
871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 |
# File 'lib/ruby_todo/commands/ai_assistant.rb', line 871 def ask(*prompt_args, **) prompt = prompt_args.join(" ") validate_prompt(prompt) = || {} say "\n=== Starting AI Assistant with prompt: '#{prompt}' ===" if [:verbose] # Add direct output that will definitely be caught by the StringIO in tests puts "Processing your request: #{prompt}" # Use a normal method call without rescue to allow errors to bubble up process_ai_query(prompt) # Ensure there's always output before returning puts "Request completed." end |
#configure ⇒ Object
888 889 890 891 892 893 |
# File 'lib/ruby_todo/commands/ai_assistant.rb', line 888 def configure prompt = TTY::Prompt.new api_key = prompt.mask("Enter your OpenAI API key:") save_config("openai", api_key) say "Configuration saved successfully!".green end |